CvTreasury::CalculateInflationRate()
- Defined in
- CvTreasury.cpp, line 685
- Class
- CvTreasury
- Hook name
CivHooks::CvTreasury_CalculateInflationRate
Hooks
static bool BeforeCvTreasury_CalculateInflationRate(CvTreasury* self, int& result);static void AfterCvTreasury_CalculateInflationRate(CvTreasury* self, int& result);static int ReplaceCvTreasury_CalculateInflationRate(int (*original)(CvTreasury*), CvTreasury* self);CivRegisterBefore<CivHooks::CvTreasury_CalculateInflationRate>(host, &BeforeCvTreasury_CalculateInflationRate);CivRegisterAfter<CivHooks::CvTreasury_CalculateInflationRate>(host, &AfterCvTreasury_CalculateInflationRate);CivRegisterReplace<CivHooks::CvTreasury_CalculateInflationRate>(host, &ReplaceCvTreasury_CalculateInflationRate);
Code
684/// Compute inflation for this part of the game685int CvTreasury::CalculateInflationRate()686{687 CvGame& kGame = GC.getGame();688689 CvHandicapInfo& playerHandicap = m_pPlayer->getHandicapInfo();690 CvHandicapInfo& gameHandicap = kGame.getHandicapInfo();691 CvGameSpeedInfo& gameSpeedInfo = kGame.getGameSpeedInfo();692693 int iTurns = ((kGame.getGameTurn() + kGame.getElapsedGameTurns()) / 2);694 iTurns += gameSpeedInfo.getInflationOffset();695696 if(iTurns <= 0)697 {698 return 0;699 }700701 int iInflationPerTurnTimes10000 = gameSpeedInfo.getInflationPercent();702 iInflationPerTurnTimes10000 *= playerHandicap.getInflationPercent();703 iInflationPerTurnTimes10000 /= 100;704705 int iModifier = 0;706707 if(!m_pPlayer->isHuman() && !m_pPlayer->isBarbarian())708 {709 int iAIModifier = gameHandicap.getAIInflationPercent();710 iAIModifier *= std::max(0, ((gameHandicap.getAIPerEraModifier() * m_pPlayer->GetCurrentEra()) + 100));711 iAIModifier /= 100;712713 iModifier += iAIModifier - 100;714 }715716 iInflationPerTurnTimes10000 *= std::max(0, 100 + iModifier);717 iInflationPerTurnTimes10000 /= 100;718719 // Keep up to second order terms in binomial series720 int iRatePercent = (iTurns * iInflationPerTurnTimes10000) / 100;721 iRatePercent += (iTurns * (iTurns - 1) * iInflationPerTurnTimes10000 * iInflationPerTurnTimes10000) / 2000000;722723 CvAssert(iRatePercent >= 0);724725 return iRatePercent;726}
Calls
- CvGame::getElapsedGameTurns() const
- CvGame::getGameSpeedInfo() const
- CvGame::getGameTurn()
- CvGame::getHandicapInfo() const
- CvGameSpeedInfo::getInflationOffset() const
- CvGameSpeedInfo::getInflationPercent() const
- CvGlobals::getGame()
- CvHandicapInfo::getAIInflationPercent() const
- CvHandicapInfo::getAIPerEraModifier() const
- CvHandicapInfo::getInflationPercent() const
- CvPlayer::GetCurrentEra() const
- CvPlayer::getHandicapInfo() const
- CvPlayer::isBarbarian() const
- CvPlayer::isHuman() const
std::max