From 26fecbf2cabdab4f81f1f53c48992f4a4b6d8c3c Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Fri, 25 Oct 2024 19:08:13 +0000 Subject: [PATCH] Simplify income calculation in kingdom overview, account for flaggables --- client/windows/CKingdomInterface.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/client/windows/CKingdomInterface.cpp b/client/windows/CKingdomInterface.cpp index 0d754741f..136f7317b 100644 --- a/client/windows/CKingdomInterface.cpp +++ b/client/windows/CKingdomInterface.cpp @@ -583,28 +583,16 @@ void CKingdomInterface::generateMinesList(const std::vectorID == Obj::MINE || object->ID == Obj::ABANDONED_MINE) { const CGMine * mine = dynamic_cast(object); - assert(mine); minesCount[mine->producedResource]++; - totalIncome += mine->dailyIncome()[EGameResID::GOLD]; } } - //Heroes can produce gold as well - skill, specialty or arts - std::vector heroes = LOCPLINT->cb->getHeroesInfo(true); - auto * playerSettings = LOCPLINT->cb->getPlayerSettings(LOCPLINT->playerID); - for(auto & hero : heroes) - { - totalIncome += hero->dailyIncome()[EGameResID::GOLD]; - } - - //Add town income of all towns - std::vector towns = LOCPLINT->cb->getTownsInfo(true); - for(auto & town : towns) - { - totalIncome += town->dailyIncome()[EGameResID::GOLD]; - } + for(auto & mapObject : ownedObjects) + totalIncome += mapObject->asOwnable()->dailyIncome()[EGameResID::GOLD]; //if player has some modded boosts we want to show that as well + const auto * playerSettings = LOCPLINT->cb->getPlayerSettings(LOCPLINT->playerID); + const auto & towns = LOCPLINT->cb->getTownsInfo(true); totalIncome += LOCPLINT->cb->getPlayerState(LOCPLINT->playerID)->valOfBonuses(BonusType::RESOURCES_CONSTANT_BOOST, BonusSubtypeID(GameResID(EGameResID::GOLD))) * playerSettings->handicap.percentIncome / 100; totalIncome += LOCPLINT->cb->getPlayerState(LOCPLINT->playerID)->valOfBonuses(BonusType::RESOURCES_TOWN_MULTIPLYING_BOOST, BonusSubtypeID(GameResID(EGameResID::GOLD))) * towns.size() * playerSettings->handicap.percentIncome / 100;