Bazaar developer reference

CvGame::initFreeState(CvGameInitialItemsOverrides &)

Defined in
CvGame.cpp, line 1333
Class
CvGame
Hook name
CivHooks::CvGame_initFreeState

Hooks

static bool BeforeCvGame_initFreeState(CvGame* self, CvGameInitialItemsOverrides& kOverrides);static void AfterCvGame_initFreeState(CvGame* self, CvGameInitialItemsOverrides& kOverrides);static void ReplaceCvGame_initFreeState(void (*original)(CvGame*, CvGameInitialItemsOverrides&), CvGame* self, CvGameInitialItemsOverrides& kOverrides);CivRegisterBefore<CivHooks::CvGame_initFreeState>(host, &BeforeCvGame_initFreeState);CivRegisterAfter<CivHooks::CvGame_initFreeState>(host, &AfterCvGame_initFreeState);CivRegisterReplace<CivHooks::CvGame_initFreeState>(host, &ReplaceCvGame_initFreeState);

Code

1333void CvGame::initFreeState(CvGameInitialItemsOverrides& kOverrides)1334{1335	for(int iI = 0; iI < GC.getNumTechInfos(); iI++)1336	{1337		const TechTypes eTech = static_cast<TechTypes>(iI);1338		CvTechEntry* pkTechInfo = GC.getTechInfo(eTech);1339		if(pkTechInfo)1340		{1341			for(int iJ = 0; iJ < MAX_TEAMS; iJ++)1342			{1343				const TeamTypes eTeam = static_cast<TeamTypes>(iJ);1344				const bool bGrantFreeTechs = kOverrides.GrantInitialFreeTechsPerTeam[eTeam];13451346				if(bGrantFreeTechs)1347				{1348					CvTeam& kTeam = GET_TEAM(eTeam);1349					if(kTeam.isAlive())1350					{1351						// Skip if we already have it1352						if (kTeam.GetTeamTechs()->HasTech(eTech))1353						{1354							continue;1355						}13561357						bool bValid = false;13581359						if(!bValid)1360						{1361							if((getHandicapInfo().isFreeTechs(iI)) ||1362							        (!(kTeam.isHuman())&& getHandicapInfo().isAIFreeTechs(iI)) ||1363							        (pkTechInfo->GetEra() < getStartEra()))1364							{1365								bValid = true;1366							}1367						}13681369						if(!bValid)1370						{1371							for(int iK = 0; iK < MAX_PLAYERS; iK++)1372							{1373								CvPlayerAI& kPlayer = GET_PLAYER((PlayerTypes)iK);1374								if(kPlayer.isAlive())1375								{1376									if(kPlayer.getTeam() == eTeam)1377									{1378										if(kPlayer.getCivilizationInfo().isCivilizationFreeTechs(iI))1379										{1380											bValid = true;1381											break;1382										}1383									}1384								}1385							}1386						}13871388						kTeam.setHasTech(eTech, bValid, NO_PLAYER, false, false);1389						if(bValid && pkTechInfo->IsMapVisible())1390						{1391							GC.getMap().setRevealedPlots(eTeam, true, true);1392							GC.getMap().updateDeferredFog();1393						}1394					}1395				}1396			}1397		}1398	}13991400	for(int iI = 0; iI < MAX_PLAYERS; iI++)1401	{1402		const PlayerTypes ePlayer = static_cast<PlayerTypes>(iI);1403		CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);1404		if(kPlayer.isAlive())1405		{1406			kPlayer.initFreeState(kOverrides);1407		}1408	}1409}

Calls

Called by