Bazaar developer reference

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

Called by