Bazaar developer reference

CvCity::foodDifferenceTimes100(bool, CvString *) const

Defined in
CvCity.cpp, line 7288
Class
CvCity
Hook name
CivHooks::CvCity_foodDifferenceTimes100

Hooks

static bool BeforeCvCity_foodDifferenceTimes100(const CvCity* self, bool bBottom, CvString* toolTipSink, int& result);static void AfterCvCity_foodDifferenceTimes100(const CvCity* self, bool bBottom, CvString* toolTipSink, int& result);static int ReplaceCvCity_foodDifferenceTimes100(int (*original)(const CvCity*, bool, CvString*), const CvCity* self, bool bBottom, CvString* toolTipSink);CivRegisterBefore<CivHooks::CvCity_foodDifferenceTimes100>(host, &BeforeCvCity_foodDifferenceTimes100);CivRegisterAfter<CivHooks::CvCity_foodDifferenceTimes100>(host, &AfterCvCity_foodDifferenceTimes100);CivRegisterReplace<CivHooks::CvCity_foodDifferenceTimes100>(host, &ReplaceCvCity_foodDifferenceTimes100);

Code

7288int CvCity::foodDifferenceTimes100(bool bBottom, CvString* toolTipSink) const7289{7290	VALIDATE_OBJECT7291	int iDifference;72927293	if(isFoodProduction())7294	{7295		iDifference = std::min(0, GetFoodProduction(getYieldRate(YIELD_FOOD, false) - foodConsumption()) * 100);7296	}7297	else7298	{7299		iDifference = (getYieldRateTimes100(YIELD_FOOD, false) - foodConsumption() * 100);7300	}73017302	if(bBottom)7303	{7304		if((getPopulation() == 1) && (getFood() == 0))7305		{7306			iDifference = std::max(0, iDifference);7307		}7308	}73097310	// Growth Mods - Only apply if the City is growing (and not starving, otherwise it would actually have the OPPOSITE of the intended effect!)7311	if(iDifference > 0)7312	{7313		int iTotalMod = 100;73147315		// Capital Mod for player. Used for Policies and such7316		if(isCapital())7317		{7318			int iCapitalGrowthMod = GET_PLAYER(getOwner()).GetCapitalGrowthMod();7319			if(iCapitalGrowthMod != 0)7320			{7321				iTotalMod += iCapitalGrowthMod;7322				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_FOODMOD_CAPITAL", iCapitalGrowthMod);7323			}7324		}73257326		// City Mod for player. Used for Policies and such7327		int iCityGrowthMod = GET_PLAYER(getOwner()).GetCityGrowthMod();7328		if(iCityGrowthMod != 0)7329		{7330			iTotalMod += iCityGrowthMod;7331			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_FOODMOD_PLAYER", iCityGrowthMod);7332		}73337334		// Religion growth mod7335		int iReligionGrowthMod = 0;7336		ReligionTypes eMajority = GetCityReligions()->GetReligiousMajority();7337		if(eMajority != NO_RELIGION)7338		{7339			const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, getOwner());7340			if(pReligion)7341			{7342				bool bAtPeace = GET_TEAM(getTeam()).getAtWarCount(false) == 0;7343				iReligionGrowthMod = pReligion->m_Beliefs.GetCityGrowthModifier(bAtPeace);7344				BeliefTypes eSecondaryPantheon = GetCityReligions()->GetSecondaryReligionPantheonBelief();7345				if (eSecondaryPantheon != NO_BELIEF)7346				{7347					iReligionGrowthMod += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetCityGrowthModifier();7348				}7349				iTotalMod += iReligionGrowthMod;7350				GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_FOODMOD_RELIGION", iReligionGrowthMod);7351			}7352		}73537354		// Cities stop growing when empire is very unhappy7355		if(GET_PLAYER(getOwner()).IsEmpireVeryUnhappy())7356		{7357			int iMod = /*-100*/ GC.getVERY_UNHAPPY_GROWTH_PENALTY();7358			iTotalMod += iMod;7359			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_FOODMOD_UNHAPPY", iMod);7360		}7361		// Cities grow slower if the player is over his Happiness Limit7362		else if(GET_PLAYER(getOwner()).IsEmpireUnhappy())7363		{7364			int iMod = /*-75*/ GC.getUNHAPPY_GROWTH_PENALTY();7365			iTotalMod += iMod;7366			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_FOODMOD_UNHAPPY", iMod);7367		}7368		// WLTKD Growth Bonus7369		else if(GetWeLoveTheKingDayCounter() > 0)7370		{7371			int iMod = /*25*/ GC.getWLTKD_GROWTH_MULTIPLIER();7372			iTotalMod += iMod;7373			GC.getGame().BuildProdModHelpText(toolTipSink, "TXT_KEY_FOODMOD_WLTKD", iMod);7374		}73757376		iDifference *= iTotalMod;7377		iDifference /= 100;7378	}73797380	return iDifference;7381}

Calls

Called by