Bazaar developer reference

CvPolicyAI::GetBranchBuildingHappiness(CvPlayer *, PolicyBranchTypes)

Defined in
CvPolicyAI.cpp, line 680
Class
CvPolicyAI
Hook name
CivHooks::CvPolicyAI_GetBranchBuildingHappiness

Hooks

static bool BeforeCvPolicyAI_GetBranchBuildingHappiness(CvPolicyAI* self, CvPlayer* pPlayer, PolicyBranchTypes eBranch, int& result);static void AfterCvPolicyAI_GetBranchBuildingHappiness(CvPolicyAI* self, CvPlayer* pPlayer, PolicyBranchTypes eBranch, int& result);static int ReplaceCvPolicyAI_GetBranchBuildingHappiness(int (*original)(CvPolicyAI*, CvPlayer*, PolicyBranchTypes), CvPolicyAI* self, CvPlayer* pPlayer, PolicyBranchTypes eBranch);CivRegisterBefore<CivHooks::CvPolicyAI_GetBranchBuildingHappiness>(host, &BeforeCvPolicyAI_GetBranchBuildingHappiness);CivRegisterAfter<CivHooks::CvPolicyAI_GetBranchBuildingHappiness>(host, &AfterCvPolicyAI_GetBranchBuildingHappiness);CivRegisterReplace<CivHooks::CvPolicyAI_GetBranchBuildingHappiness>(host, &ReplaceCvPolicyAI_GetBranchBuildingHappiness);

Code

679/// What's the total Happiness benefit we could get from all policies/tenets in the branch based on our current buildings?680int CvPolicyAI::GetBranchBuildingHappiness(CvPlayer* pPlayer, PolicyBranchTypes eBranch)681{682	// Policy Building Mods683	int iSpecialPolicyBuildingHappiness = 0;684	int iBuildingClassLoop;685	BuildingClassTypes eBuildingClass;686	for(int iPolicyLoop = 0; iPolicyLoop < GC.getNumPolicyInfos(); iPolicyLoop++)687	{688		PolicyTypes ePolicy = (PolicyTypes)iPolicyLoop;689		CvPolicyEntry* pkPolicyInfo = GC.getPolicyInfo(ePolicy);690		if(pkPolicyInfo)691		{692			if (pkPolicyInfo->GetPolicyBranchType() == eBranch)693			{694				for(iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)695				{696					eBuildingClass = (BuildingClassTypes) iBuildingClassLoop;697698					CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);699					if (!pkBuildingClassInfo)700					{701						continue;702					}703704					if (pkPolicyInfo->GetBuildingClassHappiness(eBuildingClass) != 0)705					{706						BuildingTypes eBuilding = (BuildingTypes)pPlayer->getCivilizationInfo().getCivilizationBuildings(eBuildingClass);707						if (eBuilding != NO_BUILDING)708						{709							CvCity *pCity;710							int iLoop;711							for (pCity = pPlayer->firstCity(&iLoop); pCity != NULL; pCity = pPlayer->nextCity(&iLoop))712							{713								if (pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)714								{715									iSpecialPolicyBuildingHappiness += pkPolicyInfo->GetBuildingClassHappiness(eBuildingClass);716								}717							}718						}719					}720				}721			}722		}723	}724	return iSpecialPolicyBuildingHappiness;725}

Calls

Called by