From 31619717d50619bd30fa4e09c5e47e35b6e84b2e Mon Sep 17 00:00:00 2001 From: L3-M <100478094+L3-M@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:47:44 +0300 Subject: [PATCH] tweak(gui): Configure player money per minute in GameData --- Generals/Code/GameEngine/Include/Common/GlobalData.h | 1 + Generals/Code/GameEngine/Source/Common/GlobalData.cpp | 6 ++++++ Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp | 6 ++++-- GeneralsMD/Code/GameEngine/Include/Common/GlobalData.h | 1 + GeneralsMD/Code/GameEngine/Source/Common/GlobalData.cpp | 6 ++++++ GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp | 6 ++++-- 6 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Generals/Code/GameEngine/Include/Common/GlobalData.h b/Generals/Code/GameEngine/Include/Common/GlobalData.h index e10943f2e46..0e592192217 100644 --- a/Generals/Code/GameEngine/Include/Common/GlobalData.h +++ b/Generals/Code/GameEngine/Include/Common/GlobalData.h @@ -410,6 +410,7 @@ class GlobalData : public SubsystemInterface // TheSuperHackers @feature L3-M 21/08/2025 toggle the money per minute display, false shows only the original current money Bool m_showMoneyPerMinute; + Bool m_allowMoneyPerMinuteForPlayer; Real m_shakeSubtleIntensity; ///< Intensity for shaking a camera with SHAKE_SUBTLE Real m_shakeNormalIntensity; ///< Intensity for shaking a camera with SHAKE_NORMAL diff --git a/Generals/Code/GameEngine/Source/Common/GlobalData.cpp b/Generals/Code/GameEngine/Source/Common/GlobalData.cpp index 4b722238773..9e573ad77bf 100644 --- a/Generals/Code/GameEngine/Source/Common/GlobalData.cpp +++ b/Generals/Code/GameEngine/Source/Common/GlobalData.cpp @@ -442,6 +442,11 @@ GlobalData* GlobalData::m_theOriginal = NULL; { "CameraAudibleRadius", INI::parseReal, NULL, offsetof( GlobalData, m_cameraAudibleRadius ) }, { "GroupMoveClickToGatherAreaFactor", INI::parseReal, NULL, offsetof( GlobalData, m_groupMoveClickToGatherFactor ) }, + +#if !PRESERVE_RETAIL_BEHAVIOR + { "AllowMoneyPerMinuteForPlayer", INI::parseBool, NULL, offsetof( GlobalData, m_allowMoneyPerMinuteForPlayer ) }, +#endif + { "ShakeSubtleIntensity", INI::parseReal, NULL, offsetof( GlobalData, m_shakeSubtleIntensity ) }, { "ShakeNormalIntensity", INI::parseReal, NULL, offsetof( GlobalData, m_shakeNormalIntensity ) }, { "ShakeStrongIntensity", INI::parseReal, NULL, offsetof( GlobalData, m_shakeStrongIntensity ) }, @@ -943,6 +948,7 @@ GlobalData::GlobalData() m_gameTimeFontSize = 8; m_showMoneyPerMinute = FALSE; + m_allowMoneyPerMinuteForPlayer = FALSE; m_debugShowGraphicalFramerate = FALSE; diff --git a/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp b/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp index 2546482e565..3facfcb7577 100644 --- a/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/InGameUI.cpp @@ -1880,8 +1880,10 @@ void InGameUI::update( void ) if( moneyPlayer) { Money *money = moneyPlayer->getMoney(); - Bool showIncome = TheGlobalData->m_showMoneyPerMinute; - if (!showIncome) + Bool wantShowIncome = TheGlobalData->m_showMoneyPerMinute; + Bool canShowIncome = TheGlobalData->m_allowMoneyPerMinuteForPlayer || TheControlBar->isObserverControlBarOn(); + Bool doShowIncome = wantShowIncome && canShowIncome; + if (!doShowIncome) { UnsignedInt currentMoney = money->countMoney(); if( lastMoney != currentMoney ) diff --git a/GeneralsMD/Code/GameEngine/Include/Common/GlobalData.h b/GeneralsMD/Code/GameEngine/Include/Common/GlobalData.h index 5ff1ed4039e..0ffbd28506b 100644 --- a/GeneralsMD/Code/GameEngine/Include/Common/GlobalData.h +++ b/GeneralsMD/Code/GameEngine/Include/Common/GlobalData.h @@ -417,6 +417,7 @@ class GlobalData : public SubsystemInterface // TheSuperHackers @feature L3-M 21/08/2025 toggle the money per minute display, false shows only the original current money Bool m_showMoneyPerMinute; + Bool m_allowMoneyPerMinuteForPlayer; Real m_shakeSubtleIntensity; ///< Intensity for shaking a camera with SHAKE_SUBTLE Real m_shakeNormalIntensity; ///< Intensity for shaking a camera with SHAKE_NORMAL diff --git a/GeneralsMD/Code/GameEngine/Source/Common/GlobalData.cpp b/GeneralsMD/Code/GameEngine/Source/Common/GlobalData.cpp index 071c5debeb3..42f2775f744 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/GlobalData.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/GlobalData.cpp @@ -442,6 +442,11 @@ GlobalData* GlobalData::m_theOriginal = NULL; { "CameraAudibleRadius", INI::parseReal, NULL, offsetof( GlobalData, m_cameraAudibleRadius ) }, { "GroupMoveClickToGatherAreaFactor", INI::parseReal, NULL, offsetof( GlobalData, m_groupMoveClickToGatherFactor ) }, + +#if !PRESERVE_RETAIL_BEHAVIOR + { "AllowMoneyPerMinuteForPlayer", INI::parseBool, NULL, offsetof( GlobalData, m_allowMoneyPerMinuteForPlayer ) }, +#endif + { "ShakeSubtleIntensity", INI::parseReal, NULL, offsetof( GlobalData, m_shakeSubtleIntensity ) }, { "ShakeNormalIntensity", INI::parseReal, NULL, offsetof( GlobalData, m_shakeNormalIntensity ) }, { "ShakeStrongIntensity", INI::parseReal, NULL, offsetof( GlobalData, m_shakeStrongIntensity ) }, @@ -952,6 +957,7 @@ GlobalData::GlobalData() m_gameTimeFontSize = 8; m_showMoneyPerMinute = FALSE; + m_allowMoneyPerMinuteForPlayer = FALSE; m_debugShowGraphicalFramerate = FALSE; diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp index e88bc58a955..c616deed95b 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/InGameUI.cpp @@ -1936,8 +1936,10 @@ void InGameUI::update( void ) if( moneyPlayer) { Money *money = moneyPlayer->getMoney(); - Bool showIncome = TheGlobalData->m_showMoneyPerMinute; - if (!showIncome) + Bool wantShowIncome = TheGlobalData->m_showMoneyPerMinute; + Bool canShowIncome = TheGlobalData->m_allowMoneyPerMinuteForPlayer || TheControlBar->isObserverControlBarOn(); + Bool doShowIncome = wantShowIncome && canShowIncome; + if (!doShowIncome) { UnsignedInt currentMoney = money->countMoney(); if( lastMoney != currentMoney )