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
- CustomMods::isBUGFIX_DUMMY_POLICIES()
- CvBuildingEntry::GetBuildingClassHappiness(int) const
- CvCity::GetHappinessFromBuildings() const
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGlobals::getBuildingClassInfo(BuildingClassTypes)
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getNumBuildingClassInfos()
- CvPlayer::countNumBuildings(BuildingTypes) const
- CvPlayer::firstCity(int *, bool) const
- CvPlayer::getCivilizationInfo() const
- CvPlayer::GetPlayerPolicies() const
- CvPlayer::nextCity(int *, bool) const
- CvPlayerPolicies::GetNumPoliciesOwned(bool, bool) const