diff --git a/src/openrct2-ui/windows/Viewport.cpp b/src/openrct2-ui/windows/Viewport.cpp index b7e846a585..6a5599c45b 100644 --- a/src/openrct2-ui/windows/Viewport.cpp +++ b/src/openrct2-ui/windows/Viewport.cpp @@ -95,7 +95,7 @@ public: savedViewPos = { x - (viewport->view_width / 2), y - (viewport->view_height / 2) }; } - viewport->flags |= VIEWPORT_FLAG_SOUND_ON; + viewport->flags |= VIEWPORT_FLAG_SOUND_ON | VIEWPORT_FLAG_INDEPEDENT_ROTATION; min_width = WW; min_height = WH; @@ -111,7 +111,7 @@ public: if (viewport != nullptr && viewport->flags != mainWindow->viewport->flags) { - viewport->flags = mainWindow->viewport->flags; + viewport->flags = mainWindow->viewport->flags | VIEWPORT_FLAG_INDEPEDENT_ROTATION; Invalidate(); } diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 21452ce348..03ce7af4d7 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -890,7 +890,14 @@ void ViewportRotateSingle(WindowBase* window, int32_t direction) void ViewportRotateAll(int32_t direction) { - WindowVisitEach([direction](WindowBase* w) { ViewportRotateSingleInternal(*w, direction); }); + WindowVisitEach([direction](WindowBase* w) { + auto* viewport = w->viewport; + if (viewport == nullptr) + return; + if (viewport->flags & VIEWPORT_FLAG_INDEPEDENT_ROTATION) + return; + ViewportRotateSingleInternal(*w, direction); + }); ResetAllSpriteQuadrantPlacements(); } diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 270d5d2fdb..3c3d9a4399 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -28,40 +28,42 @@ struct PaintEntry; // Flags must currenly retain their values to avoid breaking plugins. // Values can be changed when plugins move to using named constants. -enum +enum : uint32_t { - VIEWPORT_FLAG_GRIDLINES = (1 << 7), - VIEWPORT_FLAG_UNDERGROUND_INSIDE = (1 << 0), - VIEWPORT_FLAG_HIDE_BASE = (1 << 12), - VIEWPORT_FLAG_HIDE_VERTICAL = (1 << 13), + VIEWPORT_FLAG_GRIDLINES = (1U << 7), + VIEWPORT_FLAG_UNDERGROUND_INSIDE = (1U << 0), + VIEWPORT_FLAG_HIDE_BASE = (1U << 12), + VIEWPORT_FLAG_HIDE_VERTICAL = (1U << 13), - VIEWPORT_FLAG_SOUND_ON = (1 << 10), - VIEWPORT_FLAG_LAND_OWNERSHIP = (1 << 8), - VIEWPORT_FLAG_CONSTRUCTION_RIGHTS = (1 << 9), - VIEWPORT_FLAG_HIDE_ENTITIES = (1 << 14), - VIEWPORT_FLAG_CLIP_VIEW = (1 << 17), - VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES = (1 << 18), - VIEWPORT_FLAG_TRANSPARENT_BACKGROUND = (1 << 19), + VIEWPORT_FLAG_SOUND_ON = (1U << 10), + VIEWPORT_FLAG_LAND_OWNERSHIP = (1U << 8), + VIEWPORT_FLAG_CONSTRUCTION_RIGHTS = (1U << 9), + VIEWPORT_FLAG_HIDE_ENTITIES = (1U << 14), + VIEWPORT_FLAG_CLIP_VIEW = (1U << 17), + VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES = (1U << 18), + VIEWPORT_FLAG_TRANSPARENT_BACKGROUND = (1U << 19), - VIEWPORT_FLAG_LAND_HEIGHTS = (1 << 4), - VIEWPORT_FLAG_TRACK_HEIGHTS = (1 << 5), - VIEWPORT_FLAG_PATH_HEIGHTS = (1 << 6), + VIEWPORT_FLAG_LAND_HEIGHTS = (1U << 4), + VIEWPORT_FLAG_TRACK_HEIGHTS = (1U << 5), + VIEWPORT_FLAG_PATH_HEIGHTS = (1U << 6), - VIEWPORT_FLAG_HIDE_RIDES = (1 << 1), - VIEWPORT_FLAG_HIDE_VEHICLES = (1 << 20), - VIEWPORT_FLAG_HIDE_VEGETATION = (1 << 21), - VIEWPORT_FLAG_HIDE_SCENERY = (1 << 2), - VIEWPORT_FLAG_HIDE_PATHS = (1 << 16), - VIEWPORT_FLAG_HIDE_SUPPORTS = (1 << 3), - VIEWPORT_FLAG_HIDE_GUESTS = (1 << 11), - VIEWPORT_FLAG_HIDE_STAFF = (1 << 23), + VIEWPORT_FLAG_HIDE_RIDES = (1U << 1), + VIEWPORT_FLAG_HIDE_VEHICLES = (1U << 20), + VIEWPORT_FLAG_HIDE_VEGETATION = (1U << 21), + VIEWPORT_FLAG_HIDE_SCENERY = (1U << 2), + VIEWPORT_FLAG_HIDE_PATHS = (1U << 16), + VIEWPORT_FLAG_HIDE_SUPPORTS = (1U << 3), + VIEWPORT_FLAG_HIDE_GUESTS = (1U << 11), + VIEWPORT_FLAG_HIDE_STAFF = (1U << 23), - VIEWPORT_FLAG_INVISIBLE_RIDES = (1 << 24), - VIEWPORT_FLAG_INVISIBLE_VEHICLES = (1 << 25), - VIEWPORT_FLAG_INVISIBLE_VEGETATION = (1 << 26), - VIEWPORT_FLAG_INVISIBLE_SCENERY = (1 << 27), - VIEWPORT_FLAG_INVISIBLE_PATHS = (1 << 28), - VIEWPORT_FLAG_INVISIBLE_SUPPORTS = (1 << 29), + VIEWPORT_FLAG_INVISIBLE_RIDES = (1U << 24), + VIEWPORT_FLAG_INVISIBLE_VEHICLES = (1U << 25), + VIEWPORT_FLAG_INVISIBLE_VEGETATION = (1U << 26), + VIEWPORT_FLAG_INVISIBLE_SCENERY = (1U << 27), + VIEWPORT_FLAG_INVISIBLE_PATHS = (1U << 28), + VIEWPORT_FLAG_INVISIBLE_SUPPORTS = (1U << 29), + + VIEWPORT_FLAG_INDEPEDENT_ROTATION = (1U << 30), }; enum class VisibilityKind