From 72bc639a0cb3c91c22209efb3f427cf672be25d1 Mon Sep 17 00:00:00 2001 From: def Date: Thu, 12 Dec 2013 14:35:01 +0100 Subject: [PATCH] TeleOuts as pointer; Hopefully fixes Visual Studio crash --- src/game/gamecore.cpp | 9 +++++---- src/game/gamecore.h | 4 ++-- src/game/server/entities/character.cpp | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/game/gamecore.cpp b/src/game/gamecore.cpp index 4f31de250..bb646b644 100644 --- a/src/game/gamecore.cpp +++ b/src/game/gamecore.cpp @@ -61,6 +61,7 @@ void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore { m_pWorld = pWorld; m_pCollision = pCollision; + m_pTeleOuts = NULL; m_pTeams = pTeams; m_Id = -1; @@ -70,7 +71,7 @@ void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore m_Jumps = 2; } -void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map > pTeleOuts) +void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map > *pTeleOuts) { m_pWorld = pWorld; m_pCollision = pCollision; @@ -323,14 +324,14 @@ void CCharacterCore::Tick(bool UseInput) m_HookState = HOOK_RETRACT_START; } - if(GoingThroughTele && m_pTeleOuts.size() && m_pTeleOuts[teleNr-1].size()) + if(GoingThroughTele && m_pTeleOuts && m_pTeleOuts->size() && (*m_pTeleOuts)[teleNr-1].size()) { m_TriggeredEvents = 0; m_HookedPlayer = -1; m_NewHook = true; - int Num = m_pTeleOuts[teleNr-1].size(); - m_HookPos = m_pTeleOuts[teleNr-1][(!Num)?Num:rand() % Num]+TargetDirection*PhysSize*1.5f; + int Num = (*m_pTeleOuts)[teleNr-1].size(); + m_HookPos = (*m_pTeleOuts)[teleNr-1][(!Num)?Num:rand() % Num]+TargetDirection*PhysSize*1.5f; m_HookDir = TargetDirection; m_HookTeleBase = m_HookPos; } diff --git a/src/game/gamecore.h b/src/game/gamecore.h index 979cba819..67cd8ab20 100644 --- a/src/game/gamecore.h +++ b/src/game/gamecore.h @@ -183,7 +183,7 @@ class CCharacterCore { CWorldCore *m_pWorld; CCollision *m_pCollision; - std::map > m_pTeleOuts; + std::map > *m_pTeleOuts; public: vec2 m_Pos; vec2 m_Vel; @@ -212,7 +212,7 @@ public: int m_TriggeredEvents; void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams); - void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map > pTeleOuts); + void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map > *pTeleOuts); void Reset(); void Tick(bool UseInput); void Move(); diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 998e7fe2f..79cd75a82 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -71,7 +71,7 @@ bool CCharacter::Spawn(CPlayer *pPlayer, vec2 Pos) m_Pos = Pos; m_Core.Reset(); - m_Core.Init(&GameServer()->m_World.m_Core, GameServer()->Collision(), &((CGameControllerDDRace*)GameServer()->m_pController)->m_Teams.m_Core, ((CGameControllerDDRace*)GameServer()->m_pController)->m_TeleOuts); + m_Core.Init(&GameServer()->m_World.m_Core, GameServer()->Collision(), &((CGameControllerDDRace*)GameServer()->m_pController)->m_Teams.m_Core, &((CGameControllerDDRace*)GameServer()->m_pController)->m_TeleOuts); m_Core.m_Pos = m_Pos; GameServer()->m_World.m_Core.m_apCharacters[m_pPlayer->GetCID()] = &m_Core; @@ -676,7 +676,7 @@ void CCharacter::TickDefered() // advance the dummy { CWorldCore TempWorld; - m_ReckoningCore.Init(&TempWorld, GameServer()->Collision(), &((CGameControllerDDRace*)GameServer()->m_pController)->m_Teams.m_Core, ((CGameControllerDDRace*)GameServer()->m_pController)->m_TeleOuts); + m_ReckoningCore.Init(&TempWorld, GameServer()->Collision(), &((CGameControllerDDRace*)GameServer()->m_pController)->m_Teams.m_Core, &((CGameControllerDDRace*)GameServer()->m_pController)->m_TeleOuts); m_ReckoningCore.m_Id = m_pPlayer->GetCID(); m_ReckoningCore.Tick(false); m_ReckoningCore.Move();