Bazaar developer reference

CvPlayerPolicies::GetDominantPolicyBranchForTitle() const

Defined in
CvPolicyClasses.cpp, line 4410
Class
CvPlayerPolicies
Hook name
CivHooks::CvPlayerPolicies_GetDominantPolicyBranchForTitle

Hooks

static bool BeforeCvPlayerPolicies_GetDominantPolicyBranchForTitle(const CvPlayerPolicies* self, PolicyBranchTypes& result);static void AfterCvPlayerPolicies_GetDominantPolicyBranchForTitle(const CvPlayerPolicies* self, PolicyBranchTypes& result);static PolicyBranchTypes ReplaceCvPlayerPolicies_GetDominantPolicyBranchForTitle(PolicyBranchTypes (*original)(const CvPlayerPolicies*), const CvPlayerPolicies* self);CivRegisterBefore<CivHooks::CvPlayerPolicies_GetDominantPolicyBranchForTitle>(host, &BeforeCvPlayerPolicies_GetDominantPolicyBranchForTitle);CivRegisterAfter<CivHooks::CvPlayerPolicies_GetDominantPolicyBranchForTitle>(host, &AfterCvPlayerPolicies_GetDominantPolicyBranchForTitle);CivRegisterReplace<CivHooks::CvPlayerPolicies_GetDominantPolicyBranchForTitle>(host, &ReplaceCvPlayerPolicies_GetDominantPolicyBranchForTitle);

Code

4409/// Everything we picked recently the same?4410PolicyBranchTypes CvPlayerPolicies::GetDominantPolicyBranchForTitle() const4411{4412	// Everything we've picked recently matches4413	if(GetBranchPicked1() == GetBranchPicked2() &&4414	        GetBranchPicked1() == GetBranchPicked3() &&4415	        GetBranchPicked2() == GetBranchPicked3())4416	{4417		return GetBranchPicked1();4418	}44194420	// Haven't picked stuff from a branch three times in a row, so we have to see which branch we have the most of44214422	PolicyBranchTypes eTempBranch;44234424	std::vector<int> viPolicyBranchCounts;44254426	// Init vector4427	int iBranchLoop;4428	for(iBranchLoop = 0; iBranchLoop < m_pPolicies->GetNumPolicyBranches(); iBranchLoop++)4429	{4430		viPolicyBranchCounts.push_back(0);4431	}44324433	// Get count of each branch4434	for(int iPolicyLoop = 0; iPolicyLoop < GC.getNumPolicyInfos(); iPolicyLoop++)4435	{4436		const PolicyTypes eLoopPolicy = static_cast<PolicyTypes>(iPolicyLoop);4437		CvPolicyEntry* pkPolicyInfo = GC.getPolicyInfo(eLoopPolicy);4438		if(pkPolicyInfo)4439		{4440			if(HasPolicy(eLoopPolicy))4441			{4442				eTempBranch = (PolicyBranchTypes) pkPolicyInfo->GetPolicyBranchType();44434444				// Are we a free branch policy?4445				if(eTempBranch == NO_POLICY_BRANCH_TYPE)4446				{4447					for(iBranchLoop = 0; iBranchLoop < m_pPolicies->GetNumPolicyBranches(); iBranchLoop++)4448					{4449						const PolicyBranchTypes eLoopBranch = static_cast<PolicyBranchTypes>(iBranchLoop);4450						CvPolicyBranchEntry* pkPolicyBranchInfo = GC.getPolicyBranchInfo(eLoopBranch);4451						if(pkPolicyBranchInfo)4452						{4453							// Yes, it's a freebie4454							if(pkPolicyBranchInfo->GetFreePolicy() == eLoopPolicy)4455							{4456								eTempBranch = eLoopBranch;4457								break;4458							}4459						}4460					}4461				}44624463				if(eTempBranch != NO_POLICY_BRANCH_TYPE)4464				{4465					viPolicyBranchCounts[eTempBranch]++;4466				}4467			}4468		}4469	}44704471	// Now that we have our vector, see which has the most4472	PolicyBranchTypes eBestBranch = NO_POLICY_BRANCH_TYPE;4473	int iBestValue = 0;44744475	for(iBranchLoop = 0; iBranchLoop < m_pPolicies->GetNumPolicyBranches(); iBranchLoop++)4476	{4477		if(viPolicyBranchCounts[iBranchLoop] > iBestValue)4478		{4479			eBestBranch = (PolicyBranchTypes) iBranchLoop;4480			iBestValue = viPolicyBranchCounts[iBranchLoop];4481		}4482	}44834484	return eBestBranch;4485}

Calls

Called by