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}