diff --git a/src/openrct2-ui/title/TitleSequencePlayer.cpp b/src/openrct2-ui/title/TitleSequencePlayer.cpp index 55276722cb..9cbda19ad0 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.cpp +++ b/src/openrct2-ui/title/TitleSequencePlayer.cpp @@ -388,7 +388,8 @@ namespace OpenRCT2::Title void PrepareParkForPlayback() { auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); - windowManager->SetMainView(gSavedView, gSavedViewZoom, gSavedViewRotation); + auto& gameState = GetGameState(); + windowManager->SetMainView(gameState.SavedView, gameState.SavedViewZoom, gameState.SavedViewRotation); ResetEntitySpatialIndices(); ResetAllSpriteQuadrantPlacements(); auto intent = Intent(INTENT_ACTION_REFRESH_NEW_RIDES); diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index f69693c7a2..b4128b21bf 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -423,7 +423,8 @@ namespace Editor static void FinaliseMainView() { auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); - windowManager->SetMainView(gSavedView, gSavedViewZoom, gSavedViewRotation); + auto& gameState = GetGameState(); + windowManager->SetMainView(gameState.SavedView, gameState.SavedViewZoom, gameState.SavedViewRotation); ResetAllSpriteQuadrantPlacements(); ScenerySetDefaultPlacementConfiguration(); diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index 31a6f6b9ec..f4d797851b 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -528,7 +528,8 @@ void GameLoadInit() } auto windowManager = GetContext()->GetUiContext()->GetWindowManager(); - windowManager->SetMainView(gSavedView, gSavedViewZoom, gSavedViewRotation); + auto& gameState = GetGameState(); + windowManager->SetMainView(gameState.SavedView, gameState.SavedViewZoom, gameState.SavedViewRotation); if (NetworkGetMode() != NETWORK_MODE_CLIENT) { diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 14dbfe821e..b878a665bb 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -10,6 +10,7 @@ #pragma once #include "Date.h" +#include "interface/ZoomLevel.h" #include "management/Finance.h" #include "management/NewsItem.h" #include "scenario/Scenario.h" @@ -94,6 +95,10 @@ namespace OpenRCT2 std::vector ResearchItemsInvented; uint8_t ResearchUncompletedCategories; + ScreenCoordsXY SavedView; + uint8_t SavedViewRotation; + ZoomLevel SavedViewZoom; + /** * Probability out of 65535, of gaining a new guest per game tick. * new guests per second = 40 * (probability / 65535) diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index 9796030201..56e27dcc61 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -558,9 +558,11 @@ int32_t CommandLineForScreenshot(const char** argv, int32_t argc, ScreenshotOpti } else { - viewport.viewPos = { gSavedView - ScreenCoordsXY{ (viewport.view_width / 2), (viewport.view_height / 2) } }; - viewport.zoom = gSavedViewZoom; - gCurrentRotation = gSavedViewRotation; + auto& gameState = GetGameState(); + viewport.viewPos = { gameState.SavedView + - ScreenCoordsXY{ (viewport.view_width / 2), (viewport.view_height / 2) } }; + viewport.zoom = gameState.SavedViewZoom; + gCurrentRotation = gameState.SavedViewRotation; } } diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index b033e31264..3863410368 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -65,10 +65,6 @@ Viewport* g_music_tracking_viewport; static std::unique_ptr _paintJobs; static std::vector _paintColumns; -ScreenCoordsXY gSavedView; -ZoomLevel gSavedViewZoom; -uint8_t gSavedViewRotation; - uint8_t gCurrentRotation; static uint32_t _currentImageType; @@ -2080,11 +2076,12 @@ void ViewportSetSavedView() if (w != nullptr) { Viewport* viewport = w->viewport; + auto& gameState = GetGameState(); - gSavedView = ScreenCoordsXY{ viewport->view_width / 2, viewport->view_height / 2 } + viewport->viewPos; + gameState.SavedView = ScreenCoordsXY{ viewport->view_width / 2, viewport->view_height / 2 } + viewport->viewPos; - gSavedViewZoom = viewport->zoom; - gSavedViewRotation = GetCurrentRotation(); + gameState.SavedViewZoom = viewport->zoom; + gameState.SavedViewRotation = GetCurrentRotation(); } } diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 42882dd3bf..d206a672a8 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -122,9 +122,6 @@ extern uint8_t gShowConstructionRightsRefCount; // rct2: 0x014234BC extern Viewport* g_music_tracking_viewport; -extern ScreenCoordsXY gSavedView; -extern ZoomLevel gSavedViewZoom; -extern uint8_t gSavedViewRotation; extern uint8_t gCurrentRotation; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index e69404363f..ed28623b78 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -604,19 +604,19 @@ namespace OpenRCT2 void ReadWriteInterfaceChunk(GameState_t& gameState, OrcaStream& os) { - os.ReadWriteChunk(ParkFileChunkType::INTERFACE, [](OrcaStream::ChunkStream& cs) { - cs.ReadWrite(gSavedView.x); - cs.ReadWrite(gSavedView.y); + os.ReadWriteChunk(ParkFileChunkType::INTERFACE, [&gameState](OrcaStream::ChunkStream& cs) { + cs.ReadWrite(gameState.SavedView.x); + cs.ReadWrite(gameState.SavedView.y); if (cs.GetMode() == OrcaStream::Mode::READING) { auto savedZoomlevel = static_cast(cs.Read()); - gSavedViewZoom = std::clamp(savedZoomlevel, ZoomLevel::min(), ZoomLevel::max()); + gameState.SavedViewZoom = std::clamp(savedZoomlevel, ZoomLevel::min(), ZoomLevel::max()); } else { - cs.Write(static_cast(gSavedViewZoom)); + cs.Write(static_cast(gameState.SavedViewZoom)); } - cs.ReadWrite(gSavedViewRotation); + cs.ReadWrite(gameState.SavedViewRotation); cs.ReadWrite(gLastEntranceStyle); cs.ReadWrite(gEditorStep); }); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 9765ab8b09..3e8a22e061 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2353,9 +2353,10 @@ namespace RCT1 void ImportSavedView() { - gSavedView = ScreenCoordsXY{ _s4.ViewX, _s4.ViewY }; - gSavedViewZoom = ZoomLevel{ static_cast(_s4.ViewZoom) }; - gSavedViewRotation = _s4.ViewRotation; + auto& gameState = GetGameState(); + gameState.SavedView = ScreenCoordsXY{ _s4.ViewX, _s4.ViewY }; + gameState.SavedViewZoom = ZoomLevel{ static_cast(_s4.ViewZoom) }; + gameState.SavedViewRotation = _s4.ViewRotation; } void ConvertWall(const int32_t& type, colour_t* colourA, colour_t* colourB) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index dac57968ae..8caa0296c7 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -440,9 +440,9 @@ namespace RCT2 ImportRides(); - gSavedView = ScreenCoordsXY{ _s6.SavedViewX, _s6.SavedViewY }; - gSavedViewZoom = ZoomLevel{ static_cast(_s6.SavedViewZoom) }; - gSavedViewRotation = _s6.SavedViewRotation; + gameState.SavedView = ScreenCoordsXY{ _s6.SavedViewX, _s6.SavedViewY }; + gameState.SavedViewZoom = ZoomLevel{ static_cast(_s6.SavedViewZoom) }; + gameState.SavedViewRotation = _s6.SavedViewRotation; ImportRideRatingsCalcData(); ImportRideMeasurements();