Bazaar developer reference

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

Called by