Bazaar developer reference

CvPlayer::doAdoptPolicy(PolicyTypes)

Defined in
CvPlayer.cpp, line 13385
Class
CvPlayer
Hook name
CivHooks::CvPlayer_doAdoptPolicy
Lua events
GameEvents.PlayerAdoptPolicy

Hooks

static bool BeforeCvPlayer_doAdoptPolicy(CvPlayer* self, PolicyTypes ePolicy);static void AfterCvPlayer_doAdoptPolicy(CvPlayer* self, PolicyTypes ePolicy);static void ReplaceCvPlayer_doAdoptPolicy(void (*original)(CvPlayer*, PolicyTypes), CvPlayer* self, PolicyTypes ePolicy);CivRegisterBefore<CivHooks::CvPlayer_doAdoptPolicy>(host, &BeforeCvPlayer_doAdoptPolicy);CivRegisterAfter<CivHooks::CvPlayer_doAdoptPolicy>(host, &AfterCvPlayer_doAdoptPolicy);CivRegisterReplace<CivHooks::CvPlayer_doAdoptPolicy>(host, &ReplaceCvPlayer_doAdoptPolicy);

Code

13385void CvPlayer::doAdoptPolicy(PolicyTypes ePolicy)13386{13387	CvPolicyEntry* pkPolicyInfo = GC.getPolicyInfo(ePolicy);13388	CvAssert(pkPolicyInfo != NULL);13389	if(pkPolicyInfo == NULL)13390		return;1339113392	// Can we actually adopt this?13393	if(!canAdoptPolicy(ePolicy))13394		return;1339513396	bool bTenet = pkPolicyInfo->GetLevel() > 0;1339713398	// Pay Culture cost - if applicable13399	if (bTenet && GetNumFreeTenets() > 0)13400	{13401		ChangeNumFreeTenets(-1, false);13402	}13403	else if (GetNumFreePolicies() > 0)13404	{13405		ChangeNumFreePolicies(-1);13406	}13407	else13408	{13409		changeJONSCulture(-getNextPolicyCost());13410	}1341113412	setHasPolicy(ePolicy, true);1341313414	// Update cost if trying to buy another policy this turn13415	DoUpdateNextPolicyCost();1341613417	// Branch unlocked13418	PolicyBranchTypes ePolicyBranch = (PolicyBranchTypes) pkPolicyInfo->GetPolicyBranchType();13419	GetPlayerPolicies()->SetPolicyBranchUnlocked(ePolicyBranch, true, false);1342013421	GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);1342213423	// This Dirty bit must only be set when changing something for the active player13424	if(GC.getGame().getActivePlayer() == GetID())13425	{13426		GC.GetEngineUserInterface()->setDirty(Policies_DIRTY_BIT, true);13427	}134281342913430	ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();13431	if(pkScriptSystem)13432	{13433		CvLuaArgsHandle args;13434		args->Push(GetID());13435		args->Push(ePolicy);1343613437		// Attempt to execute the game events.13438		// Will return false if there are no registered listeners.13439		bool bResult = false;13440		LuaSupport::CallHook(pkScriptSystem, "PlayerAdoptPolicy", args.get(), bResult);13441	}1344213443	updateYield();		// Policies can change the yield13444}

Calls

Called by