diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 98a2138730..1565fd8459 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -1055,10 +1055,10 @@ private: Invalidate(); break; case WIDX_ENTRY_PRICE_INCREASE: - if (gParkEntranceFee < MAX_ENTRANCE_FEE) + if (gameState.ParkEntranceFee < MAX_ENTRANCE_FEE) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::ParkChargeEntryFee, gParkEntranceFee + 1.00_GBP); + ScenarioSetSetting::ParkChargeEntryFee, gameState.ParkEntranceFee + 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1068,10 +1068,10 @@ private: Invalidate(); break; case WIDX_ENTRY_PRICE_DECREASE: - if (gParkEntranceFee > 0.00_GBP) + if (gameState.ParkEntranceFee > 0.00_GBP) { auto scenarioSetSetting = ScenarioSetSettingAction( - ScenarioSetSetting::ParkChargeEntryFee, gParkEntranceFee - 1.00_GBP); + ScenarioSetSetting::ParkChargeEntryFee, gameState.ParkEntranceFee - 1.00_GBP); GameActions::Execute(&scenarioSetSetting); } else @@ -1202,6 +1202,7 @@ private: WindowDrawWidgets(*this, dpi); DrawTabImages(dpi); + const auto& gameState = GetGameState(); const auto& landCostWidget = widgets[WIDX_LAND_COST]; if (landCostWidget.type != WindowWidgetType::Empty) { @@ -1237,7 +1238,6 @@ private: // Pay for park or rides label screenCoords = windowPos + ScreenCoordsXY{ payForParkOrRidesWidget.left + 1, payForParkOrRidesWidget.top }; - auto& gameState = GetGameState(); auto ft = Formatter(); // Pay for park and/or rides value if (gameState.ParkFlags & PARK_FLAGS_UNLOCK_ALL_PRICES) @@ -1260,7 +1260,7 @@ private: // Entry price value screenCoords = windowPos + ScreenCoordsXY{ entryPriceWidget.left + 1, entryPriceWidget.top }; auto ft = Formatter(); - ft.Add(gParkEntranceFee); + ft.Add(gameState.ParkEntranceFee); DrawTextBasic(dpi, screenCoords, STR_CURRENCY_FORMAT_LABEL, ft); } @@ -1272,7 +1272,7 @@ private: // Climate value screenCoords = windowPos + ScreenCoordsXY{ climateWidget.left + 1, climateWidget.top }; auto ft = Formatter(); - ft.Add(ClimateNames[static_cast(GetGameState().Climate)]); + ft.Add(ClimateNames[static_cast(gameState.Climate)]); DrawTextBasic(dpi, screenCoords, STR_WINDOW_COLOUR_2_STRINGID, ft); } diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 3e837ba179..6b19c6bcd1 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -823,18 +823,19 @@ private: void OnMouseDownPrice(WidgetIndex widgetIndex) { + const auto& gameState = GetGameState(); switch (widgetIndex) { case WIDX_INCREASE_PRICE: { - const auto newFee = std::min(MAX_ENTRANCE_FEE, gParkEntranceFee + 1.00_GBP); + const auto newFee = std::min(MAX_ENTRANCE_FEE, gameState.ParkEntranceFee + 1.00_GBP); auto gameAction = ParkSetEntranceFeeAction(newFee); GameActions::Execute(&gameAction); break; } case WIDX_DECREASE_PRICE: { - const auto newFee = std::max(0.00_GBP, gParkEntranceFee - 1.00_GBP); + const auto newFee = std::max(0.00_GBP, gameState.ParkEntranceFee - 1.00_GBP); auto gameAction = ParkSetEntranceFeeAction(newFee); GameActions::Execute(&gameAction); break; diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 4289bb915d..4d3907eca5 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -325,7 +325,7 @@ namespace Editor { gameState.ParkFlags |= PARK_FLAGS_NO_MONEY; - if (gParkEntranceFee == 0) + if (gameState.ParkEntranceFee == 0) { gameState.ParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY; } diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 64c1e1e0ff..946df14487 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -27,6 +27,7 @@ namespace OpenRCT2 uint32_t CurrentTicks{}; uint64_t ParkFlags; uint16_t ParkRating; + money64 ParkEntranceFee; ClimateType Climate; ClimateState ClimateCurrent; ClimateState ClimateNext; diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp index 0771f8b2e5..39732ae3cb 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp @@ -57,7 +57,7 @@ GameActions::Result ParkSetEntranceFeeAction::Query() const GameActions::Result ParkSetEntranceFeeAction::Execute() const { - gParkEntranceFee = _fee; + GetGameState().ParkEntranceFee = _fee; WindowInvalidateByClass(WindowClass::ParkInformation); return GameActions::Result(); } diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index 19d4172dec..2203befb76 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -210,7 +210,8 @@ GameActions::Result RideCreateAction::Execute() const price = 0; } - if (!(GetGameState().ParkFlags & PARK_FLAGS_NO_MONEY)) + const auto& gameState = GetGameState(); + if (!(gameState.ParkFlags & PARK_FLAGS_NO_MONEY)) { for (auto i = 0; i < RCT2::ObjectLimits::MaxShopItemsPerRideEntry; i++) { @@ -219,7 +220,7 @@ GameActions::Result RideCreateAction::Execute() const if (rideEntry->shop_item[0] == ShopItem::None) { - if (!ParkRidePricesUnlocked() || gParkEntranceFee > 0) + if (!ParkRidePricesUnlocked() || gameState.ParkEntranceFee > 0) { ride->price[0] = 0; } diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index e0f69074e4..aecd6d9150 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -157,19 +157,19 @@ GameActions::Result ScenarioSetSettingAction::Execute() const { gameState.ParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY; gameState.ParkFlags &= ~PARK_FLAGS_UNLOCK_ALL_PRICES; - gParkEntranceFee = 0.00_GBP; + gameState.ParkEntranceFee = 0.00_GBP; } else if (_value == 1) { gameState.ParkFlags &= ~PARK_FLAGS_PARK_FREE_ENTRY; gameState.ParkFlags &= ~PARK_FLAGS_UNLOCK_ALL_PRICES; - gParkEntranceFee = 10.00_GBP; + gameState.ParkEntranceFee = 10.00_GBP; } else { gameState.ParkFlags |= PARK_FLAGS_PARK_FREE_ENTRY; gameState.ParkFlags |= PARK_FLAGS_UNLOCK_ALL_PRICES; - gParkEntranceFee = 10.00_GBP; + gameState.ParkEntranceFee = 10.00_GBP; } } else @@ -194,7 +194,7 @@ GameActions::Result ScenarioSetSettingAction::Execute() const } break; case ScenarioSetSetting::ParkChargeEntryFee: - gParkEntranceFee = std::clamp(_value, 0.00_GBP, MAX_ENTRANCE_FEE); + gameState.ParkEntranceFee = std::clamp(_value, 0.00_GBP, MAX_ENTRANCE_FEE); WindowInvalidateByClass(WindowClass::ParkInformation); break; case ScenarioSetSetting::ForbidTreeRemoval: diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 15384c1bef..cb35b567ba 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -811,11 +811,11 @@ namespace OpenRCT2 { money16 tempParkEntranceFee{}; cs.ReadWrite(tempParkEntranceFee); - gParkEntranceFee = ToMoney64(tempParkEntranceFee); + gameState.ParkEntranceFee = ToMoney64(tempParkEntranceFee); } else { - cs.ReadWrite(gParkEntranceFee); + cs.ReadWrite(gameState.ParkEntranceFee); } cs.ReadWrite(gStaffHandymanColour); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 512af050fc..9f020634eb 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1391,7 +1391,7 @@ namespace RCT1 void ImportFinance(GameState_t& gameState) { - gParkEntranceFee = _s4.ParkEntranceFee; + gameState.ParkEntranceFee = _s4.ParkEntranceFee; gLandPrice = ToMoney64(_s4.LandPrice); gConstructionRightsPrice = ToMoney64(_s4.ConstructionRightsPrice); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index d7e6c19abd..c1e1f4c327 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -274,7 +274,7 @@ namespace RCT2 gameState.ParkFlags &= ~PARK_FLAGS_NO_MONEY; } - gParkEntranceFee = _s6.ParkEntranceFee; + gameState.ParkEntranceFee = _s6.ParkEntranceFee; // rct1_park_entranceX // rct1_park_entrance_y // Pad013573EE diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 521f2e413d..0fdac3187e 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -183,7 +183,7 @@ void ScenarioReset() if (gameState.ParkFlags & PARK_FLAGS_NO_MONEY) { gameState.ParkFlags |= PARK_FLAGS_PARK_OPEN; - gParkEntranceFee = 0; + gameState.ParkEntranceFee = 0; } gameState.ParkFlags |= PARK_FLAGS_SPRITES_INITIALISED; diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index 431ac04c5e..d3a7b96c36 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -118,15 +118,16 @@ namespace OpenRCT2::Scripting money64 ScPark::entranceFee_get() const { - return gParkEntranceFee; + return GetGameState().ParkEntranceFee; } void ScPark::entranceFee_set(money64 value) { ThrowIfGameStateNotMutable(); - if (gParkEntranceFee != value) + auto& gameState = GetGameState(); + if (gameState.ParkEntranceFee != value) { - gParkEntranceFee = value; + gameState.ParkEntranceFee = value; WindowInvalidateByClass(WindowClass::ParkInformation); } } diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index 07b9f54f8c..608bd92bb0 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -46,7 +46,6 @@ using namespace OpenRCT2; -money64 gParkEntranceFee; uint32_t gParkSize; money64 gLandPrice; money64 gConstructionRightsPrice; @@ -191,7 +190,8 @@ int32_t ParkGetForcedRating() money64 ParkGetEntranceFee() { - if (GetGameState().ParkFlags & PARK_FLAGS_NO_MONEY) + const auto& gameState = GetGameState(); + if (gameState.ParkFlags & PARK_FLAGS_NO_MONEY) { return 0; } @@ -199,7 +199,7 @@ money64 ParkGetEntranceFee() { return 0; } - return gParkEntranceFee; + return gameState.ParkEntranceFee; } bool ParkRidePricesUnlocked() @@ -277,7 +277,7 @@ void Park::Initialise() SetAllSceneryItemsInvented(); - gParkEntranceFee = 10.00_GBP; + gameState.ParkEntranceFee = 10.00_GBP; gPeepSpawns.clear(); ParkEntranceReset(); diff --git a/src/openrct2/world/Park.h b/src/openrct2/world/Park.h index ce220f3416..82e1432457 100644 --- a/src/openrct2/world/Park.h +++ b/src/openrct2/world/Park.h @@ -92,7 +92,6 @@ namespace OpenRCT2 }; } // namespace OpenRCT2 -extern money64 gParkEntranceFee; extern uint32_t gParkSize; extern money64 gLandPrice; extern money64 gConstructionRightsPrice;