EconomicAIHelpers::IsTestStrategy_EarlyExpansion(CvPlayer *)
- Defined in
- CvEconomicAI.cpp, line 3323
- Hook name
CivHooks::EconomicAIHelpers_IsTestStrategy_EarlyExpansion
Hooks
static bool BeforeEconomicAIHelpers_IsTestStrategy_EarlyExpansion(CvPlayer* pPlayer, bool& result);static void AfterEconomicAIHelpers_IsTestStrategy_EarlyExpansion(CvPlayer* pPlayer, bool& result);static bool ReplaceEconomicAIHelpers_IsTestStrategy_EarlyExpansion(bool (*original)(CvPlayer*), CvPlayer* pPlayer);CivRegisterBefore<CivHooks::EconomicAIHelpers_IsTestStrategy_EarlyExpansion>(host, &BeforeEconomicAIHelpers_IsTestStrategy_EarlyExpansion);CivRegisterAfter<CivHooks::EconomicAIHelpers_IsTestStrategy_EarlyExpansion>(host, &AfterEconomicAIHelpers_IsTestStrategy_EarlyExpansion);CivRegisterReplace<CivHooks::EconomicAIHelpers_IsTestStrategy_EarlyExpansion>(host, &ReplaceEconomicAIHelpers_IsTestStrategy_EarlyExpansion);
Code
3322/// "Early Expansion" Player Strategy: An early Strategy simply designed to get player up to 3 Cities quickly.3323bool EconomicAIHelpers::IsTestStrategy_EarlyExpansion(CvPlayer* pPlayer)3324{3325 int iDesiredCities;3326 int iFlavorExpansion = 0;3327 int iFlavorGrowth = 0;33283329 if(GC.getGame().isOption(GAMEOPTION_ONE_CITY_CHALLENGE) && pPlayer->isHuman())3330 {3331 return false;3332 }33333334 iDesiredCities = pPlayer->GetEconomicAI()->GetEarlyCityNumberTarget();3335 for(int iFlavorLoop = 0; iFlavorLoop < GC.getNumFlavorTypes() && (iFlavorExpansion == 0 || iFlavorGrowth == 0); iFlavorLoop++)3336 {3337 if(GC.getFlavorTypes((FlavorTypes)iFlavorLoop) == "FLAVOR_EXPANSION")3338 {3339 iFlavorExpansion = pPlayer->GetGrandStrategyAI()->GetPersonalityAndGrandStrategy((FlavorTypes)iFlavorLoop);3340 }3341 else if(GC.getFlavorTypes((FlavorTypes)iFlavorLoop) == "FLAVOR_GROWTH")3342 {3343 iFlavorGrowth = pPlayer->GetGrandStrategyAI()->GetPersonalityAndGrandStrategy((FlavorTypes)iFlavorLoop);3344 }3345 }33463347 iDesiredCities = (iDesiredCities * iFlavorExpansion) / max(iFlavorGrowth, 1);3348 int iDifficulty = max(0,GC.getGame().getHandicapInfo().GetID() - 3);3349 iDesiredCities += iDifficulty;33503351 // scale this based on world size3352 const int iDefaultNumTiles = 80*52;3353 iDesiredCities = (iDesiredCities * GC.getMap().numPlots()) / iDefaultNumTiles;33543355 // See how many unowned Tiles there are on this player's landmass3356 if(pPlayer->getCapitalCity() != NULL)3357 {3358 // Make sure city specialization has gotten one chance to specialize the capital before we adopt this3359 //if(GC.getGame().getGameTurn() > GC.getAI_CITY_SPECIALIZATION_EARLIEST_TURN())3360 {3361 CvArea* pArea = GC.getMap().getArea(pPlayer->getCapitalCity()->getArea());33623363 // Is this area still one of the best to settle?3364 int iBestArea, iSecondBestArea;3365 pPlayer->GetBestSettleAreas(pPlayer->GetEconomicAI()->GetMinimumSettleFertility(), iBestArea, iSecondBestArea);3366 if(iBestArea == pArea->GetID() || iSecondBestArea == pArea->GetID())3367 {3368 int iNumOwnedTiles = pArea->getNumOwnedTiles();3369 int iNumUnownedTiles = pArea->getNumUnownedTiles();3370 int iNumTiles = max(1,pArea->getNumTiles());33713372 int iOwnageRatio = iNumOwnedTiles * 100 / iNumTiles;3373 int iNumCities = pPlayer->getNumCities() - pPlayer->GetNumPuppetCities();3374 int iSettlersOnMap = pPlayer->GetNumUnitsWithUnitAI(UNITAI_SETTLE, true);33753376 if(iOwnageRatio < GC.getAI_STRATEGY_AREA_IS_FULL_PERCENT()3377 && (iNumCities + iSettlersOnMap) < iDesiredCities3378 && iNumUnownedTiles >= GC.getAI_STRATEGY_EARLY_EXPANSION_NUM_UNOWNED_TILES_REQUIRED())3379 {3380 return true;3381 }3382 }3383 }3384 }33853386 return false;3387}
Calls
- CvArea::GetID() const
- CvArea::getNumOwnedTiles() const
- CvArea::getNumTiles() const
- CvArea::getNumUnownedTiles() const
- CvBaseInfo::GetID() const
- CvCity::getArea() const
- CvEconomicAI::GetEarlyCityNumberTarget() const
- CvEconomicAI::GetMinimumSettleFertility() const
- CvGame::getHandicapInfo() const
- CvGame::isOption(GameOptionTypes) const
- CvGlobals::getAI_STRATEGY_AREA_IS_FULL_PERCENT()
- CvGlobals::getAI_STRATEGY_EARLY_EXPANSION_NUM_UNOWNED_TILES_REQUIRED()
- CvGlobals::getFlavorTypes(FlavorTypes)
- CvGlobals::getGame()
- CvGlobals::getMap()
- CvGlobals::getNumFlavorTypes()
- CvGrandStrategyAI::GetPersonalityAndGrandStrategy(FlavorTypes, bool)
- CvMap::getArea(int)
- CvMap::numPlots() const
- CvPlayer::GetBestSettleAreas(int, int &, int &)
- CvPlayer::getCapitalCity()
- CvPlayer::GetEconomicAI() const
- CvPlayer::GetGrandStrategyAI() const
- CvPlayer::getNumCities() const
- CvPlayer::GetNumPuppetCities() const
- CvPlayer::GetNumUnitsWithUnitAI(UnitAITypes, bool, bool)
- CvPlayer::isHuman() const
std::maxstd::operator==