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
- CvCivilizationInfo::isCivilizationFreeTechs(int) const
- CvGame::getHandicapInfo() const
- CvGame::getStartEra() const
- CvGlobals::getMap()
- CvGlobals::getNumTechInfos()
- CvGlobals::getTechInfo(TechTypes)
- CvHandicapInfo::isAIFreeTechs(int) const
- CvHandicapInfo::isFreeTechs(int) const
- CvMap::setRevealedPlots(TeamTypes, bool, bool)
- CvMap::updateDeferredFog()
- CvPlayer::getCivilizationInfo() const
- CvPlayer::getTeam() const
- CvPlayer::initFreeState(CvGameInitialItemsOverrides &)
- CvPlayer::isAlive() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvTeam::getTeam(TeamTypes)
- CvTeam::GetTeamTechs() const
- CvTeam::isAlive() const
- CvTeam::isHuman() const
- CvTeam::setHasTech(TechTypes, bool, PlayerTypes, bool, bool)
- CvTeamTechs::HasTech(TechTypes) const
- CvTechEntry::GetEra() const
- CvTechEntry::IsMapVisible() const
std::_Vb_reference::operator boolstd::vector::operator[]