Bazaar developer reference

CvPlayerPolicies::Reset()

Defined in
CvPolicyClasses.cpp, line 2621
Class
CvPlayerPolicies
Hook name
CivHooks::CvPlayerPolicies_Reset

Hooks

static bool BeforeCvPlayerPolicies_Reset(CvPlayerPolicies* self);static void AfterCvPlayerPolicies_Reset(CvPlayerPolicies* self);static void ReplaceCvPlayerPolicies_Reset(void (*original)(CvPlayerPolicies*), CvPlayerPolicies* self);CivRegisterBefore<CivHooks::CvPlayerPolicies_Reset>(host, &BeforeCvPlayerPolicies_Reset);CivRegisterAfter<CivHooks::CvPlayerPolicies_Reset>(host, &AfterCvPlayerPolicies_Reset);CivRegisterReplace<CivHooks::CvPlayerPolicies_Reset>(host, &ReplaceCvPlayerPolicies_Reset);

Code

2620/// Reset policy status array to all false2621void CvPlayerPolicies::Reset()2622{2623	int iI;26242625	for(iI = 0; iI < m_pPolicies->GetNumPolicies(); iI++)2626	{2627#if defined(MOD_API_EXTENSIONS)2628		m_pabFreePolicy[iI] = false;2629#endif2630		m_pabHasPolicy[iI] = false;2631		m_pabHasOneShotPolicyFired[iI] = false;2632		m_pabHaveOneShotFreeUnitsFired[iI] = false;2633		m_paePolicyBlockedBranchCheck[iI] = (PolicyBranchTypes)-2;2634	}26352636	for(iI = 0; iI < m_pPolicies->GetNumPolicyBranches(); iI++)2637	{2638		m_pabPolicyBranchUnlocked[iI] = false;2639		m_pabPolicyBranchBlocked[iI] = false;2640		m_pabPolicyBranchFinished[iI] = false;2641		m_paePolicyBranchesChosen[iI] = NO_POLICY_BRANCH_TYPE;2642	}26432644	m_iNumExtraBranches = 0;26452646	m_eBranchPicked1 = NO_POLICY_BRANCH_TYPE;2647	m_eBranchPicked2 = NO_POLICY_BRANCH_TYPE;2648	m_eBranchPicked3 = NO_POLICY_BRANCH_TYPE;26492650	// Reset AI too2651	m_pPolicyAI->Reset();265226532654	CvAssert( m_pPolicies->GetNumPolicies() == m_pPolicies->GetNumPolicies());2655	//  Pre-calculate a policy to branch table so we don't do this over and over again.2656	for (iI = 0; iI < m_pPolicies->GetNumPolicies(); ++iI)2657	{2658		PolicyTypes eType = (PolicyTypes) iI;2659		CvPolicyEntry* pkPolicyInfo = GC.getPolicyInfo(eType);2660		if(pkPolicyInfo == NULL)2661		{2662			m_paePolicyBlockedBranchCheck[eType] = NO_POLICY_BRANCH_TYPE;2663		}2664		else2665		{2666			// What is our branch?2667			PolicyBranchTypes eBranch = (PolicyBranchTypes) pkPolicyInfo->GetPolicyBranchType();26682669			// Are we a free branch policy?2670			if(eBranch == NO_POLICY_BRANCH_TYPE)2671			{2672				int iNumPolicyBranches = m_pPolicies->GetNumPolicyBranches();2673				for(int iBranchLoop = 0; iBranchLoop < iNumPolicyBranches; iBranchLoop++)2674				{2675					const PolicyBranchTypes eLoopBranch = static_cast<PolicyBranchTypes>(iBranchLoop);2676					CvPolicyBranchEntry* pkLoopPolicyBranch = GC.getPolicyBranchInfo(eLoopBranch);2677					if(pkLoopPolicyBranch)2678					{2679						// Yes, it's a freebie2680						if(pkLoopPolicyBranch->GetFreePolicy() == eType)2681						{2682							eBranch = eLoopBranch;2683							break;2684						}2685					}2686				}2687			}26882689			m_paePolicyBlockedBranchCheck[eType] = eBranch;2690		}2691	}2692}

Calls

Called by