Bazaar developer reference

CvPlayer::canMaintain(ProcessTypes, bool) const

Defined in
CvPlayer.cpp, line 8437
Class
CvPlayer
Hook name
CivHooks::CvPlayer_canMaintain
Lua events
GameEvents.PlayerCanMaintain

Hooks

static bool BeforeCvPlayer_canMaintain(const CvPlayer* self, ProcessTypes eProcess, bool arg1, bool& result);static void AfterCvPlayer_canMaintain(const CvPlayer* self, ProcessTypes eProcess, bool arg1, bool& result);static bool ReplaceCvPlayer_canMaintain(bool (*original)(const CvPlayer*, ProcessTypes, bool), const CvPlayer* self, ProcessTypes eProcess, bool arg1);CivRegisterBefore<CivHooks::CvPlayer_canMaintain>(host, &BeforeCvPlayer_canMaintain);CivRegisterAfter<CivHooks::CvPlayer_canMaintain>(host, &AfterCvPlayer_canMaintain);CivRegisterReplace<CivHooks::CvPlayer_canMaintain>(host, &ReplaceCvPlayer_canMaintain);

Code

8437bool CvPlayer::canMaintain(ProcessTypes eProcess, bool) const8438{8439	// Check to see if it exists, scenarios can remove them and leave holes in the list.8440	const CvProcessInfo* pkProcessInfo = GC.getProcessInfo(eProcess);8441	if (!pkProcessInfo)8442		return false;84438444	if(!(GET_TEAM(getTeam()).GetTeamTechs()->HasTech((TechTypes)(pkProcessInfo->getTechPrereq()))))8445	{8446		return false;8447	}84488449	for(int iI = 0; iI < GC.getNumLeagueProjectInfos(); iI++)8450	{8451		LeagueProjectTypes eLeagueProject = (LeagueProjectTypes) iI;8452		CvLeagueProjectEntry* pInfo = GC.getLeagueProjectInfo(eLeagueProject);8453		if (pInfo && pInfo->GetProcess() == eProcess)8454		{8455			if (!GC.getGame().GetGameLeagues()->CanContributeToLeagueProject(GetID(), eLeagueProject))8456			{8457				return false;8458			}8459		}8460	}84618462	ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();8463	if(pkScriptSystem)8464	{8465		CvLuaArgsHandle args;8466		args->Push(GetID());8467		args->Push(eProcess);84688469		// Attempt to execute the game events.8470		// Will return false if there are no registered listeners.8471		bool bResult = false;8472		if(LuaSupport::CallTestAll(pkScriptSystem, "PlayerCanMaintain", args.get(), bResult))8473		{8474			// Check the result.8475			if(bResult == false)8476			{8477				return false;8478			}8479		}8480	}84818482	return true;8483}

Calls

Called by