TeleOuts as pointer; Hopefully fixes Visual Studio crash

This commit is contained in:
def 2013-12-12 14:35:01 +01:00
parent f87449d86c
commit 72bc639a0c
3 changed files with 9 additions and 8 deletions

View file

@ -61,6 +61,7 @@ void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore
{ {
m_pWorld = pWorld; m_pWorld = pWorld;
m_pCollision = pCollision; m_pCollision = pCollision;
m_pTeleOuts = NULL;
m_pTeams = pTeams; m_pTeams = pTeams;
m_Id = -1; m_Id = -1;
@ -70,7 +71,7 @@ void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore
m_Jumps = 2; m_Jumps = 2;
} }
void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map<int, std::vector<vec2> > pTeleOuts) void CCharacterCore::Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map<int, std::vector<vec2> > *pTeleOuts)
{ {
m_pWorld = pWorld; m_pWorld = pWorld;
m_pCollision = pCollision; m_pCollision = pCollision;
@ -323,14 +324,14 @@ void CCharacterCore::Tick(bool UseInput)
m_HookState = HOOK_RETRACT_START; 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_TriggeredEvents = 0;
m_HookedPlayer = -1; m_HookedPlayer = -1;
m_NewHook = true; m_NewHook = true;
int Num = m_pTeleOuts[teleNr-1].size(); int Num = (*m_pTeleOuts)[teleNr-1].size();
m_HookPos = m_pTeleOuts[teleNr-1][(!Num)?Num:rand() % Num]+TargetDirection*PhysSize*1.5f; m_HookPos = (*m_pTeleOuts)[teleNr-1][(!Num)?Num:rand() % Num]+TargetDirection*PhysSize*1.5f;
m_HookDir = TargetDirection; m_HookDir = TargetDirection;
m_HookTeleBase = m_HookPos; m_HookTeleBase = m_HookPos;
} }

View file

@ -183,7 +183,7 @@ class CCharacterCore
{ {
CWorldCore *m_pWorld; CWorldCore *m_pWorld;
CCollision *m_pCollision; CCollision *m_pCollision;
std::map<int, std::vector<vec2> > m_pTeleOuts; std::map<int, std::vector<vec2> > *m_pTeleOuts;
public: public:
vec2 m_Pos; vec2 m_Pos;
vec2 m_Vel; vec2 m_Vel;
@ -212,7 +212,7 @@ public:
int m_TriggeredEvents; int m_TriggeredEvents;
void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams); void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams);
void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map<int, std::vector<vec2> > pTeleOuts); void Init(CWorldCore *pWorld, CCollision *pCollision, CTeamsCore* pTeams, std::map<int, std::vector<vec2> > *pTeleOuts);
void Reset(); void Reset();
void Tick(bool UseInput); void Tick(bool UseInput);
void Move(); void Move();

View file

@ -71,7 +71,7 @@ bool CCharacter::Spawn(CPlayer *pPlayer, vec2 Pos)
m_Pos = Pos; m_Pos = Pos;
m_Core.Reset(); 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; m_Core.m_Pos = m_Pos;
GameServer()->m_World.m_Core.m_apCharacters[m_pPlayer->GetCID()] = &m_Core; GameServer()->m_World.m_Core.m_apCharacters[m_pPlayer->GetCID()] = &m_Core;
@ -676,7 +676,7 @@ void CCharacter::TickDefered()
// advance the dummy // advance the dummy
{ {
CWorldCore TempWorld; 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.m_Id = m_pPlayer->GetCID();
m_ReckoningCore.Tick(false); m_ReckoningCore.Tick(false);
m_ReckoningCore.Move(); m_ReckoningCore.Move();