Bazaar developer reference

CvPlayer::GetUnhappinessFromCityForUI(CvCity *) const

Defined in
CvPlayer.cpp, line 12454
Class
CvPlayer
Hook name
CivHooks::CvPlayer_GetUnhappinessFromCityForUI

Hooks

static bool BeforeCvPlayer_GetUnhappinessFromCityForUI(const CvPlayer* self, CvCity* pCity, int& result);static void AfterCvPlayer_GetUnhappinessFromCityForUI(const CvPlayer* self, CvCity* pCity, int& result);static int ReplaceCvPlayer_GetUnhappinessFromCityForUI(int (*original)(const CvPlayer*, CvCity*), const CvPlayer* self, CvCity* pCity);CivRegisterBefore<CivHooks::CvPlayer_GetUnhappinessFromCityForUI>(host, &BeforeCvPlayer_GetUnhappinessFromCityForUI);CivRegisterAfter<CivHooks::CvPlayer_GetUnhappinessFromCityForUI>(host, &AfterCvPlayer_GetUnhappinessFromCityForUI);CivRegisterReplace<CivHooks::CvPlayer_GetUnhappinessFromCityForUI>(host, &ReplaceCvPlayer_GetUnhappinessFromCityForUI);

Code

12453/// Used for providing info to the player12454int CvPlayer::GetUnhappinessFromCityForUI(CvCity* pCity) const12455{12456	int iNumCitiesUnhappinessTimes100 = 0;12457	int iPopulationUnhappinessTimes100 = 0;1245812459	int iPopulation = pCity->getPopulation() * 100;1246012461	// No Unhappiness from Specialist Pop? (Policies, etc.)12462	if(isHalfSpecialistUnhappiness())12463	{12464		int iSpecialistCount = pCity->GetCityCitizens()->GetTotalSpecialistCount() * 100;12465		iPopulation -= (iSpecialistCount / 2);12466	}1246712468	// Occupied?12469	if(pCity->IsOccupied() && !pCity->IsIgnoreCityForHappiness())12470	{12471		iNumCitiesUnhappinessTimes100 += (100 * /*5*/ GC.getUNHAPPINESS_PER_CAPTURED_CITY());12472		iPopulationUnhappinessTimes100 += int(iPopulation* /*1.34f*/ GC.getUNHAPPINESS_PER_OCCUPIED_POPULATION());1247312474		// Mod (Policies, etc.)12475		if(GetOccupiedPopulationUnhappinessMod() != 0)12476		{12477			iPopulationUnhappinessTimes100 *= (100 + GetOccupiedPopulationUnhappinessMod());12478			iPopulationUnhappinessTimes100 /= 100;12479		}12480	}12481	// Normal City12482	else12483	{12484		iNumCitiesUnhappinessTimes100 += (100 * /*2*/ GC.getUNHAPPINESS_PER_CITY());12485		iPopulationUnhappinessTimes100 += (iPopulation* /*1*/ GC.getUNHAPPINESS_PER_POPULATION());1248612487		if(pCity->isCapital() && GetCapitalUnhappinessMod() != 0)12488		{12489			iPopulationUnhappinessTimes100 *= (100 + GetCapitalUnhappinessMod());12490			iPopulationUnhappinessTimes100 /= 100;12491		}1249212493		iPopulationUnhappinessTimes100 *= (100 + GetUnhappinessMod());12494		iPopulationUnhappinessTimes100 /= 100;1249512496		iPopulationUnhappinessTimes100 *= 100 + GetPlayerTraits()->GetPopulationUnhappinessModifier();12497		iPopulationUnhappinessTimes100 /= 100;12498	}1249912500	// Population Handicap mod12501	iPopulationUnhappinessTimes100 *= getHandicapInfo().getPopulationUnhappinessMod();12502	iPopulationUnhappinessTimes100 /= 100;1250312504	// City Count Player mod12505	int iMod = 0;12506	iMod += GetCityCountUnhappinessMod();12507	iMod += GetPlayerTraits()->GetCityUnhappinessModifier();1250812509	iNumCitiesUnhappinessTimes100 *= (100 + iMod);12510	iNumCitiesUnhappinessTimes100 /= 100;1251112512	// City Count Handicap mod12513	iNumCitiesUnhappinessTimes100 *= getHandicapInfo().getNumCitiesUnhappinessMod();12514	iNumCitiesUnhappinessTimes100 /= 100;1251512516	// City Count Map size mod12517	iNumCitiesUnhappinessTimes100 *= GC.getMap().getWorldInfo().getNumCitiesUnhappinessPercent();12518	iNumCitiesUnhappinessTimes100 /= 100;1251912520	return iNumCitiesUnhappinessTimes100 + iPopulationUnhappinessTimes100;12521}

Calls

Called by