Bazaar developer reference

CvBuilderTaskingAI::GetBuildTimeWeight(CvUnit *, CvPlot *, BuildTypes, bool, int)

Defined in
CvBuilderTaskingAI.cpp, line 1941
Class
CvBuilderTaskingAI
Hook name
CivHooks::CvBuilderTaskingAI_GetBuildTimeWeight

Hooks

static bool BeforeCvBuilderTaskingAI_GetBuildTimeWeight(CvBuilderTaskingAI* self, CvUnit* pUnit, CvPlot* pPlot, BuildTypes eBuild, bool bIgnoreFeatureTime, int iAdditionalTime, int& result);static void AfterCvBuilderTaskingAI_GetBuildTimeWeight(CvBuilderTaskingAI* self, CvUnit* pUnit, CvPlot* pPlot, BuildTypes eBuild, bool bIgnoreFeatureTime, int iAdditionalTime, int& result);static int ReplaceCvBuilderTaskingAI_GetBuildTimeWeight(int (*original)(CvBuilderTaskingAI*, CvUnit*, CvPlot*, BuildTypes, bool, int), CvBuilderTaskingAI* self, CvUnit* pUnit, CvPlot* pPlot, BuildTypes eBuild, bool bIgnoreFeatureTime, int iAdditionalTime);CivRegisterBefore<CivHooks::CvBuilderTaskingAI_GetBuildTimeWeight>(host, &BeforeCvBuilderTaskingAI_GetBuildTimeWeight);CivRegisterAfter<CivHooks::CvBuilderTaskingAI_GetBuildTimeWeight>(host, &AfterCvBuilderTaskingAI_GetBuildTimeWeight);CivRegisterReplace<CivHooks::CvBuilderTaskingAI_GetBuildTimeWeight>(host, &ReplaceCvBuilderTaskingAI_GetBuildTimeWeight);

Code

1940/// Get the weight determined by the building time of the item1941int CvBuilderTaskingAI::GetBuildTimeWeight(CvUnit* pUnit, CvPlot* pPlot, BuildTypes eBuild, bool bIgnoreFeatureTime, int iAdditionalTime)1942{1943	// if we need to repair this plot, replace the build with a repair build1944	if((GC.getBuildInfo(eBuild)->getImprovement() != NO_IMPROVEMENT && pPlot->IsImprovementPillaged()) || (GC.getBuildInfo(eBuild)->getRoute() != NO_ROUTE && pPlot->IsRoutePillaged()))1945	{1946		// find a repair directive to replace1947		// find the repair build1948		eBuild = m_eRepairBuild;1949	}19501951	int iBuildTimeNormal = pPlot->getBuildTime(eBuild, m_pPlayer->GetID());1952	int iBuildTurnsLeft = pPlot->getBuildTurnsLeft(eBuild, m_pPlayer->GetID(), pUnit->workRate(true), pUnit->workRate(true));1953	int iBuildTime = min(iBuildTimeNormal, iBuildTurnsLeft);1954	if(iBuildTime <= 0)1955	{1956		iBuildTime = 1;1957	}19581959	if(bIgnoreFeatureTime)1960	{1961		if(pPlot->getFeatureType() != NO_FEATURE)1962		{1963			iBuildTime -= GC.getBuildInfo(eBuild)->getFeatureTime(pPlot->getFeatureType());1964		}1965	}19661967	iBuildTime += iAdditionalTime;19681969	return 10000 / iBuildTime;1970}

Calls

Called by