EconomicAIHelpers::IsTestStrategy_EnoughExpansion(EconomicAIStrategyTypes, CvPlayer *)
- Defined in
- CvEconomicAI.cpp, line 3390
- Hook name
CivHooks::EconomicAIHelpers_IsTestStrategy_EnoughExpansion
Hooks
static bool BeforeEconomicAIHelpers_IsTestStrategy_EnoughExpansion(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer, bool& result);static void AfterEconomicAIHelpers_IsTestStrategy_EnoughExpansion(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer, bool& result);static bool ReplaceEconomicAIHelpers_IsTestStrategy_EnoughExpansion(bool (*original)(EconomicAIStrategyTypes, CvPlayer*), EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::EconomicAIHelpers_IsTestStrategy_EnoughExpansion>(host, &BeforeEconomicAIHelpers_IsTestStrategy_EnoughExpansion);CivRegisterAfter<CivHooks::EconomicAIHelpers_IsTestStrategy_EnoughExpansion>(host, &AfterEconomicAIHelpers_IsTestStrategy_EnoughExpansion);CivRegisterReplace<CivHooks::EconomicAIHelpers_IsTestStrategy_EnoughExpansion>(host, &ReplaceEconomicAIHelpers_IsTestStrategy_EnoughExpansion);
Code
3389/// "Enough Expansion" Player Strategy: Never want a lot of settlers hanging around3390bool EconomicAIHelpers::IsTestStrategy_EnoughExpansion(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer)3391{3392 int iBestArea;3393 int iSecondBestArea;33943395 if (GC.getGame().isOption(GAMEOPTION_ONE_CITY_CHALLENGE) && pPlayer->isHuman())3396 {3397 return true;3398 }33993400 int iNumSettleAreas = pPlayer->GetBestSettleAreas(pPlayer->GetEconomicAI()->GetMinimumSettleFertility(), iBestArea, iSecondBestArea);3401 if (iNumSettleAreas == 0)3402 {3403 return true;3404 }34053406 int iNumExtraSettlers = 0;34073408 if (!pPlayer->IsEmpireUnhappy())3409 {34103411 // If we are running "ReallyExpandToOtherContinents"3412 EconomicAIStrategyTypes eStrategyExpandToOtherContinents = (EconomicAIStrategyTypes) GC.getInfoTypeForString("ECONOMICAISTRATEGY_REALLY_EXPAND_TO_OTHER_CONTINENTS");3413 if (eStrategyExpandToOtherContinents != NO_ECONOMICAISTRATEGY)3414 {3415 if (pPlayer->GetEconomicAI()->IsUsingStrategy(eStrategyExpandToOtherContinents))3416 {3417 ++iNumExtraSettlers;3418 if (GC.getMap().GetAIMapHint() & 4)3419 {3420 ++iNumExtraSettlers;3421 }3422 }3423 }34243425 // if we are generally expansionistic3426 int iFlavorExpansion = pPlayer->GetGrandStrategyAI()->GetPersonalityAndGrandStrategy((FlavorTypes)GC.getInfoTypeForString("FLAVOR_EXPANSION"));3427 if (iFlavorExpansion > 6)3428 {3429 ++iNumExtraSettlers;3430 }3431 if (iFlavorExpansion > 8)3432 {3433 ++iNumExtraSettlers;3434 }34353436 }34373438 int iSettlersOnMap = pPlayer->GetNumUnitsWithUnitAI(UNITAI_SETTLE, true);34393440 CvEconomicAIStrategyXMLEntry* pStrategy = pPlayer->GetEconomicAI()->GetEconomicAIStrategies()->GetEntry(eStrategy);3441 int iMaxSettlers = /*1*/ pStrategy->GetWeightThreshold();34423443 if (iSettlersOnMap >= iMaxSettlers + iNumExtraSettlers)3444 {3445 return true;3446 }34473448 return false;3449}
Calls
- CvEconomicAI::GetEconomicAIStrategies()
- CvEconomicAI::GetMinimumSettleFertility() const
- CvEconomicAI::IsUsingStrategy(EconomicAIStrategyTypes)
- CvEconomicAIStrategyXMLEntries::GetEntry(int)
- CvEconomicAIStrategyXMLEntry::GetWeightThreshold() const
- CvGame::isOption(GameOptionTypes) const
- CvGlobals::getGame()
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvGlobals::getMap()
- CvGrandStrategyAI::GetPersonalityAndGrandStrategy(FlavorTypes, bool)
- CvMap::GetAIMapHint()
- CvPlayer::GetBestSettleAreas(int, int &, int &)
- CvPlayer::GetEconomicAI() const
- CvPlayer::GetGrandStrategyAI() const
- CvPlayer::GetNumUnitsWithUnitAI(UnitAITypes, bool, bool)
- CvPlayer::IsEmpireUnhappy() const
- CvPlayer::isHuman() const