CvPolicyAI::GetNumHappinessPolicies(CvPlayer *, PolicyBranchTypes)
- Defined in
- CvPolicyAI.cpp, line 728
- Class
- CvPolicyAI
- Hook name
CivHooks::CvPolicyAI_GetNumHappinessPolicies
Hooks
static bool BeforeCvPolicyAI_GetNumHappinessPolicies(CvPolicyAI* self, CvPlayer* pPlayer, PolicyBranchTypes eBranch, int& result);static void AfterCvPolicyAI_GetNumHappinessPolicies(CvPolicyAI* self, CvPlayer* pPlayer, PolicyBranchTypes eBranch, int& result);static int ReplaceCvPolicyAI_GetNumHappinessPolicies(int (*original)(CvPolicyAI*, CvPlayer*, PolicyBranchTypes), CvPolicyAI* self, CvPlayer* pPlayer, PolicyBranchTypes eBranch);CivRegisterBefore<CivHooks::CvPolicyAI_GetNumHappinessPolicies>(host, &BeforeCvPolicyAI_GetNumHappinessPolicies);CivRegisterAfter<CivHooks::CvPolicyAI_GetNumHappinessPolicies>(host, &AfterCvPolicyAI_GetNumHappinessPolicies);CivRegisterReplace<CivHooks::CvPolicyAI_GetNumHappinessPolicies>(host, &ReplaceCvPolicyAI_GetNumHappinessPolicies);
Code
727/// How many policies in this branch help happiness?728int CvPolicyAI::GetNumHappinessPolicies(CvPlayer* pPlayer, PolicyBranchTypes eBranch)729{730 int iRtnValue = 0;731 int iBuildingClassLoop;732 BuildingClassTypes eBuildingClass;733 for(int iPolicyLoop = 0; iPolicyLoop < GC.getNumPolicyInfos(); iPolicyLoop++)734 {735 PolicyTypes ePolicy = (PolicyTypes)iPolicyLoop;736 CvPolicyEntry* pkPolicyInfo = GC.getPolicyInfo(ePolicy);737 if(pkPolicyInfo)738 {739 if (pkPolicyInfo->GetPolicyBranchType() == eBranch)740 {741 for(iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)742 {743 eBuildingClass = (BuildingClassTypes) iBuildingClassLoop;744745 CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);746 if (!pkBuildingClassInfo)747 {748 continue;749 }750751 BuildingTypes eBuilding = (BuildingTypes)pPlayer->getCivilizationInfo().getCivilizationBuildings(eBuildingClass);752 if (eBuilding != NO_BUILDING)753 {754 // Don't count a building that can only be built in conquered cities755 CvBuildingEntry *pkEntry = GC.getBuildingInfo(eBuilding);756 if (!pkEntry || pkEntry->IsNoOccupiedUnhappiness())757 {758 continue;759 }760761 if (pkPolicyInfo->GetBuildingClassHappiness(eBuildingClass) != 0)762 {763 iRtnValue++;764 break;765 }766 }767 }768 }769 }770 }771 return iRtnValue;772}
Calls
- CvBuildingEntry::IsNoOccupiedUnhappiness() const
- CvCivilizationInfo::getCivilizationBuildings(int) const
- CvGlobals::getBuildingClassInfo(BuildingClassTypes)
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getNumBuildingClassInfos()
- CvGlobals::getNumPolicyInfos()
- CvGlobals::getPolicyInfo(PolicyTypes)
- CvPlayer::getCivilizationInfo() const
- CvPolicyEntry::GetBuildingClassHappiness(int) const
- CvPolicyEntry::GetPolicyBranchType() const