From 003c196eb83d65558782a7adc2de481a7dbfd167 Mon Sep 17 00:00:00 2001 From: Harry Hopkinson <63599884+Harry-Hopkinson@users.noreply.github.com> Date: Wed, 4 Sep 2024 06:34:37 +0100 Subject: [PATCH] Cleanup gameState usage (#22692) --- src/openrct2-ui/windows/Park.cpp | 4 +- src/openrct2-ui/windows/Research.cpp | 6 +-- src/openrct2-ui/windows/Ride.cpp | 44 +++++++++++--------- src/openrct2-ui/windows/RideConstruction.cpp | 5 ++- src/openrct2-ui/windows/TopToolbar.cpp | 7 ++-- 5 files changed, 37 insertions(+), 29 deletions(-) diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 6b4e117db9..f53662af48 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -526,7 +526,7 @@ static constexpr WindowParkAward _parkAwards[] = { // Set open / close park button state { - auto parkName = GetGameState().Park.Name.c_str(); + auto parkName = gameState.Park.Name.c_str(); auto ft = Formatter::Common(); ft.Add(STR_STRING); @@ -547,7 +547,7 @@ static constexpr WindowParkAward _parkAwards[] = { disabled_widgets &= ~((1uLL << WIDX_OPEN_OR_CLOSE) | (1uLL << WIDX_CLOSE_LIGHT) | (1uLL << WIDX_OPEN_LIGHT)); // Only allow purchase of land when there is money - if (GetGameState().Park.Flags & PARK_FLAGS_NO_MONEY) + if (gameState.Park.Flags & PARK_FLAGS_NO_MONEY) widgets[WIDX_BUY_LAND_RIGHTS].type = WindowWidgetType::Empty; else widgets[WIDX_BUY_LAND_RIGHTS].type = WindowWidgetType::FlatBtn; diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index 2ad8fe33e0..5eca8c499e 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -547,7 +547,7 @@ static Widget *window_research_page_widgets[] = { const auto& gameState = GetGameState(); auto widgetOffset = GetWidgetIndexOffset(baseWidgetIndex, WIDX_RESEARCH_FUNDING); - if ((GetGameState().Park.Flags & PARK_FLAGS_NO_MONEY) || gameState.ResearchProgressStage == RESEARCH_STAGE_FINISHED_ALL) + if ((gameState.Park.Flags & PARK_FLAGS_NO_MONEY) || gameState.ResearchProgressStage == RESEARCH_STAGE_FINISHED_ALL) { w->widgets[WIDX_RESEARCH_FUNDING + widgetOffset].type = WindowWidgetType::Empty; w->widgets[WIDX_RESEARCH_FUNDING_DROPDOWN_BUTTON + widgetOffset].type = WindowWidgetType::Empty; @@ -591,10 +591,10 @@ static Widget *window_research_page_widgets[] = { void WindowResearchFundingDraw(WindowBase* w, DrawPixelInfo& dpi) { - if (GetGameState().Park.Flags & PARK_FLAGS_NO_MONEY) + const auto& gameState = GetGameState(); + if (gameState.Park.Flags & PARK_FLAGS_NO_MONEY) return; - const auto& gameState = GetGameState(); int32_t currentResearchLevel = gameState.ResearchFundingLevel; auto ft = Formatter(); ft.Add(research_cost_table[currentResearchLevel]); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index f8fb6d36f6..f68d28dfa6 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1920,8 +1920,9 @@ static_assert(std::size(RatingNames) == 6); bool selectionShouldBeExpanded; int32_t rideTypeIterator, rideTypeIteratorMax; + const auto& gameState = GetGameState(); const auto& rtd = ride.GetRideTypeDescriptor(); - if (GetGameState().Cheats.ShowVehiclesFromOtherTrackTypes + if (gameState.Cheats.ShowVehiclesFromOtherTrackTypes && !(rtd.HasFlag(RtdFlag::isFlatRide) || rtd.HasFlag(RtdFlag::isMaze) || ride.type == RIDE_TYPE_MINI_GOLF)) { selectionShouldBeExpanded = true; @@ -1960,7 +1961,7 @@ static_assert(std::size(RatingNames) == 6); continue; // Skip if vehicle type has not been invented yet - if (!RideEntryIsInvented(rideEntryIndex) && !GetGameState().Cheats.IgnoreResearchStatus) + if (!RideEntryIsInvented(rideEntryIndex) && !gameState.Cheats.IgnoreResearchStatus) continue; auto name = currentRideEntry->naming.Name; @@ -2245,9 +2246,10 @@ static_assert(std::size(RatingNames) == 6); if (ride == nullptr) return; + const auto& gameState = GetGameState(); disabled_widgets &= ~((1uLL << WIDX_DEMOLISH) | (1uLL << WIDX_CONSTRUCTION)); if (ride->lifecycle_flags & (RIDE_LIFECYCLE_INDESTRUCTIBLE | RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) - && !GetGameState().Cheats.MakeAllDestructible) + && !gameState.Cheats.MakeAllDestructible) disabled_widgets |= (1uLL << WIDX_DEMOLISH); auto ft = Formatter::Common(); @@ -2286,7 +2288,7 @@ static_assert(std::size(RatingNames) == 6); AnchorBorderWidgets(); - const int32_t offset = GetGameState().Cheats.AllowArbitraryRideTypeChanges ? 15 : 0; + const int32_t offset = gameState.Cheats.AllowArbitraryRideTypeChanges ? 15 : 0; // Anchor main page specific widgets widgets[WIDX_VIEWPORT].right = width - 26; widgets[WIDX_VIEWPORT].bottom = height - (14 + offset); @@ -2304,7 +2306,7 @@ static_assert(std::size(RatingNames) == 6); widgets[WIDX_RIDE_TYPE_DROPDOWN].top = height - 16; widgets[WIDX_RIDE_TYPE_DROPDOWN].bottom = height - 5; - if (!GetGameState().Cheats.AllowArbitraryRideTypeChanges) + if (!gameState.Cheats.AllowArbitraryRideTypeChanges) { widgets[WIDX_RIDE_TYPE].type = WindowWidgetType::Empty; widgets[WIDX_RIDE_TYPE_DROPDOWN].type = WindowWidgetType::Empty; @@ -2717,8 +2719,9 @@ static_assert(std::size(RatingNames) == 6); // Vehicle type widgets[WIDX_VEHICLE_TYPE].text = rideEntry->naming.Name; + const auto& gameState = GetGameState(); // Trains - if (rideEntry->cars_per_flat_ride > 1 || GetGameState().Cheats.DisableTrainLengthLimit) + if (rideEntry->cars_per_flat_ride > 1 || gameState.Cheats.DisableTrainLengthLimit) { widgets[WIDX_VEHICLE_TRAINS].type = WindowWidgetType::Spinner; widgets[WIDX_VEHICLE_TRAINS_INCREASE].type = WindowWidgetType::Button; @@ -2732,7 +2735,7 @@ static_assert(std::size(RatingNames) == 6); } // Cars per train - if (rideEntry->zero_cars + 1 < rideEntry->max_cars_in_train || GetGameState().Cheats.DisableTrainLengthLimit) + if (rideEntry->zero_cars + 1 < rideEntry->max_cars_in_train || gameState.Cheats.DisableTrainLengthLimit) { widgets[WIDX_VEHICLE_CARS_PER_TRAIN].type = WindowWidgetType::Spinner; widgets[WIDX_VEHICLE_CARS_PER_TRAIN_INCREASE].type = WindowWidgetType::Button; @@ -2746,8 +2749,7 @@ static_assert(std::size(RatingNames) == 6); } if (ride->GetRideTypeDescriptor().HasFlag(RtdFlag::allowReversedTrains) - || (GetGameState().Cheats.DisableTrainLengthLimit - && !ride->GetRideTypeDescriptor().HasFlag(RtdFlag::isFlatRide))) + || (gameState.Cheats.DisableTrainLengthLimit && !ride->GetRideTypeDescriptor().HasFlag(RtdFlag::isFlatRide))) { widgets[WIDX_VEHICLE_REVERSED_TRAINS_CHECKBOX].type = WindowWidgetType::Checkbox; if (ride->HasLifecycleFlag(RIDE_LIFECYCLE_REVERSED_TRAINS)) @@ -2988,10 +2990,11 @@ static_assert(std::size(RatingNames) == 6); return; const auto& operatingSettings = ride->GetRideTypeDescriptor().OperatingSettings; + const auto& gameState = GetGameState(); uint8_t maxValue = operatingSettings.MaxValue; - uint8_t minValue = GetGameState().Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; + uint8_t minValue = gameState.Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; - if (GetGameState().Cheats.UnlockOperatingLimits) + if (gameState.Cheats.UnlockOperatingLimits) { maxValue = OpenRCT2::Limits::kCheatsMaxOperatingLimit; } @@ -3009,9 +3012,10 @@ static_assert(std::size(RatingNames) == 6); return; const auto& operatingSettings = ride->GetRideTypeDescriptor().OperatingSettings; + const auto& gameState = GetGameState(); uint8_t maxValue = operatingSettings.MaxValue; - uint8_t minValue = GetGameState().Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; - if (GetGameState().Cheats.UnlockOperatingLimits) + uint8_t minValue = gameState.Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; + if (gameState.Cheats.UnlockOperatingLimits) { maxValue = OpenRCT2::Limits::kCheatsMaxOperatingLimit; } @@ -3262,9 +3266,10 @@ static_assert(std::size(RatingNames) == 6); } const auto& operatingSettings = ride.GetRideTypeDescriptor().OperatingSettings; - int16_t maxValue = GetGameState().Cheats.UnlockOperatingLimits ? OpenRCT2::Limits::kCheatsMaxOperatingLimit - : operatingSettings.MaxValue; - int16_t minValue = GetGameState().Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; + const auto& gameState = GetGameState(); + int16_t maxValue = gameState.Cheats.UnlockOperatingLimits ? OpenRCT2::Limits::kCheatsMaxOperatingLimit + : operatingSettings.MaxValue; + int16_t minValue = gameState.Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; const auto& title = widgets[WIDX_MODE_TWEAK_LABEL].text; Formatter ft; @@ -3344,9 +3349,10 @@ static_assert(std::size(RatingNames) == 6); if (widgetIndex == WIDX_MODE_TWEAK) { const auto& operatingSettings = ride->GetRideTypeDescriptor().OperatingSettings; - uint32_t maxValue = GetGameState().Cheats.UnlockOperatingLimits ? OpenRCT2::Limits::kCheatsMaxOperatingLimit - : operatingSettings.MaxValue; - uint32_t minValue = GetGameState().Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; + const auto& gameState = GetGameState(); + uint32_t maxValue = gameState.Cheats.UnlockOperatingLimits ? OpenRCT2::Limits::kCheatsMaxOperatingLimit + : operatingSettings.MaxValue; + uint32_t minValue = gameState.Cheats.UnlockOperatingLimits ? 0 : operatingSettings.MinValue; auto multiplier = ride->GetRideTypeDescriptor().OperatingSettings.OperatingSettingMultiplier; try diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 72b57618a0..f822baa4e8 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1719,15 +1719,16 @@ static Widget _rideConstructionWidgets[] = { widgets[WIDX_SLOPE_UP_STEEP].type = WindowWidgetType::FlatBtn; } + const auto& gameState = GetGameState(); if (currentRide->GetRideTypeDescriptor().HasFlag(RtdFlag::upInclineRequiresLift) && (_currentTrackPitchEnd == TrackPitch::Up25 || _currentTrackPitchEnd == TrackPitch::Up60) - && !GetGameState().Cheats.EnableAllDrawableTrackPieces) + && !gameState.Cheats.EnableAllDrawableTrackPieces) { _currentTrackLiftHill |= CONSTRUCTION_LIFT_HILL_SELECTED; } if ((IsTrackEnabled(TrackGroup::liftHill) && !_currentlySelectedTrack.isTrackType) - || (GetGameState().Cheats.EnableChainLiftOnAllTrack + || (gameState.Cheats.EnableChainLiftOnAllTrack && currentRide->GetRideTypeDescriptor().HasFlag(RtdFlag::hasTrack))) { widgets[WIDX_CHAIN_LIFT].type = WindowWidgetType::FlatBtn; diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 44282c15b6..3cbc425dfc 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -1457,15 +1457,16 @@ namespace OpenRCT2::Ui::Windows Dropdown::SetDisabled(DDIDX_ENABLE_SANDBOX_MODE, true); } - if (GetGameState().Cheats.SandboxMode) + auto& gameState = GetGameState(); + if (gameState.Cheats.SandboxMode) { Dropdown::SetChecked(DDIDX_ENABLE_SANDBOX_MODE, true); } - if (GetGameState().Cheats.DisableClearanceChecks) + if (gameState.Cheats.DisableClearanceChecks) { Dropdown::SetChecked(DDIDX_DISABLE_CLEARANCE_CHECKS, true); } - if (GetGameState().Cheats.DisableSupportLimits) + if (gameState.Cheats.DisableSupportLimits) { Dropdown::SetChecked(DDIDX_DISABLE_SUPPORT_LIMITS, true); }