diff --git a/contributors.md b/contributors.md index 4aaa035b5c..244a5e9921 100644 --- a/contributors.md +++ b/contributors.md @@ -232,6 +232,7 @@ Appreciation for contributors who have provided substantial work, but are no lon * Wenzhao Qiu (qwzhaox) * Michael Bernardi (mrmbernardi) * Aram Kazorian (aramk-hub) +* Harry Hopkinson (Harry-Hopkinson) ## Toolchain * (Balletie) - macOS diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 4bb5118f7b..6452bf901c 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -320,7 +320,7 @@ namespace Editor ResetAllEntities(); UpdateConsolidatedPatrolAreas(); gNumGuestsInPark = 0; - gNumGuestsHeadingForPark = 0; + gameState.NumGuestsHeadingForPark = 0; gNumGuestsInParkLastWeek = 0; gGuestChangeModifier = 0; if (fromSave) diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index 114b34f7df..f646437b6c 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -349,6 +349,8 @@ void RCT2StringToUTF8Self(char* buffer, size_t length) static void FixGuestsHeadingToParkCount() { + auto& gameState = GetGameState(); + uint32_t guestsHeadingToPark = 0; for (auto* peep : EntityList()) @@ -359,12 +361,13 @@ static void FixGuestsHeadingToParkCount() } } - if (gNumGuestsHeadingForPark != guestsHeadingToPark) + if (gameState.NumGuestsHeadingForPark != guestsHeadingToPark) { - LOG_WARNING("Corrected bad amount of guests heading to park: %u -> %u", gNumGuestsHeadingForPark, guestsHeadingToPark); + LOG_WARNING( + "Corrected bad amount of guests heading to park: %u -> %u", gameState.NumGuestsHeadingForPark, guestsHeadingToPark); } - gNumGuestsHeadingForPark = guestsHeadingToPark; + gameState.NumGuestsHeadingForPark = guestsHeadingToPark; } static void FixGuestCount() diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 037aa48297..f42db06b74 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -47,6 +47,7 @@ namespace OpenRCT2 uint8_t GuestInitialHunger; uint8_t GuestInitialThirst; uint32_t NextGuestNumber; + uint32_t NumGuestsHeadingForPark; money64 WeeklyProfitAverageDividend; uint16_t WeeklyProfitAverageDivisor; money64 WeeklyProfitHistory[FINANCE_GRAPH_SIZE]; diff --git a/src/openrct2/entity/Guest.h b/src/openrct2/entity/Guest.h index 7c92c54976..6277fe062c 100644 --- a/src/openrct2/entity/Guest.h +++ b/src/openrct2/entity/Guest.h @@ -463,7 +463,6 @@ enum extern uint8_t gGuestChangeModifier; extern uint32_t gNumGuestsInPark; extern uint32_t gNumGuestsInParkLastWeek; -extern uint32_t gNumGuestsHeadingForPark; void PeepThoughtSetFormatArgs(const PeepThought* thought, Formatter& ft); diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 35e3ddb3b8..07d13750b4 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -69,7 +69,6 @@ using namespace OpenRCT2::Audio; uint8_t gGuestChangeModifier; uint32_t gNumGuestsInPark; uint32_t gNumGuestsInParkLastWeek; -uint32_t gNumGuestsHeadingForPark; uint8_t gPeepWarningThrottle[16]; @@ -2646,9 +2645,11 @@ void IncrementGuestsInPark() void IncrementGuestsHeadingForPark() { - if (gNumGuestsHeadingForPark < UINT32_MAX) + auto& gameState = GetGameState(); + + if (gameState.NumGuestsHeadingForPark < UINT32_MAX) { - gNumGuestsHeadingForPark++; + gameState.NumGuestsHeadingForPark++; } else { @@ -2670,9 +2671,11 @@ void DecrementGuestsInPark() void DecrementGuestsHeadingForPark() { - if (gNumGuestsHeadingForPark > 0) + auto& gameState = GetGameState(); + + if (gameState.NumGuestsHeadingForPark > 0) { - gNumGuestsHeadingForPark--; + gameState.NumGuestsHeadingForPark--; } else { diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 9d50aa6168..ba04ad55ec 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -888,7 +888,7 @@ namespace OpenRCT2 cs.ReadWrite(gCompanyValue); cs.ReadWrite(gameState.ParkSize); cs.ReadWrite(gNumGuestsInPark); - cs.ReadWrite(gNumGuestsHeadingForPark); + cs.ReadWrite(gameState.NumGuestsHeadingForPark); cs.ReadWrite(gameState.ParkRating); cs.ReadWrite(gParkRatingCasualtyPenalty); cs.ReadWrite(gCurrentExpenditure); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index a9bd8b5e95..21d13370c2 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -289,7 +289,7 @@ namespace RCT2 // _s6.ResearchedTrackTypesB gNumGuestsInPark = _s6.GuestsInPark; - gNumGuestsHeadingForPark = _s6.GuestsHeadingForPark; + gameState.NumGuestsHeadingForPark = _s6.GuestsHeadingForPark; for (size_t i = 0; i < Limits::ExpenditureTableMonthCount; i++) { diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index d9c0d8a572..6bd3ffcc37 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -260,7 +260,7 @@ void Park::Initialise() gStaffSecurityColour = COLOUR_YELLOW; gNumGuestsInPark = 0; gNumGuestsInParkLastWeek = 0; - gNumGuestsHeadingForPark = 0; + gameState.NumGuestsHeadingForPark = 0; gGuestChangeModifier = 0; gameState.ParkRating = 0; _guestGenerationProbability = 0; @@ -606,7 +606,7 @@ uint32_t Park::CalculateGuestGenerationProbability() const uint32_t probability = 50 + std::clamp(gameState.ParkRating - 200, 0, 650); // The more guests, the lower the chance of a new one - uint32_t numGuests = gNumGuestsInPark + gNumGuestsHeadingForPark; + uint32_t numGuests = gNumGuestsInPark + gameState.NumGuestsHeadingForPark; if (numGuests > _suggestedGuestMaximum) { probability /= 4;