From 56df47a48d9ef6d85491af59a6164903cfe58899 Mon Sep 17 00:00:00 2001 From: Jan Kelemen Date: Tue, 5 Mar 2024 22:01:47 +0100 Subject: [PATCH] Move gRideRatingUpdateStates to GameState_t - Move gRideRatingUpdateStates variable to GameState_t - Remove RideRatingGetUpdateStates function --- src/openrct2/GameState.h | 2 ++ src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/ride/RideRatings.cpp | 15 +++++---------- src/openrct2/ride/RideRatings.h | 2 -- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 8018ef152e..66757b972e 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -17,6 +17,7 @@ #include "management/Finance.h" #include "management/NewsItem.h" #include "ride/Ride.h" +#include "ride/RideRatings.h" #include "scenario/Scenario.h" #include "world/Banner.h" #include "world/Climate.h" @@ -92,6 +93,7 @@ namespace OpenRCT2 std::vector Banners; // Ride storage for all the rides in the park, rides with RideId::Null are considered free. std::array Rides{}; + ::RideRatingUpdateStates RideRatingUpdateStates; std::vector TileElements; std::vector RestrictedScenery; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 6d609c902c..2cc8c084c7 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -552,7 +552,7 @@ namespace OpenRCT2 cs.ReadWrite(gGrassSceneryTileLoopPosition); cs.ReadWrite(gWidePathTileLoopPosition); - auto& rideRatings = RideRatingGetUpdateStates(); + auto& rideRatings = gameState.RideRatingUpdateStates; if (os.GetHeader().TargetVersion >= 21) { cs.ReadWriteArray(rideRatings, [this, &cs](RideRatingUpdateState& calcData) { diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 0416d109e9..fd37bbd069 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1613,7 +1613,7 @@ namespace RCT2 const auto& src = _s6.RideRatingsCalcData; // S6 has only one state, ensure we reset all states before reading the first one. RideRatingResetUpdateStates(); - auto& rideRatingStates = RideRatingGetUpdateStates(); + auto& rideRatingStates = GetGameState().RideRatingUpdateStates; auto& dst = rideRatingStates[0]; dst = {}; dst.Proximity = { src.ProximityX, src.ProximityY, src.ProximityZ }; diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index 340954cfed..55f2c96c8f 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -78,8 +78,6 @@ struct ShelteredEights uint8_t TotalShelteredEighths; }; -static RideRatingUpdateStates gRideRatingUpdateStates; - // Amount of updates allowed per updating state on the current tick. // The total amount would be MaxRideRatingSubSteps * RideRatingMaxUpdateStates which // would be currently 80, this is the worst case of sub-steps and may break out earlier. @@ -153,17 +151,13 @@ static void RideRatingsApplyRequirementStations(RatingTuple& ratings, const Ride static void RideRatingsApplyRequirementSplashdown(RatingTuple& ratings, const Ride& ride, RatingsModifier modifier); static void RideRatingsApplyPenaltyLateralGs(RatingTuple& ratings, const Ride& ride, RatingsModifier modifier); -RideRatingUpdateStates& RideRatingGetUpdateStates() -{ - return gRideRatingUpdateStates; -} - void RideRatingResetUpdateStates() { RideRatingUpdateState nullState{}; nullState.State = RIDE_RATINGS_STATE_FIND_NEXT_RIDE; - std::fill(gRideRatingUpdateStates.begin(), gRideRatingUpdateStates.end(), nullState); + auto& updateStates = GetGameState().RideRatingUpdateStates; + std::fill(updateStates.begin(), updateStates.end(), nullState); } /** @@ -197,7 +191,7 @@ void RideRatingsUpdateAll() if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) return; - for (auto& updateState : gRideRatingUpdateStates) + for (auto& updateState : GetGameState().RideRatingUpdateStates) { for (size_t i = 0; i < MaxRideRatingUpdateSubSteps; ++i) { @@ -237,7 +231,8 @@ static void ride_ratings_update_state(RideRatingUpdateState& state) static bool RideRatingIsUpdatingRide(RideId id) { - return std::any_of(gRideRatingUpdateStates.begin(), gRideRatingUpdateStates.end(), [id](auto& state) { + const auto& updateStates = GetGameState().RideRatingUpdateStates; + return std::any_of(updateStates.begin(), updateStates.end(), [id](auto& state) { return state.CurrentRide == id && state.State != RIDE_RATINGS_STATE_FIND_NEXT_RIDE; }); } diff --git a/src/openrct2/ride/RideRatings.h b/src/openrct2/ride/RideRatings.h index 82c8579d62..27c16bd617 100644 --- a/src/openrct2/ride/RideRatings.h +++ b/src/openrct2/ride/RideRatings.h @@ -55,10 +55,8 @@ struct RideRatingUpdateState }; static constexpr size_t RideRatingMaxUpdateStates = 4; - using RideRatingUpdateStates = std::array; -RideRatingUpdateStates& RideRatingGetUpdateStates(); void RideRatingResetUpdateStates(); void RideRatingsUpdateRide(const Ride& ride);