From 5d9de6292fc3aacdbf280461b9d04c3de567fe3a Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Wed, 13 Aug 2025 22:03:14 +0200 Subject: [PATCH] Move .weeklyProfit* into ParkData struct --- src/openrct2-ui/windows/Finances.cpp | 2 +- src/openrct2/GameState.h | 3 --- src/openrct2/management/Finance.cpp | 10 +++++----- src/openrct2/park/ParkFile.cpp | 6 +++--- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 6 +++--- src/openrct2/scenario/Scenario.cpp | 4 ++-- src/openrct2/world/Park.cpp | 16 ++++++++-------- src/openrct2/world/ParkData.h | 4 ++++ 9 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 7a8c3065e1..cd738a7870 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -331,7 +331,7 @@ namespace OpenRCT2::Ui::Windows case WINDOW_FINANCES_PAGE_PROFIT_GRAPH: graphPageWidget = &widgets[WIDX_PAGE_BACKGROUND]; centredGraph = true; - _graphProps.series = getGameState().weeklyProfitHistory; + _graphProps.series = getGameState().park.weeklyProfitHistory; break; case WINDOW_FINANCES_PAGE_FINANCIAL_GRAPH: graphPageWidget = &widgets[WIDX_PAGE_BACKGROUND]; diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index a198b72197..4f535bb5fc 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -55,12 +55,9 @@ namespace OpenRCT2 uint32_t numGuestsHeadingForPark; uint32_t numGuestsInParkLastWeek; - money64 weeklyProfitAverageDividend; uint64_t totalAdmissions; money64 totalIncomeFromAdmissions; money64 totalRideValueForMoney; - uint16_t weeklyProfitAverageDivisor; - money64 weeklyProfitHistory[kFinanceHistorySize]; Objective scenarioObjective; uint16_t scenarioParkRatingWarningDays; diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index ea58e16648..f16bc0dc2f 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -189,7 +189,7 @@ void FinanceResetHistory() for (auto i = 0; i < kFinanceHistorySize; i++) { gameState.park.cashHistory[i] = kMoney64Undefined; - gameState.weeklyProfitHistory[i] = kMoney64Undefined; + gameState.park.weeklyProfitHistory[i] = kMoney64Undefined; gameState.park.ValueHistory[i] = kMoney64Undefined; } @@ -219,8 +219,8 @@ void FinanceInit() gameState.park.currentExpenditure = 0; gameState.park.currentProfit = 0; - gameState.weeklyProfitAverageDividend = 0; - gameState.weeklyProfitAverageDivisor = 0; + gameState.park.weeklyProfitAverageDividend = 0; + gameState.park.weeklyProfitAverageDivisor = 0; gameState.initialCash = 10000.00_GBP; // Cheat detection @@ -284,8 +284,8 @@ void FinanceUpdateDailyProfit() gameState.park.currentProfit += current_profit; // These are related to weekly profit graph - gameState.weeklyProfitAverageDividend += gameState.park.currentProfit; - gameState.weeklyProfitAverageDivisor += 1; + gameState.park.weeklyProfitAverageDividend += gameState.park.currentProfit; + gameState.park.weeklyProfitAverageDivisor += 1; auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::Finances); diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 2ccf856c3f..cbbefd09f9 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -985,8 +985,8 @@ namespace OpenRCT2 cs.ReadWrite(gameState.park.RatingCasualtyPenalty); cs.ReadWrite(gameState.park.currentExpenditure); cs.ReadWrite(gameState.park.currentProfit); - cs.ReadWrite(gameState.weeklyProfitAverageDividend); - cs.ReadWrite(gameState.weeklyProfitAverageDivisor); + cs.ReadWrite(gameState.park.weeklyProfitAverageDividend); + cs.ReadWrite(gameState.park.weeklyProfitAverageDivisor); cs.ReadWrite(gameState.totalAdmissions); cs.ReadWrite(gameState.totalIncomeFromAdmissions); if (version <= 16) @@ -1065,7 +1065,7 @@ namespace OpenRCT2 cs.ReadWrite(value); return true; }); - cs.ReadWriteArray(gameState.weeklyProfitHistory, [&cs](money64& value) { + cs.ReadWriteArray(gameState.park.weeklyProfitHistory, [&cs](money64& value) { cs.ReadWrite(value); return true; }); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 6a187b09de..78f31bcc0c 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1519,7 +1519,7 @@ namespace OpenRCT2::RCT1 { gameState.park.cashHistory[i] = ToMoney64(_s4.CashHistory[i]); gameState.park.ValueHistory[i] = CorrectRCT1ParkValue(_s4.ParkValueHistory[i]); - gameState.weeklyProfitHistory[i] = ToMoney64(_s4.WeeklyProfitHistory[i]); + gameState.park.weeklyProfitHistory[i] = ToMoney64(_s4.WeeklyProfitHistory[i]); } for (size_t i = 0; i < Limits::kExpenditureTableMonthCount; i++) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 2b941e852e..d742879bef 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -482,8 +482,8 @@ namespace OpenRCT2::RCT2 gameState.park.currentExpenditure = ToMoney64(_s6.CurrentExpenditure); gameState.park.currentProfit = ToMoney64(_s6.CurrentProfit); - gameState.weeklyProfitAverageDividend = ToMoney64(_s6.WeeklyProfitAverageDividend); - gameState.weeklyProfitAverageDivisor = _s6.WeeklyProfitAverageDivisor; + gameState.park.weeklyProfitAverageDividend = ToMoney64(_s6.WeeklyProfitAverageDividend); + gameState.park.weeklyProfitAverageDivisor = _s6.WeeklyProfitAverageDivisor; // Pad0135833A gameState.park.Value = ToMoney64(_s6.ParkValue); @@ -491,7 +491,7 @@ namespace OpenRCT2::RCT2 for (size_t i = 0; i < Limits::kFinanceGraphSize; i++) { gameState.park.cashHistory[i] = ToMoney64(_s6.BalanceHistory[i]); - gameState.weeklyProfitHistory[i] = ToMoney64(_s6.WeeklyProfitHistory[i]); + gameState.park.weeklyProfitHistory[i] = ToMoney64(_s6.WeeklyProfitHistory[i]); gameState.park.ValueHistory[i] = ToMoney64(_s6.ParkValueHistory[i]); } diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index c92276bde4..0ab5301226 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -126,8 +126,8 @@ void ScenarioReset(GameState_t& gameState) gameState.park.currentExpenditure = 0; gameState.park.currentProfit = 0; - gameState.weeklyProfitAverageDividend = 0; - gameState.weeklyProfitAverageDivisor = 0; + gameState.park.weeklyProfitAverageDividend = 0; + gameState.park.weeklyProfitAverageDivisor = 0; gameState.totalAdmissions = 0; gameState.totalIncomeFromAdmissions = 0; diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index feeecf7385..97c04070a7 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -617,18 +617,18 @@ namespace OpenRCT2::Park gameState.park.cashHistory, FinanceGetCurrentCash() - gameState.park.bankLoan); // Update weekly profit history - auto currentWeeklyProfit = gameState.weeklyProfitAverageDividend; - if (gameState.weeklyProfitAverageDivisor != 0) + auto currentWeeklyProfit = gameState.park.weeklyProfitAverageDividend; + if (gameState.park.weeklyProfitAverageDivisor != 0) { - currentWeeklyProfit /= gameState.weeklyProfitAverageDivisor; + currentWeeklyProfit /= gameState.park.weeklyProfitAverageDivisor; } - constexpr auto profitHistorySize = std::extent_v; - HistoryPushRecord(gameState.weeklyProfitHistory, currentWeeklyProfit); - gameState.weeklyProfitAverageDividend = 0; - gameState.weeklyProfitAverageDivisor = 0; + constexpr auto profitHistorySize = std::extent_v; + HistoryPushRecord(gameState.park.weeklyProfitHistory, currentWeeklyProfit); + gameState.park.weeklyProfitAverageDividend = 0; + gameState.park.weeklyProfitAverageDivisor = 0; // Update park value history - constexpr auto parkValueHistorySize = std::extent_v; + constexpr auto parkValueHistorySize = std::extent_v; HistoryPushRecord(gameState.park.ValueHistory, gameState.park.Value); // Invalidate relevant windows diff --git a/src/openrct2/world/ParkData.h b/src/openrct2/world/ParkData.h index f0bf053d9b..4b779c878a 100644 --- a/src/openrct2/world/ParkData.h +++ b/src/openrct2/world/ParkData.h @@ -70,6 +70,10 @@ namespace OpenRCT2::Park money64 cash; money64 cashHistory[kFinanceHistorySize]; + uint16_t weeklyProfitAverageDivisor; + money64 weeklyProfitAverageDividend; + money64 weeklyProfitHistory[kFinanceHistorySize]; + // The total profit for the entire scenario that precedes the current financial table. money64 historicalProfit; money64 currentProfit;