Bazaar developer reference

CvPlot::getImprovementTypeNeededToImproveResource(PlayerTypes, bool)

Defined in
CvPlot.cpp, line 6587
Class
CvPlot
Hook name
CivHooks::CvPlot_getImprovementTypeNeededToImproveResource

Hooks

static bool BeforeCvPlot_getImprovementTypeNeededToImproveResource(CvPlot* self, PlayerTypes ePlayer, bool bTestPlotOwner, ImprovementTypes& result);static void AfterCvPlot_getImprovementTypeNeededToImproveResource(CvPlot* self, PlayerTypes ePlayer, bool bTestPlotOwner, ImprovementTypes& result);static ImprovementTypes ReplaceCvPlot_getImprovementTypeNeededToImproveResource(ImprovementTypes (*original)(CvPlot*, PlayerTypes, bool), CvPlot* self, PlayerTypes ePlayer, bool bTestPlotOwner);CivRegisterBefore<CivHooks::CvPlot_getImprovementTypeNeededToImproveResource>(host, &BeforeCvPlot_getImprovementTypeNeededToImproveResource);CivRegisterAfter<CivHooks::CvPlot_getImprovementTypeNeededToImproveResource>(host, &AfterCvPlot_getImprovementTypeNeededToImproveResource);CivRegisterReplace<CivHooks::CvPlot_getImprovementTypeNeededToImproveResource>(host, &ReplaceCvPlot_getImprovementTypeNeededToImproveResource);

Code

6587ImprovementTypes CvPlot::getImprovementTypeNeededToImproveResource(PlayerTypes ePlayer, bool bTestPlotOwner)6588{6589	CvAssertMsg(ePlayer == NO_PLAYER || ePlayer >= 0, "ePlayer is expected to be non-negative (invalid Index)");6590	CvAssertMsg(ePlayer == NO_PLAYER || ePlayer < MAX_MAJOR_CIVS, "ePlayer is expected to be within maximum bounds (invalid Index)");65916592	ResourceTypes eResource = NO_RESOURCE;6593	if(ePlayer != NO_PLAYER)6594	{6595		eResource = getResourceType(GET_PLAYER(ePlayer).getTeam());6596	}6597	else6598	{6599		eResource = getResourceType();6600	}66016602	if(eResource == NO_RESOURCE)6603	{6604		return NO_IMPROVEMENT;6605	}66066607	ImprovementTypes eImprovementNeeded = NO_IMPROVEMENT;66086609	// see if we can improve the resource6610	for(int iBuildIndex = 0; iBuildIndex < GC.getNumBuildInfos(); iBuildIndex++)6611	{6612		BuildTypes eBuild = (BuildTypes) iBuildIndex;6613		CvBuildInfo* pBuildInfo = GC.getBuildInfo(eBuild);6614		if(pBuildInfo == NULL)6615			continue;66166617		if(!canBuild(eBuild, ePlayer, false /*bTestVisible*/, bTestPlotOwner))6618			continue;66196620		if(ePlayer != NO_PLAYER)6621		{6622			if(!GET_PLAYER(ePlayer).canBuild(this, eBuild, false /*bTestEra*/, false /*bTestVisible*/, false /*bTestGold*/, bTestPlotOwner))6623			{6624				continue;6625			}6626		}66276628		ImprovementTypes eImprovement = (ImprovementTypes) pBuildInfo->getImprovement();6629		if(eImprovement == NO_IMPROVEMENT)6630			continue;66316632		CvImprovementEntry* pImprovementInfo = GC.getImprovementInfo(eImprovement);6633		if(pImprovementInfo == NULL)6634			continue;66356636		if(!pImprovementInfo->IsImprovementResourceTrade(eResource))6637			continue;66386639		if(pImprovementInfo->IsCreatedByGreatPerson())6640			continue;66416642		if(pImprovementInfo->IsWater() != isWater())6643			continue;66446645		eImprovementNeeded = eImprovement;6646	}66476648	return eImprovementNeeded;6649}

Calls

Called by