diff options
Diffstat (limited to 'src/game/client/gameclient.cpp')
| -rw-r--r-- | src/game/client/gameclient.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp index 0aaf40b4..f80d0266 100644 --- a/src/game/client/gameclient.cpp +++ b/src/game/client/gameclient.cpp @@ -340,7 +340,7 @@ void CGameClient::UpdateLocalCharacterPos() { if(g_Config.m_ClPredict && Client()->State() != IClient::STATE_DEMOPLAYBACK) { - if(!m_Snap.m_pLocalCharacter || (m_Snap.m_pGameobj && m_Snap.m_pGameobj->m_GameOver)) + if(!m_Snap.m_pLocalCharacter || (m_Snap.m_pGameInfoObj && m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_GAMEOVER)) { // don't use predicted } @@ -413,7 +413,7 @@ void CGameClient::OnRender() // resend if client info differs if(str_comp(g_Config.m_PlayerName, m_aClients[m_Snap.m_LocalClientID].m_aName) || str_comp(g_Config.m_PlayerSkin, m_aClients[m_Snap.m_LocalClientID].m_aSkinName) || - (g_GameClient.m_Snap.m_pGameobj && !(g_GameClient.m_Snap.m_pGameobj->m_Flags&GAMEFLAG_TEAMS) && // no teamgame? + (m_Snap.m_pGameInfoObj && !(m_Snap.m_pGameInfoObj->m_GameFlags&GAMEFLAG_TEAMS) && // no teamgame? (g_Config.m_PlayerUseCustomColor != m_aClients[m_Snap.m_LocalClientID].m_UseCustomColor || g_Config.m_PlayerColorBody != m_aClients[m_Snap.m_LocalClientID].m_ColorBody || g_Config.m_PlayerColorFeet != m_aClients[m_Snap.m_LocalClientID].m_ColorFeet))) @@ -728,15 +728,20 @@ void CGameClient::OnNewSnapshot() Evolve(&m_Snap.m_aCharacters[Item.m_ID].m_Cur, Client()->GameTick()); } } - else if(Item.m_Type == NETOBJTYPE_GAME) + else if(Item.m_Type == NETOBJTYPE_GAMEINFO) { - static int s_GameOver = 0; - m_Snap.m_pGameobj = (CNetObj_Game *)pData; - if(s_GameOver == 0 && m_Snap.m_pGameobj->m_GameOver != 0) + static bool s_GameOver = 0; + m_Snap.m_pGameInfoObj = (const CNetObj_GameInfo *)pData; + if(!s_GameOver && m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_GAMEOVER) OnGameOver(); - else if(s_GameOver != 0 && m_Snap.m_pGameobj->m_GameOver == 0) + else if(s_GameOver && !(m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_GAMEOVER)) OnStartGame(); - s_GameOver = m_Snap.m_pGameobj->m_GameOver; + s_GameOver = m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_GAMEOVER; + } + else if(Item.m_Type == NETOBJTYPE_GAMEDATA) + { + m_Snap.m_pGameDataObj = (const CNetObj_GameData *)pData; + m_Snap.m_GameDataSnapID = Item.m_ID; } else if(Item.m_Type == NETOBJTYPE_FLAG) m_Snap.m_paFlags[Item.m_ID%2] = (const CNetObj_Flag *)pData; @@ -803,7 +808,7 @@ void CGameClient::OnPredict() return; // don't predict anything if we are paused - if(m_Snap.m_pGameobj && m_Snap.m_pGameobj->m_Paused) + if(m_Snap.m_pGameInfoObj && m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED) { if(m_Snap.m_pLocalCharacter) m_PredictedChar.Read(m_Snap.m_pLocalCharacter); @@ -928,7 +933,7 @@ void CGameClient::CClientData::UpdateRenderInfo() m_RenderInfo = m_SkinInfo; // force team colors - if(g_GameClient.m_Snap.m_pGameobj && g_GameClient.m_Snap.m_pGameobj->m_Flags&GAMEFLAG_TEAMS) + if(g_GameClient.m_Snap.m_pGameInfoObj && g_GameClient.m_Snap.m_pGameInfoObj->m_GameFlags&GAMEFLAG_TEAMS) { const int TeamColors[2] = {65387, 10223467}; if(m_Team >= TEAM_RED && m_Team <= TEAM_BLUE) |