Bazaar developer reference

EconomicAIHelpers::IsTestStrategy_CitiesNeedNavalTileImprovement(EconomicAIStrategyTypes, CvPlayer *)

Defined in
CvEconomicAI.cpp, line 3550
Hook name
CivHooks::EconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement

Hooks

static bool BeforeEconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer, bool& result);static void AfterEconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer, bool& result);static bool ReplaceEconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement(bool (*original)(EconomicAIStrategyTypes, CvPlayer*), EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::EconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement>(host, &BeforeEconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement);CivRegisterAfter<CivHooks::EconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement>(host, &AfterEconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement);CivRegisterReplace<CivHooks::EconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement>(host, &ReplaceEconomicAIHelpers_IsTestStrategy_CitiesNeedNavalTileImprovement);

Code

3549/// "Cities Need Naval Tile Improvement" Player Strategy: Looks at how many of this player's Cities need NAVAL_TILE_IMPROVEMENT, and depending on the intrinsic NAVAL_TILE_IMPROVEMENT Flavor decides whether or not it's worth prioritizing this Flavor on an empire-wide scale3550bool EconomicAIHelpers::IsTestStrategy_CitiesNeedNavalTileImprovement(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer)3551{3552	int iNumCitiesNeedNavalTileImprovement = 0;35533554	CvCity* pLoopCity;3555	int iLoop;35563557	AICityStrategyTypes eStrategyNeedNavalTileImprovement = (AICityStrategyTypes) GC.getInfoTypeForString("AICITYSTRATEGY_NEED_NAVAL_TILE_IMPROVEMENT");35583559	// CityStrategy doesn't exist in XML, so abort3560	if(eStrategyNeedNavalTileImprovement == NO_AICITYSTRATEGY)3561	{3562		return false;3563	}35643565	for(pLoopCity = pPlayer->firstCity(&iLoop); pLoopCity != NULL; pLoopCity = pPlayer->nextCity(&iLoop))3566	{3567		if(pLoopCity->GetCityStrategyAI()->IsUsingCityStrategy(eStrategyNeedNavalTileImprovement))3568		{3569			iNumCitiesNeedNavalTileImprovement++;3570		}3571	}35723573	if(iNumCitiesNeedNavalTileImprovement > 0)3574	{3575		CvEconomicAIStrategyXMLEntry* pStrategy = pPlayer->GetEconomicAI()->GetEconomicAIStrategies()->GetEntry(eStrategy);3576		int iWeightThresholdModifier = GetWeightThresholdModifier(eStrategy, pPlayer);	// 1 Weight per NAVAL_TILE_IMPROVEMENT Flavor3577		int iWeightThreshold = pStrategy->GetWeightThreshold() + iWeightThresholdModifier;	// 2535783579		int iCurrentWeight = (pPlayer->getNumCities() - 1) * 10;3580		iCurrentWeight /= iWeightThreshold;35813582		// See CvStrategyAI::IsTestStrategy_CitiesNeedBorders for a couple examples on how the math here works35833584		// Do enough of our Cities want NavalTileImprovement? [Average is 10/30; range is 10/25 to 10/35]3585		if(iNumCitiesNeedNavalTileImprovement > iCurrentWeight)3586		{3587			return true;3588		}3589	}35903591	return false;3592}

Calls

Called by