From e300ca8277811938f370f50d3d8da8411c814fbf Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Wed, 13 Aug 2025 22:29:25 +0200 Subject: [PATCH] Move .maxBankLoan into ParkData struct --- src/openrct2-ui/windows/EditorScenarioOptions.cpp | 10 +++++----- src/openrct2-ui/windows/Finances.cpp | 4 ++-- src/openrct2/Editor.cpp | 2 +- src/openrct2/GameState.h | 1 - src/openrct2/actions/ParkSetLoanAction.cpp | 2 +- src/openrct2/actions/ScenarioSetSettingAction.cpp | 6 +++--- src/openrct2/interface/InteractiveConsole.cpp | 4 ++-- src/openrct2/management/Finance.cpp | 4 ++-- src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/scripting/bindings/world/ScPark.cpp | 6 +++--- src/openrct2/world/ParkData.h | 1 + 13 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index bc86b62c30..c0c5d4683f 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -1460,10 +1460,10 @@ namespace OpenRCT2::Ui::Windows Invalidate(); break; case WIDX_MAXIMUM_LOAN_INCREASE: - if (gameState.maxBankLoan < 5000000.00_GBP) + if (gameState.park.maxBankLoan < 5000000.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::MaximumLoanSize, gameState.maxBankLoan + 1000.00_GBP); + ScenarioSetSetting::MaximumLoanSize, gameState.park.maxBankLoan + 1000.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1473,10 +1473,10 @@ namespace OpenRCT2::Ui::Windows Invalidate(); break; case WIDX_MAXIMUM_LOAN_DECREASE: - if (gameState.maxBankLoan > 0.00_GBP) + if (gameState.park.maxBankLoan > 0.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::MaximumLoanSize, gameState.maxBankLoan - 1000.00_GBP); + ScenarioSetSetting::MaximumLoanSize, gameState.park.maxBankLoan - 1000.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1706,7 +1706,7 @@ namespace OpenRCT2::Ui::Windows { screenCoords = windowPos + ScreenCoordsXY{ maximumLoanWidget.left + 1, maximumLoanWidget.top }; auto ft = Formatter(); - ft.Add(getGameState().maxBankLoan); + ft.Add(getGameState().park.maxBankLoan); auto colour = !IsWidgetDisabled(WIDX_MAXIMUM_LOAN) ? wColour2 : wColour2.withFlag(ColourFlag::inset, true); DrawTextBasic(rt, screenCoords, STR_CURRENCY_FORMAT_LABEL, ft, colour); } diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index cd738a7870..ebfdc7239a 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -544,9 +544,9 @@ namespace OpenRCT2::Ui::Windows // If loan can be increased, do so. // If not, action shows error message. auto newLoan = gameState.park.bankLoan + 1000.00_GBP; - if (gameState.park.bankLoan < gameState.maxBankLoan) + if (gameState.park.bankLoan < gameState.park.maxBankLoan) { - newLoan = std::min(gameState.maxBankLoan, newLoan); + newLoan = std::min(gameState.park.maxBankLoan, newLoan); } auto gameAction = ParkSetLoanAction(newLoan); GameActions::Execute(&gameAction); diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 942f9a0c0d..4210313d6c 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -328,7 +328,7 @@ namespace OpenRCT2::Editor gameState.park.bankLoan = std::clamp(gameState.park.bankLoan, 0.00_GBP, 5000000.00_GBP); - gameState.maxBankLoan = std::clamp(gameState.maxBankLoan, 0.00_GBP, 5000000.00_GBP); + gameState.park.maxBankLoan = std::clamp(gameState.park.maxBankLoan, 0.00_GBP, 5000000.00_GBP); gameState.bankLoanInterestRate = std::clamp(gameState.bankLoanInterestRate, 5, MaxBankLoanInterestRate); } diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 20f49afacc..afbf1ae71c 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -63,7 +63,6 @@ namespace OpenRCT2 money64 scenarioCompanyValueRecord; uint8_t bankLoanInterestRate; - money64 maxBankLoan; random_engine_t scenarioRand; TileCoordsXY mapSize; money64 landPrice; diff --git a/src/openrct2/actions/ParkSetLoanAction.cpp b/src/openrct2/actions/ParkSetLoanAction.cpp index e2da1a4d29..841a4c78a9 100644 --- a/src/openrct2/actions/ParkSetLoanAction.cpp +++ b/src/openrct2/actions/ParkSetLoanAction.cpp @@ -43,7 +43,7 @@ void ParkSetLoanAction::Serialise(DataSerialiser& stream) GameActions::Result ParkSetLoanAction::Query() const { auto& gameState = getGameState(); - if (_value > gameState.park.bankLoan && _value > gameState.maxBankLoan) + if (_value > gameState.park.bankLoan && _value > gameState.park.maxBankLoan) { return GameActions::Result( GameActions::Status::Disallowed, STR_CANT_BORROW_ANY_MORE_MONEY, STR_BANK_REFUSES_TO_INCREASE_LOAN); diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index ea342012e0..e220823707 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -90,12 +90,12 @@ GameActions::Result ScenarioSetSettingAction::Execute() const break; case ScenarioSetSetting::InitialLoan: gameState.park.bankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); - gameState.maxBankLoan = std::max(gameState.park.bankLoan, gameState.maxBankLoan); + gameState.park.maxBankLoan = std::max(gameState.park.bankLoan, gameState.park.maxBankLoan); windowMgr->InvalidateByClass(WindowClass::Finances); break; case ScenarioSetSetting::MaximumLoanSize: - gameState.maxBankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); - gameState.park.bankLoan = std::min(gameState.park.bankLoan, gameState.maxBankLoan); + gameState.park.maxBankLoan = std::clamp(_value, 0.00_GBP, 5000000.00_GBP); + gameState.park.bankLoan = std::min(gameState.park.bankLoan, gameState.park.maxBankLoan); windowMgr->InvalidateByClass(WindowClass::Finances); break; case ScenarioSetSetting::AnnualInterestRate: diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 451feefbf9..d4f5f45c37 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -573,7 +573,7 @@ static void ConsoleCommandGet(InteractiveConsole& console, const arguments_t& ar } else if (argv[0] == "max_loan") { - console.WriteLine(FormatString("max_loan {CURRENCY2DP}", gameState.maxBankLoan)); + console.WriteLine(FormatString("max_loan {CURRENCY2DP}", gameState.park.maxBankLoan)); } else if (argv[0] == "guest_initial_cash") { @@ -803,7 +803,7 @@ static void ConsoleCommandSet(InteractiveConsole& console, const arguments_t& ar else if (varName == "current_loan" && InvalidArguments(&invalidArgs, int_valid[0])) { auto amount = std::clamp( - ToMoney64FromGBP(int_val[0]) - ToMoney64FromGBP(int_val[0] % 1000), 0.00_GBP, gameState.maxBankLoan); + ToMoney64FromGBP(int_val[0]) - ToMoney64FromGBP(int_val[0] % 1000), 0.00_GBP, gameState.park.maxBankLoan); ConsoleSetVariableAction(console, varName, ScenarioSetSetting::InitialLoan, amount); } else if (varName == "max_loan" && InvalidArguments(&invalidArgs, int_valid[0])) diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index f16bc0dc2f..fd80508c3e 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -226,7 +226,7 @@ void FinanceInit() gameState.park.cash = 10000.00_GBP; gameState.park.bankLoan = 10000.00_GBP; - gameState.maxBankLoan = 20000.00_GBP; + gameState.park.maxBankLoan = 20000.00_GBP; gameState.bankLoanInterestRate = 10; gameState.park.Value = 0; @@ -303,7 +303,7 @@ money64 FinanceGetCurrentLoan() money64 FinanceGetMaximumLoan() { - return getGameState().maxBankLoan; + return getGameState().park.maxBankLoan; } money64 FinanceGetCurrentCash() diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 602075f129..56a8abd89f 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -895,7 +895,7 @@ namespace OpenRCT2 cs.ReadWrite(gameState.park.Name); cs.ReadWrite(gameState.park.cash); cs.ReadWrite(gameState.park.bankLoan); - cs.ReadWrite(gameState.maxBankLoan); + cs.ReadWrite(gameState.park.maxBankLoan); cs.ReadWrite(gameState.bankLoanInterestRate); cs.ReadWrite(gameState.park.Flags); if (version <= 18) diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index f5f4e5f8ff..0988e8b484 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1506,7 +1506,7 @@ namespace OpenRCT2::RCT1 gameState.park.cash = ToMoney64(_s4.Cash); gameState.park.bankLoan = ToMoney64(_s4.Loan); - gameState.maxBankLoan = ToMoney64(_s4.MaxLoan); + gameState.park.maxBankLoan = 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. gameState.bankLoanInterestRate = 1; gameState.initialCash = ToMoney64(_s4.Cash); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 5e04ebc5e7..9e9593ddfb 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -464,7 +464,7 @@ namespace OpenRCT2::RCT2 gameState.park.Size = _s6.ParkSize; gameState.guestGenerationProbability = _s6.GuestGenerationProbability; gameState.totalRideValueForMoney = _s6.TotalRideValueForMoney; - gameState.maxBankLoan = ToMoney64(_s6.MaximumLoan); + gameState.park.maxBankLoan = ToMoney64(_s6.MaximumLoan); gameState.guestInitialCash = ToMoney64(_s6.GuestInitialCash); gameState.guestInitialHunger = _s6.GuestInitialHunger; gameState.guestInitialThirst = _s6.GuestInitialThirst; diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index 0c914da2b1..7889122fe1 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -105,16 +105,16 @@ namespace OpenRCT2::Scripting money64 ScPark::maxBankLoan_get() const { - return getGameState().maxBankLoan; + return getGameState().park.maxBankLoan; } void ScPark::maxBankLoan_set(money64 value) { ThrowIfGameStateNotMutable(); auto& gameState = getGameState(); - if (gameState.maxBankLoan != value) + if (gameState.park.maxBankLoan != value) { - gameState.maxBankLoan = value; + gameState.park.maxBankLoan = value; auto intent = Intent(INTENT_ACTION_UPDATE_CASH); ContextBroadcastIntent(&intent); } diff --git a/src/openrct2/world/ParkData.h b/src/openrct2/world/ParkData.h index 540d30c3c9..b214256ef8 100644 --- a/src/openrct2/world/ParkData.h +++ b/src/openrct2/world/ParkData.h @@ -89,6 +89,7 @@ namespace OpenRCT2::Park uint32_t numGuestsInParkLastWeek; money64 bankLoan; + money64 maxBankLoan; colour_t staffHandymanColour; colour_t staffMechanicColour;