Move gSavedView states to GameState_t (#21456)

* Move gSavedView to GameState_t

* Move gSavedViewRotation to GameState_t

* Move gSavedViewZoom to GameState_t
This commit is contained in:
Harry Hopkinson 2024-02-25 20:46:01 +00:00 committed by GitHub
parent 880e5af35d
commit 0fab1eaca8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 33 additions and 28 deletions

View File

@ -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);

View File

@ -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();

View File

@ -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)
{

View File

@ -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<ResearchItem> 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)

View File

@ -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;
}
}

View File

@ -65,10 +65,6 @@ Viewport* g_music_tracking_viewport;
static std::unique_ptr<JobPool> _paintJobs;
static std::vector<PaintSession*> _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();
}
}

View File

@ -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;

View File

@ -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<ZoomLevel>(cs.Read<int8_t>());
gSavedViewZoom = std::clamp(savedZoomlevel, ZoomLevel::min(), ZoomLevel::max());
gameState.SavedViewZoom = std::clamp(savedZoomlevel, ZoomLevel::min(), ZoomLevel::max());
}
else
{
cs.Write(static_cast<int8_t>(gSavedViewZoom));
cs.Write(static_cast<int8_t>(gameState.SavedViewZoom));
}
cs.ReadWrite(gSavedViewRotation);
cs.ReadWrite(gameState.SavedViewRotation);
cs.ReadWrite(gLastEntranceStyle);
cs.ReadWrite(gEditorStep);
});

View File

@ -2353,9 +2353,10 @@ namespace RCT1
void ImportSavedView()
{
gSavedView = ScreenCoordsXY{ _s4.ViewX, _s4.ViewY };
gSavedViewZoom = ZoomLevel{ static_cast<int8_t>(_s4.ViewZoom) };
gSavedViewRotation = _s4.ViewRotation;
auto& gameState = GetGameState();
gameState.SavedView = ScreenCoordsXY{ _s4.ViewX, _s4.ViewY };
gameState.SavedViewZoom = ZoomLevel{ static_cast<int8_t>(_s4.ViewZoom) };
gameState.SavedViewRotation = _s4.ViewRotation;
}
void ConvertWall(const int32_t& type, colour_t* colourA, colour_t* colourB)

View File

@ -440,9 +440,9 @@ namespace RCT2
ImportRides();
gSavedView = ScreenCoordsXY{ _s6.SavedViewX, _s6.SavedViewY };
gSavedViewZoom = ZoomLevel{ static_cast<int8_t>(_s6.SavedViewZoom) };
gSavedViewRotation = _s6.SavedViewRotation;
gameState.SavedView = ScreenCoordsXY{ _s6.SavedViewX, _s6.SavedViewY };
gameState.SavedViewZoom = ZoomLevel{ static_cast<int8_t>(_s6.SavedViewZoom) };
gameState.SavedViewRotation = _s6.SavedViewRotation;
ImportRideRatingsCalcData();
ImportRideMeasurements();