CvPlot::getUpgradeTimeLeft(ImprovementTypes, PlayerTypes) const
- Defined in
- CvPlot.cpp, line 4817
- Class
- CvPlot
- Hook name
CivHooks::CvPlot_getUpgradeTimeLeft
Hooks
static bool BeforeCvPlot_getUpgradeTimeLeft(const CvPlot* self, ImprovementTypes eImprovement, PlayerTypes ePlayer, int& result);static void AfterCvPlot_getUpgradeTimeLeft(const CvPlot* self, ImprovementTypes eImprovement, PlayerTypes ePlayer, int& result);static int ReplaceCvPlot_getUpgradeTimeLeft(int (*original)(const CvPlot*, ImprovementTypes, PlayerTypes), const CvPlot* self, ImprovementTypes eImprovement, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvPlot_getUpgradeTimeLeft>(host, &BeforeCvPlot_getUpgradeTimeLeft);CivRegisterAfter<CivHooks::CvPlot_getUpgradeTimeLeft>(host, &AfterCvPlot_getUpgradeTimeLeft);CivRegisterReplace<CivHooks::CvPlot_getUpgradeTimeLeft>(host, &ReplaceCvPlot_getUpgradeTimeLeft);
Code
4817int CvPlot::getUpgradeTimeLeft(ImprovementTypes eImprovement, PlayerTypes ePlayer) const4818{4819 int iUpgradeLeft;4820 int iUpgradeRate;4821 int iTurnsLeft;48224823 iUpgradeLeft = ((100 * GC.getGame().getImprovementUpgradeTime(eImprovement, const_cast<CvPlot*>(this))) - ((getImprovementType() == eImprovement) ? getUpgradeProgress() : 0));4824 iUpgradeLeft /= 100;48254826 if(ePlayer == NO_PLAYER)4827 {4828 return iUpgradeLeft;4829 }48304831 iUpgradeRate = GET_PLAYER(ePlayer).getImprovementUpgradeRate();48324833 if(iUpgradeRate == 0)4834 {4835 return iUpgradeLeft;4836 }48374838 // Upgrade rate is stored at 100x4839 iTurnsLeft = (100 * iUpgradeLeft / iUpgradeRate);48404841 if((iTurnsLeft * iUpgradeRate) < iUpgradeLeft)4842 {4843 iTurnsLeft++;4844 }48454846 return std::max(1, iTurnsLeft);4847}