CvGame::setGameState(GameStateTypes)
- Defined in
- CvGame.cpp, line 6976
- Class
- CvGame
- Hook name
CivHooks::CvGame_setGameState
Hooks
static bool BeforeCvGame_setGameState(CvGame* self, GameStateTypes eNewValue);static void AfterCvGame_setGameState(CvGame* self, GameStateTypes eNewValue);static void ReplaceCvGame_setGameState(void (*original)(CvGame*, GameStateTypes), CvGame* self, GameStateTypes eNewValue);CivRegisterBefore<CivHooks::CvGame_setGameState>(host, &BeforeCvGame_setGameState);CivRegisterAfter<CivHooks::CvGame_setGameState>(host, &AfterCvGame_setGameState);CivRegisterReplace<CivHooks::CvGame_setGameState>(host, &ReplaceCvGame_setGameState);
Code
6976void CvGame::setGameState(GameStateTypes eNewValue)6977{6978 if(getGameState() != eNewValue)6979 {6980 m_eGameState = eNewValue;69816982#if !defined(NO_ACHIEVEMENTS)6983 if(eNewValue == GAMESTATE_OVER || eNewValue == GAMESTATE_EXTENDED)6984 {6985 if (!isGameMultiPlayer())6986 {6987 if (GetGameLeagues()->GetNumActiveLeagues() > 0)6988 {6989 CvLeague* pLeague = GetGameLeagues()->GetActiveLeague();6990 if (pLeague)6991 {6992 if (pLeague->HasMemberAlwaysBeenHost(getActivePlayer()))6993 {6994 gDLL->UnlockAchievement(ACHIEVEMENT_XP2_41);6995 }6996 }6997 }6998 }6999 }7000#endif70017002 if(eNewValue == GAMESTATE_OVER)7003 {70047005#if !defined(NO_ACHIEVEMENTS)7006 if(!isGameMultiPlayer())7007 {7008 bool bLocalPlayerLost = true;70097010 const TeamTypes eWinningTeam = getWinner();7011 if(eWinningTeam != NO_TEAM)7012 {7013 CvPlayerAI& kLocalPlayer = GET_PLAYER(getActivePlayer());7014 if(eWinningTeam == kLocalPlayer.getTeam())7015 bLocalPlayerLost = false;7016 }7017 if(bLocalPlayerLost)7018 {7019 //Handle any local losing achievements here.70207021 //Are we playing DLC_01 - Mongol Scenario??7022 bool bUsingDLC1MongolScenario = gDLL->IsModActivated(CIV5_DLC_01_SCENARIO_MODID);7023 if(bUsingDLC1MongolScenario && getGameTurn() == 100)7024 {7025 gDLL->UnlockAchievement(ACHIEVEMENT_LOSE_SCENARIO_01);7026 }70277028 //DLC_05 - Achievement for losing Invasion of Korea Scenario as Korea7029 bool bUsingDLC5Scenario = gDLL->IsModActivated(CIV5_DLC_05_SCENARIO_MODID);7030 if(bUsingDLC5Scenario) // && getGameTurn() == 100)7031 {7032 CvPlayerAI& kLocalPlayer = GET_PLAYER(getActivePlayer());7033 CvString strCivType = kLocalPlayer.getCivilizationInfo().GetType();7034 if(strCivType == "CIVILIZATION_KOREA")7035 {7036 gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_LOSE_KOREA);7037 }7038 }7039 }7040 }7041#endif70427043 //Write out time spent playing.7044 long iHours = getMinutesPlayed() / 60;7045 long iMinutes = getMinutesPlayed() % 60;70467047 for(int iI = 0; iI < MAX_CIV_PLAYERS; iI++)7048 {7049 CvPlayer& player = GET_PLAYER((PlayerTypes)iI);7050 if(player.isHuman())7051 {7052 addReplayMessage(REPLAY_MESSAGE_MAJOR_EVENT, (PlayerTypes)iI, GetLocalizedText("TXT_KEY_MISC_TIME_SPENT", iHours, iMinutes));70537054 }7055 }70567057 saveReplay();7058 showEndGameSequence();7059 }70607061 GC.GetEngineUserInterface()->setDirty(Cursor_DIRTY_BIT, true);7062 GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);7063 }7064}
Calls
- CvGame::addReplayMessage(ReplayMessageTypes, PlayerTypes, const CvString &, int, int)
- CvGame::getGameState()
- CvGame::getMinutesPlayed() const
- CvGame::saveReplay()
- CvGame::showEndGameSequence()
- CvGlobals::GetEngineUserInterface()
- CvPlayer::isHuman() const
- CvPlayerAI::getPlayer(PlayerTypes)
GetLocalizedTextICvUserInterface1::setDirty