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}