Bazaar developer reference

CvPlot::getBuildTime(BuildTypes, PlayerTypes) const

Defined in
CvPlot.cpp, line 2724
Class
CvPlot
Hook name
CivHooks::CvPlot_getBuildTime

Hooks

static bool BeforeCvPlot_getBuildTime(const CvPlot* self, BuildTypes eBuild, PlayerTypes ePlayer, int& result);static void AfterCvPlot_getBuildTime(const CvPlot* self, BuildTypes eBuild, PlayerTypes ePlayer, int& result);static int ReplaceCvPlot_getBuildTime(int (*original)(const CvPlot*, BuildTypes, PlayerTypes), const CvPlot* self, BuildTypes eBuild, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvPlot_getBuildTime>(host, &BeforeCvPlot_getBuildTime);CivRegisterAfter<CivHooks::CvPlot_getBuildTime>(host, &AfterCvPlot_getBuildTime);CivRegisterReplace<CivHooks::CvPlot_getBuildTime>(host, &ReplaceCvPlot_getBuildTime);

Code

2724int CvPlot::getBuildTime(BuildTypes eBuild, PlayerTypes ePlayer) const2725{2726	int iTime;27272728	CvAssertMsg(getTerrainType() != NO_TERRAIN, "TerrainType is not assigned a valid value");27292730	iTime = GC.getBuildInfo(eBuild)->getTime();2731	if (ePlayer != NO_PLAYER)2732	{2733		TeamTypes eTeam = GET_PLAYER(ePlayer).getTeam();2734		if (eTeam != NO_TEAM)2735		{2736			iTime += GET_TEAM(eTeam).getBuildTimeChange(eBuild);2737		}2738	}27392740	// Repair is either 3 turns or the original build time, whichever is shorter2741	if(GC.getBuildInfo(eBuild)->isRepair())2742	{2743		RouteTypes eRoute = getRouteType();27442745		if(eRoute != NO_ROUTE)2746		{2747			for(int iBuildLoop = 0; iBuildLoop < GC.getNumBuildInfos(); iBuildLoop++)2748			{2749				CvBuildInfo* pkBuildInfo = GC.getBuildInfo((BuildTypes) iBuildLoop);2750				if(!pkBuildInfo)2751				{2752					continue;2753				}27542755				if(pkBuildInfo->getRoute() == eRoute)2756				{2757					if(pkBuildInfo->getTime() < iTime)2758					{2759						iTime = pkBuildInfo->getTime();2760					}2761				}2762			}2763		}2764	}2765	// End Repair time mod27662767	if(getFeatureType() != NO_FEATURE)2768	{2769		iTime += GC.getBuildInfo(eBuild)->getFeatureTime(getFeatureType());2770	}27712772	iTime *= std::max(0, (GC.getTerrainInfo(getTerrainType())->getBuildModifier() + 100));2773	iTime /= 100;27742775	iTime *= GC.getGame().getGameSpeedInfo().getBuildPercent();2776	iTime /= 100;27772778	iTime *= GC.getGame().getStartEraInfo().getBuildPercent();2779	iTime /= 100;27802781	return iTime;2782}

Calls

Called by