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
- CvBuildInfo::getFeatureTime(int) const
- CvBuildInfo::getRoute() const
- CvBuildInfo::getTime() const
- CvBuildInfo::isRepair() const
- CvEraInfo::getBuildPercent() const
- CvGame::getGameSpeedInfo() const
- CvGame::getStartEraInfo() const
- CvGameSpeedInfo::getBuildPercent() const
- CvGlobals::getBuildInfo(BuildTypes)
- CvGlobals::getGame()
- CvGlobals::getNumBuildInfos()
- CvGlobals::getTerrainInfo(TerrainTypes)
- CvPlayer::getTeam() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlot::getFeatureType() const
- CvPlot::getRouteType() const
- CvPlot::getTerrainType() const
- CvTeam::getBuildTimeChange(BuildTypes) const
- CvTeam::getTeam(TeamTypes)
- CvTerrainInfo::getBuildModifier() const
std::max
Called by
- CvBuilderTaskingAI::AddImprovingResourcesDirectives(CvUnit *, CvPlot *, int)
- CvBuilderTaskingAI::GetBuildTimeWeight(CvUnit *, CvPlot *, BuildTypes, bool, int)
- CvDllPlot::GetBuildTime(BuildTypes, PlayerTypes) const
- CvPlot::changeBuildProgress(BuildTypes, int, PlayerTypes)
- CvPlot::getBuildTurnsLeft(BuildTypes, PlayerTypes, int, int) const
- CvPlot::getBuildTurnsTotal(BuildTypes, PlayerTypes) const
- CvLuaPlot::lGetBuildTime(lua_State *)