EconomicAIHelpers::IsTestStrategy_HaltGrowthBuildings(CvPlayer *)
- Defined in
- CvEconomicAI.cpp, line 3943
- Hook name
CivHooks::EconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings
Hooks
static bool BeforeEconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings(CvPlayer* pPlayer, bool& result);static void AfterEconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings(CvPlayer* pPlayer, bool& result);static bool ReplaceEconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings(bool (*original)(CvPlayer*), CvPlayer* pPlayer);CivRegisterBefore<CivHooks::EconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings>(host, &BeforeEconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings);CivRegisterAfter<CivHooks::EconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings>(host, &AfterEconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings);CivRegisterReplace<CivHooks::EconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings>(host, &ReplaceEconomicAIHelpers_IsTestStrategy_HaltGrowthBuildings);
Code
3942/// "Halt Growth Buildings" Player Strategy: Stop building granaries if working on a wonder that provides them for free3943bool EconomicAIHelpers::IsTestStrategy_HaltGrowthBuildings(CvPlayer* pPlayer)3944{3945 BuildingTypes eNextDesiredWonder = pPlayer->GetCitySpecializationAI()->GetNextWonderDesired();39463947 // Is average income below desired threshold over past X turns?3948 if(eNextDesiredWonder != NO_BUILDING)3949 {3950 CvBuildingXMLEntries* pkGameBuildings = GC.GetGameBuildings();3951 CvBuildingEntry* pkBuildingInfo = pkGameBuildings->GetEntry(eNextDesiredWonder);3952 if(pkBuildingInfo)3953 {3954 BuildingClassTypes eBuildingClass = (BuildingClassTypes)pkBuildingInfo->GetFreeBuildingClass();3955 if(eBuildingClass != NO_BUILDINGCLASS)3956 {3957 CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);3958 {3959 if(pkBuildingClassInfo)3960 {3961 BuildingTypes eBuilding = (BuildingTypes)pkBuildingClassInfo->getDefaultBuildingIndex();3962 if(eBuilding != NO_BUILDING)3963 {3964 CvBuildingEntry* pkFreeBuildingInfo = pkGameBuildings->GetEntry(eBuilding);3965 if(pkFreeBuildingInfo)3966 {3967 if(pkFreeBuildingInfo->GetYieldChange(YIELD_FOOD) > 0)3968 {3969 return true;3970 }3971 }3972 }3973 }3974 }3975 }3976 }3977 }3978 return false;3979}
Calls
- CvBuildingClassInfo::getDefaultBuildingIndex() const
- CvBuildingEntry::GetFreeBuildingClass() const
- CvBuildingEntry::GetYieldChange(int) const
- CvBuildingXMLEntries::GetEntry(int)
- CvCitySpecializationAI::GetNextWonderDesired() const
- CvGlobals::getBuildingClassInfo(BuildingClassTypes)
- CvGlobals::GetGameBuildings() const
- CvPlayer::GetCitySpecializationAI() const