From c493e22b9bde5c9279ddb7865c9bb7f90cadfd60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Sat, 20 Jan 2024 17:13:57 +0200 Subject: [PATCH] #21193: Move gInitialCash to GameState_t, refactor uses --- src/openrct2-ui/windows/EditorScenarioOptions.cpp | 13 ++++++++----- src/openrct2/Editor.cpp | 2 +- src/openrct2/GameState.h | 1 + src/openrct2/actions/ScenarioSetSettingAction.cpp | 4 ++-- src/openrct2/interface/InteractiveConsole.cpp | 2 +- src/openrct2/management/Finance.cpp | 7 +++---- src/openrct2/management/Finance.h | 1 - src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/scenario/Scenario.cpp | 4 ++-- 11 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 7841546a26..73978527dc 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -29,6 +30,8 @@ #include #include +using namespace OpenRCT2; + static constexpr int32_t WW_FINANCIAL = 280; static constexpr int32_t WH_FINANCIAL = 149; @@ -433,10 +436,10 @@ private: switch (widgetIndex) { case WIDX_INITIAL_CASH_INCREASE: - if (gInitialCash < 1000000.00_GBP) + if (GetGameState().InitialCash < 1000000.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialCash, gInitialCash + 500.00_GBP); + ScenarioSetSetting::InitialCash, GetGameState().InitialCash + 500.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -446,10 +449,10 @@ private: Invalidate(); break; case WIDX_INITIAL_CASH_DECREASE: - if (gInitialCash > 0.00_GBP) + if (GetGameState().InitialCash > 0.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::InitialCash, gInitialCash - 500.00_GBP); + ScenarioSetSetting::InitialCash, GetGameState().InitialCash - 500.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -623,7 +626,7 @@ private: screenCoords = windowPos + ScreenCoordsXY{ initialCashWidget.left + 1, initialCashWidget.top }; auto ft = Formatter(); - ft.Add(gInitialCash); + ft.Add(GetGameState().InitialCash); DrawTextBasic(dpi, screenCoords, STR_CURRENCY_FORMAT_LABEL, ft); } diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 455b8316fd..471efc0ef2 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -336,7 +336,7 @@ namespace Editor gGuestInitialCash = std::clamp(gGuestInitialCash, 10.00_GBP, MAX_ENTRANCE_FEE); - gInitialCash = std::min(gInitialCash, 100000); + GetGameState().InitialCash = std::min(GetGameState().InitialCash, 100000); FinanceResetCashToInitial(); gBankLoan = std::clamp(gBankLoan, 0.00_GBP, 5000000.00_GBP); diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index f7f9133a79..6a9de6ccb4 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -25,6 +25,7 @@ namespace OpenRCT2 { uint32_t CurrentTicks{}; money64 Cash; + money64 InitialCash; }; GameState_t& GetGameState(); diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index 7665e168e5..6191b7987d 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -82,8 +82,8 @@ GameActions::Result ScenarioSetSettingAction::Execute() const } break; case ScenarioSetSetting::InitialCash: - gInitialCash = std::clamp(_value, 0.00_GBP, 1000000.00_GBP); - GetGameState().Cash = gInitialCash; + GetGameState().InitialCash = std::clamp(_value, 0.00_GBP, 1000000.00_GBP); + GetGameState().Cash = GetGameState().InitialCash; WindowInvalidateByClass(WindowClass::Finances); WindowInvalidateByClass(WindowClass::BottomToolbar); break; diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 97f9448bae..870d10ee2a 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -571,7 +571,7 @@ static int32_t ConsoleCommandGet(InteractiveConsole& console, const arguments_t& } else if (argv[0] == "scenario_initial_cash") { - console.WriteFormatLine("scenario_initial_cash %d", gInitialCash / 10); + console.WriteFormatLine("scenario_initial_cash %d", GetGameState().InitialCash / 10); } else if (argv[0] == "current_loan") { diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index b4ed22ef14..b361216ae7 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -39,7 +39,6 @@ static constexpr int32_t dword_988E60[static_cast(ExpenditureType::Coun 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, }; -money64 gInitialCash; money64 gBankLoan; uint8_t gBankLoanInterestRate; money64 gMaxBankLoan; @@ -226,7 +225,7 @@ void FinanceInit() gWeeklyProfitAverageDividend = 0; gWeeklyProfitAverageDivisor = 0; - gInitialCash = 10000.00_GBP; // Cheat detection + GetGameState().InitialCash = 10000.00_GBP; // Cheat detection GetGameState().Cash = 10000.00_GBP; gBankLoan = 10000.00_GBP; @@ -296,7 +295,7 @@ void FinanceUpdateDailyProfit() money64 FinanceGetInitialCash() { - return gInitialCash; + return GetGameState().InitialCash; } money64 FinanceGetCurrentLoan() @@ -356,7 +355,7 @@ void FinanceShiftExpenditureTable() */ void FinanceResetCashToInitial() { - GetGameState().Cash = gInitialCash; + GetGameState().Cash = GetGameState().InitialCash; } /** diff --git a/src/openrct2/management/Finance.h b/src/openrct2/management/Finance.h index d7ec01b2bd..645614908d 100644 --- a/src/openrct2/management/Finance.h +++ b/src/openrct2/management/Finance.h @@ -38,7 +38,6 @@ constexpr uint8_t MaxBankLoanInterestRate = 255; extern const money64 research_cost_table[RESEARCH_FUNDING_COUNT]; -extern money64 gInitialCash; extern money64 gBankLoan; extern uint8_t gBankLoanInterestRate; extern money64 gMaxBankLoan; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 7be1a83ef1..8d069df73c 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -166,7 +166,7 @@ namespace OpenRCT2 } // Initial cash will eventually be removed - gInitialCash = gameState.Cash; + gameState.InitialCash = gameState.Cash; } void Save(GameState_t& gameState, IStream& stream) diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 17c9f24467..646a5cc2dc 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1400,7 +1400,7 @@ namespace RCT1 gMaxBankLoan = ToMoney64(_s4.MaxLoan); // It's more like 1.33%, but we can only use integers. Can be fixed once we have our own save format. gBankLoanInterestRate = 1; - gInitialCash = ToMoney64(_s4.Cash); + gameState.InitialCash = ToMoney64(_s4.Cash); gCompanyValue = ToMoney64(_s4.CompanyValue); gParkValue = CorrectRCT1ParkValue(_s4.ParkValue); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 14bf93c76a..3d1ac44929 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -260,7 +260,7 @@ namespace RCT2 ImportTileElements(); ImportEntities(); - gInitialCash = ToMoney64(_s6.InitialCash); + gameState.InitialCash = ToMoney64(_s6.InitialCash); gBankLoan = ToMoney64(_s6.CurrentLoan); gParkFlags = _s6.ParkFlags & ~PARK_FLAGS_NO_MONEY_SCENARIO; diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 7ace861ede..27c320c392 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -114,8 +114,8 @@ void ScenarioReset() gParkRating = park.CalculateParkRating(); gParkValue = park.CalculateParkValue(); gCompanyValue = park.CalculateCompanyValue(); - gHistoricalProfit = gInitialCash - gBankLoan; - GetGameState().Cash = gInitialCash; + gHistoricalProfit = GetGameState().InitialCash - gBankLoan; + GetGameState().Cash = GetGameState().InitialCash; { utf8 normalisedName[64];