Bazaar developer reference

CvCityStrategyAI::GetYieldAverage(YieldTypes)

Defined in
CvCityStrategyAI.cpp, line 668
Class
CvCityStrategyAI
Hook name
CivHooks::CvCityStrategyAI_GetYieldAverage

Hooks

static bool BeforeCvCityStrategyAI_GetYieldAverage(CvCityStrategyAI* self, YieldTypes eYieldType, double& result);static void AfterCvCityStrategyAI_GetYieldAverage(CvCityStrategyAI* self, YieldTypes eYieldType, double& result);static double ReplaceCvCityStrategyAI_GetYieldAverage(double (*original)(CvCityStrategyAI*, YieldTypes), CvCityStrategyAI* self, YieldTypes eYieldType);CivRegisterBefore<CivHooks::CvCityStrategyAI_GetYieldAverage>(host, &BeforeCvCityStrategyAI_GetYieldAverage);CivRegisterAfter<CivHooks::CvCityStrategyAI_GetYieldAverage>(host, &AfterCvCityStrategyAI_GetYieldAverage);CivRegisterReplace<CivHooks::CvCityStrategyAI_GetYieldAverage>(host, &ReplaceCvCityStrategyAI_GetYieldAverage);

Code

667/// Get the average value of the yield for this city668double CvCityStrategyAI::GetYieldAverage(YieldTypes eYieldType)669{670	CvPlayer* pPlayer = &GET_PLAYER(m_pCity->getOwner());671	CvPlotsVector& aiPlots = pPlayer->GetPlots();672673	int iTilesWorked = 0;674	int iYieldAmount = 0;675	for(uint ui = 0; ui < aiPlots.size(); ui++)676	{677		// at the end of the plot list678		if(aiPlots[ui] == -1)679		{680			break;681		}682683		CvPlot* pPlot = GC.getMap().plotByIndex(aiPlots[ui]);684		if(!m_pCity->GetCityCitizens()->IsWorkingPlot(pPlot))685		{686			continue;687		}688689		iTilesWorked++;690		iYieldAmount += pPlot->calculateYield(eYieldType);691	}692693	double fRatio = 0.0;694	if(iTilesWorked > 0)695	{696		fRatio = iYieldAmount / (double)iTilesWorked;697	}698699	return fRatio;700}

Calls

Called by