From 142d708ceece4d9a632ced8287125e03178089da Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 7 Feb 2024 22:48:56 +0100 Subject: [PATCH] Move _guestGenerationProbability to GameState_t --- src/openrct2/GameState.h | 8 ++++++++ src/openrct2/ReplayManager.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 | 2 +- src/openrct2/world/Park.cpp | 14 +++----------- src/openrct2/world/Park.h | 1 - 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 619cc76e50..784f94eb56 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -86,6 +86,14 @@ namespace OpenRCT2 std::vector ResearchItemsUninvented; std::vector ResearchItemsInvented; uint8_t ResearchUncompletedCategories; + + /** + * 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; }; GameState_t& GetGameState(); diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index 8d92fcbd42..b787552d64 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -665,7 +665,9 @@ namespace OpenRCT2 bool SerialiseParkParameters(DataSerialiser& serialiser) { - serialiser << _guestGenerationProbability; + auto& gameState = GetGameState(); + + serialiser << gameState.GuestGenerationProbability; serialiser << _suggestedGuestMaximum; serialiser << gConfigGeneral.ShowRealNamesOfGuests; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 51ca24d7d5..1e572adf86 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -909,7 +909,7 @@ namespace OpenRCT2 } cs.ReadWrite(gameState.NumGuestsInParkLastWeek); cs.ReadWrite(gGuestChangeModifier); - cs.ReadWrite(_guestGenerationProbability); + cs.ReadWrite(gameState.GuestGenerationProbability); cs.ReadWrite(_suggestedGuestMaximum); cs.ReadWriteArray(gPeepWarningThrottle, [&cs](uint8_t& value) { diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 9b88590f7d..a6add95e77 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2194,7 +2194,7 @@ namespace RCT1 gameState.GuestInitialThirst = _s4.GuestInitialThirst; gameState.GuestInitialHappiness = _s4.GuestInitialHappiness; - _guestGenerationProbability = _s4.GuestGenerationProbability; + gameState.GuestGenerationProbability = _s4.GuestGenerationProbability; // Staff colours gameState.StaffHandymanColour = RCT1::GetColour(_s4.HandymanColour); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index bde2cb5fc2..978f63ecd9 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -338,7 +338,7 @@ namespace RCT2 gameState.ResearchExpectedMonth = _s6.NextResearchExpectedMonth; gameState.GuestInitialHappiness = _s6.GuestInitialHappiness; gameState.ParkSize = _s6.ParkSize; - _guestGenerationProbability = _s6.GuestGenerationProbability; + gameState.GuestGenerationProbability = _s6.GuestGenerationProbability; gameState.TotalRideValueForMoney = _s6.TotalRideValueForMoney; gMaxBankLoan = 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 9e46c30389..54ccdc4964 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -144,7 +144,7 @@ namespace OpenRCT2::Scripting int32_t ScPark::guestGenerationProbability_get() const { - return _guestGenerationProbability; + return GetGameState().GuestGenerationProbability; } money64 ScPark::guestInitialCash_get() const diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index a112a630fe..083f0cf434 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -63,14 +63,6 @@ static int32_t _forcedParkRating = -1; */ uint32_t _suggestedGuestMaximum; -/** - * 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; - /** * Choose a random peep spawn and iterates through until defined spawn is found. */ @@ -259,7 +251,7 @@ void Park::Initialise() gameState.NumGuestsHeadingForPark = 0; gGuestChangeModifier = 0; gameState.ParkRating = 0; - _guestGenerationProbability = 0; + gameState.GuestGenerationProbability = 0; gameState.TotalRideValueForMoney = 0; _suggestedGuestMaximum = 0; gameState.ResearchLastItem = std::nullopt; @@ -321,7 +313,7 @@ void Park::Update(const Date& date) gCompanyValue = CalculateCompanyValue(); gameState.TotalRideValueForMoney = CalculateTotalRideValueForMoney(); _suggestedGuestMaximum = CalculateSuggestedMaxGuests(); - _guestGenerationProbability = CalculateGuestGenerationProbability(); + gameState.GuestGenerationProbability = CalculateGuestGenerationProbability(); WindowInvalidateByClass(WindowClass::Finances); auto intent = Intent(INTENT_ACTION_UPDATE_PARK_RATING); @@ -676,7 +668,7 @@ void Park::GenerateGuests() auto& gameState = GetGameState(); // Generate a new guest for some probability - if (static_cast(ScenarioRand() & 0xFFFF) < _guestGenerationProbability) + if (static_cast(ScenarioRand() & 0xFFFF) < gameState.GuestGenerationProbability) { bool difficultGeneration = (gameState.ParkFlags & PARK_FLAGS_DIFFICULT_GUEST_GENERATION) != 0; if (!difficultGeneration || _suggestedGuestMaximum + 150 >= gameState.NumGuestsInPark) diff --git a/src/openrct2/world/Park.h b/src/openrct2/world/Park.h index 451bc0b78f..b9de76a63e 100644 --- a/src/openrct2/world/Park.h +++ b/src/openrct2/world/Park.h @@ -99,7 +99,6 @@ extern money64 gCompanyValue; extern int16_t gParkRatingCasualtyPenalty; extern uint32_t gGuestsInParkHistory[32]; -extern int32_t _guestGenerationProbability; extern uint32_t _suggestedGuestMaximum; void ParkSetForcedRating(int32_t rating);