diff options
| author | oy <Tom_Adams@web.de> | 2011-03-04 17:08:10 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-03-04 17:08:10 +0100 |
| commit | 9811c2396baa86e3401caef295649eaf3e12a4a5 (patch) | |
| tree | 15232e5f180a844e8702f6ef99cd97e9e55a6365 /src/game/server/gamemodes | |
| parent | 4bede550be18cfc9bb4df669c147032917160066 (diff) | |
| download | zcatch-9811c2396baa86e3401caef295649eaf3e12a4a5.tar.gz zcatch-9811c2396baa86e3401caef295649eaf3e12a4a5.zip | |
made network clip flags. Closes #131
Diffstat (limited to 'src/game/server/gamemodes')
| -rw-r--r-- | src/game/server/gamemodes/ctf.cpp | 25 | ||||
| -rw-r--r-- | src/game/server/gamemodes/ctf.h | 1 | ||||
| -rw-r--r-- | src/game/server/gamemodes/tdm.cpp | 15 | ||||
| -rw-r--r-- | src/game/server/gamemodes/tdm.h | 1 |
4 files changed, 42 insertions, 0 deletions
diff --git a/src/game/server/gamemodes/ctf.cpp b/src/game/server/gamemodes/ctf.cpp index 92fc90c9..490067dd 100644 --- a/src/game/server/gamemodes/ctf.cpp +++ b/src/game/server/gamemodes/ctf.cpp @@ -78,6 +78,31 @@ bool CGameControllerCTF::CanBeMovedOnBalance(int ClientID) return true; } +void CGameControllerCTF::Snap(int SnappingClient) +{ + IGameController::Snap(SnappingClient); + + CNetObj_GameData *pGameDataObj = (CNetObj_GameData *)Server()->SnapNewItem(NETOBJTYPE_GAMEDATA, 0, sizeof(CNetObj_GameData)); + if(!pGameDataObj) + return; + + pGameDataObj->m_TeamscoreRed = m_aTeamscore[TEAM_RED]; + pGameDataObj->m_TeamscoreBlue = m_aTeamscore[TEAM_BLUE]; + + if(m_apFlags[TEAM_RED]->m_AtStand) + pGameDataObj->m_FlagCarrierRed = FLAG_ATSTAND; + else if(m_apFlags[TEAM_RED]->m_pCarryingCharacter && m_apFlags[TEAM_RED]->m_pCarryingCharacter->GetPlayer()) + pGameDataObj->m_FlagCarrierRed = m_apFlags[TEAM_RED]->m_pCarryingCharacter->GetPlayer()->GetCID(); + else + pGameDataObj->m_FlagCarrierRed = FLAG_TAKEN; + if(m_apFlags[TEAM_BLUE]->m_AtStand) + pGameDataObj->m_FlagCarrierBlue = FLAG_ATSTAND; + else if(m_apFlags[TEAM_BLUE]->m_pCarryingCharacter && m_apFlags[TEAM_BLUE]->m_pCarryingCharacter->GetPlayer()) + pGameDataObj->m_FlagCarrierBlue = m_apFlags[TEAM_BLUE]->m_pCarryingCharacter->GetPlayer()->GetCID(); + else + pGameDataObj->m_FlagCarrierBlue = FLAG_TAKEN; +} + void CGameControllerCTF::Tick() { IGameController::Tick(); diff --git a/src/game/server/gamemodes/ctf.h b/src/game/server/gamemodes/ctf.h index e6fb9c89..b9868e70 100644 --- a/src/game/server/gamemodes/ctf.h +++ b/src/game/server/gamemodes/ctf.h @@ -12,6 +12,7 @@ public: CGameControllerCTF(class CGameContext *pGameServer); virtual bool CanBeMovedOnBalance(int ClientID); + virtual void Snap(int SnappingClient); virtual void Tick(); virtual bool OnEntity(int Index, vec2 Pos); diff --git a/src/game/server/gamemodes/tdm.cpp b/src/game/server/gamemodes/tdm.cpp index 581fca2f..ef5302c6 100644 --- a/src/game/server/gamemodes/tdm.cpp +++ b/src/game/server/gamemodes/tdm.cpp @@ -27,6 +27,21 @@ int CGameControllerTDM::OnCharacterDeath(class CCharacter *pVictim, class CPlaye return 0; } +void CGameControllerTDM::Snap(int SnappingClient) +{ + IGameController::Snap(SnappingClient); + + CNetObj_GameData *pGameDataObj = (CNetObj_GameData *)Server()->SnapNewItem(NETOBJTYPE_GAMEDATA, 0, sizeof(CNetObj_GameData)); + if(!pGameDataObj) + return; + + pGameDataObj->m_TeamscoreRed = m_aTeamscore[TEAM_RED]; + pGameDataObj->m_TeamscoreBlue = m_aTeamscore[TEAM_BLUE]; + + pGameDataObj->m_FlagCarrierRed = 0; + pGameDataObj->m_FlagCarrierBlue = 0; +} + void CGameControllerTDM::Tick() { DoTeamScoreWincheck(); diff --git a/src/game/server/gamemodes/tdm.h b/src/game/server/gamemodes/tdm.h index 806e799a..c8d3f328 100644 --- a/src/game/server/gamemodes/tdm.h +++ b/src/game/server/gamemodes/tdm.h @@ -10,6 +10,7 @@ public: CGameControllerTDM(class CGameContext *pGameServer); int OnCharacterDeath(class CCharacter *pVictim, class CPlayer *pKiller, int Weapon); + virtual void Snap(int SnappingClient); virtual void Tick(); }; #endif |