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}