Bazaar developer reference

CvPlayer::GetHappinessFromBuildings() const

Defined in
CvPlayer.cpp, line 12070
Class
CvPlayer
Hook name
CivHooks::CvPlayer_GetHappinessFromBuildings

Hooks

static bool BeforeCvPlayer_GetHappinessFromBuildings(const CvPlayer* self, int& result);static void AfterCvPlayer_GetHappinessFromBuildings(const CvPlayer* self, int& result);static int ReplaceCvPlayer_GetHappinessFromBuildings(int (*original)(const CvPlayer*), const CvPlayer* self);CivRegisterBefore<CivHooks::CvPlayer_GetHappinessFromBuildings>(host, &BeforeCvPlayer_GetHappinessFromBuildings);CivRegisterAfter<CivHooks::CvPlayer_GetHappinessFromBuildings>(host, &AfterCvPlayer_GetHappinessFromBuildings);CivRegisterReplace<CivHooks::CvPlayer_GetHappinessFromBuildings>(host, &ReplaceCvPlayer_GetHappinessFromBuildings);

Code

12069/// Returns the amount of Global Happiness being added by Buildings12070int CvPlayer::GetHappinessFromBuildings() const12071{12072	int iHappiness = 0;12073	BuildingClassTypes eBuildingClass;1207412075	// Building Class Mods12076	int iSpecialBuildingHappiness = 0;12077	for(int iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)12078	{12079		eBuildingClass = (BuildingClassTypes) iI;1208012081		CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);12082		if(!pkBuildingClassInfo)12083		{12084			continue;12085		}1208612087		BuildingTypes eBuilding = (BuildingTypes) getCivilizationInfo().getCivilizationBuildings(eBuildingClass);12088		if(eBuilding != NO_BUILDING && countNumBuildings(eBuilding) > 0)12089		{12090			CvBuildingEntry* pkBuilding = GC.getBuildingInfo(eBuilding);12091			if(pkBuilding)12092			{12093				for(int jJ = 0; jJ < GC.getNumBuildingClassInfos(); jJ++)12094				{12095					BuildingClassTypes eBuildingClassThatGivesHappiness = (BuildingClassTypes) jJ;12096					int iHappinessPerBuilding = pkBuilding->GetBuildingClassHappiness(eBuildingClassThatGivesHappiness);12097					if(iHappinessPerBuilding > 0)12098					{12099						BuildingTypes eBuildingThatGivesHappiness = (BuildingTypes) getCivilizationInfo().getCivilizationBuildings(eBuildingClassThatGivesHappiness);12100						if(eBuildingThatGivesHappiness != NO_BUILDING)12101						{12102							iSpecialBuildingHappiness += iHappinessPerBuilding * countNumBuildings(eBuildingThatGivesHappiness);12103						}12104					}12105				}12106			}12107		}12108	}12109	iHappiness += iSpecialBuildingHappiness;1211012111	const CvCity* pLoopCity;12112	int iLoop;12113	for(pLoopCity = firstCity(&iLoop); pLoopCity != NULL; pLoopCity = nextCity(&iLoop))12114	{12115		iHappiness += pLoopCity->GetHappinessFromBuildings();12116	}1211712118	// Increase from num policies -- MOVE THIS CODE (and provide a new tool tip string) if we ever get happiness per X policies to something beside a building12119	if(m_iHappinessPerXPolicies > 0)12120	{12121#if defined(MOD_BUGFIX_DUMMY_POLICIES)12122		iHappiness += GetPlayerPolicies()->GetNumPoliciesOwned(MOD_BUGFIX_DUMMY_POLICIES) / m_iHappinessPerXPolicies;12123#else12124		iHappiness += GetPlayerPolicies()->GetNumPoliciesOwned() / m_iHappinessPerXPolicies;12125#endif12126	}1212712128	return iHappiness;12129}

Calls

Called by