Bazaar developer reference

CvGameLeagues::FoundLeague(PlayerTypes)

Defined in
CvVotingClasses.cpp, line 6962
Class
CvGameLeagues
Hook name
CivHooks::CvGameLeagues_FoundLeague

Hooks

static bool BeforeCvGameLeagues_FoundLeague(CvGameLeagues* self, PlayerTypes eFounder);static void AfterCvGameLeagues_FoundLeague(CvGameLeagues* self, PlayerTypes eFounder);static void ReplaceCvGameLeagues_FoundLeague(void (*original)(CvGameLeagues*, PlayerTypes), CvGameLeagues* self, PlayerTypes eFounder);CivRegisterBefore<CivHooks::CvGameLeagues_FoundLeague>(host, &BeforeCvGameLeagues_FoundLeague);CivRegisterAfter<CivHooks::CvGameLeagues_FoundLeague>(host, &AfterCvGameLeagues_FoundLeague);CivRegisterReplace<CivHooks::CvGameLeagues_FoundLeague>(host, &ReplaceCvGameLeagues_FoundLeague);

Code

6962void CvGameLeagues::FoundLeague(PlayerTypes eFounder)6963{6964	if (!GC.getGame().isOption(GAMEOPTION_NO_LEAGUES))6965	{6966		CvAssertMsg(GetNumActiveLeagues() == 0, "Trying to found a second league when one is already active. Please send Anton your save file and version.");6967		if (GetNumActiveLeagues() == 0)6968		{6969			CvLeague league((LeagueTypes)m_iNumLeaguesEverFounded++);6970			6971			// Add all living players as members6972			for (int i = 0; i < MAX_CIV_PLAYERS; i++)6973			{6974				PlayerTypes ePlayer = (PlayerTypes) i;6975				if (GET_PLAYER(ePlayer).isAlive())6976				{6977					league.AddMember(ePlayer);6978				}6979			}6980			6981			// Optional: Set initial host6982			if (eFounder != NO_PLAYER)6983			{6984				league.SetHostMember(eFounder);6985			}69866987			// Find which game era trigger this league begins at (must match with a special session)6988			EraTypes eEarliestEraTrigger = NO_ERA;6989			EraTypes eLatestEraTrigger = NO_ERA;6990			for (int i = 0; i < GC.getNumLeagueSpecialSessionInfos(); i++)6991			{6992				CvLeagueSpecialSessionEntry* pInfo = GC.getLeagueSpecialSessionInfo((LeagueSpecialSessionTypes)i);6993				if (pInfo != NULL)6994				{6995					if (eEarliestEraTrigger == NO_ERA || (int)pInfo->GetEraTrigger() < (int)eEarliestEraTrigger)6996					{6997						eEarliestEraTrigger = pInfo->GetEraTrigger();6998					}6999					if ((int)pInfo->GetEraTrigger() > (int)eLatestEraTrigger)7000					{7001						eLatestEraTrigger = pInfo->GetEraTrigger();7002					}7003				}7004			}7005			// In case the game era is actually before or after the triggers in the database7006			EraTypes eGoverningEraTrigger = (EraTypes) MAX((int)LeagueHelpers::GetGameEraForTrigger(), (int)eEarliestEraTrigger);7007			eGoverningEraTrigger = (EraTypes) MIN((int)eGoverningEraTrigger, (int)eLatestEraTrigger);70087009			// Find which special session info this league begins at7010			LeagueSpecialSessionTypes eGoverningSpecialSession = NO_LEAGUE_SPECIAL_SESSION;7011			bool bBeginAsUnitedNations = false;7012			for (int i = 0; i < GC.getNumLeagueSpecialSessionInfos(); i++)7013			{7014				LeagueSpecialSessionTypes e = (LeagueSpecialSessionTypes)i;7015				CvLeagueSpecialSessionEntry* pInfo = GC.getLeagueSpecialSessionInfo(e);7016				if (pInfo != NULL)7017				{7018					if (pInfo->GetEraTrigger() == eGoverningEraTrigger)7019					{7020						eGoverningSpecialSession = e;7021						bBeginAsUnitedNations = pInfo->IsUnitedNations();7022						break;7023					}7024				}7025			}7026			CvAssertMsg(eGoverningSpecialSession != NO_LEAGUE_SPECIAL_SESSION, "Trying to found a league but could not determine a correct governing special session. Do the World Congress prerequisite tech and the special session era triggers in the database match? Please send Anton your save file and version.");7027			CvAssertMsg(eGoverningEraTrigger != NO_ERA, "Trying to found a league but could not determine a correct governing era trigger. Do the World Congress prerequisite tech and the special session era triggers in the database match? Please send Anton your save file and version.");7028			league.Init(eGoverningSpecialSession);7029			SetLastEraTrigger(eGoverningEraTrigger);70307031			CvGame& kGame = GC.getGame();7032			CvPlayer& kActivePlayer = GET_PLAYER(kGame.getActivePlayer());70337034#if defined(MOD_API_EXTENSIONS)7035			if(!kGame.isReallyNetworkMultiPlayer() && !kActivePlayer.isObserver()){7036#else7037			if(!kGame.isNetworkMultiPlayer() && !kActivePlayer.isObserver()){7038#endif7039				// Show splash screen7040				CvPopupInfo kPopup(BUTTONPOPUP_LEAGUE_SPLASH, league.GetID(), league.GetHostMember(), eGoverningSpecialSession, 0, /*bJustFounded*/ true);7041				GC.GetEngineUserInterface()->AddPopup(kPopup);7042			}70437044			DLLUI->AddMessage(0, GC.getGame().getActivePlayer(), false, GC.getEVENT_MESSAGE_TIME(), 7045													GetLocalizedText("TXT_KEY_LEAGUE_SPECIAL_SESSION_START_WORLD_CONGRESS").GetCString());70467047			// Begins as United Nations?7048			if (bBeginAsUnitedNations)7049			{7050				league.SetUnitedNations(true);7051			}70527053			m_vActiveLeagues.push_back(league);70547055			LogLeagueFounded(eFounder);7056		}7057	}7058}

Calls

Called by