From 681a489d157b2893f0db422e17d60e7ccf7d89c1 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Wed, 13 Aug 2025 23:18:29 +0200 Subject: [PATCH] Move .guest(ChangeModifier|GenerationProbability) into ParkData struct --- src/openrct2-ui/windows/GameBottomToolbar.cpp | 4 ++-- src/openrct2/Editor.cpp | 2 +- src/openrct2/GameState.h | 8 -------- src/openrct2/ReplayManager.cpp | 2 +- src/openrct2/park/ParkFile.cpp | 4 ++-- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 4 ++-- src/openrct2/scripting/bindings/world/ScPark.cpp | 2 +- src/openrct2/world/Park.cpp | 10 +++++----- src/openrct2/world/ParkData.h | 9 +++++++++ 10 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index ddf623031b..7a0bee718e 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -131,8 +131,8 @@ namespace OpenRCT2::Ui::Windows auto screenCoords = ScreenCoordsXY{ windowPos.x + widget.midX(), windowPos.y + widget.midY() - 6 }; StringId stringId = gameState.park.numGuestsInPark == 1 - ? _guestCountFormatsSingular[gameState.guestChangeModifier] - : _guestCountFormats[gameState.guestChangeModifier]; + ? _guestCountFormatsSingular[gameState.park.guestChangeModifier] + : _guestCountFormats[gameState.park.guestChangeModifier]; auto colour = GetHoverWidgetColour(WIDX_GUESTS); auto ft = Formatter(); ft.Add(gameState.park.numGuestsInPark); diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 11bc4f2f6a..d145523dac 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -305,7 +305,7 @@ namespace OpenRCT2::Editor gameState.park.numGuestsInPark = 0; gameState.park.numGuestsHeadingForPark = 0; gameState.park.numGuestsInParkLastWeek = 0; - gameState.guestChangeModifier = 0; + gameState.park.guestChangeModifier = 0; if (fromSave) { gameState.park.Flags |= PARK_FLAGS_NO_MONEY; diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 4657d030a3..b811c72d84 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -48,7 +48,6 @@ namespace OpenRCT2 uint8_t guestInitialHappiness; uint8_t guestInitialHunger; uint8_t guestInitialThirst; - uint8_t guestChangeModifier; uint32_t nextGuestNumber; money64 totalRideValueForMoney; @@ -108,13 +107,6 @@ namespace OpenRCT2 ObjectEntryIndex lastEntranceStyle; - /** - * Probability out of 65535, of gaining a new guest per game tick. - * new guests per second = 40 * (probability / 65535) - * With a full park rating, non-overpriced entrance fee, less guests than the suggested maximum and four positive - * awards, approximately 1 guest per second can be generated (+60 guests in one minute). - */ - int32_t guestGenerationProbability; /** * In a difficult guest generation scenario, no guests will be generated if over this value. */ diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index b7fae2173c..8a1880b9ef 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -640,7 +640,7 @@ namespace OpenRCT2 { auto& gameState = getGameState(); - serialiser << gameState.guestGenerationProbability; + serialiser << gameState.park.guestGenerationProbability; serialiser << gameState.suggestedGuestMaximum; serialiser << Config::Get().general.ShowRealNamesOfGuests; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index c1c43ba671..ea0343d250 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -1000,8 +1000,8 @@ namespace OpenRCT2 cs.ReadWrite(gameState.totalRideValueForMoney); } cs.ReadWrite(gameState.park.numGuestsInParkLastWeek); - cs.ReadWrite(gameState.guestChangeModifier); - cs.ReadWrite(gameState.guestGenerationProbability); + cs.ReadWrite(gameState.park.guestChangeModifier); + cs.ReadWrite(gameState.park.guestGenerationProbability); cs.ReadWrite(gameState.suggestedGuestMaximum); cs.ReadWriteArray(gameState.peepWarningThrottle, [&cs](uint8_t& value) { diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index a43c71c0f0..603af16c34 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2314,7 +2314,7 @@ namespace OpenRCT2::RCT1 gameState.guestInitialThirst = _s4.GuestInitialThirst; gameState.guestInitialHappiness = _s4.GuestInitialHappiness; - gameState.guestGenerationProbability = _s4.GuestGenerationProbability; + gameState.park.guestGenerationProbability = _s4.GuestGenerationProbability; // Staff colours gameState.park.staffHandymanColour = RCT1::GetColour(_s4.HandymanColour); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 2f86ea5f9d..ea25b1e76d 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -401,7 +401,7 @@ namespace OpenRCT2::RCT2 ImportPeepSpawns(gameState); - gameState.guestChangeModifier = _s6.GuestCountChangeModifier; + gameState.park.guestChangeModifier = _s6.GuestCountChangeModifier; gameState.researchFundingLevel = _s6.CurrentResearchLevel; // Pad01357400 // _s6.ResearchedTrackTypesA @@ -462,7 +462,7 @@ namespace OpenRCT2::RCT2 gameState.researchExpectedMonth = _s6.NextResearchExpectedMonth; gameState.guestInitialHappiness = _s6.GuestInitialHappiness; gameState.park.Size = _s6.ParkSize; - gameState.guestGenerationProbability = _s6.GuestGenerationProbability; + gameState.park.guestGenerationProbability = _s6.GuestGenerationProbability; gameState.totalRideValueForMoney = _s6.TotalRideValueForMoney; gameState.park.maxBankLoan = ToMoney64(_s6.MaximumLoan); gameState.guestInitialCash = ToMoney64(_s6.GuestInitialCash); diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index 05644d5a4e..d2c0007826 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -149,7 +149,7 @@ namespace OpenRCT2::Scripting int32_t ScPark::guestGenerationProbability_get() const { - return getGameState().guestGenerationProbability; + return getGameState().park.guestGenerationProbability; } DukValue ScPark::generateGuest() diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index 94a99977e7..7030ff8246 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -232,7 +232,7 @@ namespace OpenRCT2::Park static void generateGuests(GameState_t& gameState) { // Generate a new guest for some probability - if (static_cast(ScenarioRand() & 0xFFFF) < gameState.guestGenerationProbability) + if (static_cast(ScenarioRand() & 0xFFFF) < gameState.park.guestGenerationProbability) { bool difficultGeneration = (gameState.park.Flags & PARK_FLAGS_DIFFICULT_GUEST_GENERATION) != 0; if (!difficultGeneration || gameState.suggestedGuestMaximum + 150 >= gameState.park.numGuestsInPark) @@ -284,9 +284,9 @@ namespace OpenRCT2::Park gameState.park.numGuestsInPark = 0; gameState.park.numGuestsInParkLastWeek = 0; gameState.park.numGuestsHeadingForPark = 0; - gameState.guestChangeModifier = 0; + gameState.park.guestChangeModifier = 0; gameState.park.Rating = 0; - gameState.guestGenerationProbability = 0; + gameState.park.guestGenerationProbability = 0; gameState.totalRideValueForMoney = 0; gameState.suggestedGuestMaximum = 0; gameState.researchLastItem = std::nullopt; @@ -348,7 +348,7 @@ namespace OpenRCT2::Park gameState.park.companyValue = CalculateCompanyValue(); gameState.totalRideValueForMoney = calculateTotalRideValueForMoney(); gameState.suggestedGuestMaximum = calculateSuggestedMaxGuests(); - gameState.guestGenerationProbability = calculateGuestGenerationProbability(); + gameState.park.guestGenerationProbability = calculateGuestGenerationProbability(); windowMgr->InvalidateByClass(WindowClass::Finances); auto intent = Intent(INTENT_ACTION_UPDATE_PARK_RATING); @@ -603,7 +603,7 @@ namespace OpenRCT2::Park guestChangeModifier = 0; } } - gameState.guestChangeModifier = guestChangeModifier; + gameState.park.guestChangeModifier = guestChangeModifier; gameState.park.numGuestsInParkLastWeek = gameState.park.numGuestsInPark; // Update park rating, guests in park and current cash history diff --git a/src/openrct2/world/ParkData.h b/src/openrct2/world/ParkData.h index f103519c58..6b41ab8a0c 100644 --- a/src/openrct2/world/ParkData.h +++ b/src/openrct2/world/ParkData.h @@ -89,6 +89,15 @@ namespace OpenRCT2::Park uint32_t numGuestsInPark; uint32_t numGuestsHeadingForPark; uint32_t numGuestsInParkLastWeek; + uint8_t guestChangeModifier; + + /** + * Probability out of 65535, of gaining a new guest per game tick. + * new guests per second = 40 * (probability / 65535) + * With a full park rating, non-overpriced entrance fee, less guests than the suggested maximum and four positive + * awards, approximately 1 guest per second can be generated (+60 guests in one minute). + */ + int32_t guestGenerationProbability; uint64_t totalAdmissions; money64 totalIncomeFromAdmissions;