From a8e9a6b3854a2be7dca2ac1d0ab712650740f760 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Fri, 7 Nov 2025 20:08:10 +0100 Subject: [PATCH 001/222] Fix RCT1/2 install confusion when both are present --- distribution/changelog.txt | 1 + src/openrct2/config/Config.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 5ce34cf97cc9..cde2c4bf64e0 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -4,6 +4,7 @@ - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. - Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. +- Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. 0.4.28 (2025-11-01) ------------------------------------------------------------------------ diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index b3dcc5d27bf5..a2fa8d867f42 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -967,7 +967,7 @@ namespace OpenRCT2::Config std::string rct1Path = FindRCT1Path(); if (!rct1Path.empty()) { - Get().general.rct2Path = std::move(rct1Path); + Get().general.rct1Path = std::move(rct1Path); } return true; From 49ef6768c5b538048dc71c44b77fad85a958cc84 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Fri, 7 Nov 2025 21:14:58 +0100 Subject: [PATCH 002/222] Fix Windows build; use WIN32_LEAN_AND_MEAN in more places --- src/openrct2-win/openrct2-win.cpp | 3 +++ src/openrct2/core/Crypt.CNG.cpp | 17 +++++++++++------ src/openrct2/core/Diagnostics.cpp | 3 +++ src/openrct2/core/File.cpp | 3 +++ src/openrct2/core/FileScanner.cpp | 3 +++ src/openrct2/core/FileWatcher.cpp | 3 +++ src/openrct2/core/Guard.cpp | 4 +++- src/openrct2/core/Http.WinHttp.cpp | 4 ++++ src/openrct2/core/String.cpp | 3 +++ src/openrct2/network/Socket.cpp | 3 +++ src/openrct2/platform/Platform.Win32.cpp | 16 ++++++++-------- 11 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/openrct2-win/openrct2-win.cpp b/src/openrct2-win/openrct2-win.cpp index d640e46f9a3a..d0e43aa3f5e2 100644 --- a/src/openrct2-win/openrct2-win.cpp +++ b/src/openrct2-win/openrct2-win.cpp @@ -8,6 +8,9 @@ *****************************************************************************/ // Windows.h needs to be included first +#ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN +#endif #include // Enable visual styles diff --git a/src/openrct2/core/Crypt.CNG.cpp b/src/openrct2/core/Crypt.CNG.cpp index dc1b096598b3..00b302256b0e 100644 --- a/src/openrct2/core/Crypt.CNG.cpp +++ b/src/openrct2/core/Crypt.CNG.cpp @@ -24,12 +24,17 @@ #include // clang-format off -// CNG: Cryptography API: Next Generation (CNG) -// available in Windows Vista onwards. -#include -#include -#include -constexpr bool NT_SUCCESS(NTSTATUS status) {return status >= 0;} + // windows.h needs to be included first + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #include + + // CNG: Cryptography API: Next Generation (CNG) + // available in Windows Vista onwards. + #include + #include + constexpr bool NT_SUCCESS(NTSTATUS status) {return status >= 0;} // clang-format on using namespace OpenRCT2::Crypt; diff --git a/src/openrct2/core/Diagnostics.cpp b/src/openrct2/core/Diagnostics.cpp index a8840a9089c4..fec947d2ea2b 100644 --- a/src/openrct2/core/Diagnostics.cpp +++ b/src/openrct2/core/Diagnostics.cpp @@ -8,6 +8,9 @@ *****************************************************************************/ #if defined(DEBUG) && defined(_WIN32) + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #endif diff --git a/src/openrct2/core/File.cpp b/src/openrct2/core/File.cpp index 1296e1cba0c8..e0cad111526e 100644 --- a/src/openrct2/core/File.cpp +++ b/src/openrct2/core/File.cpp @@ -8,6 +8,9 @@ *****************************************************************************/ #ifdef _WIN32 + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #else #include diff --git a/src/openrct2/core/FileScanner.cpp b/src/openrct2/core/FileScanner.cpp index 936dbe64f312..74a3d546317a 100644 --- a/src/openrct2/core/FileScanner.cpp +++ b/src/openrct2/core/FileScanner.cpp @@ -8,6 +8,9 @@ *****************************************************************************/ #ifdef _WIN32 + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) #include diff --git a/src/openrct2/core/FileWatcher.cpp b/src/openrct2/core/FileWatcher.cpp index c75dbee05624..5deb35db4681 100644 --- a/src/openrct2/core/FileWatcher.cpp +++ b/src/openrct2/core/FileWatcher.cpp @@ -15,6 +15,9 @@ #include #ifdef _WIN32 + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #elif defined(__linux__) #include diff --git a/src/openrct2/core/Guard.cpp b/src/openrct2/core/Guard.cpp index dc318c885a1c..2eb1598e69c7 100644 --- a/src/openrct2/core/Guard.cpp +++ b/src/openrct2/core/Guard.cpp @@ -8,7 +8,9 @@ *****************************************************************************/ #ifdef _WIN32 - #include + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #endif diff --git a/src/openrct2/core/Http.WinHttp.cpp b/src/openrct2/core/Http.WinHttp.cpp index a18cc5a733ea..b4a53c7f3dc8 100644 --- a/src/openrct2/core/Http.WinHttp.cpp +++ b/src/openrct2/core/Http.WinHttp.cpp @@ -17,6 +17,10 @@ #include #include + + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #include diff --git a/src/openrct2/core/String.cpp b/src/openrct2/core/String.cpp index 5efccf864924..10218ef8e078 100644 --- a/src/openrct2/core/String.cpp +++ b/src/openrct2/core/String.cpp @@ -27,6 +27,9 @@ #include #include #else + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif #include #endif diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp index 9c9e10818021..73e2447cd7ea 100644 --- a/src/openrct2/network/Socket.cpp +++ b/src/openrct2/network/Socket.cpp @@ -26,6 +26,9 @@ #ifdef _WIN32 #pragma comment(lib, "Ws2_32.lib") + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif // winsock2 must be included before windows.h #include #include diff --git a/src/openrct2/platform/Platform.Win32.cpp b/src/openrct2/platform/Platform.Win32.cpp index 47e835a15fa5..23605cc3ca3a 100644 --- a/src/openrct2/platform/Platform.Win32.cpp +++ b/src/openrct2/platform/Platform.Win32.cpp @@ -13,27 +13,27 @@ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif - #include "../Diagnostic.h" - - #include +// clang-format off #include - - // Then the rest - #include "../Version.h" - #include #include #include #include + // clang-format on #undef GetEnvironmentVariable + #undef small + + #include "Platform.h" #include "../Date.h" + #include "../Diagnostic.h" #include "../OpenRCT2.h" + #include "../Version.h" #include "../core/Path.hpp" #include "../core/String.hpp" #include "../localisation/Language.h" - #include "Platform.h" + #include #include #include #include From 195de3b25830b7ce21fdf243ada9da88307f9d07 Mon Sep 17 00:00:00 2001 From: mix Date: Mon, 3 Nov 2025 01:05:23 +0000 Subject: [PATCH 003/222] Fix #6228: Track design queue connections not preserved when built --- distribution/changelog.txt | 1 + src/openrct2/ride/Ride.h | 3 ++- src/openrct2/ride/TrackDesign.cpp | 18 +++++++------ src/openrct2/world/Footpath.cpp | 45 +++++++++++++++++++++++++++++++ src/openrct2/world/Footpath.h | 1 + 5 files changed, 59 insertions(+), 9 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index cde2c4bf64e0..4571da31ab8c 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,6 +1,7 @@ 0.4.29 (in development) ------------------------------------------------------------------------ - Improved: [#25426] Building the track designs index is now quicker. +- Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. - Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 3bcef56b5e00..d544932ce68c 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -327,13 +327,14 @@ struct Ride // in the station array. e.g. if only slot 0 and 2 are in use, index 2 returns 2 instead of 3. StationIndex::UnderlyingType getStationNumber(StationIndex in) const; + void chainQueues() const; + private: void update(); void updateQueueLength(StationIndex stationIndex); ResultWithMessage createVehicles(const CoordsXYE& element, bool isApplying, bool isSimulating); void moveTrainsToBlockBrakes(const CoordsXYZ& firstBlockPosition, OpenRCT2::TrackElement& firstBlock); money64 calculateIncomePerHour() const; - void chainQueues() const; void constructMissingEntranceOrExit() const; ResultWithMessage changeStatusDoStationChecks(StationIndex& stationIndex); diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index bb07e65998b5..3c010d571987 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1229,12 +1229,6 @@ static GameActions::Result TrackDesignPlaceSceneryElement( return GameActions::Result(); } - if (tds.placeOperation == TrackPlaceOperation::place) - { - FootpathQueueChainReset(); - FootpathRemoveEdgesAt(mapCoord, reinterpret_cast(pathElement)); - } - flags = GAME_COMMAND_FLAG_APPLY; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { @@ -1252,8 +1246,11 @@ static GameActions::Result TrackDesignPlaceSceneryElement( if (tds.placeOperation == TrackPlaceOperation::place) { - FootpathConnectEdges(mapCoord, reinterpret_cast(pathElement), flags); - FootpathUpdateQueueChains(); + if (!pathElement->IsQueue() || FootpathQueueCountConnections(mapCoord, *pathElement) < 2) + { + FootpathRemoveEdgesAt(mapCoord, reinterpret_cast(pathElement)); + FootpathConnectEdges(mapCoord, reinterpret_cast(pathElement), flags); + } } return GameActions::Result(); @@ -1807,6 +1804,11 @@ static GameActions::Result TrackDesignPlaceVirtual( return sceneryPlaceRes; } + if (tds.placeOperation == TrackPlaceOperation::place || tds.placeOperation == TrackPlaceOperation::placeTrackPreview) + { + ride.chainQueues(); + } + // 0x6D0FE6 if (tds.placeOperation == TrackPlaceOperation::drawOutlines) { diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 43f754812d01..57a5bdf1e3e7 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -955,6 +955,51 @@ void FootpathUpdateQueueChains() } } +int32_t FootpathQueueCountConnections(const CoordsXY& position, const PathElement& pathElement) +{ + int32_t connectionCount = 0; + for (const Direction direction : kAllDirections) + { + const uint8_t edge = 1 << direction; + if (pathElement.GetEdges() & edge) + { + const CoordsXY adjacentPathPosition = position + CoordsDirectionDelta[direction]; + const int32_t z = pathElement.GetBaseZ(); + const TileElement* tileElement = FootpathGetElement({ adjacentPathPosition, z, z + kLandHeightStep }, direction); + + if (tileElement == nullptr) + { + tileElement = FootpathGetElement({ adjacentPathPosition, z - kLandHeightStep, z }, direction); + + if (tileElement == nullptr) + { + const EntranceElement* entrance = MapGetRideEntranceElementAt(CoordsXYZ{ adjacentPathPosition, z }, true); + if (entrance == nullptr) + { + entrance = MapGetRideEntranceElementAt(CoordsXYZ{ adjacentPathPosition, z + kLandHeightStep }, true); + if (entrance == nullptr) + continue; + } + + if (entrance_has_direction(*entrance, direction + entrance->GetDirection())) + { + connectionCount++; + } + continue; + } + } + + const PathElement& adjacentPath = *tileElement->AsPath(); + + if (adjacentPath.GetEdges() & Numerics::rol4(edge, 2)) + { + connectionCount++; + } + } + } + return connectionCount; +} + /** * * rct2: 0x0069ADBD diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 9690d468f89b..9fa7c8e1880f 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -189,6 +189,7 @@ const OpenRCT2::FootpathRailingsObject* GetPathRailingsEntry(OpenRCT2::ObjectEnt void FootpathQueueChainReset(); void FootpathQueueChainPush(RideId rideIndex); +int32_t FootpathQueueCountConnections(const CoordsXY& position, const OpenRCT2::PathElement& pathElement); bool FootpathIsZAndDirectionValid(const OpenRCT2::PathElement& tileElement, int32_t currentZ, int32_t currentDirection); FootpathPlacementResult FootpathGetOnTerrainPlacement(const TileCoordsXY& location); From 61e73a5535569fcabfcc0ff4e01441c8bbd426dd Mon Sep 17 00:00:00 2001 From: mix Date: Thu, 6 Nov 2025 00:20:37 +0000 Subject: [PATCH 004/222] Bump network version --- src/openrct2/network/NetworkBase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 4b4b963c2de6..cad46ba29e32 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 1; +constexpr uint8_t kStreamVersion = 2; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From 462f2941846c3a298e794b379f1b752f39a67188 Mon Sep 17 00:00:00 2001 From: mix Date: Mon, 3 Nov 2025 01:06:41 +0000 Subject: [PATCH 005/222] Fix paths in track design previews not being connected correctly --- distribution/changelog.txt | 1 + src/openrct2/ride/TrackDesign.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 4571da31ab8c..a8c39e1d83ff 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -5,6 +5,7 @@ - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. - Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. +- Fix: [#25467] Paths are not connected together correctly in track design previews. - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. 0.4.28 (2025-11-01) diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 3c010d571987..a4efaadd5e1c 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1244,7 +1244,8 @@ static GameActions::Result TrackDesignPlaceSceneryElement( flags |= GAME_COMMAND_FLAG_REPLAY; } - if (tds.placeOperation == TrackPlaceOperation::place) + if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview + || tds.placeOperation == TrackPlaceOperation::place) { if (!pathElement->IsQueue() || FootpathQueueCountConnections(mapCoord, *pathElement) < 2) { From 6f245770277906ecb96496f19981bcfd6b0b4ec1 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sat, 8 Nov 2025 10:27:58 +0100 Subject: [PATCH 006/222] Fix return value of Widget::width() --- src/openrct2-ui/input/MouseInput.cpp | 10 +++---- src/openrct2-ui/interface/Widget.cpp | 18 ++++++------- src/openrct2-ui/interface/Window.cpp | 4 +-- src/openrct2-ui/scripting/CustomWindow.cpp | 8 +++--- src/openrct2-ui/scripting/ScWidget.hpp | 2 +- src/openrct2-ui/windows/About.cpp | 2 +- src/openrct2-ui/windows/Banner.cpp | 4 +-- src/openrct2-ui/windows/Changelog.cpp | 2 +- src/openrct2-ui/windows/Cheats.cpp | 4 +-- src/openrct2-ui/windows/CustomCurrency.cpp | 2 +- .../windows/EditorInventionsList.cpp | 4 +-- .../windows/EditorObjectSelection.cpp | 12 ++++----- .../windows/EditorScenarioOptions.cpp | 8 +++--- src/openrct2-ui/windows/Finances.cpp | 4 +-- src/openrct2-ui/windows/GameBottomToolbar.cpp | 4 +-- src/openrct2-ui/windows/Guest.cpp | 14 +++++----- src/openrct2-ui/windows/GuestList.cpp | 4 +-- src/openrct2-ui/windows/LoadSave.cpp | 6 ++--- src/openrct2-ui/windows/Map.cpp | 4 +-- src/openrct2-ui/windows/MapGen.cpp | 2 +- src/openrct2-ui/windows/Multiplayer.cpp | 4 +-- src/openrct2-ui/windows/NewCampaign.cpp | 4 +-- src/openrct2-ui/windows/NewRide.cpp | 2 +- src/openrct2-ui/windows/ObjectLoadError.cpp | 2 +- src/openrct2-ui/windows/Options.cpp | 12 ++++----- src/openrct2-ui/windows/Park.cpp | 6 ++--- src/openrct2-ui/windows/Player.cpp | 6 ++--- src/openrct2-ui/windows/Research.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 26 +++++++++---------- src/openrct2-ui/windows/RideConstruction.cpp | 4 +-- src/openrct2-ui/windows/RideList.cpp | 10 +++---- src/openrct2-ui/windows/ScenarioSelect.cpp | 4 +-- src/openrct2-ui/windows/Scenery.cpp | 2 +- src/openrct2-ui/windows/ServerList.cpp | 4 +-- src/openrct2-ui/windows/Sign.cpp | 4 +-- src/openrct2-ui/windows/Staff.cpp | 10 +++---- src/openrct2-ui/windows/StaffList.cpp | 4 +-- src/openrct2-ui/windows/Themes.cpp | 2 +- src/openrct2-ui/windows/TileInspector.cpp | 4 +-- src/openrct2-ui/windows/TopToolbar.cpp | 4 +-- src/openrct2-ui/windows/ViewClipping.cpp | 4 +-- src/openrct2-ui/windows/Viewport.cpp | 2 +- src/openrct2/interface/Widget.h | 4 +-- 43 files changed, 122 insertions(+), 122 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index b388897cd1de..712c66d1b083 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -211,7 +211,7 @@ namespace OpenRCT2 if (scroll.flags & HSCROLLBAR_VISIBLE) { - int16_t size = widget.width() - 1; + int16_t size = widget.width() - 2; if (scroll.flags & VSCROLLBAR_VISIBLE) size -= 11; size = std::max(0, scroll.contentWidth - size); @@ -671,7 +671,7 @@ namespace OpenRCT2 const auto& widg = w.widgets[widgetIndex]; auto& scroll = w.scrolls[scroll_id]; - int32_t widget_width = widg.width() - 1; + int32_t widget_width = widg.width() - 2; if (scroll.flags & VSCROLLBAR_VISIBLE) widget_width -= kScrollBarWidth + 1; int32_t widget_content_width = std::max(scroll.contentWidth - widget_width, 0); @@ -794,7 +794,7 @@ namespace OpenRCT2 int32_t newLeft; newLeft = scroll.contentWidth; newLeft *= x; - x = widget.width() - 21; + x = widget.width() - 22; if (scroll.flags & VSCROLLBAR_VISIBLE) x -= kScrollBarWidth + 1; newLeft /= x; @@ -804,7 +804,7 @@ namespace OpenRCT2 newLeft += x; if (newLeft < 0) newLeft = 0; - x = widget.width() - 1; + x = widget.width() - 2; if (scroll.flags & VSCROLLBAR_VISIBLE) x -= kScrollBarWidth + 1; x *= -1; @@ -891,7 +891,7 @@ namespace OpenRCT2 auto& scroll = w.scrolls[scroll_id]; scroll.flags |= HSCROLLBAR_RIGHT_PRESSED; scroll.contentOffsetX += 3; - int32_t newLeft = widget.width() - 1; + int32_t newLeft = widget.width() - 2; if (scroll.flags & VSCROLLBAR_VISIBLE) newLeft -= kScrollBarWidth + 1; newLeft *= -1; diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 71269ad154e6..b434001f4b3a 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -382,11 +382,11 @@ namespace OpenRCT2::Ui ScreenCoordsXY coords = { (topLeft.x + r + 1) / 2 - 1, topLeft.y }; if (widget.type == WidgetType::labelCentred) { - DrawTextWrapped(rt, coords, widget.width() - 2, stringId, ft, { colour, TextAlignment::centre }); + DrawTextWrapped(rt, coords, widget.width() - 3, stringId, ft, { colour, TextAlignment::centre }); } else { - DrawTextEllipsised(rt, coords, widget.width() - 2, stringId, ft, { colour, TextAlignment::centre }); + DrawTextEllipsised(rt, coords, widget.width() - 3, stringId, ft, { colour, TextAlignment::centre }); } } @@ -572,7 +572,7 @@ namespace OpenRCT2::Ui return; topLeft = w.windowPos + ScreenCoordsXY{ widget->left + 2, widget->top + 1 }; - int32_t width = widget->width() - 4; + int32_t width = widget->width() - 5; if (static_cast(widgetIndex + 1) < w.widgets.size() && (w.widgets[widgetIndex + 1]).type == WidgetType::closeBox) @@ -677,7 +677,7 @@ namespace OpenRCT2::Ui } DrawTextEllipsised( - rt, w.windowPos + ScreenCoordsXY{ widget.left + 14, widget.textTop() }, widget.width() - 14, stringId, ft, colour); + rt, w.windowPos + ScreenCoordsXY{ widget.left + 14, widget.textTop() }, widget.width() - 15, stringId, ft, colour); } /** @@ -708,7 +708,7 @@ namespace OpenRCT2::Ui bottomRight.x--; bottomRight.y--; - bool hScrollNeeded = scroll.contentWidth > widget.width() && (scroll.flags & HSCROLLBAR_VISIBLE); + bool hScrollNeeded = scroll.contentWidth > (widget.width() - 1) && (scroll.flags & HSCROLLBAR_VISIBLE); bool vScrollNeeded = scroll.contentHeight > widget.height() && (scroll.flags & VSCROLLBAR_VISIBLE); // Horizontal scrollbar @@ -982,7 +982,7 @@ namespace OpenRCT2::Ui } const auto& scroll = w.scrolls[*scroll_id]; - if ((scroll.flags & HSCROLLBAR_VISIBLE) && scroll.contentWidth > widget->width() + if ((scroll.flags & HSCROLLBAR_VISIBLE) && scroll.contentWidth > (widget->width() - 1) && screenCoords.y >= (w.windowPos.y + widget->bottom - (kScrollBarWidth + 1))) { // horizontal scrollbar @@ -1236,7 +1236,7 @@ namespace OpenRCT2::Ui return; } - const auto barWidth = widget.width() - 2; + const auto barWidth = widget.width() - 3; const int32_t fillSize = (barWidth * percentage) / 100; if (fillSize > 0) { @@ -1283,7 +1283,7 @@ namespace OpenRCT2::Ui if (scroll.flags & HSCROLLBAR_VISIBLE) { - int32_t view_size = widget.width() - 21; + int32_t view_size = widget.width() - 22; if (scroll.flags & VSCROLLBAR_VISIBLE) view_size -= 11; int32_t x = scroll.contentOffsetX * view_size; @@ -1291,7 +1291,7 @@ namespace OpenRCT2::Ui x /= scroll.contentWidth; scroll.hThumbLeft = x + 11; - x = widget.width() - 2; + x = widget.width() - 3; if (scroll.flags & VSCROLLBAR_VISIBLE) x -= 11; x += scroll.contentOffsetX; diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index 47ef4eef48bd..a7c1d773299f 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -102,7 +102,7 @@ namespace OpenRCT2::Ui } else { - int32_t size = widget->width() - 1; + int32_t size = widget->width() - 2; if (scroll.flags & VSCROLLBAR_VISIBLE) size -= 11; size = std::max(0, scroll.contentWidth - size); @@ -492,7 +492,7 @@ namespace OpenRCT2::Ui assert(end_tab_id < w->widgets.size()); int32_t i, x = w->widgets[start_tab_id].left; - int32_t tab_width = w->widgets[start_tab_id].width(); + int32_t tab_width = w->widgets[start_tab_id].width() - 1; for (i = start_tab_id; i <= end_tab_id; i++) { diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index 982e913e5b2a..7b48af5fc740 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -519,7 +519,7 @@ namespace OpenRCT2::Ui::Windows if (widget.type == WidgetType::scroll) { auto& listView = _info.ListViews[scrollIndex]; - auto wwidth = widget.width() + 1 - 2; + auto wwidth = widget.width() - 2; auto wheight = widget.height() + 1 - 2; if (listView.GetScrollbars() == ScrollbarType::Horizontal || listView.GetScrollbars() == ScrollbarType::Both) @@ -561,7 +561,7 @@ namespace OpenRCT2::Ui::Windows { RenderTarget widgetDpi; if (ClipDrawPixelInfo( - widgetDpi, rt, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width(), + widgetDpi, rt, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width() - 1, widget.height())) { auto ctx = onDraw.context(); @@ -654,7 +654,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, - colours[widget->colour], 0, Dropdown::Flag::StayOpen, numItems, widget->width() - 3); + colours[widget->colour], 0, Dropdown::Flag::StayOpen, numItems, widget->width() - 4); if (selectedIndex >= 0 && selectedIndex < static_cast(numItems)) gDropdown.items[selectedIndex].setChecked(true); @@ -809,7 +809,7 @@ namespace OpenRCT2::Ui::Windows { auto left = windowPos.x + viewportWidget->left + 1; auto top = windowPos.y + viewportWidget->top + 1; - auto wwidth = viewportWidget->width() - 1; + auto wwidth = viewportWidget->width() - 2; auto wheight = viewportWidget->height() - 1; if (viewport == nullptr) { diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index d12f02f96d73..7f3ce90aa532 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -211,7 +211,7 @@ namespace OpenRCT2::Scripting auto widget = GetWidget(); if (widget != nullptr) { - return widget->width() + 1; + return widget->width(); } return 0; } diff --git a/src/openrct2-ui/windows/About.cpp b/src/openrct2-ui/windows/About.cpp index dffaab089add..135660010faa 100644 --- a/src/openrct2-ui/windows/About.cpp +++ b/src/openrct2-ui/windows/About.cpp @@ -234,7 +234,7 @@ namespace OpenRCT2::Ui::Windows auto centreX = versionWidget.midX(); auto centreY = versionWidget.midY() - FontGetLineHeight(FontStyle::medium) / 2; auto centrePos = windowPos + ScreenCoordsXY(centreX, centreY); - DrawTextWrapped(rt, centrePos, versionWidget.width(), STR_STRING, ft, { colours[1], TextAlignment::centre }); + DrawTextWrapped(rt, centrePos, versionWidget.width() - 1, STR_STRING, ft, { colours[1], TextAlignment::centre }); // Shows the update available button if (OpenRCT2::GetContext()->HasNewVersionInfo()) diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index c3af9270811e..649a7e864719 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -88,7 +88,7 @@ namespace OpenRCT2::Ui::Windows const auto& viewportWidget = widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget.left + 1, viewportWidget.top + 1 }, - (viewportWidget.width()) - 1, (viewportWidget.height()) - 1, Focus(_bannerViewPos)); + viewportWidget.width() - 2, (viewportWidget.height()) - 1, Focus(_bannerViewPos)); if (viewport != nullptr) viewport->flags = Config::Get().general.alwaysShowGridlines ? VIEWPORT_FLAG_GRIDLINES : VIEWPORT_FLAG_NONE; @@ -177,7 +177,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { widget->left + windowPos.x, widget->top + windowPos.y }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, numItems, widget->width() + 3); + Dropdown::Flag::StayOpen, numItems, widget->width() - 1 + 3); gDropdown.items[EnumValue(banner->textColour) - 1].setChecked(true); break; diff --git a/src/openrct2-ui/windows/Changelog.cpp b/src/openrct2-ui/windows/Changelog.cpp index b573cb6f636f..cc61d724df36 100644 --- a/src/openrct2-ui/windows/Changelog.cpp +++ b/src/openrct2-ui/windows/Changelog.cpp @@ -142,7 +142,7 @@ namespace OpenRCT2::Ui::Windows { SetResizeDimensions(); - auto downloadButtonWidth = widgets[WIDX_OPEN_URL].width(); + auto downloadButtonWidth = widgets[WIDX_OPEN_URL].width() - 1; widgets[WIDX_OPEN_URL].left = (width - downloadButtonWidth) / 2; widgets[WIDX_OPEN_URL].right = widgets[WIDX_OPEN_URL].left + downloadButtonWidth; } diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 73d18712f3b3..8f954e9dfd62 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -995,7 +995,7 @@ static StringId window_cheats_page_titles[] = { WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, 3, dropdownWidget->width() - 3); + colours[1], 0, Dropdown::Flag::StayOpen, 3, dropdownWidget->width() - 4); gDropdown.items[EnumValue(gameState.cheats.selectedStaffSpeed)].setChecked(true); } } @@ -1017,7 +1017,7 @@ static StringId window_cheats_page_titles[] = { } WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, std::size(WeatherTypes), dropdownWidget->width() - 3); + colours[1], 0, Dropdown::Flag::StayOpen, std::size(WeatherTypes), dropdownWidget->width() - 4); auto currentWeather = gameState.weatherCurrent.weatherType; gDropdown.items[EnumValue(currentWeather)].setChecked(true); diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index ab8f25dfe5ec..e4e5e397b50a 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -92,7 +92,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, 2, widget->width() - 3); + Dropdown::Flag::StayOpen, 2, widget->width() - 4); if (CurrencyDescriptors[EnumValue(CurrencyType::custom)].affix_unicode == CurrencyAffix::prefix) { diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index a9cacc26a211..4d7f8615bd55 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -277,7 +277,7 @@ namespace OpenRCT2::Ui::Windows uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); - int16_t boxWidth = widgets[WIDX_RESEARCH_ORDER_SCROLL].width(); + int16_t boxWidth = widgets[WIDX_RESEARCH_ORDER_SCROLL].width() - 1; int32_t itemY = -kScrollableRowHeight; auto* dragItem = WindowEditorInventionsListDragGetItem(); @@ -402,7 +402,7 @@ namespace OpenRCT2::Ui::Windows { RenderTarget clipDPI; screenPos = windowPos + ScreenCoordsXY{ bkWidget.left + 1, bkWidget.top + 1 }; - const auto clipWidth = bkWidget.width() - 1; + const auto clipWidth = bkWidget.width() - 2; const auto clipHeight = bkWidget.height() - 1; if (ClipDrawPixelInfo(clipDPI, rt, screenPos, clipWidth, clipHeight)) { diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index c35b391bb7f8..0a41de0b54a1 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -783,7 +783,7 @@ namespace OpenRCT2::Ui::Windows darkness = TextDarkness::dark; } - int32_t width_limit = widgets[WIDX_LIST].width() - screenCoords.x; + int32_t width_limit = widgets[WIDX_LIST].width() - 1 - screenCoords.x; if (ridePage) { @@ -859,7 +859,7 @@ namespace OpenRCT2::Ui::Windows auto& dropdownWidget = widgets[WIDX_FILTER_DROPDOWN]; resizeDropdown(WIDX_FILTER_DROPDOWN, { width - kFilterWidth - 10, dropdownWidget.top }, { kFilterWidth, 14 }); auto& installTrackWidget = widgets[WIDX_INSTALL_TRACK]; - installTrackWidget.moveToX(dropdownWidget.left - installTrackWidget.width() - 10); + installTrackWidget.moveToX(dropdownWidget.left - installTrackWidget.width() - 11); // Set pressed widgets pressedWidgets |= 1uLL << WIDX_PREVIEW; @@ -978,7 +978,7 @@ namespace OpenRCT2::Ui::Windows bool isRideTab = GetSelectedObjectType() == ObjectType::ride; if (isRideTab) { - int32_t width_limit = (widgets[WIDX_LIST].width() - 15) / 2; + int32_t width_limit = (widgets[WIDX_LIST].width() - 16) / 2; widgets[WIDX_LIST_SORT_TYPE].type = WidgetType::tableHeader; widgets[WIDX_LIST_SORT_TYPE].top = widgets[WIDX_FILTER_TEXT_BOX].bottom + 3; @@ -1091,7 +1091,7 @@ namespace OpenRCT2::Ui::Windows : kStringIdNone; ft.Add(stringId); auto screenPos = windowPos + ScreenCoordsXY{ listSortTypeWidget.left + 1, listSortTypeWidget.top + 1 }; - DrawTextEllipsised(rt, screenPos, listSortTypeWidget.width(), STR_OBJECTS_SORT_TYPE, ft, { colours[1] }); + DrawTextEllipsised(rt, screenPos, listSortTypeWidget.width() - 1, STR_OBJECTS_SORT_TYPE, ft, { colours[1] }); } const auto& listSortRideWidget = widgets[WIDX_LIST_SORT_RIDE]; if (listSortRideWidget.type != WidgetType::empty) @@ -1101,7 +1101,7 @@ namespace OpenRCT2::Ui::Windows : kStringIdNone; ft.Add(stringId); auto screenPos = windowPos + ScreenCoordsXY{ listSortRideWidget.left + 1, listSortRideWidget.top + 1 }; - DrawTextEllipsised(rt, screenPos, listSortRideWidget.width(), STR_OBJECTS_SORT_RIDE, ft, { colours[1] }); + DrawTextEllipsised(rt, screenPos, listSortRideWidget.width() - 1, STR_OBJECTS_SORT_RIDE, ft, { colours[1] }); } if (selectedListItem == -1 || _loadedObject == nullptr) @@ -1111,7 +1111,7 @@ namespace OpenRCT2::Ui::Windows { RenderTarget clipDPI; auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 }; - int32_t previewWidth = previewWidget.width() - 1; + int32_t previewWidth = previewWidget.width() - 2; int32_t previewHeight = previewWidget.height() - 1; if (ClipDrawPixelInfo(clipDPI, rt, screenPos, previewWidth, previewHeight)) { diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 44756ff062f1..d4ef6a34a219 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -767,7 +767,7 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = &widgets[WIDX_OBJECTIVE]; WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 3); + colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 4); } void ShowCategoryDropdown() @@ -780,7 +780,7 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = &widgets[WIDX_CATEGORY]; WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, 5, dropdownWidget->width() - 3); + colours[1], 0, Dropdown::Flag::StayOpen, 5, dropdownWidget->width() - 4); gDropdown.items[EnumValue(getGameState().scenarioOptions.category)].setChecked(true); } @@ -1562,7 +1562,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() - 1, - colours[1], 0, Dropdown::Flag::StayOpen, 3, dropdownWidget->width() - 3); + colours[1], 0, Dropdown::Flag::StayOpen, 3, dropdownWidget->width() - 4); if (gameState.park.flags & PARK_FLAGS_UNLOCK_ALL_PRICES) gDropdown.items[2].setChecked(true); @@ -1900,7 +1900,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget.left, windowPos.y + dropdownWidget.top }, dropdownWidget.height() - 1, - colours[1], 0, Dropdown::Flag::StayOpen, 4, dropdownWidget.width() - 3); + colours[1], 0, Dropdown::Flag::StayOpen, 4, dropdownWidget.width() - 4); const auto preferLess = gameState.park.flags & PARK_FLAGS_PREF_LESS_INTENSE_RIDES; const auto preferMore = gameState.park.flags & PARK_FLAGS_PREF_MORE_INTENSE_RIDES; diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index f70458016751..7d0bd1dd3569 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -403,7 +403,7 @@ namespace OpenRCT2::Ui::Windows auto screenCoords = ScreenCoordsXY{ 0, kTableCellHeight + 2 }; auto& self = widgets[WIDX_SUMMARY_SCROLL]; - int32_t row_width = std::max(scrolls[0].contentWidth, self.width()); + int32_t row_width = std::max(scrolls[0].contentWidth, self.width() - 1); // Expenditure / Income row labels for (int32_t i = 0; i < static_cast(ExpenditureType::count); i++) @@ -847,7 +847,7 @@ namespace OpenRCT2::Ui::Windows void initialiseScrollPosition(WidgetIndex widgetIndex, int32_t scrollId) { const auto& widget = this->widgets[widgetIndex]; - scrolls[scrollId].contentOffsetX = std::max(0, scrolls[scrollId].contentWidth - (widget.width() - 2)); + scrolls[scrollId].contentOffsetX = std::max(0, scrolls[scrollId].contentWidth - (widget.width() - 3)); widgetScrollUpdateThumbs(*this, widgetIndex); } diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index e102ce55d107..f4cb9623c3d1 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -252,7 +252,7 @@ namespace OpenRCT2::Ui::Windows // Text auto screenCoords = windowPos + ScreenCoordsXY{ middleOutsetWidget.midX(), middleOutsetWidget.top + 11 }; - int32_t itemWidth = middleOutsetWidget.width() - 62; + int32_t itemWidth = middleOutsetWidget.width() - 63; DrawNewsTicker( rt, screenCoords, itemWidth, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, newsItem->text, newsItem->ticks); @@ -368,7 +368,7 @@ namespace OpenRCT2::Ui::Windows ScreenCoordsXY middleWidgetCoords( windowPos.x + middleOutsetWidget->midX(), windowPos.y + middleOutsetWidget->top + line_height + 1); - int32_t panelWidth = middleOutsetWidget->width() - 62; + int32_t panelWidth = middleOutsetWidget->width() - 63; // Check if there is a map tooltip to draw StringId stringId; diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 5d2bafee42c2..90af29899345 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -549,7 +549,7 @@ namespace OpenRCT2::Ui::Windows return; const auto& widget = widgets[WIDX_TAB_1]; - int32_t widgWidth = widget.width() - 1; + int32_t widgWidth = widget.width() - 2; int32_t widgHeight = widget.height() - 1; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }; if (page == WINDOW_GUEST_OVERVIEW) @@ -624,7 +624,7 @@ namespace OpenRCT2::Ui::Windows if (viewport != nullptr) { const auto& widget = widgets[WIDX_VIEWPORT]; - const auto reqViewportWidth = widget.width() - 1; + const auto reqViewportWidth = widget.width() - 2; const auto reqViewportHeight = widget.height() - 1; viewport->pos = windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }; if (viewport->width != reqViewportWidth || viewport->height != reqViewportHeight) @@ -766,7 +766,7 @@ namespace OpenRCT2::Ui::Windows { const auto& viewWidget = widgets[WIDX_VIEWPORT]; auto screenPos = ScreenCoordsXY{ viewWidget.left + 1 + windowPos.x, viewWidget.top + 1 + windowPos.y }; - int32_t widgWidth = viewWidget.width() - 1; + int32_t widgWidth = viewWidget.width() - 2; int32_t widgHeight = viewWidget.height() - 1; ViewportCreate(*this, screenPos, widgWidth, widgHeight, focus.value()); @@ -814,13 +814,13 @@ namespace OpenRCT2::Ui::Windows { auto ft = Formatter(); peep->FormatActionTo(ft); - int32_t textWidth = actionLabelWidget.width(); + int32_t textWidth = actionLabelWidget.width() - 1; DrawTextEllipsised(rt, screenPos, textWidth, STR_BLACK_STRING, ft, { TextAlignment::centre }); } // Draw the marquee thought const auto& marqueeWidget = widgets[WIDX_MARQUEE]; - auto marqWidth = marqueeWidget.width() - 3; + auto marqWidth = marqueeWidget.width() - 4; int32_t left = marqueeWidget.left + 2 + windowPos.x; int32_t top = marqueeWidget.top + windowPos.y; int32_t marqHeight = marqueeWidget.height(); @@ -849,7 +849,7 @@ namespace OpenRCT2::Ui::Windows return; } - screenPos.x = marqueeWidget.width() - _marqueePosition; + screenPos.x = marqueeWidget.width() - 1 - _marqueePosition; { auto ft = Formatter(); PeepThoughtSetFormatArgs(&peep->Thoughts[i], ft); @@ -1757,7 +1757,7 @@ namespace OpenRCT2::Ui::Windows auto& widget = widgets[WIDX_PAGE_BACKGROUND]; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left + 4, widget.top + 12 }; - int32_t itemNameWidth = widget.width() - 24; + int32_t itemNameWidth = widget.width() - 25; int32_t maxY = windowPos.y + height - 22; int32_t numItems = 0; diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 2ffd91b8945f..46879a4e35f2 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -336,7 +336,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, _numPages, widget->width() - 3); + Dropdown::Flag::StayOpen, _numPages, widget->width() - 4); for (size_t i = 0; i < _numPages; i++) { @@ -355,7 +355,7 @@ namespace OpenRCT2::Ui::Windows auto* widget = &widgets[widgetIndex - 1]; WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, 2, widget->width() - 3); + Dropdown::Flag::StayOpen, 2, widget->width() - 4); gDropdown.items[static_cast(_selectedView)].setChecked(true); break; diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index e4f0b489f705..2e977c15d956 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -772,7 +772,7 @@ namespace OpenRCT2::Ui::Windows auto cdpi = const_cast(rt); DrawTextEllipsised( - cdpi, windowPos + ScreenCoordsXY{ widget.left + 5, widget.top + 1 }, widget.width(), strId, ft, + cdpi, windowPos + ScreenCoordsXY{ widget.left + 5, widget.top + 1 }, widget.width() - 1, strId, ft, { COLOUR_GREY }); }; @@ -1082,7 +1082,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill( rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, ColourMapA[colours[1].colour].mid_light); - const int32_t listWidth = widgets[WIDX_SCROLL].width(); + const int32_t listWidth = widgets[WIDX_SCROLL].width() - 1; const auto sizeColumnLeft = widgets[WIDX_SORT_SIZE].left; const auto dateColumnLeft = widgets[WIDX_SORT_DATE].left; const int32_t dateAnchor = dateColumnLeft + maxDateWidth + kDateTimeGap; @@ -1124,7 +1124,7 @@ namespace OpenRCT2::Ui::Windows auto ft = Formatter(); ft.Add(STR_STRING); ft.Add(_listItems[i].name.c_str()); - int32_t max_file_width = widgets[WIDX_SORT_NAME].width() - 15; + int32_t max_file_width = widgets[WIDX_SORT_NAME].width() - 16; DrawTextEllipsised(rt, { 15, y }, max_file_width, stringId, ft); // Print formatted modified date, if this is a file diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index a596b810521b..880f37b405ca 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -533,7 +533,7 @@ namespace OpenRCT2::Ui::Windows // Adjust for hidden scrollbars if needed auto& mapArea = widgets[WIDX_MAP]; - if (size.width >= mapArea.width()) + if (size.width >= mapArea.width() - 1) size.width -= kScrollBarWidth; if (size.height >= mapArea.height()) size.height -= kScrollBarWidth; @@ -738,7 +738,7 @@ namespace OpenRCT2::Ui::Windows // calculate width and height of minimap auto& widget = widgets[WIDX_MAP]; - auto mapWidth = widget.width() - kScrollBarWidth - 1; + auto mapWidth = widget.width() - 1 - kScrollBarWidth - 1; auto mapHeight = widget.height() - kScrollBarWidth - 1; centreX = std::max(centreX - (mapWidth >> 1), 0); diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 19f2443e197f..0b7e19181752 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -462,7 +462,7 @@ namespace OpenRCT2::Ui::Windows Widget* ddWidget = &widgets[widgetIndex - 1]; WindowDropdownShowTextCustomWidth( { windowPos.x + ddWidget->left, windowPos.y + ddWidget->top }, ddWidget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, std::size(items), ddWidget->width() - 2); + Dropdown::Flag::StayOpen, std::size(items), ddWidget->width() - 3); gDropdown.items[EnumValue(_settings.algorithm)].setChecked(true); break; diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 9f59788ace11..3e849012b25c 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -360,7 +360,7 @@ namespace OpenRCT2::Ui::Windows auto ft = Formatter(); ft.Add(_buffer.c_str()); DrawTextEllipsised( - rt, windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 8, STR_STRING, ft, + rt, windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 9, STR_STRING, ft, { TextAlignment::centre }); } @@ -384,7 +384,7 @@ namespace OpenRCT2::Ui::Windows auto ft = Formatter(); ft.Add(_buffer.c_str()); DrawTextEllipsised( - rt, windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 8, STR_STRING, ft, + rt, windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 9, STR_STRING, ft, { TextAlignment::centre }); } } diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 8e8168df888f..8d2c6404871f 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -221,7 +221,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, colours[1], 0, Dropdown::Flag::StayOpen, numItems, - dropdownWidget->width() - 3); + dropdownWidget->width() - 4); } } else @@ -242,7 +242,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, colours[1], 0, Dropdown::Flag::StayOpen, numItems, - dropdownWidget->width() - 3); + dropdownWidget->width() - 4); } break; // In RCT2, the maximum was 6 weeks diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index d02246cc27a0..79a8580115b4 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -447,7 +447,7 @@ namespace OpenRCT2::Ui::Windows count++; listItem++; } - return { widgets[WIDX_RIDE_LIST].width(), ((count + 4) / 5) * 116 }; + return { widgets[WIDX_RIDE_LIST].width() - 1, ((count + 4) / 5) * 116 }; } void onScrollMouseOver(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index aa9d04ec0fcd..dd6372b2948d 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -516,7 +516,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill( rt, { rtCoords, rtCoords + ScreenCoordsXY{ rt.width - 1, rt.height - 1 } }, ColourMapA[colours[1].colour].mid_light); - const int32_t listWidth = widgets[WIDX_SCROLL].width(); + const int32_t listWidth = widgets[WIDX_SCROLL].width() - 1; for (int32_t i = 0; i < numListItems; i++) { diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 6cd999da2dc3..607a5b0c9932 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1803,7 +1803,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, numItems, widget->width() - 3); + Dropdown::Flag::StayOpen, numItems, widget->width() - 4); gDropdown.items[static_cast(ThemeManagerGetAvailableThemeIndex())].setChecked(true); invalidateWidget(WIDX_THEMES_DROPDOWN); @@ -1934,7 +1934,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, numItems, widget->width() - 3); + Dropdown::Flag::StayOpen, numItems, widget->width() - 4); gDropdown.items[Config::Get().interface.scenarioPreviewScreenshots].setChecked(true); break; @@ -2245,7 +2245,7 @@ namespace OpenRCT2::Ui::Windows int32_t padding = widgetHeight > lineHeight ? (widgetHeight - lineHeight) / 2 : 0; auto screenCoords = windowPos + ScreenCoordsXY{ pathWidget.left + 1, pathWidget.top + padding }; - DrawTextEllipsised(rt, screenCoords, pathWidget.width(), STR_BLACK_STRING, ft); + DrawTextEllipsised(rt, screenCoords, pathWidget.width() - 1, STR_BLACK_STRING, ft); } OpenRCT2String AdvancedTooltip(WidgetIndex widgetIndex, StringId fallback) @@ -2297,7 +2297,7 @@ namespace OpenRCT2::Ui::Windows // helper function, all dropdown boxes have similar properties WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, num_items, widget->width() - 3); + Dropdown::Flag::StayOpen, num_items, widget->width() - 4); } void DrawTabImages(RenderTarget& rt) @@ -2352,7 +2352,7 @@ namespace OpenRCT2::Ui::Windows uint8_t GetScrollPercentage(const Widget& widget, const ScrollArea& scroll) { - uint8_t w = widget.width() - 1; + uint8_t w = widget.width() - 2; return static_cast(scroll.contentOffsetX) / (scroll.contentWidth - w) * 100; } @@ -2361,7 +2361,7 @@ namespace OpenRCT2::Ui::Windows const auto& widget = widgets[widgetIndex]; auto& scroll = scrolls[scrollId]; - int32_t widgetSize = scroll.contentWidth - (widget.width() - 1); + int32_t widgetSize = scroll.contentWidth - (widget.width() - 2); scroll.contentOffsetX = ceil(volume / 100.0f * widgetSize); widgetScrollUpdateThumbs(*this, widgetIndex); diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 8812c1be1a5e..eecb8c5e3832 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -604,8 +604,8 @@ namespace OpenRCT2::Ui::Windows auto* labelWidget = &widgets[WIDX_STATUS]; DrawTextEllipsised( - rt, windowPos + ScreenCoordsXY{ labelWidget->midX(), labelWidget->top }, labelWidget->width(), STR_BLACK_STRING, - ft, { TextAlignment::centre }); + rt, windowPos + ScreenCoordsXY{ labelWidget->midX(), labelWidget->top }, labelWidget->width() - 1, + STR_BLACK_STRING, ft, { TextAlignment::centre }); } void initViewport() @@ -646,7 +646,7 @@ namespace OpenRCT2::Ui::Windows Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, - viewportWidget->width() - 1, viewportWidget->height() - 1, focus.value()); + viewportWidget->width() - 2, viewportWidget->height() - 1, focus.value()); flags |= WindowFlag::noScrolling; invalidate(); } diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 62c0c2f12c8d..f450d6e0da7a 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -390,7 +390,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_VIEWPORT].right = width - 26; widgets[WIDX_VIEWPORT].bottom = height - 14; - int32_t groupDropdownWidth = widgets[WIDX_GROUP].width(); + int32_t groupDropdownWidth = widgets[WIDX_GROUP].width() - 1; widgets[WIDX_GROUP].left = (width - groupDropdownWidth) / 2; widgets[WIDX_GROUP].right = widgets[WIDX_GROUP].left + groupDropdownWidth; widgets[WIDX_GROUP_DROPDOWN].left = widgets[WIDX_GROUP].right - 10; @@ -403,7 +403,7 @@ namespace OpenRCT2::Ui::Windows Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; viewport->pos = windowPos + ScreenCoordsXY{ viewportWidget->left, viewportWidget->top }; - viewport->width = viewportWidget->width(); + viewport->width = viewportWidget->width() - 1; viewport->height = viewportWidget->height(); } @@ -439,7 +439,7 @@ namespace OpenRCT2::Ui::Windows ft.Add(_buffer.c_str()); DrawTextEllipsised( - rt, windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 8, STR_STRING, ft, + rt, windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 9, STR_STRING, ft, { TextAlignment::centre }); } diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index 4fd933ffe609..8f7a8e860569 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -483,7 +483,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( { w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - w->colours[1], 0, Dropdown::Flag::StayOpen, 4, dropdownWidget->width() - 3); + w->colours[1], 0, Dropdown::Flag::StayOpen, 4, dropdownWidget->width() - 4); int32_t currentResearchLevel = gameState.researchFundingLevel; gDropdown.items[currentResearchLevel].setChecked(true); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index aae03f372533..672ed59087fe 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1582,7 +1582,7 @@ namespace OpenRCT2::Ui::Windows const auto& viewWidget = widgets[WIDX_VIEWPORT]; auto screenPos = windowPos + ScreenCoordsXY{ viewWidget.left + 1, viewWidget.top + 1 }; - int32_t viewWidth = viewWidget.width() - 1; + int32_t viewWidth = viewWidget.width() - 2; int32_t viewHeight = viewWidget.height() - 1; ViewportCreate(*this, screenPos, viewWidth, viewHeight, focus.value()); @@ -2086,7 +2086,7 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = widget - 1; WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width()); + colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 1); // Find the current vehicle type in the ordered list. int32_t pos = 0; @@ -2616,8 +2616,8 @@ namespace OpenRCT2::Ui::Windows widget = &widgets[WIDX_STATUS]; StringId rideStatus = GetStatus(ft); DrawTextEllipsised( - rt, windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top }, widget->width(), rideStatus, - ft, { TextAlignment::centre }); + rt, windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top }, widget->width() - 1, + rideStatus, ft, { TextAlignment::centre }); } #pragma endregion @@ -2957,7 +2957,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill(rt, { { rt.x, rt.y }, { rt.x + rt.width, rt.y + rt.height } }, PaletteIndex::pi12); Widget* widget = &widgets[WIDX_VEHICLE_TRAINS_PREVIEW]; - int32_t startX = std::max(2, (widget->width() - ((ride->numTrains - 1) * 36)) / 2 - 25); + int32_t startX = std::max(2, (widget->width() - 1 - ((ride->numTrains - 1) * 36)) / 2 - 25); int32_t startY = widget->height() - 4; bool isReversed = ride->hasLifecycleFlag(RIDE_LIFECYCLE_REVERSED_TRAINS); @@ -4890,7 +4890,7 @@ namespace OpenRCT2::Ui::Windows if (ClipDrawPixelInfo( clippedDpi, rt, windowPos + ScreenCoordsXY{ entrancePreviewWidget.left + 1, entrancePreviewWidget.top + 1 }, - entrancePreviewWidget.width(), entrancePreviewWidget.height())) + entrancePreviewWidget.width() - 1, entrancePreviewWidget.height())) { GfxClear(clippedDpi, PaletteIndex::pi12); @@ -5137,7 +5137,7 @@ namespace OpenRCT2::Ui::Windows // Figure out minimum size ScreenSize size{}; size.height = widgets[WIDX_MUSIC_DATA].height() - 2; - size.width = widgets[WIDX_MUSIC_DATA].width() - 2; + size.width = widgets[WIDX_MUSIC_DATA].width() - 3; auto ride = GetRide(rideId); if (ride == nullptr) @@ -5251,7 +5251,7 @@ namespace OpenRCT2::Ui::Windows // Figure out where the image should go const auto& previewWidget = widgets[WIDX_MUSIC_IMAGE]; - int32_t clipWidth = previewWidget.width() - 1; + int32_t clipWidth = previewWidget.width() - 2; int32_t clipHeight = previewWidget.height() - 1; // Draw the preview image @@ -5614,7 +5614,7 @@ namespace OpenRCT2::Ui::Windows { Widget* widget = &widgets[WIDX_PAGE_BACKGROUND]; - ScreenCoordsXY widgetCoords(windowPos.x + widget->width() / 2, windowPos.y + widget->top + 40); + ScreenCoordsXY widgetCoords(windowPos.x + widget->midX(), windowPos.y + widget->top + 40); DrawTextWrapped( rt, widgetCoords, width - 8, STR_CLICK_ITEMS_OF_SCENERY_TO_SELECT, {}, { TextAlignment::centre }); @@ -5937,11 +5937,11 @@ namespace OpenRCT2::Ui::Windows { RideMeasurement* measurement{}; std::tie(measurement, std::ignore) = ride->getMeasurement(); - x = measurement == nullptr ? 0 : measurement->current_item - ((widget->width() / 4) * 3); + x = measurement == nullptr ? 0 : measurement->current_item - (((widget->width() - 1) / 4) * 3); } } - scrolls[0].contentOffsetX = std::clamp(x, 0, scrolls[0].contentWidth - (widget->width() - 2)); + scrolls[0].contentOffsetX = std::clamp(x, 0, scrolls[0].contentWidth - (widget->width() - 3)); widgetScrollUpdateThumbs(*this, WIDX_GRAPH); } @@ -5951,7 +5951,7 @@ namespace OpenRCT2::Ui::Windows ScreenSize size{}; // Set minimum size - size.width = widgets[WIDX_GRAPH].width() - 2; + size.width = widgets[WIDX_GRAPH].width() - 3; // Get measurement size auto ride = GetRide(rideId); @@ -6072,7 +6072,7 @@ namespace OpenRCT2::Ui::Windows { // No measurement message ScreenCoordsXY stringCoords(widget->width() / 2, widget->height() / 2 - 5); - int32_t txtWidth = widget->width() - 2; + int32_t txtWidth = widget->width() - 3; DrawTextWrapped(rt, stringCoords, txtWidth, message.str, message.args, { TextAlignment::centre }); return; } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 7fde5bdf83f1..99bf94f422d2 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1705,7 +1705,7 @@ namespace OpenRCT2::Ui::Windows // Draw track piece auto screenCoords = ScreenCoordsXY{ windowPos.x + widget->left + 1, windowPos.y + widget->top + 1 }; - widgetWidth = widget->width() - 1; + widgetWidth = widget->width() - 2; widgetHeight = widget->height() - 1; if (ClipDrawPixelInfo(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) { @@ -2626,7 +2626,7 @@ namespace OpenRCT2::Ui::Windows } // Tune dropdown to the elements it contains - auto ddWidth = widget->width(); + auto ddWidth = widget->width() - 1; auto targetColumnSize = _specialElementDropdownState.PreferredNumRows; if (targetColumnSize < _specialElementDropdownState.Elements.size()) ddWidth -= 30; diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index 8f1e4655f3ec..bd574be37c61 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -343,7 +343,7 @@ namespace OpenRCT2::Ui::Windows const auto& headerWidget = widgets[WIDX_HEADER_OTHER]; const auto& customWidget = widgets[WIDX_HEADER_CUSTOMISE]; - auto totalWidth = headerWidget.width() + customWidget.width(); + auto totalWidth = headerWidget.width() - 1 + customWidget.width() - 1; WindowDropdownShowTextCustomWidth( { windowPos.x + headerWidget.left, windowPos.y + headerWidget.top }, headerWidget.height(), colours[1], 0, @@ -526,7 +526,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_HEADER_CUSTOMISE].right = widgets[WIDX_LIST].right - 1; widgets[WIDX_HEADER_CUSTOMISE].left = widgets[WIDX_HEADER_CUSTOMISE].right - 14; - auto columnWidth = (widgets[WIDX_LIST].width() - widgets[WIDX_HEADER_CUSTOMISE].width()) / 2; + auto columnWidth = (widgets[WIDX_LIST].width() - 1 - widgets[WIDX_HEADER_CUSTOMISE].width() - 1) / 2; widgets[WIDX_HEADER_OTHER].right = widgets[WIDX_HEADER_CUSTOMISE].left - 1; widgets[WIDX_HEADER_OTHER].left = widgets[WIDX_HEADER_OTHER].right - columnWidth + 1; @@ -603,7 +603,7 @@ namespace OpenRCT2::Ui::Windows auto cdpi = const_cast(rt); DrawTextEllipsised( - cdpi, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, widget.width(), + cdpi, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, widget.width() - 1, STR_RIDE_LIST_HEADER_FORMAT, ft, { colours[1] }); }; @@ -659,7 +659,7 @@ namespace OpenRCT2::Ui::Windows ridePtr->formatNameTo(ft); auto& nameHeader = widgets[WIDX_HEADER_NAME]; - DrawTextEllipsised(rt, { 0, y - 1 }, nameHeader.width() - 2, format, ft); + DrawTextEllipsised(rt, { 0, y - 1 }, nameHeader.width() - 3, format, ft); // Ride information ft = Formatter(); @@ -866,7 +866,7 @@ namespace OpenRCT2::Ui::Windows } auto infoHeader = widgets[WIDX_HEADER_OTHER]; - DrawTextEllipsised(rt, { infoHeader.left - 4, y - 1 }, infoHeader.width() - 2, format, ft); + DrawTextEllipsised(rt, { infoHeader.left - 4, y - 1 }, infoHeader.width() - 3, format, ft); y += kScrollableRowHeight; } } diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 23e636285565..750463c69f31 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -554,7 +554,7 @@ namespace OpenRCT2::Ui::Windows } const auto& listWidget = widgets[WIDX_SCENARIOLIST]; - int32_t listWidth = listWidget.width() - 12; + int32_t listWidth = listWidget.width() - 13; const int32_t scenarioItemHeight = GetScenarioListItemSize(); @@ -611,7 +611,7 @@ namespace OpenRCT2::Ui::Windows if (isCompleted) { // Draw completion tick - GfxDrawSprite(rt, ImageId(SPR_MENU_CHECKMARK), { widgets[WIDX_SCENARIOLIST].width() - 45, y + 1 }); + GfxDrawSprite(rt, ImageId(SPR_MENU_CHECKMARK), { widgets[WIDX_SCENARIOLIST].width() - 46, y + 1 }); // Draw completion score u8string completedByName = "???"; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 378c591eaf8a..5e928b5f46a4 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1058,7 +1058,7 @@ namespace OpenRCT2::Ui::Windows int32_t GetNumColumns() const { const auto& listWidget = widgets[WIDX_SCENERY_LIST]; - const auto contentWidth = listWidget.width() - kScrollBarWidth; + const auto contentWidth = listWidget.width() - 1 - kScrollBarWidth; return contentWidth / kSceneryButtonWidth; } diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 1960cd1b1f48..efcbc0cee114 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -248,7 +248,7 @@ namespace OpenRCT2::Ui::Windows } else { - const int32_t iconX = listWidget.width() - kScrollBarWidth - 7 - 10; + const int32_t iconX = listWidget.width() - 1 - kScrollBarWidth - 7 - 10; showNetworkVersionTooltip = screenCoords.x > iconX; } @@ -332,7 +332,7 @@ namespace OpenRCT2::Ui::Windows GfxClear(rt, paletteIndex); auto& listWidget = widgets[WIDX_LIST]; - int32_t listWidgetWidth = listWidget.width(); + int32_t listWidgetWidth = listWidget.width() - 1; ScreenCoordsXY screenCoords; screenCoords.y = 0; diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index b028aca96110..f0f906318d51 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -135,7 +135,7 @@ namespace OpenRCT2::Ui::Windows Widget& viewportWidget = widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget.left + 1, viewportWidget.top + 1 }, - viewportWidget.width() - 1, viewportWidget.height() - 1, Focus(CoordsXYZ{ signViewPosition, viewZ })); + viewportWidget.width() - 2, viewportWidget.height() - 1, Focus(CoordsXYZ{ signViewPosition, viewZ })); viewport->flags = Config::Get().general.alwaysShowGridlines ? VIEWPORT_FLAG_GRIDLINES : VIEWPORT_FLAG_NONE; invalidate(); @@ -318,7 +318,7 @@ namespace OpenRCT2::Ui::Windows Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, - viewportWidget->width() - 1, viewportWidget->height() - 1, Focus(CoordsXYZ{ signViewPos })); + viewportWidget->width() - 2, viewportWidget->height() - 1, Focus(CoordsXYZ{ signViewPos })); if (viewport != nullptr) viewport->flags = Config::Get().general.alwaysShowGridlines ? VIEWPORT_FLAG_GRIDLINES : VIEWPORT_FLAG_NONE; invalidate(); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index acaf6470fda3..d62cfd78f6dd 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -563,7 +563,7 @@ namespace OpenRCT2::Ui::Windows staff->FormatActionTo(ft); const auto& widget = widgets[WIDX_BTM_LABEL]; auto screenPos = windowPos + ScreenCoordsXY{ widget.midX(), widget.top }; - int32_t widgetWidth = widget.width(); + int32_t widgetWidth = widget.width() - 1; DrawTextEllipsised(rt, screenPos, widgetWidth, STR_BLACK_STRING, ft, { TextAlignment::centre }); } @@ -573,7 +573,7 @@ namespace OpenRCT2::Ui::Windows return; const auto& widget = widgets[WIDX_TAB_1]; - int32_t widgetWidth = widget.width() - 1; + int32_t widgetWidth = widget.width() - 2; int32_t widgetHeight = widget.height() - 1; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }; if (page == WINDOW_STAFF_OVERVIEW) @@ -615,7 +615,7 @@ namespace OpenRCT2::Ui::Windows if (viewport != nullptr) { const Widget& viewportWidget = widgets[WIDX_VIEWPORT]; - const auto reqViewportWidth = viewportWidget.width() - 1; + const auto reqViewportWidth = viewportWidget.width() - 2; const auto reqViewportHeight = viewportWidget.height() - 1; viewport->pos = windowPos + ScreenCoordsXY{ viewportWidget.left + 1, viewportWidget.top + 1 }; @@ -803,7 +803,7 @@ namespace OpenRCT2::Ui::Windows auto ddPos = ScreenCoordsXY{ ddWidget->left + windowPos.x, ddWidget->top + windowPos.y }; int32_t ddHeight = ddWidget->height() + 1; - int32_t ddWidth = ddWidget->width() - 3; + int32_t ddWidth = ddWidget->width() - 4; WindowDropdownShowTextCustomWidth(ddPos, ddHeight, colours[1], 0, Dropdown::Flag::StayOpen, numCostumes, ddWidth); // Set selection @@ -1158,7 +1158,7 @@ namespace OpenRCT2::Ui::Windows const auto& viewWidget = widgets[WIDX_VIEWPORT]; auto screenPos = ScreenCoordsXY{ viewWidget.left + 1 + windowPos.x, viewWidget.top + 1 + windowPos.y }; - int32_t viewportWidth = viewWidget.width() - 1; + int32_t viewportWidth = viewWidget.width() - 2; int32_t viewportHeight = viewWidget.height() - 1; ViewportCreate(*this, screenPos, viewportWidth, viewportHeight, focus.value()); diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index 95d1a49008d2..ae05ddd7c25d 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -322,7 +322,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - auto scrollWidth = widgets[WIDX_STAFF_LIST_LIST].width() - 15; + auto scrollWidth = widgets[WIDX_STAFF_LIST_LIST].width() - 16; return { scrollWidth, scrollHeight }; } @@ -375,7 +375,7 @@ namespace OpenRCT2::Ui::Windows ColourMapA[colours[1].colour].mid_light); // How much space do we have for the name and action columns? (Discount scroll area and icons.) - const int32_t nonIconSpace = widgets[WIDX_STAFF_LIST_LIST].width() - 15 - 68; + const int32_t nonIconSpace = widgets[WIDX_STAFF_LIST_LIST].width() - 1 - 15 - 68; const int32_t nameColumnSize = nonIconSpace * 0.42; const int32_t actionColumnSize = nonIconSpace * 0.58; const int32_t actionOffset = widgets[WIDX_STAFF_LIST_LIST].right - actionColumnSize - 15; diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index d706193b6e1c..42ab14757eb8 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -454,7 +454,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, num_items, widget->width() - 3); + Dropdown::Flag::StayOpen, num_items, widget->width() - 4); gDropdown.items[static_cast(ThemeManagerGetAvailableThemeIndex())].setChecked(true); break; diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 0e46a2e415cd..51a12de56c3a 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -905,7 +905,7 @@ static uint64_t PageDisabledWidgets[] = { gDropdown.items[2] = Dropdown::MenuLabel(STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT); WindowDropdownShowTextCustomWidth( { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, - Dropdown::Flag::StayOpen, 3, widget->width() - 3); + Dropdown::Flag::StayOpen, 3, widget->width() - 4); // Set current value as checked gDropdown.items[tileElement->AsWall()->GetSlope()].setChecked(true); @@ -1586,7 +1586,7 @@ static uint64_t PageDisabledWidgets[] = { void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override { - const int32_t listWidth = widgets[WIDX_LIST].width(); + const int32_t listWidth = widgets[WIDX_LIST].width() - 1; Rectangle::fill( rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, ColourMapA[colours[1].colour].mid_light); diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index e05276f6c71a..09b5ab78ed0b 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -1298,7 +1298,7 @@ namespace OpenRCT2::Ui::Windows if (firstItem && widgetIndex == WIDX_SEPARATOR) continue; - totalWidth += widget->width() + 1; + totalWidth += widget->width(); firstItem = false; } return totalWidth; @@ -1318,7 +1318,7 @@ namespace OpenRCT2::Ui::Windows if (firstItem && widgetIndex == WIDX_SEPARATOR) continue; - auto widgetWidth = widget->width(); + auto widgetWidth = widget->width() - 1; widget->left = xPos; xPos += widgetWidth; widget->right = xPos; diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 9c536ef8f9cf..f6f0b320eef2 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -181,7 +181,7 @@ namespace OpenRCT2::Ui::Windows { const auto& widget = widgets[WIDX_CLIP_HEIGHT_SLIDER]; const ScrollArea* const scroll = &this->scrolls[0]; - const int16_t scroll_width = widget.width() - 1; + const int16_t scroll_width = widget.width() - 2; const uint8_t clip_height = static_cast( (static_cast(scroll->contentOffsetX) / (scroll->contentWidth - scroll_width)) * 255); if (clip_height != gClipHeight) @@ -402,7 +402,7 @@ namespace OpenRCT2::Ui::Windows const auto& widget = widgets[WIDX_CLIP_HEIGHT_SLIDER]; const float clip_height_ratio = static_cast(gClipHeight) / 255; this->scrolls[0].contentOffsetX = static_cast( - std::ceil(clip_height_ratio * (this->scrolls[0].contentWidth - (widget.width() - 1)))); + std::ceil(clip_height_ratio * (this->scrolls[0].contentWidth - (widget.width() - 2)))); } bool IsActive() diff --git a/src/openrct2-ui/windows/Viewport.cpp b/src/openrct2-ui/windows/Viewport.cpp index 8dee649d2707..619b41656076 100644 --- a/src/openrct2-ui/windows/Viewport.cpp +++ b/src/openrct2-ui/windows/Viewport.cpp @@ -199,7 +199,7 @@ namespace OpenRCT2::Ui::Windows { Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; viewport->pos = windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }; - viewport->width = widgets[WIDX_VIEWPORT].width() - 1; + viewport->width = widgets[WIDX_VIEWPORT].width() - 2; viewport->height = widgets[WIDX_VIEWPORT].height() - 1; } } diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index a95da188fe75..f8fb57cab778 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -102,7 +102,7 @@ namespace OpenRCT2 int16_t width() const { - return right - left; + return right - left + 1; } int16_t height() const @@ -112,7 +112,7 @@ namespace OpenRCT2 int16_t midX() const { - return (left + right) / 2; + return left + (width() / 2); } int16_t midY() const From ed25fbcb3aa4e771e2579864353b03beb46f1672 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sun, 9 Nov 2025 00:20:34 +0000 Subject: [PATCH 007/222] Fix track design mini preview enlarged UI position --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/TrackDesignPlace.cpp | 32 +++++++++++--------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index a8c39e1d83ff..98846aeb1825 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -7,6 +7,7 @@ - Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. - Fix: [#25467] Paths are not connected together correctly in track design previews. - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. +- Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. 0.4.28 (2025-11-01) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index b8f1db2c44a0..0994be4ee700 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -45,9 +45,7 @@ namespace OpenRCT2::Ui::Windows { static constexpr StringId kWindowTitle = STR_STRING; static constexpr ScreenSize kWindowSize = { 200, 124 }; - constexpr int16_t kTrackMiniPreviewWidth = 168; - constexpr int16_t kTrackMiniPreviewHeight = 78; - constexpr uint16_t kTrackMiniPreviewSize = kTrackMiniPreviewWidth * kTrackMiniPreviewHeight; + static constexpr ScreenSize kTrackMiniPreviewSize = { 168, 78 }; static constexpr uint8_t kPaletteIndexColourEntrance = PaletteIndex::pi20; // White static constexpr uint8_t kPaletteIndexColourExit = PaletteIndex::pi10; // Black @@ -62,7 +60,8 @@ namespace OpenRCT2::Ui::Windows WIDX_ROTATE, WIDX_MIRROR, WIDX_SELECT_DIFFERENT_DESIGN, - WIDX_PRICE + WIDX_PRICE, + WIDX_PREVIEW, }; VALIDATE_GLOBAL_WIDX(WC_TRACK_DESIGN_PLACE, WIDX_ROTATE); @@ -70,10 +69,11 @@ namespace OpenRCT2::Ui::Windows // clang-format off static constexpr auto _trackPlaceWidgets = makeWidgets( makeWindowShim(kWindowTitle, kWindowSize), - makeWidget({173, 83}, { 24, 24}, WidgetType::flatBtn, WindowColour::primary, ImageId(SPR_ROTATE_ARROW), STR_ROTATE_90_TIP ), - makeWidget({173, 59}, { 24, 24}, WidgetType::flatBtn, WindowColour::primary, ImageId(SPR_MIRROR_ARROW), STR_MIRROR_IMAGE_TIP ), - makeWidget({ 4, 109}, {192, 12}, WidgetType::button, WindowColour::primary, STR_SELECT_A_DIFFERENT_DESIGN, STR_GO_BACK_TO_DESIGN_SELECTION_WINDOW_TIP), - makeWidget({ 0, 0}, { 1, 1}, WidgetType::empty, WindowColour::primary) + makeWidget({173, 83}, { 24, 24}, WidgetType::flatBtn, WindowColour::primary, ImageId(SPR_ROTATE_ARROW), STR_ROTATE_90_TIP ), + makeWidget({173, 59}, { 24, 24}, WidgetType::flatBtn, WindowColour::primary, ImageId(SPR_MIRROR_ARROW), STR_MIRROR_IMAGE_TIP ), + makeWidget({ 4, 109}, {192, 12}, WidgetType::button, WindowColour::primary, STR_SELECT_A_DIFFERENT_DESIGN, STR_GO_BACK_TO_DESIGN_SELECTION_WINDOW_TIP), + makeWidget({ 88, 93}, { 1, 1}, WidgetType::empty, WindowColour::primary), + makeWidget({ 4, 17}, kTrackMiniPreviewSize, WidgetType::empty, WindowColour::primary) ); // clang-format on @@ -111,7 +111,7 @@ namespace OpenRCT2::Ui::Windows gInputFlags.set(InputFlag::unk6); WindowPushOthersRight(*this); ShowGridlines(); - _miniPreview.resize(kTrackMiniPreviewSize); + _miniPreview.resize(kTrackMiniPreviewSize.width * kTrackMiniPreviewSize.height); _placementCost = kMoney64Undefined; _placementLoc.SetNull(); _currentTrackPieceDirection = (2 - GetCurrentRotation()) & 3; @@ -360,12 +360,14 @@ namespace OpenRCT2::Ui::Windows // Draw mini tile preview RenderTarget clippedRT; - if (ClipDrawPixelInfo(clippedRT, rt, this->windowPos + ScreenCoordsXY{ 4, 18 }, 168, 78)) + const auto& previewWidget = widgets[WIDX_PREVIEW]; + const auto previewCoords = windowPos + ScreenCoordsXY{ previewWidget.left, previewWidget.top }; + if (ClipDrawPixelInfo(clippedRT, rt, previewCoords, previewWidget.width(), previewWidget.height())) { G1Element g1temp = {}; g1temp.offset = _miniPreview.data(); - g1temp.width = kTrackMiniPreviewWidth; - g1temp.height = kTrackMiniPreviewHeight; + g1temp.width = kTrackMiniPreviewSize.width; + g1temp.height = kTrackMiniPreviewSize.height; GfxSetG1Element(SPR_TEMP, &g1temp); DrawingEngineInvalidateImage(SPR_TEMP); GfxDrawSprite(clippedRT, ImageId(SPR_TEMP, this->colours[0].colour), { 0, 0 }); @@ -376,7 +378,9 @@ namespace OpenRCT2::Ui::Windows { ft = Formatter(); ft.Add(_placementCost); - DrawTextBasic(rt, this->windowPos + ScreenCoordsXY{ 88, 94 }, STR_COST_LABEL, ft, { TextAlignment::centre }); + const auto& priceWidget = widgets[WIDX_PRICE]; + const auto priceCoords = windowPos + ScreenCoordsXY{ priceWidget.left, priceWidget.top }; + DrawTextBasic(rt, priceCoords, STR_COST_LABEL, ft, { TextAlignment::centre }); } } @@ -735,7 +739,7 @@ namespace OpenRCT2::Ui::Windows uint8_t* DrawMiniPreviewGetPixelPtr(const ScreenCoordsXY& pixel) { - return &_miniPreview[pixel.y * kTrackMiniPreviewWidth + pixel.x]; + return &_miniPreview[pixel.y * kTrackMiniPreviewSize.width + pixel.x]; } GameActions::Result FindValidTrackDesignPlaceHeight(CoordsXYZ& loc, uint32_t newFlags) From c20d9add1c6490310f3f97338bcc515c5be27304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 9 Nov 2025 01:25:02 +0100 Subject: [PATCH 008/222] Capture track location for callback by value (#25455) Previously it was getting captured by reference and the action using it was queued up for execution in next tick, resulting in reference going out of scope. Capturing it by value fixes this issue as it is POD struct. --- src/openrct2-ui/windows/TrackDesignPlace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 0994be4ee700..cc08d5509958 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -299,7 +299,7 @@ namespace OpenRCT2::Ui::Windows auto tdAction = GameActions::TrackDesignAction( { trackLoc, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle); - tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) { + tdAction.SetCallback([&, trackLoc](const GameActions::GameAction*, const GameActions::Result* result) { if (result->Error != GameActions::Status::Ok) { Audio::Play3D(Audio::SoundId::error, result->Position); From 1f04405778faaccc00be606ba597104c8e630994 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Sun, 9 Nov 2025 04:02:48 +0000 Subject: [PATCH 009/222] Merge Localisation/master into OpenRCT2/develop --- data/language/ca-ES.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/language/ca-ES.txt b/data/language/ca-ES.txt index 945bf385f3a6..aaf3de8e1682 100644 --- a/data/language/ca-ES.txt +++ b/data/language/ca-ES.txt @@ -567,7 +567,7 @@ STR_1169 :(Cap) STR_1170 :{STRING} STR_1171 :{RED}Tancada STR_1172 :{YELLOW}{STRINGID} -STR_1173 :Construir camins i cues +STR_1173 :Construeix camins i cues STR_1174 :Hi ha un cartell pel mig. STR_1175 :Això no es pot construir a sobre d’un pendent. STR_1176 :Aquest camí aquí no es pot construir… @@ -3845,3 +3845,6 @@ STR_7001 :Nom de l’atracció STR_7002 :{STRINGID} {STRINGID} STR_7003 :El fitxer d’àudio «{STRING}» està truncat. Mostra esperada de {INT32}, però només n’hi ha {INT32}. Considereu reinstal·lar el RCT2. STR_7004 :Força que es torni a dibuixar +STR_7005 :Dibuixa una àrea de camí +STR_7006 :Dibuixa una vora al voltant de les imatges dels botons +STR_7007 :Tipus d’atracció From 4b8c562f06a96990f7bfbeb1c3ce04e8514095e4 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 9 Nov 2025 13:17:06 +0100 Subject: [PATCH 010/222] Update objects to v1.7.4 --- CMakeLists.txt | 4 ++-- distribution/changelog.txt | 6 ++++++ openrct2.deps.targets | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c9bb21cdd46d..d9b3c6e87bcf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,9 +70,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.26") set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip") set(TITLE_SEQUENCE_SHA256 "dabb9787b1576342fca4dd9f64b3f8cfa04a7e6ce9c2bb9610f47b762905c858") -set(OBJECTS_VERSION "1.7.3") +set(OBJECTS_VERSION "1.7.4") set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip") -set(OBJECTS_SHA256 "c81029264578706ed1db88665e12a70a583e71dc4d3eb4db262535d2f0589eab") +set(OBJECTS_SHA256 "9fa6365450cd7fe4e71d5278d67a10e6526fcd0bb1ec60120dfc66a189ac8911") set(OPENSFX_VERSION "1.0.6") set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip") diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 98846aeb1825..132e9c870343 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -8,6 +8,12 @@ - Fix: [#25467] Paths are not connected together correctly in track design previews. - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. - Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. +- Fix: [objects#401] Round tunnels on down slopes glitch. +- Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. +- Fix: [objects#408] Australian fountain sets have confusing naming. +- Fix: [objects#409] LIM Launched Coaster trains incorrectly have a 10% intensity modifier set (original bug). +- Fix: [objects#410] Large scenery from the Wacky Worlds Africa theming have incorrect previews when using specific versions of the RCT2 base game. +- Fix: [objects#415] Penguin bobsleigh trains show incorrect sprites on the 12° down slope (original bug). 0.4.28 (2025-11-01) ------------------------------------------------------------------------ diff --git a/openrct2.deps.targets b/openrct2.deps.targets index 2d43e50394c0..3c015f2d035b 100644 --- a/openrct2.deps.targets +++ b/openrct2.deps.targets @@ -218,8 +218,8 @@ 490263b873dd02c13a043a04d26bb9837d2d378dacd8b2c8d29660fef44db3db https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.26/title-sequences.zip dabb9787b1576342fca4dd9f64b3f8cfa04a7e6ce9c2bb9610f47b762905c858 - https://github.com/OpenRCT2/objects/releases/download/v1.7.3/objects.zip - c81029264578706ed1db88665e12a70a583e71dc4d3eb4db262535d2f0589eab + https://github.com/OpenRCT2/objects/releases/download/v1.7.4/objects.zip + 9fa6365450cd7fe4e71d5278d67a10e6526fcd0bb1ec60120dfc66a189ac8911 https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.6/opensound.zip 06b90f3e19c216752df441d551b26a9e3e1ba7755bdd2102504b73bf993608be https://github.com/OpenRCT2/OpenMusic/releases/download/v1.6.1/openmusic.zip From 0451c8775b04682fa77891b295c88d809e633382 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 9 Nov 2025 13:28:34 +0100 Subject: [PATCH 011/222] Update expected ride ratings in test data for LIM Launched changes --- test/tests/testdata/ratings/BigMapTest.sv6.txt | 2 +- test/tests/testdata/ratings/EverythingPark.park.txt | 12 ++++++------ test/tests/testdata/ratings/bpb.sv6.txt | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/tests/testdata/ratings/BigMapTest.sv6.txt b/test/tests/testdata/ratings/BigMapTest.sv6.txt index f3f684f653c7..e11501c474d0 100644 --- a/test/tests/testdata/ratings/BigMapTest.sv6.txt +++ b/test/tests/testdata/ratings/BigMapTest.sv6.txt @@ -34,7 +34,7 @@ mine_train_rc: (642, 708, 468) looping_rc: (606, 564, 264) stand_up_rc: (536, 943, 644) corkscrew_rc: (613, 830, 365) -lim_launched_rc: (632, 937, 529) +lim_launched_rc: (632, 870, 529) twister_rc: (784, 645, 372) hyper_twister: (737, 620, 344) giga_rc: (851, 545, 305) diff --git a/test/tests/testdata/ratings/EverythingPark.park.txt b/test/tests/testdata/ratings/EverythingPark.park.txt index 4a670df88ffc..69a86548deef 100644 --- a/test/tests/testdata/ratings/EverythingPark.park.txt +++ b/test/tests/testdata/ratings/EverythingPark.park.txt @@ -428,9 +428,9 @@ giga_rc: (460, 1219, 505) maze: (139, 52, 0) submarine_ride: (247, 180, 140) submarine_ride: (247, 180, 140) -lim_launched_rc: (53, 61, 40) -lim_launched_rc: (53, 61, 40) -lim_launched_rc: (53, 61, 40) +lim_launched_rc: (53, 57, 40) +lim_launched_rc: (53, 57, 40) +lim_launched_rc: (53, 57, 40) flying_rc: (31, 282, 473) flying_rc: (31, 282, 473) flying_rc: (31, 282, 473) @@ -475,9 +475,9 @@ maze: (150, 90, 0) maze: (150, 90, 0) maze: (150, 90, 0) corkscrew_rc: (482, 510, 220) -lim_launched_rc: (528, 730, 443) -lim_launched_rc: (532, 727, 436) -lim_launched_rc: (530, 812, 472) +lim_launched_rc: (528, 678, 443) +lim_launched_rc: (532, 675, 436) +lim_launched_rc: (530, 754, 472) miniature_railway: (154, 12, 1) miniature_railway: (154, 12, 1) miniature_railway: (149, 12, 1) diff --git a/test/tests/testdata/ratings/bpb.sv6.txt b/test/tests/testdata/ratings/bpb.sv6.txt index 9910aa43f5bc..5946f1ee7bbd 100644 --- a/test/tests/testdata/ratings/bpb.sv6.txt +++ b/test/tests/testdata/ratings/bpb.sv6.txt @@ -96,7 +96,7 @@ mini_rc: (539, 563, 397) spiral_rc: (620, 373, 215) looping_rc: (467, 441, 182) stand_up_rc: (553, 790, 558) -lim_launched_rc: (680, 944, 573) +lim_launched_rc: (680, 876, 573) twister_rc: (778, 769, 425) giga_rc: (624, 359, 200) inverted_rc: (678, 850, 686) From 5804508da42773e43846646580e63838b0864e14 Mon Sep 17 00:00:00 2001 From: mrmbernardi Date: Mon, 10 Nov 2025 02:15:10 +1100 Subject: [PATCH 012/222] Fix openrct2.d.ts Socket.on type (#25491) --- distribution/openrct2.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/distribution/openrct2.d.ts b/distribution/openrct2.d.ts index 5dc806247826..69dc8801764a 100644 --- a/distribution/openrct2.d.ts +++ b/distribution/openrct2.d.ts @@ -5354,11 +5354,11 @@ declare global { write(data: string): boolean; on(event: "close", callback: (hadError: boolean) => void): Socket; - on(event: "error", callback: (hadError: boolean) => void): Socket; + on(event: "error", callback: (errorString: string) => void): Socket; on(event: "data", callback: (data: string) => void): Socket; off(event: "close", callback: (hadError: boolean) => void): Socket; - off(event: "error", callback: (hadError: boolean) => void): Socket; + off(event: "error", callback: (errorString: string) => void): Socket; off(event: "data", callback: (data: string) => void): Socket; } From dcedb3b49216832024e8e0f13defc452a361bc1d Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 9 Nov 2025 16:28:37 +0100 Subject: [PATCH 013/222] Allow resizing the New Ride window --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/NewRide.cpp | 63 ++++++++++++++++++----------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 132e9c870343..e3ade4d22d23 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,6 +1,7 @@ 0.4.29 (in development) ------------------------------------------------------------------------ - Improved: [#25426] Building the track designs index is now quicker. +- Improved: [#25490] The ‘New Ride’ window can now be resized. - Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 79a8580115b4..e8c3a3826489 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -46,10 +46,12 @@ namespace OpenRCT2::Ui::Windows { static constexpr StringId WindowTitle = kStringIdNone; static constexpr ScreenSize kWindowSize = { 601, 382 }; + static constexpr ScreenSize kWindowMaxSize = { 840, 828 }; static constexpr int32_t kWindowHeightResearch = 194; static constexpr int32_t RideListItemsMax = 384; static constexpr int32_t RideTabCount = 6; static constexpr int32_t GroupByTrackTypeWidth = 172; + static constexpr int32_t kScrollItemSize = 116; #pragma region Ride type view order @@ -447,7 +449,8 @@ namespace OpenRCT2::Ui::Windows count++; listItem++; } - return { widgets[WIDX_RIDE_LIST].width() - 1, ((count + 4) / 5) * 116 }; + auto itemsPerRow = getNumImagesPerRow(); + return { widgets[WIDX_RIDE_LIST].width() - 1, ((count + (itemsPerRow - 1)) / itemsPerRow) * kScrollItemSize }; } void onScrollMouseOver(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override @@ -496,8 +499,8 @@ namespace OpenRCT2::Ui::Windows { const auto borderStyle = isSelected ? Rectangle::BorderStyle::inset : Rectangle::BorderStyle::outset; Rectangle::fillInset( - rt, { coords, coords + ScreenCoordsXY{ 115, 115 } }, colours[1], borderStyle, - Rectangle::FillBrightness::dark); + rt, { coords, coords + ScreenCoordsXY{ kScrollItemSize - 1, kScrollItemSize - 1 } }, colours[1], + borderStyle, Rectangle::FillBrightness::dark); } // Draw ride image with feathered border @@ -506,11 +509,11 @@ namespace OpenRCT2::Ui::Windows GfxDrawSpriteRawMasked(rt, coords + ScreenCoordsXY{ 2, 2 }, mask, rideImage); // Next position - coords.x += 116; - if (coords.x >= 116 * 5 + 1) + coords.x += kScrollItemSize; + if (coords.x >= kScrollItemSize * getNumImagesPerRow() + 1) { coords.x = 1; - coords.y += 116; + coords.y += kScrollItemSize; } // Next item @@ -809,8 +812,6 @@ namespace OpenRCT2::Ui::Windows void RefreshWidgetSizing() { - int32_t newWidth{}, newHeight{}; - if (_currentTab < SHOP_TAB) { disabledWidgets &= ~(1 << WIDX_GROUP_BY_TRACK_TYPE); @@ -831,6 +832,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_GROUP_BY_TRACK_TYPE].type = WidgetType::empty; } + ScreenSize newMinSize{}, newMaxSize{}; if (_currentTab != RESEARCH_TAB) { widgets[WIDX_RIDE_LIST].type = WidgetType::scroll; @@ -841,8 +843,8 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WidgetType::empty; widgets[WIDX_RESEARCH_FUNDING_BUTTON].type = WidgetType::empty; - newWidth = kWindowSize.width; - newHeight = kWindowSize.height; + newMinSize = kWindowSize; + newMaxSize = kWindowMaxSize; } else { @@ -855,24 +857,35 @@ namespace OpenRCT2::Ui::Windows if (!(getGameState().park.flags & PARK_FLAGS_NO_MONEY)) widgets[WIDX_RESEARCH_FUNDING_BUTTON].type = WidgetType::flatBtn; - newWidth = 300; - newHeight = kWindowHeightResearch; + newMinSize = { 300, kWindowHeightResearch }; + newMaxSize = newMinSize; } // Handle new window size - if (width != newWidth || height != newHeight) + if (width != newMinSize.width || height != newMinSize.height) { - ScreenSize newSize = { newWidth, newHeight }; - WindowSetResize(*this, newSize, newSize); + WindowSetResize(*this, newMinSize, newMaxSize); onResize(); - - widgets[WIDX_GROUP_BY_TRACK_TYPE].left = newWidth - 8 - GroupByTrackTypeWidth; - widgets[WIDX_GROUP_BY_TRACK_TYPE].right = newWidth - 8; } initScrollWidgets(); } + void onResize() override + { + widgets[WIDX_GROUP_BY_TRACK_TYPE].left = width - 8 - GroupByTrackTypeWidth; + widgets[WIDX_GROUP_BY_TRACK_TYPE].right = width - 8; + widgets[WIDX_RIDE_LIST].right = width - 6 - 1; + widgets[WIDX_RIDE_LIST].bottom = height - 65; + } + + uint8_t getNumImagesPerRow() + { + const Widget& listWidget = widgets[WIDX_RIDE_LIST]; + auto scrollWidth = listWidget.width(); + return scrollWidth / kScrollItemSize; + } + RideSelection ScrollGetRideListItemAt(const ScreenCoordsXY& screenCoords) { RideSelection result; @@ -882,12 +895,13 @@ namespace OpenRCT2::Ui::Windows if (screenCoords.x <= 0 || screenCoords.y <= 0) return result; - int32_t column = screenCoords.x / 116; - int32_t row = screenCoords.y / 116; - if (column >= 5) + auto itemsPerRow = getNumImagesPerRow(); + int32_t column = screenCoords.x / kScrollItemSize; + int32_t row = screenCoords.y / kScrollItemSize; + if (column >= itemsPerRow) return result; - int32_t index = column + (row * 5); + int32_t index = column + (row * itemsPerRow); RideSelection* listItem = _windowNewRideListItems; while (listItem->Type != kRideTypeNull || listItem->EntryIndex != kObjectEntryIndexNull) @@ -978,7 +992,7 @@ namespace OpenRCT2::Ui::Windows ft = Formatter(); ft.Add(price); - DrawTextBasic(rt, screenPos + ScreenCoordsXY{ textWidth, 51 }, stringId, ft, { TextAlignment::right }); + DrawTextBasic(rt, screenPos + ScreenCoordsXY{ textWidth - 14, 51 }, stringId, ft, { TextAlignment::right }); } // Draw object author(s) if debugging tools are active @@ -1086,7 +1100,8 @@ namespace OpenRCT2::Ui::Windows windowMgr->CloseByClass(WindowClass::trackDesignPlace); window = windowMgr->Create( - WindowClass::constructRide, kWindowSize, { WindowFlag::higherContrastOnPress, WindowFlag::autoPosition }); + WindowClass::constructRide, kWindowSize, + { WindowFlag::higherContrastOnPress, WindowFlag::autoPosition, WindowFlag::resizable }); return window; } From 7ab40fb5c6549ab19c4b0a103a580ddfd2776626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Mon, 10 Nov 2025 09:49:31 +0100 Subject: [PATCH 014/222] Fix headless mode crash (#25488) In headless mode the game would see `TitleScene::_sequencePlayer` is null and try setting it to an instance of `GetContext().GetUiContext().GetTitleSequencePlayer();`, but in headless mode we return a nullptr anyway from `DummyUiContext` and there are no further checks for nullptr. --- distribution/changelog.txt | 1 + src/openrct2/scenes/title/TitleScene.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index e3ade4d22d23..351ddd0791d7 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -9,6 +9,7 @@ - Fix: [#25467] Paths are not connected together correctly in track design previews. - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. - Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. +- Fix: [#25488] Crash in headless mode. - Fix: [objects#401] Round tunnels on down slopes glitch. - Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. - Fix: [objects#408] Australian fountain sets have confusing naming. diff --git a/src/openrct2/scenes/title/TitleScene.cpp b/src/openrct2/scenes/title/TitleScene.cpp index 9ab24763d231..239fae6bc0c1 100644 --- a/src/openrct2/scenes/title/TitleScene.cpp +++ b/src/openrct2/scenes/title/TitleScene.cpp @@ -141,7 +141,7 @@ void TitleScene::Tick() ScreenshotCheck(); TitleHandleKeyboardInput(); - if (GameIsNotPaused()) + if (!gOpenRCT2Headless && GameIsNotPaused()) { TryLoadSequence(); _sequencePlayer->Update(); @@ -205,6 +205,10 @@ void TitleScene::CreateWindows() void TitleScene::TitleInitialise() { + if (gOpenRCT2Headless) + { + return; + } if (_sequencePlayer == nullptr) { _sequencePlayer = GetContext().GetUiContext().GetTitleSequencePlayer(); @@ -285,7 +289,7 @@ void TitleScene::TitleInitialise() bool TitleScene::TryLoadSequence(bool loadPreview) { - if (_loadedTitleSequenceId != _currentSequence || loadPreview) + if (!gOpenRCT2Headless && (_loadedTitleSequenceId != _currentSequence || loadPreview)) { if (_sequencePlayer == nullptr) { From 7f530bfd238be9cc8e85048178d1f6e2e86efa00 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Mon, 10 Nov 2025 10:21:28 +0000 Subject: [PATCH 015/222] Fix go karts steep to flat not drawing correctly in flat side tunnel --- distribution/changelog.txt | 1 + src/openrct2/paint/track/thrill/GoKarts.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 351ddd0791d7..54624bf9aba7 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -10,6 +10,7 @@ - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. - Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. - Fix: [#25488] Crash in headless mode. +- Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. - Fix: [objects#401] Round tunnels on down slopes glitch. - Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. - Fix: [objects#408] Australian fountain sets have confusing naming. diff --git a/src/openrct2/paint/track/thrill/GoKarts.cpp b/src/openrct2/paint/track/thrill/GoKarts.cpp index 23912c60d74d..3c736db264f9 100644 --- a/src/openrct2/paint/track/thrill/GoKarts.cpp +++ b/src/openrct2/paint/track/thrill/GoKarts.cpp @@ -1892,7 +1892,7 @@ static void TrackUp60ToFlatLongBase( } else if (trackSequence == 3 && (direction == 1 || direction == 2)) { - PaintUtilPushTunnelRotated(session, direction, height + 8, kTunnelGroup, TunnelSubType::Flat); + PaintUtilPushTunnelRotated(session, direction, height + 8, kTunnelGroup, TunnelSubType::FlatTo25Deg); } PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); static constexpr std::array generalSupportHeights = { 80, 80, 56, 40 }; From 1a39677f8335b7c6315518785a12079d96e6e0b9 Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Mon, 10 Nov 2025 19:37:20 +0100 Subject: [PATCH 016/222] Update contributors.md --- contributors.md | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.md b/contributors.md index 8a6fb4a33e36..395c051e5e79 100644 --- a/contributors.md +++ b/contributors.md @@ -254,6 +254,7 @@ Appreciation for contributors who have provided substantial work, but are no lon * David Sungaila (sungaila) * Garrett Leach (GarrettLeach) * Ruohao (Jater) Xu (jaterx) +* Marcel Vos (MarcelVos96) ## Toolchain * (Balletie) - macOS From 460ab3bbd28fa746c800fc12186f90caf1f1f80a Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Tue, 11 Nov 2025 04:04:12 +0000 Subject: [PATCH 017/222] Merge Localisation/master into OpenRCT2/develop --- data/language/de-DE.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/language/de-DE.txt b/data/language/de-DE.txt index 3ca5780fe4b5..a3e27efa190f 100644 --- a/data/language/de-DE.txt +++ b/data/language/de-DE.txt @@ -3836,3 +3836,7 @@ STR_7000 :oder STR_7001 :Fahrgeschäftsname STR_7002 :{STRINGID} {STRINGID} STR_7003 :Die Audiodatei „{STRING}“ ist abgeschnitten. Sample {INT32} erwartet, es sind aber nur {INT32} verfügbar. Ziehen Sie eine Neuinstallation von RCT2 in Betracht. +STR_7004 :Erzwinge Neuzeichnung +STR_7005 :Baue eine Fläche aus Fußwegen +STR_7006 :Zeichne Ränder um Bildknöpfe +STR_7007 :Achterbahntyp From 8cb9b1fb1c2afd2af0b109ca2dfe6075573d4ba6 Mon Sep 17 00:00:00 2001 From: spacek531 Date: Tue, 11 Nov 2025 01:50:50 -0800 Subject: [PATCH 018/222] Move flat ride animation to VehicleData --- src/openrct2/ride/Vehicle.cpp | 271 +----------------------------- src/openrct2/ride/VehicleData.cpp | 266 +++++++++++++++++++++++++++++ src/openrct2/ride/VehicleData.h | 5 + 3 files changed, 272 insertions(+), 270 deletions(-) diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 0e4a0b928907..5d482403d39a 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -111,275 +111,6 @@ static constexpr OpenRCT2::Audio::SoundId _screamSetSteel[] = { OpenRCT2::Audio::SoundId::scream6, }; -// clang-format off -static constexpr uint8_t kSpaceRingsTimeToSpriteMap[] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, - 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, - 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, - 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, - 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 0, - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, - 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, - 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, - 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, - 21, 22, 22, 22, 23, 23, 23, 0, 0, 0, 1, 1, 1, 2, 2, 2, - 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, - 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, - 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, - 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 0, - 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, - 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, - 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, - 2, 1, 1, 1, 1, 0, 0, 0, 0, 23, 23, 23, 22, 22, 22, 21, - 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, - 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, - 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, - 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, - 0, 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, - 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, - 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, - 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, - 2, 2, 2, 1, 1, 1, 0, 0, 0, 23, 23, 23, 22, 22, 22, 21, - 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, - 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, - 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, - 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, - 24, 24, 24, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 27, - 27, 27, 27, 27, 28, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, - 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, - 36, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, - 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, - 46, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 51, 51, 51, - 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 57, - 57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, - 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 66, 66, 66, 67, 67, 67, - 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, - 73, 73, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, - 78, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 82, 82, 82, 82, - 82, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, - 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 86, 85, - 85, 85, 85, 85, 85, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, - 82, 82, 82, 82, 82, 81, 81, 81, 81, 80, 80, 80, 80, 79, 79, 79, - 78, 78, 78, 77, 77, 77, 76, 76, 76, 75, 75, 75, 74, 74, 74, 73, - 73, 73, 72, 72, 72, 71, 71, 71, 70, 70, 70, 69, 69, 69, 68, 68, - 68, 67, 67, 67, 66, 66, 66, 65, 65, 65, 64, 64, 64, 63, 63, 63, - 62, 62, 62, 61, 61, 61, 60, 60, 60, 59, 59, 59, 58, 58, 58, 57, - 57, 57, 56, 56, 56, 55, 55, 55, 54, 54, 54, 53, 53, 53, 52, 52, - 52, 51, 51, 51, 50, 50, 50, 49, 49, 49, 48, 48, 48, 47, 47, 47, - 46, 46, 46, 45, 45, 45, 44, 44, 44, 43, 43, 43, 42, 42, 42, 41, - 41, 41, 40, 40, 40, 39, 39, 39, 38, 38, 38, 37, 37, 37, 36, 36, - 36, 35, 35, 35, 34, 34, 34, 33, 33, 33, 32, 32, 32, 31, 31, 31, - 30, 30, 30, 30, 29, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, - 27, 27, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 24, 24, - 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, - 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, - 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, - 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, - 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, - 22, 22, 22, 23, 23, 23, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, - 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, - 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, - 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, - 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 0, 0, - 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, - 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, - 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, - 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, - 22, 22, 22, 23, 23, 23, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, - 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, - 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, - 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, - 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, - 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, - 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, - 2, 2, 1, 1, 1, 0, 0, 0, 23, 23, 23, 22, 22, 22, 21, 21, - 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, - 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, - 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, - 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, - 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, - 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, - 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, - 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, - 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, - 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, - 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, - 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, - 39, 39, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, - 44, 44, 45, 45, 45, 46, 46, 46, 47, 47, 47, 48, 48, 48, 49, 49, - 49, 50, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 54, 54, 54, - 55, 55, 55, 56, 56, 56, 57, 57, 57, 58, 58, 58, 59, 59, 59, 60, - 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, - 65, 66, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 69, 70, 70, 70, - 71, 71, 71, 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, 75, 75, 76, - 76, 76, 77, 77, 77, 78, 78, 78, 79, 79, 79, 80, 80, 80, 80, 81, - 81, 81, 81, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 84, 84, 84, - 84, 84, 84, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, - 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 86, - 86, 86, 86, 86, 86, 86, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, - 84, 84, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 81, 81, 81, 81, - 80, 80, 80, 80, 79, 79, 79, 78, 78, 78, 77, 77, 77, 76, 76, 76, - 75, 75, 75, 74, 74, 74, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70, - 70, 70, 69, 69, 69, 68, 68, 68, 67, 67, 67, 66, 66, 66, 65, 65, - 65, 64, 64, 64, 63, 63, 63, 62, 62, 62, 61, 61, 61, 60, 60, 60, - 59, 59, 59, 58, 58, 58, 57, 57, 57, 56, 56, 56, 55, 55, 55, 54, - 54, 54, 53, 53, 53, 52, 52, 52, 51, 51, 51, 50, 50, 50, 49, 49, - 49, 48, 48, 48, 47, 47, 47, 46, 46, 46, 45, 45, 45, 44, 44, 44, - 43, 43, 43, 42, 42, 42, 41, 41, 41, 40, 40, 40, 39, 39, 39, 38, - 38, 38, 37, 37, 37, 36, 36, 36, 35, 35, 35, 34, 34, 34, 33, 33, - 33, 32, 32, 32, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29, 28, - 28, 28, 28, 28, 27, 27, 27, 27, 27, 26, 26, 26, 26, 26, 26, 25, - 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 0, - 255, -}; -// clang-format on - -static constexpr int8_t kSwingingTimeToSpriteMap0[] = { - 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, - -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap1[] = { - 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, - -3, -4, -4, -4, -4, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, - -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap2[] = { - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, - 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, - -1, -1, -1, -2, -2, -2, -3, -3, -3, -3, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -6, -6, -6, -6, -6, - -6, -6, -6, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, - -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap3[] = { - 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, - 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, - -1, -2, -2, -3, -3, -4, -4, -4, -5, -5, -5, -5, -6, -6, -6, -6, -6, -7, -7, -7, -7, -7, -7, -8, -8, -8, -8, - -8, -8, -8, -8, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -8, -8, -8, -8, -8, -8, -8, -8, -7, -7, - -7, -7, -7, -7, -6, -6, -6, -6, -6, -5, -5, -5, -5, -4, -4, -4, -3, -3, -2, -2, -1, -1, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap4[] = { - 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, - 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, - 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, - -1, -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -5, -6, -6, - -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, - -7, -7, -7, -7, -7, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -5, -5, -5, -5, -5, -5, -5, -4, -4, - -4, -4, -4, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap5[] = { - 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, - 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, - 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, - 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, - 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -3, -3, -3, -3, - -4, -4, -4, -4, -5, -5, -5, -5, -6, -6, -6, -6, -7, -7, -7, -7, -8, -8, -8, -8, -9, -9, -9, -9, - -10, -10, -10, -10, -11, -11, -11, -11, -12, -12, -12, -12, -13, -13, -13, -13, -13, -13, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, - -15, -15, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -13, -13, -13, -13, -13, -13, -12, -12, -12, -12, -11, -11, - -11, -11, -10, -10, -10, -10, -9, -9, -9, -9, -8, -8, -8, -8, -7, -7, -7, -7, -6, -6, -6, -6, -5, -5, - -5, -5, -4, -4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap6[] = { - 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, - 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, - 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, - 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 22, - 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, - 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, - 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, -1, - -1, -1, -2, -2, -2, -3, -3, -3, -4, -4, -4, -5, -5, -5, -6, -6, -6, -7, -7, -7, -8, -8, -8, - -9, -9, -9, -10, -10, -10, -11, -11, -11, -12, -12, -12, -13, -13, -13, -14, -14, -14, -15, -15, -15, -16, -16, - -16, -17, -17, -17, -18, -18, -18, -19, -19, -19, -20, -20, -20, -21, -21, -21, -22, -22, -22, -23, -23, -23, -23, - -23, -24, -24, -24, -24, -24, -24, -24, -24, -24, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -24, -24, -24, -24, -24, -24, -24, -24, -24, -23, -23, -23, -23, -23, -22, -22, -22, - -21, -21, -21, -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, -15, -15, -15, -14, -14, - -14, -13, -13, -13, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9, -9, -8, -8, -8, -7, -7, -7, -6, - -6, -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap7[] = { - 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, - 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, - 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, - 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, - 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, -35, - -35, -35, -34, -34, -34, -33, -33, -33, -32, -32, -32, -31, -31, -31, -30, -30, -30, -29, -29, -29, -28, -28, - -28, -27, -27, -27, -26, -26, -26, -25, -25, -25, -24, -24, -24, -23, -23, -23, -22, -22, -22, -21, -21, -21, - -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, -15, -15, -15, -14, -14, -14, -13, - -13, -13, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9, -9, -8, -8, -8, -7, -7, -7, -6, -6, - -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap8[] = { - 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, - 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, - 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 31, - 31, 31, 31, 31, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 28, 28, - 28, 28, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap9[] = { - 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, - 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, - 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 31, - 31, 31, 31, 31, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 28, 28, - 28, 28, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap10[] = { - 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, - 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 11, - 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, - 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29, 28, - 28, 28, 28, 27, 27, 27, 27, 26, 26, 26, 26, 25, 25, 25, 25, 24, 24, 24, 24, 23, 23, 23, 23, 22, 22, 22, 22, 21, 21, 21, - 21, 20, 20, 20, 20, 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, - 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, - 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 0, 0, -128, -}; -static constexpr int8_t kSwingingTimeToSpriteMap11[] = { - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, - 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, - 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, - 23, 23, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 0, -128, -}; - -/** rct2: 0x0099F9D0 */ -static constexpr const int8_t* SwingingTimeToSpriteMaps[] = { - kSwingingTimeToSpriteMap0, kSwingingTimeToSpriteMap1, kSwingingTimeToSpriteMap2, kSwingingTimeToSpriteMap3, - kSwingingTimeToSpriteMap4, kSwingingTimeToSpriteMap5, kSwingingTimeToSpriteMap6, kSwingingTimeToSpriteMap7, - kSwingingTimeToSpriteMap8, kSwingingTimeToSpriteMap9, kSwingingTimeToSpriteMap10, kSwingingTimeToSpriteMap11, -}; - /** rct2: 0x009A37C4 */ static constexpr CoordsXY kSurroundingTiles[] = { { 0, 0 }, @@ -4021,7 +3752,7 @@ void Vehicle::UpdateSwinging() swingState += 4; } - const int8_t* spriteMap = SwingingTimeToSpriteMaps[swingState]; + const auto spriteMap = kSwingingTimeToSpriteMaps[swingState]; int8_t spriteType = spriteMap[current_time + 1]; // 0x80 indicates that a complete swing has been diff --git a/src/openrct2/ride/VehicleData.cpp b/src/openrct2/ride/VehicleData.cpp index 9fd0a8ae1339..929e8226f73b 100644 --- a/src/openrct2/ride/VehicleData.cpp +++ b/src/openrct2/ride/VehicleData.cpp @@ -794,4 +794,270 @@ const uint8_t MotionSimulatorTimeToSpriteMap[] = { }; const int32_t MotionSimulatorTimeToSpriteMapCount = static_cast(std::size(MotionSimulatorTimeToSpriteMap)); + +const uint8_t kSpaceRingsTimeToSpriteMap[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, + 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, + 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, + 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, + 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 0, + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, + 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, + 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, + 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, + 21, 22, 22, 22, 23, 23, 23, 0, 0, 0, 1, 1, 1, 2, 2, 2, + 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, + 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, + 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, + 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 0, + 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, + 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, + 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 0, 0, 0, 0, 23, 23, 23, 22, 22, 22, 21, + 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, + 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, + 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, + 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, + 0, 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, + 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, + 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, + 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, + 2, 2, 2, 1, 1, 1, 0, 0, 0, 23, 23, 23, 22, 22, 22, 21, + 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, + 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, + 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, + 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, + 24, 24, 24, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 27, + 27, 27, 27, 27, 28, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, + 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, + 36, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, + 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, + 46, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 51, 51, 51, + 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 57, + 57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, + 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 66, 66, 66, 67, 67, 67, + 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, + 73, 73, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, + 78, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 82, 82, 82, 82, + 82, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, + 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 86, 85, + 85, 85, 85, 85, 85, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, + 82, 82, 82, 82, 82, 81, 81, 81, 81, 80, 80, 80, 80, 79, 79, 79, + 78, 78, 78, 77, 77, 77, 76, 76, 76, 75, 75, 75, 74, 74, 74, 73, + 73, 73, 72, 72, 72, 71, 71, 71, 70, 70, 70, 69, 69, 69, 68, 68, + 68, 67, 67, 67, 66, 66, 66, 65, 65, 65, 64, 64, 64, 63, 63, 63, + 62, 62, 62, 61, 61, 61, 60, 60, 60, 59, 59, 59, 58, 58, 58, 57, + 57, 57, 56, 56, 56, 55, 55, 55, 54, 54, 54, 53, 53, 53, 52, 52, + 52, 51, 51, 51, 50, 50, 50, 49, 49, 49, 48, 48, 48, 47, 47, 47, + 46, 46, 46, 45, 45, 45, 44, 44, 44, 43, 43, 43, 42, 42, 42, 41, + 41, 41, 40, 40, 40, 39, 39, 39, 38, 38, 38, 37, 37, 37, 36, 36, + 36, 35, 35, 35, 34, 34, 34, 33, 33, 33, 32, 32, 32, 31, 31, 31, + 30, 30, 30, 30, 29, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, + 27, 27, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 24, 24, + 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, + 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, + 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, + 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, + 22, 22, 22, 23, 23, 23, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, + 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, + 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, + 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 0, 0, + 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, + 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, + 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, + 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, + 22, 22, 22, 23, 23, 23, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, + 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, + 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, + 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, + 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, + 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, + 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, + 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, + 2, 2, 1, 1, 1, 0, 0, 0, 23, 23, 23, 22, 22, 22, 21, 21, + 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, + 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, + 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, + 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, + 23, 23, 23, 22, 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, + 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, + 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, + 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, + 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, + 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, + 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, + 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, + 39, 39, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, + 44, 44, 45, 45, 45, 46, 46, 46, 47, 47, 47, 48, 48, 48, 49, 49, + 49, 50, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 54, 54, 54, + 55, 55, 55, 56, 56, 56, 57, 57, 57, 58, 58, 58, 59, 59, 59, 60, + 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, + 65, 66, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 69, 70, 70, 70, + 71, 71, 71, 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, 75, 75, 76, + 76, 76, 77, 77, 77, 78, 78, 78, 79, 79, 79, 80, 80, 80, 80, 81, + 81, 81, 81, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 84, 84, 84, + 84, 84, 84, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, + 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 86, + 86, 86, 86, 86, 86, 86, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, + 84, 84, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 81, 81, 81, 81, + 80, 80, 80, 80, 79, 79, 79, 78, 78, 78, 77, 77, 77, 76, 76, 76, + 75, 75, 75, 74, 74, 74, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70, + 70, 70, 69, 69, 69, 68, 68, 68, 67, 67, 67, 66, 66, 66, 65, 65, + 65, 64, 64, 64, 63, 63, 63, 62, 62, 62, 61, 61, 61, 60, 60, 60, + 59, 59, 59, 58, 58, 58, 57, 57, 57, 56, 56, 56, 55, 55, 55, 54, + 54, 54, 53, 53, 53, 52, 52, 52, 51, 51, 51, 50, 50, 50, 49, 49, + 49, 48, 48, 48, 47, 47, 47, 46, 46, 46, 45, 45, 45, 44, 44, 44, + 43, 43, 43, 42, 42, 42, 41, 41, 41, 40, 40, 40, 39, 39, 39, 38, + 38, 38, 37, 37, 37, 36, 36, 36, 35, 35, 35, 34, 34, 34, 33, 33, + 33, 32, 32, 32, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29, 28, + 28, 28, 28, 28, 27, 27, 27, 27, 27, 26, 26, 26, 26, 26, 26, 25, + 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 0, + 255, +}; + +static constexpr int8_t kSwingingTimeToSpriteMap0[] = { + 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, + -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap1[] = { + 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, + 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, + -3, -4, -4, -4, -4, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap2[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, + 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, + -1, -1, -1, -2, -2, -2, -3, -3, -3, -3, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -6, -6, -6, -6, -6, + -6, -6, -6, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, + -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap3[] = { + 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, + 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, + 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, + -1, -2, -2, -3, -3, -4, -4, -4, -5, -5, -5, -5, -6, -6, -6, -6, -6, -7, -7, -7, -7, -7, -7, -8, -8, -8, -8, + -8, -8, -8, -8, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -8, -8, -8, -8, -8, -8, -8, -8, -7, -7, + -7, -7, -7, -7, -6, -6, -6, -6, -6, -5, -5, -5, -5, -4, -4, -4, -3, -3, -2, -2, -1, -1, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap4[] = { + 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, + 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, + 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, + -1, -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -5, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -5, -5, -5, -5, -5, -5, -5, -4, -4, + -4, -4, -4, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap5[] = { + 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, + 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, + 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, + 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, + 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -3, -3, -3, -3, + -4, -4, -4, -4, -5, -5, -5, -5, -6, -6, -6, -6, -7, -7, -7, -7, -8, -8, -8, -8, -9, -9, -9, -9, + -10, -10, -10, -10, -11, -11, -11, -11, -12, -12, -12, -12, -13, -13, -13, -13, -13, -13, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -13, -13, -13, -13, -13, -13, -12, -12, -12, -12, -11, -11, + -11, -11, -10, -10, -10, -10, -9, -9, -9, -9, -8, -8, -8, -8, -7, -7, -7, -7, -6, -6, -6, -6, -5, -5, + -5, -5, -4, -4, -4, -4, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap6[] = { + 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, + 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, + 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, + 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 22, + 22, 22, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, + 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, + 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, -1, + -1, -1, -2, -2, -2, -3, -3, -3, -4, -4, -4, -5, -5, -5, -6, -6, -6, -7, -7, -7, -8, -8, -8, + -9, -9, -9, -10, -10, -10, -11, -11, -11, -12, -12, -12, -13, -13, -13, -14, -14, -14, -15, -15, -15, -16, -16, + -16, -17, -17, -17, -18, -18, -18, -19, -19, -19, -20, -20, -20, -21, -21, -21, -22, -22, -22, -23, -23, -23, -23, + -23, -24, -24, -24, -24, -24, -24, -24, -24, -24, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -24, -24, -24, -24, -24, -24, -24, -24, -24, -23, -23, -23, -23, -23, -22, -22, -22, + -21, -21, -21, -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, -15, -15, -15, -14, -14, + -14, -13, -13, -13, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9, -9, -8, -8, -8, -7, -7, -7, -6, + -6, -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap7[] = { + 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, + 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, + 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, + 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, + 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, -35, + -35, -35, -34, -34, -34, -33, -33, -33, -32, -32, -32, -31, -31, -31, -30, -30, -30, -29, -29, -29, -28, -28, + -28, -27, -27, -27, -26, -26, -26, -25, -25, -25, -24, -24, -24, -23, -23, -23, -22, -22, -22, -21, -21, -21, + -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, -15, -15, -15, -14, -14, -14, -13, + -13, -13, -12, -12, -12, -11, -11, -11, -10, -10, -10, -9, -9, -9, -8, -8, -8, -7, -7, -7, -6, -6, + -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap8[] = { + 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, + 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, + 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 31, + 31, 31, 31, 31, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 28, 28, + 28, 28, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap9[] = { + 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, + 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, + 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 31, + 31, 31, 31, 31, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 28, 28, + 28, 28, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap10[] = { + 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, + 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 11, + 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, + 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29, 28, + 28, 28, 28, 27, 27, 27, 27, 26, 26, 26, 26, 25, 25, 25, 25, 24, 24, 24, 24, 23, 23, 23, 23, 22, 22, 22, 22, 21, 21, 21, + 21, 20, 20, 20, 20, 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, + 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, + 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 0, 0, -128, +}; +static constexpr int8_t kSwingingTimeToSpriteMap11[] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, + 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, + 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, + 23, 23, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 0, -128, +}; + +const int8_t* kSwingingTimeToSpriteMaps[] = { + kSwingingTimeToSpriteMap0, kSwingingTimeToSpriteMap1, kSwingingTimeToSpriteMap2, kSwingingTimeToSpriteMap3, + kSwingingTimeToSpriteMap4, kSwingingTimeToSpriteMap5, kSwingingTimeToSpriteMap6, kSwingingTimeToSpriteMap7, + kSwingingTimeToSpriteMap8, kSwingingTimeToSpriteMap9, kSwingingTimeToSpriteMap10, kSwingingTimeToSpriteMap11, +}; // clang-format on diff --git a/src/openrct2/ride/VehicleData.h b/src/openrct2/ride/VehicleData.h index 5885c01efa3f..859e4c039c08 100644 --- a/src/openrct2/ride/VehicleData.h +++ b/src/openrct2/ride/VehicleData.h @@ -25,3 +25,8 @@ extern const TopSpinTimeToSpriteMap* kTopSpinTimeToSpriteMaps[]; extern const uint8_t MotionSimulatorTimeToSpriteMap[]; extern const int32_t MotionSimulatorTimeToSpriteMapCount; + +extern const uint8_t kSpaceRingsTimeToSpriteMap[]; + +/** rct2: 0x0099F9D0 */ +extern const int8_t* kSwingingTimeToSpriteMaps[]; From 7068ea67e3ef9e14dbc86d542cd3c017b723d593 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Wed, 12 Nov 2025 23:39:37 +0100 Subject: [PATCH 019/222] Fix #25454: Pathing Tool Closes When Land Tool Opens --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Footpath.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 54624bf9aba7..6e5fc577282f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -5,6 +5,7 @@ - Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. +- Fix: [#25454] Opening the land tool while building a path bridge or tunnel closes the Footpaths window. - Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. - Fix: [#25467] Paths are not connected together correctly in track design previews. - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 4e67f824c1fb..fad523809cfb 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -282,6 +282,11 @@ namespace OpenRCT2::Ui::Windows close(); break; case PathConstructionMode::dragArea: + // If another window has enabled a tool, close ours. + // If the user merely pressed Escape, we cancel the tool but don’t close the window. + if (gInputFlags.has(InputFlag::toolActive) + && gCurrentToolWidget.windowClassification != WindowClass::footpath) + close(); break; case PathConstructionMode::bridgeOrTunnelPick: if (!isToolActive(WindowClass::footpath, WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL)) @@ -290,10 +295,6 @@ namespace OpenRCT2::Ui::Windows case PathConstructionMode::bridgeOrTunnel: break; } - - // If another window has enabled a tool, close ours. - if (gInputFlags.has(InputFlag::toolActive) && gCurrentToolWidget.windowClassification != WindowClass::footpath) - close(); } void onMouseDown(WidgetIndex widgetIndex) override From f204d937ab90fbc97f902718419de2ee8e22e248 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Thu, 13 Nov 2025 04:05:14 +0000 Subject: [PATCH 020/222] Merge Localisation/master into OpenRCT2/develop --- data/language/eo-ZZ.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/eo-ZZ.txt b/data/language/eo-ZZ.txt index 97fa1d380a5d..2450198ae738 100644 --- a/data/language/eo-ZZ.txt +++ b/data/language/eo-ZZ.txt @@ -3842,3 +3842,4 @@ STR_7003 :Sondosiero ‘{STRING}’ estas distranĉita. Atendis sonpecon {INT STR_7004 :Devigi redesegnon STR_7005 :Treni areon de trotuaro STR_7006 :Desegni borderon ĉirkaŭ bildo-butonoj +STR_7007 :Atrakciotipo From 9e36c7a2dc9b480010f03899020451245f2a9814 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:50:22 +0100 Subject: [PATCH 021/222] Remove hardcoded ride type IDs in ride type dropdown --- data/language/en-GB.txt | 10 +------- src/openrct2-ui/UiStringIds.h | 10 +------- src/openrct2-ui/windows/Ride.cpp | 39 ++++++++++++-------------------- 3 files changed, 16 insertions(+), 43 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index ae91bf194eff..0102bca7d741 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -32,12 +32,9 @@ STR_0027 :Dodgems STR_0028 :Swinging Ship STR_0029 :Swinging Inverter Ship STR_0030 :Food Stall -STR_0031 :Unknown Stall (1D) STR_0032 :Drink Stall -STR_0033 :Unknown Stall (1F) STR_0034 :Shop STR_0035 :Merry-Go-Round -STR_0036 :Unknown Stall (22) STR_0037 :Information Kiosk STR_0038 :Toilets STR_0039 :Ferris Wheel @@ -83,16 +80,10 @@ STR_0078 :Inverted Hairpin Coaster STR_0079 :Magic Carpet STR_0080 :Submarine Ride STR_0081 :River Rafts -STR_0082 :Unknown Ride (50) STR_0083 :Enterprise -STR_0084 :Unknown Ride (52) -STR_0085 :Unknown Ride (53) -STR_0086 :Unknown Ride (54) -STR_0087 :Unknown Ride (55) STR_0088 :Inverted Impulse Coaster STR_0089 :Mini Roller Coaster STR_0090 :Mine Ride -STR_0091 :Unknown Ride (59) STR_0092 :LIM Launched Roller Coaster STR_0093 :Hybrid Coaster STR_0094 :Single Rail Roller Coaster @@ -3846,3 +3837,4 @@ STR_7004 :Force Redraw STR_7005 :Drag an area of footpath STR_7006 :Draw border around image buttons STR_7007 :Ride Type +STR_7008 :Unknown ride type ({INT32}) diff --git a/src/openrct2-ui/UiStringIds.h b/src/openrct2-ui/UiStringIds.h index 39d72a38f9cc..9d3d72d8cd9a 100644 --- a/src/openrct2-ui/UiStringIds.h +++ b/src/openrct2-ui/UiStringIds.h @@ -1574,15 +1574,7 @@ namespace OpenRCT2 STR_RIDE_MODE_NUMBER_OF_SWINGS_VALUE = 1771, STR_RIDE_MODE_SPEED_VALUE = 1331, STR_RIDE_MODE_TIME_LIMIT_VALUE = 1749, - STR_RIDE_NAME_1D = 31, - STR_RIDE_NAME_1F = 33, - STR_RIDE_NAME_22 = 36, - STR_RIDE_NAME_50 = 82, - STR_RIDE_NAME_52 = 84, - STR_RIDE_NAME_53 = 85, - STR_RIDE_NAME_54 = 86, - STR_RIDE_NAME_55 = 87, - STR_RIDE_NAME_59 = 91, + STR_RIDE_NAME_UNKNOWN_INT32 = 7008, STR_RIDE_SECONDARY_PRICE_VALUE = 1799, STR_RIDE_STATS_ALTITUDE = 1416, STR_RIDE_STATS_ALTITUDE_FORMAT = 1420, diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 672ed59087fe..3794ef786574 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -624,7 +625,7 @@ namespace OpenRCT2::Ui::Windows { ride_type_t RideTypeId; StringId LabelId; - u8string_view LabelString; + u8string LabelString; }; // Used for sorting the vehicle type dropdown. @@ -1877,29 +1878,12 @@ namespace OpenRCT2::Ui::Windows static constexpr StringId GetRideTypeNameForDropdown(ride_type_t rideType) { - switch (rideType) - { - case RIDE_TYPE_1D: - return STR_RIDE_NAME_1D; - case RIDE_TYPE_1F: - return STR_RIDE_NAME_1F; - case RIDE_TYPE_22: - return STR_RIDE_NAME_22; - case RIDE_TYPE_50: - return STR_RIDE_NAME_50; - case RIDE_TYPE_52: - return STR_RIDE_NAME_52; - case RIDE_TYPE_53: - return STR_RIDE_NAME_53; - case RIDE_TYPE_54: - return STR_RIDE_NAME_54; - case RIDE_TYPE_55: - return STR_RIDE_NAME_55; - case RIDE_TYPE_59: - return STR_RIDE_NAME_59; - default: - return GetRideTypeDescriptor(rideType).Naming.Name; + auto stringId = GetRideTypeDescriptor(rideType).Naming.Name; + if (stringId == STR_UNKNOWN_RIDE) + { + stringId = STR_RIDE_NAME_UNKNOWN_INT32; } + return stringId; } void PopulateRideTypeDropdown() @@ -1912,8 +1896,13 @@ namespace OpenRCT2::Ui::Windows for (uint8_t i = 0; i < RIDE_TYPE_COUNT; i++) { + // Will return the actual name for most rides, but a special string "Unknown Ride ({INT32})" for unknown ones. + // The placeholder will then be filled with the ID. auto name = GetRideTypeNameForDropdown(i); - _rideDropdownData.push_back({ i, name, u8string_view{ ls.GetString(name) } }); + auto ft = Formatter(); + ft.Add(i); + auto label = FormatStringIDLegacy(name, ft.Data()); + _rideDropdownData.push_back({ i, name, label }); } std::sort(_rideDropdownData.begin(), _rideDropdownData.end(), [](auto& a, auto& b) { @@ -1933,7 +1922,7 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < _rideDropdownData.size(); i++) { - gDropdown.items[i] = Dropdown::MenuLabel(_rideDropdownData[i].LabelId); + gDropdown.items[i] = Dropdown::MenuLabel(_rideDropdownData[i].LabelString); } Widget* dropdownWidget = widget - 1; From 21d2aaca35627f01ce56d3c790518bfe2364731d Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Thu, 13 Nov 2025 20:19:47 +0100 Subject: [PATCH 022/222] Increase maximum size of the New Ride window further --- contributors.md | 1 + src/openrct2-ui/windows/NewRide.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/contributors.md b/contributors.md index 8a6fb4a33e36..395c051e5e79 100644 --- a/contributors.md +++ b/contributors.md @@ -254,6 +254,7 @@ Appreciation for contributors who have provided substantial work, but are no lon * David Sungaila (sungaila) * Garrett Leach (GarrettLeach) * Ruohao (Jater) Xu (jaterx) +* Marcel Vos (MarcelVos96) ## Toolchain * (Balletie) - macOS diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index e8c3a3826489..60497bb4fa39 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -45,13 +45,21 @@ using namespace OpenRCT2::TrackMetaData; namespace OpenRCT2::Ui::Windows { static constexpr StringId WindowTitle = kStringIdNone; - static constexpr ScreenSize kWindowSize = { 601, 382 }; - static constexpr ScreenSize kWindowMaxSize = { 840, 828 }; static constexpr int32_t kWindowHeightResearch = 194; static constexpr int32_t RideListItemsMax = 384; static constexpr int32_t RideTabCount = 6; static constexpr int32_t GroupByTrackTypeWidth = 172; static constexpr int32_t kScrollItemSize = 116; + static constexpr int32_t kMinColCount = 5; + static constexpr int32_t kMaxColCount = 15; + static constexpr int32_t kMinRowCount = 2; + static constexpr int32_t kMaxRowCount = 7; + static constexpr int32_t kHorizontalPadding = 21; + static constexpr int32_t kVerticalPadding = 150; + static constexpr ScreenSize kWindowSize = { (kMinColCount * kScrollItemSize) + kHorizontalPadding, + (kMinRowCount * kScrollItemSize) + kVerticalPadding }; + static constexpr ScreenSize kWindowMaxSize = { (kMaxColCount * kScrollItemSize) + kHorizontalPadding, + (kMaxRowCount * kScrollItemSize) + kVerticalPadding }; #pragma region Ride type view order @@ -875,7 +883,7 @@ namespace OpenRCT2::Ui::Windows { widgets[WIDX_GROUP_BY_TRACK_TYPE].left = width - 8 - GroupByTrackTypeWidth; widgets[WIDX_GROUP_BY_TRACK_TYPE].right = width - 8; - widgets[WIDX_RIDE_LIST].right = width - 6 - 1; + widgets[WIDX_RIDE_LIST].right = width - 3 - 1; widgets[WIDX_RIDE_LIST].bottom = height - 65; } From f454ff5f6e1a783746ea338944c40eb26ffb42be Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Fri, 14 Nov 2025 04:03:43 +0000 Subject: [PATCH 023/222] Merge Localisation/master into OpenRCT2/develop --- data/language/gl-ES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/gl-ES.txt b/data/language/gl-ES.txt index 561bb8bf39c7..4df3ef1cd7fa 100644 --- a/data/language/gl-ES.txt +++ b/data/language/gl-ES.txt @@ -3842,3 +3842,4 @@ STR_7003 :O ficheiro de son ‘{STRING}’ está incompleto. Agardabase {INT3 STR_7004 :Forzar redeseño STR_7005 :Arrastra unha área de camiño STR_7006 :Debuxa un bordo arredor dos botóns de imaxe +STR_7007 :Tipo de atracción From a7b962db5ff216d8f6b07562eee9e6cf987145fe Mon Sep 17 00:00:00 2001 From: mrmbernardi Date: Sat, 15 Nov 2025 23:50:20 +1100 Subject: [PATCH 024/222] Fix UB for empty string_views --- src/openrct2/core/OrcaStream.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/openrct2/core/OrcaStream.hpp b/src/openrct2/core/OrcaStream.hpp index 519dccd7ad55..16f31d7ab98b 100644 --- a/src/openrct2/core/OrcaStream.hpp +++ b/src/openrct2/core/OrcaStream.hpp @@ -671,7 +671,10 @@ namespace OpenRCT2 { len = s.size(); } - _buffer.Write(s.data(), len); + if (len > 0) + { + _buffer.Write(s.data(), len); + } _buffer.Write(&nullt, sizeof(nullt)); } From 766cfd2f1891b11f5de704f2a7fe7583459eb8b0 Mon Sep 17 00:00:00 2001 From: Crystal Squirrel Date: Sat, 15 Nov 2025 18:47:30 +0100 Subject: [PATCH 025/222] Replace reinterpret_cast with static_cast --- src/openrct2-ui/audio/AudioChannel.cpp | 2 +- src/openrct2-ui/audio/FlacAudioSource.cpp | 16 ++++++++-------- src/openrct2-ui/audio/MemoryAudioSource.cpp | 2 +- src/openrct2-ui/audio/OggAudioSource.cpp | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/openrct2-ui/audio/AudioChannel.cpp b/src/openrct2-ui/audio/AudioChannel.cpp index c033a0e70006..f188e7637d48 100644 --- a/src/openrct2-ui/audio/AudioChannel.cpp +++ b/src/openrct2-ui/audio/AudioChannel.cpp @@ -254,7 +254,7 @@ namespace OpenRCT2::Audio size_t readLen = _source->Read(dst, _offset, bytesToRead); if (readLen > 0) { - dst = reinterpret_cast(reinterpret_cast(dst) + readLen); + dst = static_cast(static_cast(dst) + readLen); bytesToRead -= readLen; bytesRead += readLen; _offset += readLen; diff --git a/src/openrct2-ui/audio/FlacAudioSource.cpp b/src/openrct2-ui/audio/FlacAudioSource.cpp index 17a5665659ff..accdcb299df0 100644 --- a/src/openrct2-ui/audio/FlacAudioSource.cpp +++ b/src/openrct2-ui/audio/FlacAudioSource.cpp @@ -96,7 +96,7 @@ namespace OpenRCT2::Audio _currentOffset = offset; } - auto dst8 = reinterpret_cast(dst); + auto dst8 = static_cast(dst); auto bytesRead = ReadFromDecodeBuffer(dst8, len); dst8 += bytesRead; if (bytesRead < len) @@ -171,7 +171,7 @@ namespace OpenRCT2::Audio static FLAC__StreamDecoderReadStatus FlacCallbackRead( const FLAC__StreamDecoder* decoder, FLAC__byte buffer[], size_t* bytes, void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); if (*bytes > 0) { *bytes = SDL_RWread(self->_rw, buffer, sizeof(FLAC__byte), *bytes); @@ -193,7 +193,7 @@ namespace OpenRCT2::Audio static FLAC__StreamDecoderSeekStatus FlacCallbackSeek( const FLAC__StreamDecoder* decoder, FLAC__uint64 absoluteByteOffset, void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); if (SDL_RWseek(self->_rw, absoluteByteOffset, RW_SEEK_SET) < 0) { return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; @@ -207,7 +207,7 @@ namespace OpenRCT2::Audio static FLAC__StreamDecoderTellStatus FlacCallbackTell( const FLAC__StreamDecoder* decoder, FLAC__uint64* absoluteByteOffset, void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); auto pos = SDL_RWtell(self->_rw); if (pos < 0) { @@ -223,7 +223,7 @@ namespace OpenRCT2::Audio static FLAC__StreamDecoderLengthStatus FlacCallbackLength( const FLAC__StreamDecoder* decoder, FLAC__uint64* streamLength, void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); auto pos = SDL_RWtell(self->_rw); auto length = SDL_RWseek(self->_rw, 0, RW_SEEK_END); if (SDL_RWseek(self->_rw, pos, RW_SEEK_SET) != pos || length < 0) @@ -239,7 +239,7 @@ namespace OpenRCT2::Audio static FLAC__bool FlacCallbackEof(const FLAC__StreamDecoder* decoder, void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); auto pos = SDL_RWtell(self->_rw); auto end = SDL_RWseek(self->_rw, 0, RW_SEEK_END); if (pos == end) @@ -256,7 +256,7 @@ namespace OpenRCT2::Audio static FLAC__StreamDecoderWriteStatus FlacCallbackWrite( const FLAC__StreamDecoder* decoder, const FLAC__Frame* frame, const FLAC__int32* const buffer[], void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); // Determine sizes auto channels = self->_format.channels; @@ -301,7 +301,7 @@ namespace OpenRCT2::Audio static void FlacCallbackMetadata( const FLAC__StreamDecoder* decoder, const FLAC__StreamMetadata* metadata, void* clientData) { - auto* self = reinterpret_cast(clientData); + auto* self = static_cast(clientData); if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) { self->_bitsPerSample = metadata->data.stream_info.bits_per_sample; diff --git a/src/openrct2-ui/audio/MemoryAudioSource.cpp b/src/openrct2-ui/audio/MemoryAudioSource.cpp index 696bd4293fae..88dc696d32dc 100644 --- a/src/openrct2-ui/audio/MemoryAudioSource.cpp +++ b/src/openrct2-ui/audio/MemoryAudioSource.cpp @@ -55,7 +55,7 @@ namespace OpenRCT2::Audio auto src = _data.data(); if (src != nullptr) { - std::copy_n(src + offset, bytesToRead, reinterpret_cast(dst)); + std::copy_n(src + offset, bytesToRead, static_cast(dst)); } } return bytesToRead; diff --git a/src/openrct2-ui/audio/OggAudioSource.cpp b/src/openrct2-ui/audio/OggAudioSource.cpp index 99f07f046fd8..3fcf663cbd57 100644 --- a/src/openrct2-ui/audio/OggAudioSource.cpp +++ b/src/openrct2-ui/audio/OggAudioSource.cpp @@ -101,7 +101,7 @@ namespace OpenRCT2::Audio } auto readLen = static_cast(len); - auto dst8 = reinterpret_cast(dst); + auto dst8 = static_cast(dst); int64_t totalBytesRead{}; int64_t bytesRead; do @@ -139,17 +139,17 @@ namespace OpenRCT2::Audio private: static size_t VorbisCallbackRead(void* ptr, size_t size, size_t nmemb, void* datasource) { - return SDL_RWread(reinterpret_cast(datasource), ptr, size, nmemb); + return SDL_RWread(static_cast(datasource), ptr, size, nmemb); } static int VorbisCallbackSeek(void* datasource, ogg_int64_t offset, int whence) { - return (SDL_RWseek(reinterpret_cast(datasource), offset, whence) < 0) ? -1 : 0; + return (SDL_RWseek(static_cast(datasource), offset, whence) < 0) ? -1 : 0; } static long VorbisCallbackTell(void* datasource) { - return static_cast(SDL_RWtell(reinterpret_cast(datasource))); + return static_cast(SDL_RWtell(static_cast(datasource))); } }; #endif From 22e50556a9e81cd3dbfa50ce80c34dc53fc815fd Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 15 Nov 2025 18:48:55 +0100 Subject: [PATCH 026/222] Rename _format to _outputFormat --- src/openrct2-ui/audio/AudioMixer.cpp | 39 ++++++++++++++-------------- src/openrct2-ui/audio/AudioMixer.h | 4 +-- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/openrct2-ui/audio/AudioMixer.cpp b/src/openrct2-ui/audio/AudioMixer.cpp index 01a7de4bdeaf..aa69bd9ec145 100644 --- a/src/openrct2-ui/audio/AudioMixer.cpp +++ b/src/openrct2-ui/audio/AudioMixer.cpp @@ -40,9 +40,9 @@ void AudioMixer::Init(const char* device) SDL_AudioSpec have; _deviceId = SDL_OpenAudioDevice(device, 0, &want, &have, 0); - _format.format = have.format; - _format.channels = have.channels; - _format.freq = have.freq; + _outputFormat.format = have.format; + _outputFormat.channels = have.channels; + _outputFormat.freq = have.freq; SDL_PauseAudioDevice(_deviceId, 0); } @@ -121,7 +121,7 @@ void AudioMixer::RemoveReleasedSources() const AudioFormat& AudioMixer::GetFormat() const { - return _format; + return _outputFormat; } void AudioMixer::GetNextAudioChunk(uint8_t* dst, size_t length) @@ -173,10 +173,10 @@ void AudioMixer::UpdateAdjustedSound() void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t length) { - int32_t byteRate = _format.GetByteRate(); + int32_t byteRate = _outputFormat.GetByteRate(); auto numSamples = static_cast(length / byteRate); double rate = 1; - if (_format.format == AUDIO_S16SYS) + if (_outputFormat.format == AUDIO_S16SYS) { rate = channel->GetRate(); } @@ -185,11 +185,11 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len SDL_AudioCVT cvt; cvt.len_ratio = 1; AudioFormat streamformat = channel->GetFormat(); - if (streamformat != _format) + if (streamformat != _outputFormat) { if (SDL_BuildAudioCVT( - &cvt, streamformat.format, streamformat.channels, streamformat.freq, _format.format, _format.channels, - _format.freq) + &cvt, streamformat.format, streamformat.channels, streamformat.freq, _outputFormat.format, + _outputFormat.channels, _outputFormat.freq) == -1) { // Unable to convert channel data @@ -232,8 +232,8 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len int32_t outRate = numSamples; if (bytesRead != readLength) { - inRate = _format.freq; - outRate = _format.freq * (1 / rate); + inRate = _outputFormat.freq; + outRate = _outputFormat.freq * (1 / rate); } _effectBuffer.resize(length); bufferLen = ApplyResample(channel, buffer, static_cast(bufferLen / byteRate), numSamples, inRate, outRate); @@ -246,25 +246,26 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len // Finally mix on to destination buffer size_t dstLength = std::min(length, bufferLen); - SDL_MixAudioFormat(data, static_cast(buffer), _format.format, static_cast(dstLength), mixVolume); + SDL_MixAudioFormat( + data, static_cast(buffer), _outputFormat.format, static_cast(dstLength), mixVolume); channel->UpdateOldVolume(); } /** * Resample the given buffer into _effectBuffer. - * Assumes that srcBuffer is the same format as _format. + * Assumes that srcBuffer is the same format as _outputFormat. */ size_t AudioMixer::ApplyResample( ISDLAudioChannel* channel, const void* srcBuffer, int32_t srcSamples, int32_t dstSamples, int32_t inRate, int32_t outRate) { - int32_t byteRate = _format.GetByteRate(); + int32_t byteRate = _outputFormat.GetByteRate(); // Create resampler SpeexResamplerState* resampler = channel->GetResampler(); if (resampler == nullptr) { - resampler = speex_resampler_init(_format.channels, _format.freq, _format.freq, 0, nullptr); + resampler = speex_resampler_init(_outputFormat.channels, _outputFormat.freq, _outputFormat.freq, 0, nullptr); channel->SetResampler(resampler); } speex_resampler_set_rate(resampler, inRate, outRate); @@ -280,9 +281,9 @@ size_t AudioMixer::ApplyResample( void AudioMixer::ApplyPan(const IAudioChannel* channel, void* buffer, size_t len, size_t sampleSize) { - if (channel->GetPan() != 0.5f && _format.channels == 2) + if (channel->GetPan() != 0.5f && _outputFormat.channels == 2) { - switch (_format.format) + switch (_outputFormat.format) { case AUDIO_S16SYS: EffectPanS16(channel, static_cast(buffer), static_cast(len / sampleSize)); @@ -331,8 +332,8 @@ int32_t AudioMixer::ApplyVolume(const IAudioChannel* channel, void* buffer, size mixVolume = kMixerVolumeMax; // Fade between volume levels to smooth out sound and minimize clicks from sudden volume changes - int32_t fadeLength = static_cast(len) / _format.BytesPerSample(); - switch (_format.format) + int32_t fadeLength = static_cast(len) / _outputFormat.BytesPerSample(); + switch (_outputFormat.format) { case AUDIO_S16SYS: EffectFadeS16(static_cast(buffer), fadeLength, startVolume, endVolume); diff --git a/src/openrct2-ui/audio/AudioMixer.h b/src/openrct2-ui/audio/AudioMixer.h index 549cb89b9198..7e4aaa782c96 100644 --- a/src/openrct2-ui/audio/AudioMixer.h +++ b/src/openrct2-ui/audio/AudioMixer.h @@ -33,7 +33,7 @@ namespace OpenRCT2::Audio std::vector> _sources; SDL_AudioDeviceID _deviceId = 0; - AudioFormat _format = {}; + AudioFormat _outputFormat = {}; std::list> _channels; float _volume = 1.0f; float _adjustSoundVolume = 0.0f; @@ -67,7 +67,7 @@ namespace OpenRCT2::Audio /** * Resample the given buffer into _effectBuffer. - * Assumes that srcBuffer is the same format as _format. + * Assumes that srcBuffer is the same format as _outputFormat. */ size_t ApplyResample( ISDLAudioChannel* channel, const void* srcBuffer, int32_t srcSamples, int32_t dstSamples, int32_t inRate, From 2ed1e8ef9009a54c5e7f1d31a293fe43db3a6e0d Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 15 Nov 2025 18:51:34 +0100 Subject: [PATCH 027/222] Rename byteRate to outputByteRate --- src/openrct2-ui/audio/AudioMixer.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/openrct2-ui/audio/AudioMixer.cpp b/src/openrct2-ui/audio/AudioMixer.cpp index aa69bd9ec145..856fbbca1b9b 100644 --- a/src/openrct2-ui/audio/AudioMixer.cpp +++ b/src/openrct2-ui/audio/AudioMixer.cpp @@ -173,8 +173,8 @@ void AudioMixer::UpdateAdjustedSound() void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t length) { - int32_t byteRate = _outputFormat.GetByteRate(); - auto numSamples = static_cast(length / byteRate); + int32_t outputByteRate = _outputFormat.GetByteRate(); + auto numSamples = static_cast(length / outputByteRate); double rate = 1; if (_outputFormat.format == AUDIO_S16SYS) { @@ -200,7 +200,7 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len // Read raw PCM from channel int32_t readSamples = numSamples * rate; - auto readLength = static_cast(readSamples / cvt.len_ratio) * byteRate; + auto readLength = static_cast(readSamples / cvt.len_ratio) * outputByteRate; _channelBuffer.resize(readLength); size_t bytesRead = channel->Read(_channelBuffer.data(), readLength); @@ -228,7 +228,7 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len // Apply effects if (rate != 1) { - auto inRate = static_cast(bufferLen / byteRate); + auto inRate = static_cast(bufferLen / outputByteRate); int32_t outRate = numSamples; if (bytesRead != readLength) { @@ -236,12 +236,13 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len outRate = _outputFormat.freq * (1 / rate); } _effectBuffer.resize(length); - bufferLen = ApplyResample(channel, buffer, static_cast(bufferLen / byteRate), numSamples, inRate, outRate); + bufferLen = ApplyResample( + channel, buffer, static_cast(bufferLen / outputByteRate), numSamples, inRate, outRate); buffer = _effectBuffer.data(); } // Apply panning and volume - ApplyPan(channel, buffer, bufferLen, byteRate); + ApplyPan(channel, buffer, bufferLen, outputByteRate); int32_t mixVolume = ApplyVolume(channel, buffer, bufferLen); // Finally mix on to destination buffer @@ -259,7 +260,7 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len size_t AudioMixer::ApplyResample( ISDLAudioChannel* channel, const void* srcBuffer, int32_t srcSamples, int32_t dstSamples, int32_t inRate, int32_t outRate) { - int32_t byteRate = _outputFormat.GetByteRate(); + int32_t outputByteRate = _outputFormat.GetByteRate(); // Create resampler SpeexResamplerState* resampler = channel->GetResampler(); @@ -276,7 +277,7 @@ size_t AudioMixer::ApplyResample( resampler, static_cast(srcBuffer), &inLen, reinterpret_cast(_effectBuffer.data()), &outLen); - return outLen * byteRate; + return outLen * outputByteRate; } void AudioMixer::ApplyPan(const IAudioChannel* channel, void* buffer, size_t len, size_t sampleSize) From 140fed1086f7f4c4b42963bd0f40d7c9831a4c2b Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sat, 15 Nov 2025 21:58:59 +0000 Subject: [PATCH 028/222] Fix virtual floor invalidating incorrectly if expanded on x and y axes --- distribution/changelog.txt | 1 + src/openrct2/paint/VirtualFloor.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 6e5fc577282f..334d3458c406 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -12,6 +12,7 @@ - Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. - Fix: [#25488] Crash in headless mode. - Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. +- Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. - Fix: [objects#401] Round tunnels on down slopes glitch. - Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. - Fix: [objects#408] Australian fountain sets have confusing naming. diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index 3df3fa28eda8..bf72fa6ffa13 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -138,7 +138,8 @@ void VirtualFloorInvalidate(const bool alwaysInvalidate) } // Do not invalidate new region if floor hasn't moved. - if (min_position == _virtualFloorLastMinPos && _virtualFloorLastMinPos.z == _virtualFloorHeight) + if (min_position == _virtualFloorLastMinPos && max_position == _virtualFloorLastMaxPos + && _virtualFloorLastMinPos.z == _virtualFloorHeight) { return; } From 7f346d6c45a7ea034fc5ce5b5816ee02adcd5c59 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 16 Nov 2025 13:55:44 +0100 Subject: [PATCH 029/222] Fix crackling when resampling audio --- distribution/changelog.txt | 1 + src/openrct2-ui/audio/AudioMixer.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 334d3458c406..6955bd52381a 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -13,6 +13,7 @@ - Fix: [#25488] Crash in headless mode. - Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. - Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. +- Fix: [#25519] Crackling audio when sampling frequencies do not match. - Fix: [objects#401] Round tunnels on down slopes glitch. - Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. - Fix: [objects#408] Australian fountain sets have confusing naming. diff --git a/src/openrct2-ui/audio/AudioMixer.cpp b/src/openrct2-ui/audio/AudioMixer.cpp index 856fbbca1b9b..a52acc7f73d6 100644 --- a/src/openrct2-ui/audio/AudioMixer.cpp +++ b/src/openrct2-ui/audio/AudioMixer.cpp @@ -200,7 +200,7 @@ void AudioMixer::MixChannel(ISDLAudioChannel* channel, uint8_t* data, size_t len // Read raw PCM from channel int32_t readSamples = numSamples * rate; - auto readLength = static_cast(readSamples / cvt.len_ratio) * outputByteRate; + auto readLength = static_cast(ceil(readSamples / cvt.len_ratio)) * outputByteRate; _channelBuffer.resize(readLength); size_t bytesRead = channel->Read(_channelBuffer.data(), readLength); From 5c8867098d3716459003e67526430eaad121b480 Mon Sep 17 00:00:00 2001 From: "Jonas (Elessar2)" Date: Sun, 16 Nov 2025 14:56:15 +0100 Subject: [PATCH 030/222] Fix #25028: Stalls can only use 1 colour preset Co-authored-by: Gymnasiast --- CMakeLists.txt | 4 ++-- contributors.md | 1 + distribution/changelog.txt | 1 + openrct2.deps.targets | 4 ++-- src/openrct2/actions/RideCreateAction.cpp | 23 ++++++++++++----------- src/openrct2/actions/RideCreateAction.h | 6 +++--- src/openrct2/network/NetworkBase.cpp | 2 +- src/openrct2/ride/Ride.cpp | 13 ++++++++----- src/openrct2/ride/Ride.h | 2 +- 9 files changed, 31 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d9b3c6e87bcf..9a8e0c8b5389 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,9 +70,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.26") set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip") set(TITLE_SEQUENCE_SHA256 "dabb9787b1576342fca4dd9f64b3f8cfa04a7e6ce9c2bb9610f47b762905c858") -set(OBJECTS_VERSION "1.7.4") +set(OBJECTS_VERSION "1.7.5") set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip") -set(OBJECTS_SHA256 "9fa6365450cd7fe4e71d5278d67a10e6526fcd0bb1ec60120dfc66a189ac8911") +set(OBJECTS_SHA256 "c8b9d3039a920f67caf15b09e8312cc4f80d59ed7fe0288625b9ccedef606797") set(OPENSFX_VERSION "1.0.6") set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip") diff --git a/contributors.md b/contributors.md index 395c051e5e79..53cd7ea96590 100644 --- a/contributors.md +++ b/contributors.md @@ -255,6 +255,7 @@ Appreciation for contributors who have provided substantial work, but are no lon * Garrett Leach (GarrettLeach) * Ruohao (Jater) Xu (jaterx) * Marcel Vos (MarcelVos96) +* Jonas Doggart ## Toolchain * (Balletie) - macOS diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 6955bd52381a..f0f73438d264 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.29 (in development) ------------------------------------------------------------------------ +- Improved: [#25028] Stalls now support colour presets, just like regular rides. - Improved: [#25426] Building the track designs index is now quicker. - Improved: [#25490] The ‘New Ride’ window can now be resized. - Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). diff --git a/openrct2.deps.targets b/openrct2.deps.targets index 3c015f2d035b..34aea9797e51 100644 --- a/openrct2.deps.targets +++ b/openrct2.deps.targets @@ -218,8 +218,8 @@ 490263b873dd02c13a043a04d26bb9837d2d378dacd8b2c8d29660fef44db3db https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.26/title-sequences.zip dabb9787b1576342fca4dd9f64b3f8cfa04a7e6ce9c2bb9610f47b762905c858 - https://github.com/OpenRCT2/objects/releases/download/v1.7.4/objects.zip - 9fa6365450cd7fe4e71d5278d67a10e6526fcd0bb1ec60120dfc66a189ac8911 + https://github.com/OpenRCT2/objects/releases/download/v1.7.5/objects.zip + c8b9d3039a920f67caf15b09e8312cc4f80d59ed7fe0288625b9ccedef606797 https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.6/opensound.zip 06b90f3e19c216752df441d551b26a9e3e1ba7755bdd2102504b73bf993608be https://github.com/OpenRCT2/OpenMusic/releases/download/v1.6.1/openmusic.zip diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index e4c210f1ac85..0d2d20fad12b 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -31,13 +31,13 @@ namespace OpenRCT2::GameActions { RideCreateAction::RideCreateAction( - ride_type_t rideType, ObjectEntryIndex subType, colour_t colour1, colour_t colour2, + ride_type_t rideType, ObjectEntryIndex subType, uint8_t trackColourPreset, uint8_t vehicleColourPreset, ObjectEntryIndex entranceObjectIndex) : _rideType(rideType) , _subType(subType) , _entranceObjectIndex(entranceObjectIndex) - , _colour1(colour1) - , _colour2(colour2) + , _trackColourPreset(trackColourPreset) + , _vehicleColourPreset(vehicleColourPreset) { } @@ -46,8 +46,8 @@ namespace OpenRCT2::GameActions visitor.Visit("rideType", _rideType); visitor.Visit("rideObject", _subType); visitor.Visit("entranceObject", _entranceObjectIndex); - visitor.Visit("colour1", _colour1); - visitor.Visit("colour2", _colour2); + visitor.Visit("colour1", _trackColourPreset); + visitor.Visit("colour2", _vehicleColourPreset); } ride_type_t RideCreateAction::GetRideType() const @@ -69,7 +69,8 @@ namespace OpenRCT2::GameActions { GameAction::Serialise(stream); - stream << DS_TAG(_rideType) << DS_TAG(_subType) << DS_TAG(_entranceObjectIndex) << DS_TAG(_colour1) << DS_TAG(_colour2); + stream << DS_TAG(_rideType) << DS_TAG(_subType) << DS_TAG(_entranceObjectIndex) << DS_TAG(_trackColourPreset) + << DS_TAG(_vehicleColourPreset); } Result RideCreateAction::Query(GameState_t& gameState) const @@ -95,9 +96,9 @@ namespace OpenRCT2::GameActions } const auto& colourPresets = GetRideTypeDescriptor(_rideType).ColourPresets; - if (_colour1 >= colourPresets.count) + if (_trackColourPreset >= colourPresets.count) { - LOG_ERROR("Can't create ride, invalid colour preset %d", _colour1); + LOG_ERROR("Can't create ride, invalid colour preset %d", _trackColourPreset); return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_ERR_INVALID_COLOUR); } @@ -109,7 +110,7 @@ namespace OpenRCT2::GameActions } const auto* presetList = rideEntry->vehicle_preset_list; - if ((presetList->count > 0 && presetList->count != 255) && _colour2 >= presetList->count) + if ((presetList->count > 0 && presetList->count != 255) && _vehicleColourPreset >= presetList->count) { return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } @@ -139,7 +140,7 @@ namespace OpenRCT2::GameActions ride->type = _rideType; ride->subtype = rideEntryIndex; - ride->setColourPreset(_colour1); + ride->setColourPreset(_trackColourPreset, _vehicleColourPreset); ride->overallView.SetNull(); ride->setNameToDefault(); @@ -288,7 +289,7 @@ namespace OpenRCT2::GameActions ride->mode = ride->getDefaultMode(); ride->minCarsPerTrain = rideEntry->min_cars_in_train; ride->maxCarsPerTrain = rideEntry->max_cars_in_train; - RideSetVehicleColoursToRandomPreset(*ride, _colour2); + RideSetVehicleColoursToRandomPreset(*ride, _vehicleColourPreset); auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::rideList); diff --git a/src/openrct2/actions/RideCreateAction.h b/src/openrct2/actions/RideCreateAction.h index fd881d981675..910bea53d614 100644 --- a/src/openrct2/actions/RideCreateAction.h +++ b/src/openrct2/actions/RideCreateAction.h @@ -19,13 +19,13 @@ namespace OpenRCT2::GameActions ride_type_t _rideType{ kRideTypeNull }; ObjectEntryIndex _subType{ kObjectEntryIndexNull }; ObjectEntryIndex _entranceObjectIndex{ kObjectEntryIndexNull }; - colour_t _colour1{ COLOUR_NULL }; - colour_t _colour2{ COLOUR_NULL }; + uint8_t _trackColourPreset{ COLOUR_NULL }; + uint8_t _vehicleColourPreset{ COLOUR_NULL }; public: RideCreateAction() = default; RideCreateAction( - ride_type_t rideType, ObjectEntryIndex subType, colour_t colour1, colour_t colour2, + ride_type_t rideType, ObjectEntryIndex subType, uint8_t trackColourPreset, uint8_t vehicleColourPreset, ObjectEntryIndex entranceStyleIndex); void AcceptParameters(GameActionParameterVisitor&) final; diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index cad46ba29e32..ac7e74469a81 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 2; +constexpr uint8_t kStreamVersion = 3; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index d344c755b7c0..0063e017d121 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -4347,7 +4347,7 @@ int32_t RideGetRandomColourPresetIndex(ride_type_t rideType) * * Based on rct2: 0x006B4776 */ -void Ride::setColourPreset(uint8_t index) +void Ride::setColourPreset(uint8_t trackColourPreset, uint8_t vehicleColourPreset) { const TrackColourPresetList* colourPresets = &getRideTypeDescriptor().ColourPresets; TrackColour colours = { COLOUR_BLACK, COLOUR_BLACK, COLOUR_BLACK }; @@ -4357,13 +4357,16 @@ void Ride::setColourPreset(uint8_t index) const auto* rideEntry = GetRideEntryByIndex(subtype); if (rideEntry != nullptr && rideEntry->vehicle_preset_list->count > 0) { - auto list = rideEntry->vehicle_preset_list->list[0]; - colours = { list.Body, list.Trim, list.Tertiary }; + if (vehicleColourPreset < rideEntry->vehicle_preset_list->count) + { + auto list = rideEntry->vehicle_preset_list->list[vehicleColourPreset]; + colours = { list.Body, list.Trim, list.Tertiary }; + } } } - else if (index < colourPresets->count) + else if (trackColourPreset < colourPresets->count) { - colours = colourPresets->list[index]; + colours = colourPresets->list[trackColourPreset]; } for (size_t i = 0; i < std::size(trackColours); i++) { diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index d544932ce68c..0fbab71c3d69 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -380,7 +380,7 @@ struct Ride RideMode getDefaultMode() const; - void setColourPreset(uint8_t index); + void setColourPreset(uint8_t trackColourPreset, uint8_t vehicleColourPreset); const RideObjectEntry* getRideEntry() const; From 6a5dd316a175934b7379a1bf0b66f4bc2e9fa8bc Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 16 Nov 2025 17:14:20 +0100 Subject: [PATCH 031/222] Allow dragging lines of walls --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Scenery.cpp | 230 +++++++++++++++++++++-- src/openrct2/actions/WallPlaceAction.cpp | 2 +- src/openrct2/network/NetworkBase.cpp | 2 +- 4 files changed, 220 insertions(+), 15 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index f0f73438d264..ee9881f99c5c 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.29 (in development) ------------------------------------------------------------------------ +- Feature: [#25459] Wall line dragging tool. - Improved: [#25028] Stalls now support colour presets, just like regular rides. - Improved: [#25426] Building the track designs index is now quicker. - Improved: [#25490] The ‘New Ride’ window can now be resized. diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 5e928b5f46a4..c3d3892c0642 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -206,6 +207,12 @@ namespace OpenRCT2::Ui::Windows } }; + struct ProvisionalWallTile + { + CoordsXYZD location; + int32_t calculatedZ; + }; + std::vector _tabEntries; int32_t _requiredWidth; int32_t _actualMinHeight; @@ -216,6 +223,18 @@ namespace OpenRCT2::Ui::Windows uint8_t _unkF64F0E{ 0 }; int16_t _unkF64F0A{ 0 }; + CoordsXY _dragStartPos{}; + /** + * When placing fences in the air using Shift, the user may shift their mouse to the left or right. + * We save this position to avoid detecting a wall drag where there isn’t one. + */ + CoordsXY _dragStartHoverPos{}; + CoordsXY _dragEndPos{}; + uint8_t _startEdge{}; + GameActions::Result _lastProvisionalError{}; + bool _inDragMode = false; + std::vector _provisionalTiles{}; + public: void onOpen() override { @@ -255,6 +274,7 @@ namespace OpenRCT2::Ui::Windows void onClose() override { SceneryRemoveGhostToolPlacement(); + removeProvisionalTilesFromMap(); HideGridlines(); ViewportSetVisibility(ViewportVisibility::standard); @@ -1814,6 +1834,13 @@ namespace OpenRCT2::Ui::Windows void onToolUpdateWall(WidgetIndex widgetIndex, const ScreenCoordsXY& screenPos, ScenerySelection selection) { + bool isLeftMousePressed = gInputFlags.has(InputFlag::leftMousePressed); + if (isLeftMousePressed) + { + gMapSelectFlags.set(MapSelectFlag::enable); + return; + } + CoordsXY mapTile = {}; uint8_t edge; @@ -1826,10 +1853,7 @@ namespace OpenRCT2::Ui::Windows } gMapSelectFlags.set(MapSelectFlag::enable); - gMapSelectPositionA.x = mapTile.x; - gMapSelectPositionA.y = mapTile.y; - gMapSelectPositionB.x = mapTile.x; - gMapSelectPositionB.y = mapTile.y; + setMapSelectRange(mapTile); gMapSelectType = getMapSelectEdge(edge); MapInvalidateSelectionRect(); @@ -2717,6 +2741,8 @@ namespace OpenRCT2::Ui::Windows if (gridPos.IsNull()) return; + gridPos = gridPos.ToTileStart(); + if (Config::Get().general.virtualFloorStyle != VirtualFloorStyles::Off) { VirtualFloorSetHeight(gSceneryPlaceZ); @@ -3027,6 +3053,31 @@ namespace OpenRCT2::Ui::Windows auto res = GameActions::Execute(&footpathAdditionPlaceAction, gameState); } + std::optional getMapPosFromScreenPos(const ScreenCoordsXY& screenCoords) + { + CoordsXY coords; + if (gSceneryPlaceZ > 0) + { + auto candidate = ScreenGetMapXYWithZ(screenCoords, gSceneryPlaceZ); + if (!candidate.has_value()) + return std::nullopt; + + coords = *candidate; + } + else + { + auto info = GetMapCoordinatesFromPos(screenCoords, EnumsToFlags(ViewportInteractionItem::terrain)); + + if (info.interactionType == ViewportInteractionItem::none) + return std::nullopt; + + coords = info.Loc; + } + + coords = coords.ToTileStart(); + return coords; + } + void onToolDownWall(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords, uint16_t selectedScenery) { CoordsXY gridPos; @@ -3068,19 +3119,165 @@ namespace OpenRCT2::Ui::Windows } } - auto wallPlaceAction = GameActions::WallPlaceAction( - selectedScenery, { gridPos, gSceneryPlaceZ }, edges, _sceneryPrimaryColour, _scenerySecondaryColour, - _sceneryTertiaryColour); + _inDragMode = true; + _dragStartPos = gridPos; + auto hoverPos = getMapPosFromScreenPos(screenCoords); + _dragStartHoverPos = hoverPos.has_value() ? *hoverPos : gridPos; + _dragEndPos = {}; + _startEdge = edges; + gMapSelectFlags.set(MapSelectFlag::enable); + gMapSelectType = getMapSelectEdge(_startEdge); + setMapSelectRange(gridPos); + } - wallPlaceAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + void dragWallSetEndPos(const ScreenCoordsXY& screenCoords) + { + auto endCoords = getMapPosFromScreenPos(screenCoords); + if (!endCoords.has_value()) + return; + + if (endCoords == _dragStartHoverPos) + { + endCoords = _dragStartPos; + } + + const bool onXAxis = (_startEdge == 1 || _startEdge == 3); + if (onXAxis) + { + endCoords->y = _dragStartPos.y; + } + else + { + endCoords->x = _dragStartPos.x; + } + + if (*endCoords != _dragEndPos) + { + setMapSelectRange({ _dragStartPos, *endCoords }); + updateProvisionalTiles(); + } + _dragEndPos = *endCoords; + } + + void removeProvisionalTilesFromMap() + { + auto& gameState = getGameState(); + for (const auto& tile : _provisionalTiles) + { + auto location = tile.location; + location.z = tile.calculatedZ; + auto wallRemoveAction = GameActions::WallRemoveAction(location); + wallRemoveAction.SetFlags( + GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + wallRemoveAction.Execute(gameState); + } + } + + void updateProvisionalTiles() + { + auto& gameState = getGameState(); + auto tabSelection = WindowSceneryGetTabSelection(); + removeProvisionalTilesFromMap(); + + _provisionalTiles.clear(); + _lastProvisionalError = {}; + + auto mapRange = getMapSelectRange(); + for (auto y = mapRange.GetY1(); y <= mapRange.GetY2(); y += kCoordsXYStep) + { + for (auto x = mapRange.GetX1(); x <= mapRange.GetX2(); x += kCoordsXYStep) { - Audio::Play3D(Audio::SoundId::placeItem, result->Position); + auto wallPlaceAction = GameActions::WallPlaceAction( + tabSelection.EntryIndex, { x, y, gSceneryPlaceZ }, _startEdge, _sceneryPrimaryColour, + _scenerySecondaryColour, _sceneryTertiaryColour); + wallPlaceAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + + auto result = GameActions::Execute(&wallPlaceAction, gameState); + if (result.Error == GameActions::Status::Ok) + { + const auto placementData = result.GetData(); + _provisionalTiles.push_back({ CoordsXYZD(x, y, gSceneryPlaceZ, _startEdge), placementData.BaseHeight }); + } + else + { + _lastProvisionalError = result; + } } - }); + } + } - auto& gameState = getGameState(); - auto res = GameActions::Execute(&wallPlaceAction, gameState); + void onToolDragWall(const ScreenCoordsXY& screenCoords) + { + if (!_inDragMode) + return; + + dragWallSetEndPos(screenCoords); + } + + void onToolUp(WidgetIndex, const ScreenCoordsXY&) override + { + if (_sceneryPaintEnabled || gWindowSceneryEyedropperEnabled) + return; + + auto tabSelection = WindowSceneryGetTabSelection(); + auto sceneryType = tabSelection.SceneryType; + if (sceneryType == SCENERY_TYPE_WALL) + { + onToolUpWall(tabSelection.EntryIndex); + } + } + + void onToolUpWall(uint16_t selectedScenery) + { + removeProvisionalTilesFromMap(); + + if (!_inDragMode) + { + _provisionalTiles.clear(); + return; + } + + if (_provisionalTiles.empty()) + { + auto z = gSceneryPlaceZ > 0 ? gSceneryPlaceZ : TileElementHeight(_dragStartPos); + Audio::Play3D(Audio::SoundId::error, { _dragStartPos, z }); + + if (_lastProvisionalError.Error != GameActions::Status::Ok) + { + auto windowManager = Ui::GetWindowManager(); + windowManager->ShowError( + _lastProvisionalError.GetErrorTitle(), _lastProvisionalError.GetErrorMessage(), true); + } + + _inDragMode = false; + return; + } + + auto mapRange = getMapSelectRange(); + bool anySuccessful = false; + CoordsXYZ lastLocation = { mapRange.Point2, gSceneryPlaceZ }; + for (const auto& tile : _provisionalTiles) + { + auto wallPlaceAction = GameActions::WallPlaceAction( + selectedScenery, tile.location, tile.location.direction, _sceneryPrimaryColour, _scenerySecondaryColour, + _sceneryTertiaryColour); + + auto& gameState = getGameState(); + auto result = GameActions::Execute(&wallPlaceAction, gameState); + if (result.Error == GameActions::Status::Ok) + { + anySuccessful = true; + lastLocation = result.Position; + } + } + + _provisionalTiles.clear(); + _inDragMode = false; + + if (anySuccessful) + { + Audio::Play3D(Audio::SoundId::placeItem, lastLocation); + } } void onToolDownLargeScenery(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords, uint16_t selectedScenery) @@ -3223,6 +3420,13 @@ namespace OpenRCT2::Ui::Windows { if (_sceneryPaintEnabled || gWindowSceneryEyedropperEnabled) onToolDown(widgetIndex, screenCoords); + + auto tabSelection = WindowSceneryGetTabSelection(); + auto sceneryType = tabSelection.SceneryType; + if (sceneryType == SCENERY_TYPE_WALL) + { + onToolDragWall(screenCoords); + } } }; diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 68ebf70c4736..7945788ac424 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -268,7 +268,7 @@ namespace OpenRCT2::GameActions res.Cost = wallEntry->price; - res.SetData(WallPlaceActionResult{}); + res.SetData(WallPlaceActionResult{ targetHeight }); return res; } diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index ac7e74469a81..69b9f4279050 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 3; +constexpr uint8_t kStreamVersion = 4; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From b72b82445ebbbb942b8fafe7bfa364a37ef57d6b Mon Sep 17 00:00:00 2001 From: Conrad Kostecki Date: Sun, 16 Nov 2025 23:04:10 +0100 Subject: [PATCH 032/222] GCC16 fixes (Missing #include ) (#25533) * ReplayManager.h: Include (GCC16 fix) Closes: https://github.com/OpenRCT2/OpenRCT2/issues/25522 * Crypt.h: Include (GCC16 fix) * Zip.h: Include (GCC16 fix) * NetworkKey.h: Include (GCC16 fix) * AudioMixer.h: Include (GCC16 fix) * NetworkServerAdvertiser.h: Include (GCC16 fix) --- src/openrct2/ReplayManager.h | 1 + src/openrct2/audio/AudioMixer.h | 1 + src/openrct2/core/Crypt.h | 1 + src/openrct2/core/Zip.h | 1 + src/openrct2/network/NetworkKey.h | 1 + src/openrct2/network/NetworkServerAdvertiser.h | 1 + 6 files changed, 6 insertions(+) diff --git a/src/openrct2/ReplayManager.h b/src/openrct2/ReplayManager.h index c2286bf62fe1..d3f3a98bc0bf 100644 --- a/src/openrct2/ReplayManager.h +++ b/src/openrct2/ReplayManager.h @@ -9,6 +9,7 @@ #pragma once +#include #include #include #include diff --git a/src/openrct2/audio/AudioMixer.h b/src/openrct2/audio/AudioMixer.h index f59d87adefb4..0c09d99c4ebd 100644 --- a/src/openrct2/audio/AudioMixer.h +++ b/src/openrct2/audio/AudioMixer.h @@ -9,6 +9,7 @@ #pragma once +#include #include namespace OpenRCT2::Audio diff --git a/src/openrct2/core/Crypt.h b/src/openrct2/core/Crypt.h index 8694683c3ebe..d6f02e76e3be 100644 --- a/src/openrct2/core/Crypt.h +++ b/src/openrct2/core/Crypt.h @@ -10,6 +10,7 @@ #pragma once #include +#include #include #include #include diff --git a/src/openrct2/core/Zip.h b/src/openrct2/core/Zip.h index b8c3c656ca17..d1c811bc6781 100644 --- a/src/openrct2/core/Zip.h +++ b/src/openrct2/core/Zip.h @@ -9,6 +9,7 @@ #pragma once +#include #include #include #include diff --git a/src/openrct2/network/NetworkKey.h b/src/openrct2/network/NetworkKey.h index 3e329882c7cb..f46224bce45f 100644 --- a/src/openrct2/network/NetworkKey.h +++ b/src/openrct2/network/NetworkKey.h @@ -11,6 +11,7 @@ #ifndef DISABLE_NETWORK + #include #include #include #include diff --git a/src/openrct2/network/NetworkServerAdvertiser.h b/src/openrct2/network/NetworkServerAdvertiser.h index 7738df9b3419..1b48717e61e7 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.h +++ b/src/openrct2/network/NetworkServerAdvertiser.h @@ -9,6 +9,7 @@ #pragma once +#include #include namespace OpenRCT2::Network From ff658b8f2fcb41c30121b5a3b6b05d988d526aaf Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Tue, 18 Nov 2025 04:03:25 +0000 Subject: [PATCH 033/222] Merge Localisation/master into OpenRCT2/develop --- data/language/cs-CZ.txt | 3 ++- data/language/ko-KR.txt | 1 + data/language/ru-RU.txt | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/data/language/cs-CZ.txt b/data/language/cs-CZ.txt index 20a55de9ba95..0e0f6e254d4d 100644 --- a/data/language/cs-CZ.txt +++ b/data/language/cs-CZ.txt @@ -3846,4 +3846,5 @@ STR_7003 :Zvukový soubor ‘{STRING}’ je zkrácený. Očekáván sample {I STR_7004 :Vynutit překresl. (force redraw) STR_7005 :Stavět cesty v oblasti označené tažením STR_7006 :Vykreslit okraje tlačítek s obrázky -STR_7007 :Typ atrakce \ No newline at end of file +STR_7007 :Typ atrakce +STR_7008 :Neznámá atrakce ({INT32}) \ No newline at end of file diff --git a/data/language/ko-KR.txt b/data/language/ko-KR.txt index f20d6df97401..0c9dbe28593f 100644 --- a/data/language/ko-KR.txt +++ b/data/language/ko-KR.txt @@ -3846,3 +3846,4 @@ STR_7004 :강제 화면 갱신 STR_7005 :드래그로 보도 건설 STR_7006 :버튼 주위에 경계선 표시 STR_7007 :놀이기구 종류 +STR_7008 :알 수 없는 놀이기구 종류 ({INT32}) diff --git a/data/language/ru-RU.txt b/data/language/ru-RU.txt index 49d5ddcd5362..819d81cccfb8 100644 --- a/data/language/ru-RU.txt +++ b/data/language/ru-RU.txt @@ -3830,3 +3830,4 @@ STR_7003 :Аудио-файл «{STRING}» повреждён. Ожидало STR_7004 :Полная перерисовка STR_7006 :Бордюр на кнопках с изображениями STR_7007 :Тип аттр. +STR_7008 :Неизвестный аттракцион ({INT32}) From 6487ddb1081eea9ec2668d8581cc61578e8c9046 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Fri, 21 Nov 2025 04:02:37 +0000 Subject: [PATCH 034/222] Merge Localisation/master into OpenRCT2/develop --- data/language/ar-EG.txt | 9 --------- data/language/ca-ES.txt | 9 --------- data/language/cs-CZ.txt | 9 --------- data/language/da-DK.txt | 9 --------- data/language/de-DE.txt | 9 --------- data/language/eo-ZZ.txt | 9 --------- data/language/es-ES.txt | 9 --------- data/language/fi-FI.txt | 9 --------- data/language/fr-FR.txt | 9 --------- data/language/gl-ES.txt | 9 --------- data/language/hu-HU.txt | 9 --------- data/language/it-IT.txt | 9 --------- data/language/ja-JP.txt | 9 --------- data/language/ko-KR.txt | 9 --------- data/language/nb-NO.txt | 9 --------- data/language/nl-NL.txt | 9 --------- data/language/pl-PL.txt | 9 --------- data/language/pt-BR.txt | 9 --------- data/language/ru-RU.txt | 9 --------- data/language/sv-SE.txt | 9 --------- data/language/tr-TR.txt | 9 --------- data/language/uk-UA.txt | 9 --------- data/language/vi-VN.txt | 9 --------- data/language/zh-CN.txt | 9 --------- data/language/zh-TW.txt | 9 --------- 25 files changed, 225 deletions(-) diff --git a/data/language/ar-EG.txt b/data/language/ar-EG.txt index d42744b9901f..3949c3e45a68 100644 --- a/data/language/ar-EG.txt +++ b/data/language/ar-EG.txt @@ -32,12 +32,9 @@ STR_0027 :السيارات المتصادمة STR_0028 :سفينة القراصنة STR_0029 :سفينة متأرجحة عكسية STR_0030 :كشك الطعام -STR_0031 :كشك غير معروف (1D) STR_0032 :كشك الشرب -STR_0033 :كشك غير معروف (1F) STR_0034 :متجر STR_0035 :أفعوانية الخيل -STR_0036 :كشك غير معروف (22) STR_0037 :منصة المعلومات STR_0038 :غرفة الإستراحة STR_0039 :عجلة فيريس @@ -83,16 +80,10 @@ STR_0078 :إفعوانية منعطفه حاده معكوسة STR_0079 :السجادة السحرية STR_0080 :رحلة بالغواصة STR_0081 :طوافات النهر -STR_0082 :رحلة غير معروفة (50) STR_0083 :مغامرة -STR_0084 :رحلة غير معروفة (52) -STR_0085 :رحلة غير معروفة (53) -STR_0086 :رحلة غير معروفة (54) -STR_0087 :رحلة غير معروفة (55) STR_0088 :إفعوانية دافعة معكوسة STR_0089 :إفعوانية دائرية مصغرة STR_0090 :رحلة مصغرة -STR_0091 :رحلة غير معروفة (59) STR_0092 :LIM أفعوانية مُطلقة بواسطة STR_0093 :أفعوانية هجينة STR_0094 :أفعوانية سكة حديدية مفردة diff --git a/data/language/ca-ES.txt b/data/language/ca-ES.txt index aaf3de8e1682..aff7bbf8c55a 100644 --- a/data/language/ca-ES.txt +++ b/data/language/ca-ES.txt @@ -32,12 +32,9 @@ STR_0027 :Cotxes de xoc STR_0028 :Vaixell amb balanceig STR_0029 :Vaixell amb balanceig i inversió STR_0030 :Estand de menjar -STR_0031 :Estand desconegut (1D) STR_0032 :Estand de begudes -STR_0033 :Estand desconegut (1F) STR_0034 :Tenda STR_0035 :Cavallets -STR_0036 :Estand desconegut (22) STR_0037 :Quiosc d’informació STR_0038 :Lavabos STR_0039 :Roda de fira @@ -83,16 +80,10 @@ STR_0078 :Forquilla invertida STR_0079 :Catifa màgica STR_0080 :Viatge submarí STR_0081 :Barques soleres -STR_0082 :Atracció desconeguda (50) STR_0083 :Enterprise -STR_0084 :Atracció desconeguda (52) -STR_0085 :Atracció desconeguda (53) -STR_0086 :Atracció desconeguda (54) -STR_0087 :Atracció desconeguda (55) STR_0088 :Muntanya russa d’impuls invers STR_0089 :Minimuntanya russa STR_0090 :La mina -STR_0091 :Atracció desconeguda (59) STR_0092 :Muntanya russa d’impuls LIM STR_0093 :Muntanya russa híbrida STR_0094 :Muntanya russa d’un sol rail diff --git a/data/language/cs-CZ.txt b/data/language/cs-CZ.txt index 0e0f6e254d4d..9459f71a5506 100644 --- a/data/language/cs-CZ.txt +++ b/data/language/cs-CZ.txt @@ -32,12 +32,9 @@ STR_0027 :Autodrom STR_0028 :Pirátská loď STR_0029 :Houpající se obrácená loď STR_0030 :Stánek s jídlem -STR_0031 :Neznámý obchod (1D) STR_0032 :Stánek s pitím -STR_0033 :Neznámý obchod (1F) STR_0034 :Obchod STR_0035 :Kolotoč -STR_0036 :Neznámý obchod (22) STR_0037 :Informační kiosek STR_0038 :Toalety STR_0039 :Ruské kolo @@ -83,16 +80,10 @@ STR_0078 :Ostrá zavěšená horská dráha STR_0079 :Kouzelný koberec STR_0080 :Podmořská jízda STR_0081 :Říční vory -STR_0082 :Neznámá atrakce (50) STR_0083 :Loď Enterprise -STR_0084 :Neznámá atrakce (52) -STR_0085 :Neznámá atrakce (53) -STR_0086 :Neznámá atrakce (54) -STR_0087 :Neznámá atrakce (55) STR_0088 :Otočená impulsní dráha STR_0089 :Malá horská dráha STR_0090 :Mini dráha -STR_0091 :Neznámá atrakce (59) STR_0092 :LIM horská dráha STR_0093 :Hybridní horská dráha STR_0094 :Jednokolejná horská dráha diff --git a/data/language/da-DK.txt b/data/language/da-DK.txt index 5183b13c5dbb..920523f90b64 100644 --- a/data/language/da-DK.txt +++ b/data/language/da-DK.txt @@ -32,12 +32,9 @@ STR_0027 :Radiobiler STR_0028 :Svingende Skib STR_0029 :Svingende Inverteret Skib STR_0030 :Madbod -STR_0031 :Ukendt Bod (1D) STR_0032 :Drikkebod -STR_0033 :Ukendt Bod (1F) STR_0034 :Butik STR_0035 :Karrusel -STR_0036 :Ukendt Bod (22) STR_0037 :Informations Kiosk STR_0038 :Toiletter STR_0039 :Pariserhjul @@ -83,16 +80,10 @@ STR_0078 :Inverteret Hårnåls Rutschebane STR_0079 :Flyvende Tæppe STR_0080 :Ubåds Forlystelse STR_0081 :River Rafts -STR_0082 :Ukendt Forlystelse (50) STR_0083 :Enterprise -STR_0084 :Ukendt Forlystelse (52) -STR_0085 :Ukendt Forlystelse (53) -STR_0086 :Ukendt Forlystelse (54) -STR_0087 :Ukendt Forlystelse (55) STR_0088 :Inverteret Impuls Rutschebane STR_0089 :Mini Rutschebane STR_0090 :Mine Forlystelse -STR_0091 :Ukendt Forlystelse (59) STR_0092 :LIM Accelereret Rutschebane STR_0093 :Hybrid Rutschebane STR_0094 :Enkelt skinde rutchebane diff --git a/data/language/de-DE.txt b/data/language/de-DE.txt index a3e27efa190f..00a606a774bc 100644 --- a/data/language/de-DE.txt +++ b/data/language/de-DE.txt @@ -32,12 +32,9 @@ STR_0027 :Autoscooter STR_0028 :Piratenschiff STR_0029 :Schwingendes Überkopfschiff STR_0030 :Imbissstand -STR_0031 :Unbekannter Stand (1D) STR_0032 :Getränkestand -STR_0033 :Unbekannter Stand (1F) STR_0034 :Stand STR_0035 :Karussell -STR_0036 :Stand STR_0037 :Kiosk STR_0038 :Toiletten STR_0039 :Riesenrad @@ -83,16 +80,10 @@ STR_0078 :Umgekehrte Haarnadelbahn STR_0079 :Fliegender Teppich STR_0080 :U-Boot-Fahrt STR_0081 :Floße -STR_0082 :Unbekannte Bahn (50) STR_0083 :Enterprise -STR_0084 :Unbekannte Bahn (52) -STR_0085 :Unbekannte Bahn (53) -STR_0086 :Unbekannte Bahn (54) -STR_0087 :Unbekannte Bahn (55) STR_0088 :Umgekehrte Impuls-Bahn STR_0089 :Miniachterbahn STR_0090 :Minenbahn -STR_0091 :Unbekannte Bahn (59) STR_0092 :LIM-Achterbahn STR_0093 :Hybridachterbahn STR_0094 :Einschienenachterbahn diff --git a/data/language/eo-ZZ.txt b/data/language/eo-ZZ.txt index 2450198ae738..71208c01413c 100644 --- a/data/language/eo-ZZ.txt +++ b/data/language/eo-ZZ.txt @@ -32,12 +32,9 @@ STR_0027 :Doĝemoj STR_0028 :Svingiĝanta Ŝipo STR_0029 :Svingiĝanta Inversiĝanta Ŝipo STR_0030 :Manĝaĵbudo -STR_0031 :Nekonata Budo (1D) STR_0032 :Trinkaĵbudo -STR_0033 :Nekonata Budo (1F) STR_0034 :Vendejo STR_0035 :Karuselo -STR_0036 :Nekonata Budo (22) STR_0037 :Informokiosko STR_0038 :Necesejo STR_0039 :Spektoradego @@ -83,16 +80,10 @@ STR_0078 :Inversigita Onda Fervojo kun Harpingloformaj Kurboj STR_0079 :Magia Tapiŝo STR_0080 :Submarŝiprajdo STR_0081 :Riverflosoj -STR_0082 :Nekonata Atrakcio (50) STR_0083 :Centrifugilo -STR_0084 :Nekonata Atrakcio (52) -STR_0085 :Nekonata Atrakcio (53) -STR_0086 :Nekonata Atrakcio (54) -STR_0087 :Nekonata Atrakcio (55) STR_0088 :Inversigita Lanĉita Onda Fervojo STR_0089 :Miniatura Onda Fervojo STR_0090 :Minrajdo -STR_0091 :Nekonata Atrakcio (59) STR_0092 :Onda Fervojo Lanĉita per Linearaj Induktaj Motoroj STR_0093 :Hibrida Onda Fervojo STR_0094 :Onda Fervojo kun Unuopa Relo diff --git a/data/language/es-ES.txt b/data/language/es-ES.txt index bb9733443852..4818e88f7bf7 100644 --- a/data/language/es-ES.txt +++ b/data/language/es-ES.txt @@ -32,12 +32,9 @@ STR_0027 :Coches de Choque STR_0028 :Barco Pirata STR_0029 :Barco Balancín Invertido STR_0030 :Puesto de comida -STR_0031 :Puesto Desconocido (1D) STR_0032 :Puesto de Bebidas -STR_0033 :Puesto Desconocido (1F) STR_0034 :Tienda STR_0035 :Tiovivo -STR_0036 :Puesto Desconocido (22) STR_0037 :Quiosco de Información STR_0038 :Baños STR_0039 :Rueda Gigante @@ -83,16 +80,10 @@ STR_0078 :Horquilla invertida STR_0079 :Alfombra Mágica STR_0080 :Viaje Submarino STR_0081 :Balsas de Río -STR_0082 :Atracc. Desconocida (50) STR_0083 :Enterprise -STR_0084 :Atracc. Desconocida (52) -STR_0085 :Atracc. Desconocida (53) -STR_0086 :Atracc. Desconocida (54) -STR_0087 :Atracc. Desconocida (55) STR_0088 :Montaña Rusa Impulso Inverso STR_0089 :Mini Montaña Rusa STR_0090 :Trenes Mineros -STR_0091 :Atracc. Desconocida (59) STR_0092 :Montaña Rusa acelerada por LIM STR_0093 :Montaña Rusa Híbrida STR_0094 :Montaña Rusa de un solo carril diff --git a/data/language/fi-FI.txt b/data/language/fi-FI.txt index daa597ce7698..b8e1c9491e36 100644 --- a/data/language/fi-FI.txt +++ b/data/language/fi-FI.txt @@ -32,12 +32,9 @@ STR_0027 :Törmäilyautot STR_0028 :Merirosvolaiva STR_0029 :Kieppuva merirosvolaiva STR_0030 :Ruokakoju -STR_0031 :Tuntematon koju (1D) STR_0032 :Juomakoju -STR_0033 :Tuntematon koju (1F) STR_0034 :Kauppa STR_0035 :Karuselli -STR_0036 :Tuntematon koju (22) STR_0037 :Infokioski STR_0038 :Vessa STR_0039 :Maailmanpyörä @@ -83,17 +80,11 @@ STR_0078 :Käänteinen hiusneularata STR_0079 :Taikamatto STR_0080 :Sukellusveneajelu STR_0081 :Jokilautat -STR_0082 :Tuntematon laite (50) # 0083 is a name, and can't be translated. The ride itself was named after USS Enterprise from star trek, see wikipedia. STR_0083 :Enterprise -STR_0084 :Tuntematon laite (52) -STR_0085 :Tuntematon laite (53) -STR_0086 :Tuntematon laite (54) -STR_0087 :Tuntematon laite (55) STR_0088 :Käänteinen impulssirata STR_0089 :Minivuoristorata STR_0090 :Kaivosajelu -STR_0091 :Tuntematon laite (59) STR_0092 :Laukaisuvuoristorata STR_0093 :Hybridivuoristorata STR_0094 :Yksikiskoinen vuoristorata diff --git a/data/language/fr-FR.txt b/data/language/fr-FR.txt index 7b0292da80ca..88a01d4a5858 100644 --- a/data/language/fr-FR.txt +++ b/data/language/fr-FR.txt @@ -34,12 +34,9 @@ STR_0027 :Autos tamponneuses STR_0028 :Bateau pirate STR_0029 :Bateau renverseur STR_0030 :Stand de nourriture -STR_0031 :Stand inconnu (1D) STR_0032 :Stand de boissons -STR_0033 :Stand inconnu (1F) STR_0034 :Boutique STR_0035 :Carrousel -STR_0036 :Stand inconnu (22) STR_0037 :Kiosque d’information STR_0038 :Toilettes STR_0039 :Grande roue @@ -85,16 +82,10 @@ STR_0078 :Epingle à cheveux inversée STR_0079 :Tapis volant STR_0080 :Balade sous-marine STR_0081 :Radeau -STR_0082 :Manège Inconnu (50) STR_0083 :Entreprise -STR_0084 :Manège Inconnu (52) -STR_0085 :Manège Inconnu (53) -STR_0086 :Manège Inconnu (54) -STR_0087 :Manège Inconnu (55) STR_0088 :Impulsion inversée STR_0089 :Mini-montagnes russes STR_0090 :Mineur -STR_0091 :Manège Inconnu (59) STR_0092 :Moteur à induction linéaire STR_0093 :Montagnes russes hybrides STR_0094 :Montagnes russes à rail unique diff --git a/data/language/gl-ES.txt b/data/language/gl-ES.txt index 4df3ef1cd7fa..144166c6376e 100644 --- a/data/language/gl-ES.txt +++ b/data/language/gl-ES.txt @@ -32,12 +32,9 @@ STR_0027 :Coches de choque STR_0028 :Barco pirata STR_0029 :Barco basculante invertido STR_0030 :posto de comida -STR_0031 :Posto descoñecido (1D) STR_0032 :Posto de bebidas -STR_0033 :Posto descoñecido (1F) STR_0034 :Tenda STR_0035 :Carrusel -STR_0036 :Posto descoñecido (22) STR_0037 :Quiosco de información STR_0038 :Aseos STR_0039 :Nora @@ -83,16 +80,10 @@ STR_0078 :Montaña Rusa de Prendedor invertido STR_0079 :Alfombra máxica STR_0080 :Viaxe submarina STR_0081 :Balsas fluviais -STR_0082 :Atracción Descoñecida (50) STR_0083 :Enterprise -STR_0084 :Atracción Descoñecida (52) -STR_0085 :Atracción Descoñecida (53) -STR_0086 :Atracción Descoñecida (54) -STR_0087 :Atracción Descoñecida (55) STR_0088 :Montaña rusa de impulso inverso STR_0089 :Mini montaña rusa STR_0090 :Atracción da mina -STR_0091 :Atracción Descoñecida (59) STR_0092 :Montaña Rusa Lanzada por MIL STR_0093 :Montaña Rusa Híbrida STR_0094 :Montaña rusa dun só raíl diff --git a/data/language/hu-HU.txt b/data/language/hu-HU.txt index 5608e22260bc..94ee3b9fbeef 100644 --- a/data/language/hu-HU.txt +++ b/data/language/hu-HU.txt @@ -32,12 +32,9 @@ STR_0027 :Dodzsem STR_0028 :Hajóhinta STR_0029 :Fejreálló hajóhinta STR_0030 :Ételes bódé -STR_0031 :Ismeretlen bódé (1D) STR_0032 :Italos bódé -STR_0033 :Ismeretlen bódé (1F) STR_0034 :Bolt STR_0035 :Körhinta -STR_0036 :Ismeretlen bódé (22) STR_0037 :Információs bódé STR_0038 :WC STR_0039 :Óriáskerék @@ -83,16 +80,10 @@ STR_0078 :Fordított hajtű hullámvasút STR_0079 :Varázsszőnyeg STR_0080 :Tengeralattjáró-játék STR_0081 :Folyami tutajok -STR_0082 :Ismeretlen játék (50) STR_0083 :Enterprise -STR_0084 :Ismeretlen játék (52) -STR_0085 :Ismeretlen játék (53) -STR_0086 :Ismeretlen játék (54) -STR_0087 :Ismeretlen játék (55) STR_0088 :Fordított impulzus hullámvasút STR_0089 :Mini hullámvasút STR_0090 :Bányavasút -STR_0091 :Ismeretlen játék (59) STR_0092 :Aszinkronmotoros hullámvasút STR_0093 :Hibrid hullámvasút STR_0094 :Egysínű hullámvasút diff --git a/data/language/it-IT.txt b/data/language/it-IT.txt index 3f90ee919d68..d8a9985cea74 100644 --- a/data/language/it-IT.txt +++ b/data/language/it-IT.txt @@ -32,12 +32,9 @@ STR_0027 :Autoscontri STR_0028 :Nave dei pirati STR_0029 :Nave oscillante invertita STR_0030 :Chiosco del cibo -STR_0031 :Chiosco sconosciuto (1D) STR_0032 :Chiosco delle bibite -STR_0033 :Chiosco sconosciuto (1F) STR_0034 :Chiosco STR_0035 :Giostra -STR_0036 :Chiosco sconosciuto (22) STR_0037 :Chiosco STR_0038 :Servizi igienici STR_0039 :Ruota panoramica @@ -83,16 +80,10 @@ STR_0078 :Ottovolante sottile invertito STR_0079 :Tappeto magico STR_0080 :Corsa sottomarina STR_0081 :River Rafts -STR_0082 :Attrazione sconosciuta (50) STR_0083 :Enterprise -STR_0084 :Attrazione sconosciuta (52) -STR_0085 :Attrazione sconosciuta (53) -STR_0086 :Attrazione sconosciuta (54) -STR_0087 :Attrazione sconosciuta (55) STR_0088 :Ottovolante invertito a impulso STR_0089 :Mini-ottovolante STR_0090 :Corsa nella miniera -STR_0091 :Attrazione sconosciuta (59) STR_0092 :Ottovolante a lancio MIL STR_0093 :Ottovolante ibrido STR_0094 :Ottovolante a binario singolo diff --git a/data/language/ja-JP.txt b/data/language/ja-JP.txt index f3c7cfd3c45f..7b8282665e42 100644 --- a/data/language/ja-JP.txt +++ b/data/language/ja-JP.txt @@ -32,12 +32,9 @@ STR_0027 :バンパーカー STR_0028 :パイレーツシップ STR_0029 :スイング・インバータ・シップ STR_0030 :食べ物の店 -STR_0031 :Unknown Stall (1D) STR_0032 :飲料の店 -STR_0033 :Unknown Stall (1F) STR_0034 :ショップ STR_0035 :メリーゴーラウンド -STR_0036 :Unknown Stall (22) STR_0037 :インフォーメーションセンター STR_0038 :トイレ STR_0039 :観覧車 @@ -83,16 +80,10 @@ STR_0078 :インバーテッドヘアピンコースター STR_0079 :空飛ぶじゅうたん STR_0080 :潜水艦ライド STR_0081 :川いかだ -STR_0082 :Unknown Ride (50) STR_0083 :エンタープライズ -STR_0084 :Unknown Ride (52) -STR_0085 :Unknown Ride (53) -STR_0086 :Unknown Ride (54) -STR_0087 :Unknown Ride (55) STR_0088 :インバーテッドインパルスコースター STR_0089 :ミニジェットコースター STR_0090 :鉱山ライド -STR_0091 :Unknown Ride (59) STR_0092 :リニアモーターコースター STR_0093 :ハイブリッドコースター STR_0094 :シングルレール・ジェットコースター diff --git a/data/language/ko-KR.txt b/data/language/ko-KR.txt index 0c9dbe28593f..b935769a7cf0 100644 --- a/data/language/ko-KR.txt +++ b/data/language/ko-KR.txt @@ -32,12 +32,9 @@ STR_0027 :범퍼카 STR_0028 :바이킹 STR_0029 :360도 바이킹 STR_0030 :음식 상점 -STR_0031 :알 수 없는 상점 (1D) STR_0032 :음료수 상점 -STR_0033 :알 수 없는 상점 (1F) STR_0034 :상점 STR_0035 :회전목마 -STR_0036 :알 수 없는 상점 (22) STR_0037 :안내소 STR_0038 :화장실 STR_0039 :관람차 @@ -83,16 +80,10 @@ STR_0078 :인버티드 헤어핀 코스터 STR_0079 :마법의 양탄자 STR_0080 :서브마린 라이드 STR_0081 :리버 래프트 -STR_0082 :알 수 없는 놀이기구 (50) STR_0083 :엔터프라이즈 -STR_0084 :알 수 없는 놀이기구 (52) -STR_0085 :알 수 없는 놀이기구 (53) -STR_0086 :알 수 없는 놀이기구 (54) -STR_0087 :알 수 없는 놀이기구 (55) STR_0088 :인버티드 임펄스 코스터 STR_0089 :미니 롤러코스터 STR_0090 :마인 라이드 -STR_0091 :알 수 없는 놀이기구 (59) STR_0092 :LIM 발진 롤러코스터 STR_0093 :하이브리드 코스터 STR_0094 :모노레일 롤러코스터 diff --git a/data/language/nb-NO.txt b/data/language/nb-NO.txt index 670d5005677f..18af19196354 100644 --- a/data/language/nb-NO.txt +++ b/data/language/nb-NO.txt @@ -32,12 +32,9 @@ STR_0027 :Radiobiler STR_0028 :Piratskip STR_0029 :Roterende skip STR_0030 :Matbod -STR_0031 :Ukjent bod (1D) STR_0032 :Drikkebod -STR_0033 :Ukjent bod (1F) STR_0034 :Bod STR_0035 :Karusell -STR_0036 :Ukjent bod (22) STR_0037 :Informasjonskiosk STR_0038 :Toaletter STR_0039 :Pariserhjul @@ -83,16 +80,10 @@ STR_0078 :Invertert hårnålsbane STR_0079 :Flyvende teppe STR_0080 :Ubåtbane STR_0081 :Elveflåter -STR_0082 :Ukjent attraksjon (50) STR_0083 :Enterprise -STR_0084 :Ukjent attraksjon (52) -STR_0085 :Ukjent attraksjon (53) -STR_0086 :Ukjent attraksjon (54) -STR_0087 :Ukjent attraksjon (55) STR_0088 :Invertert impulsbane STR_0089 :Miniberg-og-dal-bane STR_0090 :Gruvebane -STR_0091 :Ukjent attraksjon (59) STR_0092 :LIM-berg-og-dal-bane STR_0093 :Hybrid berg-og-dal-bane STR_0094 :Enkeltspor berg-og-dal-bane diff --git a/data/language/nl-NL.txt b/data/language/nl-NL.txt index c68013fec49a..6c6536795be1 100644 --- a/data/language/nl-NL.txt +++ b/data/language/nl-NL.txt @@ -29,12 +29,9 @@ STR_0027 :Botsauto’s STR_0028 :Schommelschip STR_0029 :Loopingschip STR_0030 :Eetkraam -STR_0031 :Onbekende kraam (1D) STR_0032 :Drankkraam -STR_0033 :Onbekende kraam (1F) STR_0034 :Winkel STR_0035 :Draaimolen -STR_0036 :Onbekende kraam (22) STR_0037 :Informatiekiosk STR_0038 :Toilet STR_0039 :Reuzenrad @@ -80,16 +77,10 @@ STR_0078 :Omgekeerde haarspeldachtbaan STR_0079 :Vliegend tapijt STR_0080 :Onderzeeër-attractie STR_0081 :Riviertocht -STR_0082 :Onbekende attractie (50) STR_0083 :Enterprise -STR_0084 :Onbekende attractie (52) -STR_0085 :Onbekende attractie (53) -STR_0086 :Onbekende attractie (54) -STR_0087 :Onbekende attractie (55) STR_0088 :Omgekeerde Impulse-achtbaan STR_0089 :Mini-achtbaan STR_0090 :Aangedreven mijntrein -STR_0091 :Onbekende attractie (59) STR_0092 :LIM-lanceringsachtbaan STR_0093 :Hybride achtbaan STR_0094 :Achtbaan met enkele rail diff --git a/data/language/pl-PL.txt b/data/language/pl-PL.txt index 03c72fa9533a..2c185a76eb2d 100644 --- a/data/language/pl-PL.txt +++ b/data/language/pl-PL.txt @@ -32,12 +32,9 @@ STR_0027 :Unikajki STR_0028 :Okręt piracki STR_0029 :Morska huśtawka STR_0030 :Budka z jedzeniem -STR_0031 :Nieznane stoisko (1D) STR_0032 :Budka z napojami -STR_0033 :Nieznane stoisko (1F) STR_0034 :Stoisko STR_0035 :Karuzela obrotowa -STR_0036 :Nieznane stoisko (22) STR_0037 :Punkt informacyjny STR_0038 :Toalety STR_0039 :Diabelski młyn @@ -83,16 +80,10 @@ STR_0078 :Kolejka serpentynowa STR_0079 :Latający dywan STR_0080 :Podwodna podróż STR_0081 :Tratwy rzeczne -STR_0082 :Nieznana atrakcja (50) STR_0083 :Krynolina -STR_0084 :Nieznana atrakcja (52) -STR_0085 :Nieznana atrakcja (53) -STR_0086 :Nieznana atrakcja (54) -STR_0087 :Nieznana atrakcja (55) STR_0088 :Kolejka zwrotna STR_0089 :Minikolejka STR_0090 :Przejażdżka kopalniana -STR_0091 :Nieznana atrakcja (59) STR_0092 :Kolejka z napędem indukcyjnym liniowym STR_0093 :Kolejka hybrydowa STR_0094 :Kolejka jednoszynowa diff --git a/data/language/pt-BR.txt b/data/language/pt-BR.txt index 2ece325a8c99..fc8c909d9e91 100644 --- a/data/language/pt-BR.txt +++ b/data/language/pt-BR.txt @@ -32,12 +32,9 @@ STR_0027 :Carrinho de Bate-Bate STR_0028 :Barco Viking STR_0029 :Navio de Balanço Reverso STR_0030 :Barraca de Comida -STR_0031 :Barraca Desconhecida (1D) STR_0032 :Barraca de Bebida -STR_0033 :Barraca Desconhecida (1F) STR_0034 :Loja STR_0035 :Carrossel -STR_0036 :Barraca Desconhecida (22) STR_0037 :Quiosque de Informações STR_0038 :Banheiros STR_0039 :Roda Gigante @@ -83,16 +80,10 @@ STR_0078 :Montanha Fechada Invertida STR_0079 :Tapete Mágico STR_0080 :Submarino STR_0081 :Balsas de rio -STR_0082 :Brinquedo Desconhecido (50) STR_0083 :Enterprise -STR_0084 :Brinquedo Desconhecido (52) -STR_0085 :Brinquedo Desconhecido (53) -STR_0086 :Brinquedo Desconhecido (54) -STR_0087 :Brinquedo Desconhecido (55) STR_0088 :Montanha de Impulso Invertida STR_0089 :Minimontanha-Russa STR_0090 :Brinquedo de Mina -STR_0091 :Brinquedo Desconhecido (59) STR_0092 :Montanha-Russa de Indução Linear STR_0093 :Montanha-Russa Híbrida STR_0094 :Montanha-Russa de Trilho Único diff --git a/data/language/ru-RU.txt b/data/language/ru-RU.txt index 819d81cccfb8..b5ecffae102d 100644 --- a/data/language/ru-RU.txt +++ b/data/language/ru-RU.txt @@ -32,12 +32,9 @@ STR_0027 :Автодром STR_0028 :Пиратский корабль STR_0029 :Раскачивающийся инвертированный корабль STR_0030 :Киоск с едой -STR_0031 :Неизвестный киоск (1D) STR_0032 :Киоск с питьём -STR_0033 :Неизвестный киоск (1F) STR_0034 :Магазинчик STR_0035 :Карусель -STR_0036 :Неизвестный киоск (22) STR_0037 :Информационный стенд STR_0038 :Туалеты STR_0039 :Колесо обозрения @@ -83,16 +80,10 @@ STR_0078 :Горки «Обратная шпилька» STR_0079 :Ковёр-самолёт STR_0080 :Заплыв на подводной лодке STR_0081 :Речной рафтинг -STR_0082 :Неизвестный аттракцион (50) STR_0083 :Центрифуга -STR_0084 :Неизвестный аттракцион (52) -STR_0085 :Неизвестный аттракцион (53) -STR_0086 :Неизвестный аттракцион (54) -STR_0087 :Неизвестный аттракцион (55) STR_0088 :Инвертированные импульсные горки STR_0089 :Мини-горки STR_0090 :Шахтёрская поездка -STR_0091 :Неизвестный аттракцион (59) STR_0092 :Горки с запуском ЛИМ STR_0093 :Гибридные горки STR_0094 :Горки с одним рельсом diff --git a/data/language/sv-SE.txt b/data/language/sv-SE.txt index f7fbdb412b59..379f54c25f4c 100644 --- a/data/language/sv-SE.txt +++ b/data/language/sv-SE.txt @@ -33,12 +33,9 @@ STR_0027 :Radiobilar STR_0028 :Piratskepp STR_0029 :Svängande omvänt piratskepp STR_0030 :Matstånd -STR_0031 :Okänt stånd (1D) STR_0032 :Dryckesstånd -STR_0033 :Okänt stånd (1F) STR_0034 :Stånd STR_0035 :Karusell -STR_0036 :Okänt stånd (22) STR_0037 :Informationskiosk STR_0038 :Toaletter STR_0039 :Pariserhjul @@ -84,16 +81,10 @@ STR_0078 :Inverterad hårnålsbana STR_0079 :Flygande matta STR_0080 :Ubåtsbana STR_0081 :Flodflottar -STR_0082 :Okänd åktur (50) STR_0083 :Enterprise -STR_0084 :Okänd åktur (52) -STR_0085 :Okänd åktur (53) -STR_0086 :Okänd åktur (54) -STR_0087 :Okänd åktur (55) STR_0088 :Inverterad impulsbana STR_0089 :Miniberg- och dalbana STR_0090 :Gruvattraktion -STR_0091 :Okänd åktur (59) STR_0092 :Induktionsberg- och dalbana STR_0093 :Hybridberg- och dalbana STR_0094 :Enkelspårig berg- och dalbana diff --git a/data/language/tr-TR.txt b/data/language/tr-TR.txt index ef5290f0b160..416b8669883e 100644 --- a/data/language/tr-TR.txt +++ b/data/language/tr-TR.txt @@ -32,12 +32,9 @@ STR_0027 :Çarpışan Arabalar STR_0028 :Korsan Gemisi STR_0029 :Tepe Takla Gemisi STR_0030 :Yiyecek Standı -STR_0031 :Bilinmeyen Stant (1D) STR_0032 :İçecek Standı -STR_0033 :Bilinmeyen Stant (1F) STR_0034 :Dükkan STR_0035 :Atlıkarınca -STR_0036 :Bilinmeyen Stant (22) STR_0037 :Danışma STR_0038 :Tuvalet STR_0039 :Dönme Dolap @@ -83,16 +80,10 @@ STR_0078 :Teleferik Treni STR_0079 :Sihirli Halı STR_0080 :Denizaltı Kiralama STR_0081 :Sal Seyahati -STR_0082 :Bilinmeyen Alet (50) STR_0083 :Dönen Teker -STR_0084 :Bilinmeyen Alet (52) -STR_0085 :Bilinmeyen Alet (53) -STR_0086 :Bilinmeyen Alet (54) -STR_0087 :Bilinmeyen Alet (55) STR_0088 :Vida Treni STR_0089 :Mini Tren STR_0090 :Küçük Maden Treni -STR_0091 :Bilinmeyen Alet (59) STR_0092 :LIM Tren STR_0096 :Klasik Tahta Tren STR_0512 :Sarmal şeklinde tırmanma zinciri rayı ile yükseğe çıkabilen çelik yapılı bir tren diff --git a/data/language/uk-UA.txt b/data/language/uk-UA.txt index cd5986b4bad4..945a0b367494 100644 --- a/data/language/uk-UA.txt +++ b/data/language/uk-UA.txt @@ -32,12 +32,9 @@ STR_0027 :Виверти STR_0028 :Корабель-гойдалка STR_0029 :Гойдалка з інвертором STR_0030 :Магазинчик їжі -STR_0031 :Невідомий кіоск (1Д) STR_0032 :Магазинчик напоїв -STR_0033 :Невідомий кіоск (1Ф) STR_0034 :Магазин STR_0035 :Весела карусель -STR_0036 :Невідомий кіоск (22) STR_0037 :Довідковий кіоск STR_0038 :Туалети STR_0039 :Оглядове колесо @@ -83,16 +80,10 @@ STR_0078 :Перевернута підставка для шпильок STR_0079 :Чарівний килим STR_0080 :Підводний човен STR_0081 :Річкові плоти -STR_0082 :Невідомий атракціон (50) STR_0083 :Підприємство -STR_0084 :Невідомий атракціон (52) -STR_0085 :Невідомий атракціон (53) -STR_0086 :Невідомий атракціон (54) -STR_0087 :Невідомий атракціон (55) STR_0088 :Перевернуті імпульсні атракціони STR_0089 :Міні американські гірки STR_0090 :Атракціон "Шахта" -STR_0091 :Невідомий атракціон (59) STR_0092 :Американські гірки, що запускаються LIM STR_0093 :Гібридні американські гірки STR_0094 :Однорейкові американські гірки diff --git a/data/language/vi-VN.txt b/data/language/vi-VN.txt index 2a01d4b0caf4..8a81a347de99 100644 --- a/data/language/vi-VN.txt +++ b/data/language/vi-VN.txt @@ -32,12 +32,9 @@ STR_0027 :Xe điện đụng STR_0028 :Tàu cướp biển STR_0029 :Tàu lượn siêu tốc xoay tròn STR_0030 :Quầy đồ ăn -STR_0031 :Quầy không xác định (1D) STR_0032 :Quầy đồ uống -STR_0033 :Quầy không xác định (1F) STR_0034 :Cửa hàng STR_0035 :Đu quay ngựa gỗ -STR_0036 :Quầy không xác định (22) STR_0037 :Quầy thông tin STR_0038 :Nhà vệ sinh STR_0039 :Vòng quay Ferris @@ -83,16 +80,10 @@ STR_0078 :Tàu lượn ngược hình kẹp tóc STR_0079 :Thảm thần STR_0080 :Tàu ngầm STR_0081 :Thuyền bè -STR_0082 :Trò chơi không xác định (50) STR_0083 :Vòng quay Enterprise -STR_0084 :Trò chơi không xác định (52) -STR_0085 :Trò chơi không xác định (53) -STR_0086 :Trò chơi không xác định (54) -STR_0087 :Trò chơi không xác định (55) STR_0088 :Tàu lượn siêu tốc xung ngược STR_0089 :Tàu lượn siêu tốc mini STR_0090 :Chuyến tàu mỏ -STR_0091 :Trò chơi không xác định (59) STR_0092 :Tàu lượn siêu tốc khởi động LIM STR_0093 :Tàu lượn siêu tốc lai STR_0094 :Tàu lượn siêu tốc một ray diff --git a/data/language/zh-CN.txt b/data/language/zh-CN.txt index 70f3763a676c..702b1241bb01 100644 --- a/data/language/zh-CN.txt +++ b/data/language/zh-CN.txt @@ -32,12 +32,9 @@ STR_0027 :碰碰车 STR_0028 :海盗船 STR_0029 :摇摆海盗船 STR_0030 :食品小站 -STR_0031 :未知店铺(1D) STR_0032 :饮料铺 -STR_0033 :未知店铺(1F) STR_0034 :商店 STR_0035 :旋转木马 -STR_0036 :未知店铺(22) STR_0037 :信息亭 STR_0038 :厕所 STR_0039 :摩天轮 @@ -83,16 +80,10 @@ STR_0078 :回转发卡过山车 STR_0079 :魔毯 STR_0080 :迷你潜艇 STR_0081 :水上木筏 -STR_0082 :未知游乐设施(50) STR_0083 :企业号 -STR_0084 :未知游乐设施(52) -STR_0085 :未知游乐设施(53) -STR_0086 :未知游乐设施(54) -STR_0087 :未知游乐设施(55) STR_0088 :回转冲力过山车 STR_0089 :迷你过山车 STR_0090 :矿车式过山车 -STR_0091 :未知游乐设施(59) STR_0092 :LIM喷射过山车 STR_0093 :混合过山车 STR_0094 :单轨过山车 diff --git a/data/language/zh-TW.txt b/data/language/zh-TW.txt index eb279738bc13..176b3e52d15e 100644 --- a/data/language/zh-TW.txt +++ b/data/language/zh-TW.txt @@ -32,12 +32,9 @@ STR_0027 :碰碰車 STR_0028 :海盜船 STR_0029 :垂直迴轉海盜船 STR_0030 :食物店鋪 -STR_0031 :Unknown Stall (1D) STR_0032 :飲料店鋪 -STR_0033 :Unknown Stall (1F) STR_0034 :商店 STR_0035 :旋轉木馬 -STR_0036 :Unknown Stall (22) STR_0037 :訪客資訊中心 STR_0038 :廁所 STR_0039 :摩天輪 @@ -83,16 +80,10 @@ STR_0078 :反轉髮夾彎式雲霄飛車 STR_0079 :魔法地毯 STR_0080 :潛艇遊道 STR_0081 :木筏河道 -STR_0082 :Unknown Ride (50) STR_0083 :太空摩天輪 -STR_0084 :Unknown Ride (52) -STR_0085 :Unknown Ride (53) -STR_0086 :Unknown Ride (54) -STR_0087 :Unknown Ride (55) STR_0088 :反轉極速式雲霄飛車 STR_0089 :迷你雲霄飛車 STR_0090 :礦遊式雲霄飛車 -STR_0091 :Unknown Ride (59) STR_0092 :直線電動機發車雲霄飛車 STR_0093 :混合式雲霄飛車 STR_0094 :單軌式雲霄飛車 From 17247cceeabe9ef06aaf7a4e1ca6064cf9e1f7b8 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Sat, 22 Nov 2025 04:02:00 +0000 Subject: [PATCH 035/222] Merge Localisation/master into OpenRCT2/develop --- data/language/hu-HU.txt | 1 + data/language/nl-NL.txt | 3 +++ 2 files changed, 4 insertions(+) diff --git a/data/language/hu-HU.txt b/data/language/hu-HU.txt index 94ee3b9fbeef..b6dfdef848f3 100644 --- a/data/language/hu-HU.txt +++ b/data/language/hu-HU.txt @@ -3834,3 +3834,4 @@ STR_7004 :Újrarajzolás kényszerítése STR_7005 :Útterület építése húzással STR_7006 :Keret rajzolása a képgombok köré STR_7007 :Játéktípus +STR_7008 :Ismeretlen játéktípus ({INT32}) diff --git a/data/language/nl-NL.txt b/data/language/nl-NL.txt index 6c6536795be1..9643050f41b7 100644 --- a/data/language/nl-NL.txt +++ b/data/language/nl-NL.txt @@ -3831,3 +3831,6 @@ STR_7002 :{STRINGID} {STRINGID} STR_7003 :Audiobestand ‘{STRING}’ is beschadigd. Sample nr. {INT32} kon niet worden geladen, aangezien er maar {INT32} beschikbaar zijn. Installeer RollerCoaster Tycoon 2 opnieuw. STR_7004 :Volledig beeld hertekenen STR_7005 :Voetpaden aanleggen door te slepen +STR_7006 :Rand tekenen om knoppen met alleen een plaatje +STR_7007 :Attractietype +STR_7008 :Onbekend attractietype ({INT32}) From 559526c9238411fac867296c219075d504f2542c Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 22 Nov 2025 18:08:43 +0100 Subject: [PATCH 036/222] Merge Localisation/master into OpenRCT2/develop --- data/language/pt-BR.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/pt-BR.txt b/data/language/pt-BR.txt index fc8c909d9e91..14778594e478 100644 --- a/data/language/pt-BR.txt +++ b/data/language/pt-BR.txt @@ -3834,3 +3834,4 @@ STR_7004 :Forçar Redesenho STR_7005 :Arrastar uma área de calçada STR_7006 :Desenhar borda ao redor dos botões com imagens STR_7007 :Tipo de Atração +STR_7008 :Tipo de atração desconhecido ({INT32}) From 233b422424b58a7c5c6ad3578c184b1edbe23e38 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 22 Nov 2025 18:11:12 +0100 Subject: [PATCH 037/222] Update backtrace token --- src/openrct2/platform/Crash.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/platform/Crash.cpp b/src/openrct2/platform/Crash.cpp index 8291a76bb58f..20b408e76fef 100644 --- a/src/openrct2/platform/Crash.cpp +++ b/src/openrct2/platform/Crash.cpp @@ -58,7 +58,7 @@ static const wchar_t* _wszArchitecture = WSZ(OPENRCT2_ARCHITECTURE); static std::map _uploadFiles; static std::mutex _uploadFilesMutex; - #define BACKTRACE_TOKEN "da613916de2ddb54c7bded715421516fd96e8072d42bd3d72412f7e083eb0e63" + #define BACKTRACE_TOKEN "08f57d3bbdcf5287883670b0f6d10b6d3f8b776659ea762378b3bfdde5d99216" using namespace OpenRCT2; From ebe87be3da69d0c403ecd80cc4aa02a538ea9960 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 22 Nov 2025 18:16:07 +0100 Subject: [PATCH 038/222] Release v0.4.29 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Feature: [#25459] Wall line dragging tool. - Improved: [#25028] Stalls now support colour presets, just like regular rides. - Improved: [#25426] Building the track designs index is now quicker. - Improved: [#25490] The ‘New Ride’ window can now be resized. - Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. - Fix: [#25454] Opening the land tool while building a path bridge or tunnel closes the Footpaths window. - Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. - Fix: [#25467] Paths are not connected together correctly in track design previews. - Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. - Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. - Fix: [#25488] Crash in headless mode. - Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. - Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. - Fix: [#25519] Crackling audio when sampling frequencies do not match. - Fix: [objects#401] Round tunnels on down slopes glitch. - Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. - Fix: [objects#408] Australian fountain sets have confusing naming. - Fix: [objects#409] LIM Launched Coaster trains incorrectly have a 10% intensity modifier set (original bug). - Fix: [objects#410] Large scenery from the Wacky Worlds Africa theming have incorrect previews when using specific versions of the RCT2 base game. - Fix: [objects#415] Penguin bobsleigh trains show incorrect sprites on the 12° down slope (original bug). --- .github/workflows/ci.yml | 2 +- debian/changelog | 25 +++++++++++++++++++ distribution/changelog.txt | 2 +- .../linux/io.openrct2.openrct2.appdata.xml | 3 +++ distribution/macos/Info.plist | 2 +- readme.md | 6 ++--- src/openrct2-android/app/build.gradle | 4 +-- src/openrct2/Version.h | 2 +- src/openrct2/network/NetworkBase.cpp | 2 +- 9 files changed, 38 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf166da50055..4119e7d820d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ env: OPENRCT2_BUILD_SERVER: GitHub OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }} BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }} - OPENRCT2_VERSION: 0.4.28 + OPENRCT2_VERSION: 0.4.29 # https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value concurrency: diff --git a/debian/changelog b/debian/changelog index abbdfef2cdb6..34c7ac24027f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,28 @@ +openrct2 (0.4.29-develop-1) unstable; urgency=medium + +* Feature: [#25459] Wall line dragging tool. +* Improved: [#25028] Stalls now support colour presets, just like regular rides. +* Improved: [#25426] Building the track designs index is now quicker. +* Improved: [#25490] The ‘New Ride’ window can now be resized. +* Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). +* Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. +* Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. +* Fix: [#25454] Opening the land tool while building a path bridge or tunnel closes the Footpaths window. +* Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. +* Fix: [#25467] Paths are not connected together correctly in track design previews. +* Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. +* Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. +* Fix: [#25488] Crash in headless mode. +* Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. +* Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. +* Fix: [#25519] Crackling audio when sampling frequencies do not match. +* Fix: [objects#401] Round tunnels on down slopes glitch. +* Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. +* Fix: [objects#408] Australian fountain sets have confusing naming. +* Fix: [objects#409] LIM Launched Coaster trains incorrectly have a 10% intensity modifier set (original bug). +* Fix: [objects#410] Large scenery from the Wacky Worlds Africa theming have incorrect previews when using specific versions of the RCT2 base game. +* Fix: [objects#415] Penguin bobsleigh trains show incorrect sprites on the 12° down slope (original bug). + openrct2 (0.4.28-develop-1) unstable; urgency=medium * Feature: [#25286] Footpath area dragging tool. diff --git a/distribution/changelog.txt b/distribution/changelog.txt index ee9881f99c5c..c13f1560dfe8 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,4 +1,4 @@ -0.4.29 (in development) +0.4.29 (2025-11-22) ------------------------------------------------------------------------ - Feature: [#25459] Wall line dragging tool. - Improved: [#25028] Stalls now support colour presets, just like regular rides. diff --git a/distribution/linux/io.openrct2.openrct2.appdata.xml b/distribution/linux/io.openrct2.openrct2.appdata.xml index e4ab5d546d30..583a9fb40a5c 100644 --- a/distribution/linux/io.openrct2.openrct2.appdata.xml +++ b/distribution/linux/io.openrct2.openrct2.appdata.xml @@ -456,6 +456,9 @@ none + + https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.29 + https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.28 diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist index e49514433796..62ef86f8abf4 100644 --- a/distribution/macos/Info.plist +++ b/distribution/macos/Info.plist @@ -13,7 +13,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.28 + 0.4.29 CFBundleSignature ORCT LSMinimumSystemVersion diff --git a/readme.md b/readme.md index c76927b55f10..7405e0e39d25 100644 --- a/readme.md +++ b/readme.md @@ -17,9 +17,9 @@ --- ### Download -| Latest release | Latest development build | -|------------------------------------------------------------------------------------------------------------------------|--------------------------| -| [![OpenRCT2.io](https://img.shields.io/badge/master-v0.4.28-green.svg)](https://openrct2.io/download/release/latest) | [![OpenRCT2.io](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.io/download/develop/latest) | +| Latest release | Latest development build | +|----------------------------------------------------------------------------------------------------------------------|--------------------------| +| [![OpenRCT2.io](https://img.shields.io/badge/master-v0.4.29-green.svg)](https://openrct2.io/download/release/latest) | [![OpenRCT2.io](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.io/download/develop/latest) | --- diff --git a/src/openrct2-android/app/build.gradle b/src/openrct2-android/app/build.gradle index ca28484be8df..a6a9c76b7be2 100644 --- a/src/openrct2-android/app/build.gradle +++ b/src/openrct2-android/app/build.gradle @@ -21,8 +21,8 @@ android { minSdkVersion 24 targetSdkVersion 36 - versionCode 15 - versionName '0.4.28' + versionCode 16 + versionName '0.4.29' externalNativeBuild { cmake { arguments '-DANDROID_STL=c++_shared', '-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON' diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h index c60fff777c47..14674796b49a 100644 --- a/src/openrct2/Version.h +++ b/src/openrct2/Version.h @@ -12,7 +12,7 @@ #include #define OPENRCT2_NAME "OpenRCT2" -#define kOpenRCT2Version "0.4.28" +#define kOpenRCT2Version "0.4.29" #if defined(__amd64__) || defined(_M_AMD64) #define OPENRCT2_ARCHITECTURE "x86-64" diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 69b9f4279050..9e3f27a4957c 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 4; +constexpr uint8_t kStreamVersion = 0; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From 29d40387efc7cfdf8fe9f48a3ca7efc3e72fa413 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 22 Nov 2025 19:02:07 +0100 Subject: [PATCH 039/222] Start 0.4.30 --- distribution/changelog.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index c13f1560dfe8..9c8a3eb4a25d 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,3 +1,6 @@ +0.4.30 (in development) +------------------------------------------------------------------------ + 0.4.29 (2025-11-22) ------------------------------------------------------------------------ - Feature: [#25459] Wall line dragging tool. From fc9e14caa84fce34f3b3e927bb77912c0d9ec4fc Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Sat, 22 Nov 2025 20:13:09 -0300 Subject: [PATCH 040/222] Remove unnecessary type specifiers from AddClamp calls --- src/openrct2-ui/windows/Cheats.cpp | 4 ++-- src/openrct2/actions/CheatSetAction.cpp | 2 +- src/openrct2/management/Finance.cpp | 3 +-- src/openrct2/scenario/Scenario.cpp | 2 +- src/openrct2/world/Park.cpp | 5 ++--- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 8f954e9dfd62..b99cbdecab7a 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -848,12 +848,12 @@ static StringId window_cheats_page_titles[] = { switch (widgetIndex) { case WIDX_MONEY_SPINNER_INCREMENT: - _moneySpinnerValue = AddClamp( + _moneySpinnerValue = AddClamp( kCheatsMoneyIncrement * (_moneySpinnerValue / kCheatsMoneyIncrement), kCheatsMoneyIncrement); invalidateWidget(WIDX_MONEY_SPINNER); break; case WIDX_MONEY_SPINNER_DECREMENT: - _moneySpinnerValue = AddClamp( + _moneySpinnerValue = AddClamp( kCheatsMoneyIncrement * (_moneySpinnerValue / kCheatsMoneyIncrement), -kCheatsMoneyIncrement); invalidateWidget(WIDX_MONEY_SPINNER); break; diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index cc2e3fc1e2eb..5c59ce52e6b9 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -615,7 +615,7 @@ namespace OpenRCT2::GameActions void CheatSetAction::AddMoney(money64 amount) const { auto& park = getGameState().park; - park.cash = AddClamp(park.cash, amount); + park.cash = AddClamp(park.cash, amount); auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::finances); diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index aadca32ddfab..b97bd39f95a1 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -89,9 +89,8 @@ bool FinanceCheckAffordability(money64 cost, uint32_t flags) */ void FinancePayment(money64 amount, ExpenditureType type) { - // overflow check auto& park = getGameState().park; - park.cash = AddClamp(park.cash, -amount); + park.cash = AddClamp(park.cash, -amount); park.expenditureTable[0][EnumValue(type)] -= amount; if (kCountTowardsCurrentExpenditure[EnumValue(type)]) diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index a57b29e89811..c56916809a07 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -224,7 +224,7 @@ void ScenarioSuccessSubmitName(GameState_t& gameState, const char* name) static void ScenarioCheckEntranceFeeTooHigh() { const auto& park = getGameState().park; - const auto max_fee = AddClamp(park.totalRideValueForMoney, park.totalRideValueForMoney / 2); + const auto max_fee = AddClamp(park.totalRideValueForMoney, park.totalRideValueForMoney / 2); if ((park.flags & PARK_FLAGS_PARK_OPEN) && Park::GetEntranceFee() > max_fee) { diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index c08c608924c5..f3ed58761cce 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -511,10 +511,9 @@ namespace OpenRCT2::Park money64 CalculateCompanyValue(const ParkData& park) { - auto result = park.value - park.bankLoan; + money64 result = park.value - park.bankLoan; - // Clamp addition to prevent overflow - result = AddClamp(result, park.cash); + result = AddClamp(result, park.cash); return result; } From 83591cf94ef1b0bca0bfe032903c564b964b907f Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sat, 22 Nov 2025 23:21:14 +0000 Subject: [PATCH 041/222] Fix track construction arrow position when removing track pieces --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/RideConstruction.cpp | 22 ++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 9c8a3eb4a25d..2706afcab612 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.30 (in development) ------------------------------------------------------------------------ +- Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 99bf94f422d2..a405657754b4 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -3261,6 +3261,15 @@ namespace OpenRCT2::Ui::Windows rideIndex, type, direction, liftHillAndAlternativeState, trackPos); WindowRideConstructionUpdateActiveElements(); + gMapSelectArrowPosition = _currentTrackBegin; + Direction arrowDirection = _currentTrackPieceDirection; + // diagonal pieces trigger this + if (arrowDirection >= 4) + arrowDirection += 4; + if (_rideConstructionState == RideConstructionState::Back) + arrowDirection = DirectionReverse(arrowDirection); + gMapSelectArrowDirection = arrowDirection; + if (!(gMapSelectFlags.has(MapSelectFlag::enable))) { // Set height to where the next track piece would begin @@ -3275,20 +3284,11 @@ namespace OpenRCT2::Ui::Windows _rideConstructionNextArrowPulse = curTime + kArrowPulseDuration; _currentTrackSelectionFlags.flip(TrackSelectionFlag::arrow); - trackPos = _currentTrackBegin; - direction = _currentTrackPieceDirection; - type = _currentTrackPieceType; - // diagonal pieces trigger this - if (direction >= 4) - direction += 4; - if (_rideConstructionState == RideConstructionState::Back) - direction = DirectionReverse(direction); - gMapSelectArrowPosition = trackPos; - gMapSelectArrowDirection = direction; + gMapSelectFlags.unset(MapSelectFlag::enableArrow); if (_currentTrackSelectionFlags.has(TrackSelectionFlag::arrow)) gMapSelectFlags.set(MapSelectFlag::enableArrow); - MapInvalidateTileFull(trackPos); + MapInvalidateTileFull(_currentTrackBegin); break; } case RideConstructionState::Selected: From f3cedcc1d943ec7ac2244cce9956eb522d84c005 Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 00:19:34 +0000 Subject: [PATCH 042/222] Remove manual map selection invalidation calls --- src/openrct2-ui/scripting/ScTileSelection.hpp | 4 -- src/openrct2-ui/windows/ClearScenery.cpp | 3 -- .../windows/EditorParkEntrance.cpp | 3 -- src/openrct2-ui/windows/Footpath.cpp | 13 ------- src/openrct2-ui/windows/Guest.cpp | 3 -- src/openrct2-ui/windows/Land.cpp | 7 ---- src/openrct2-ui/windows/LandRights.cpp | 2 - src/openrct2-ui/windows/Map.cpp | 2 - src/openrct2-ui/windows/MazeConstruction.cpp | 3 -- src/openrct2-ui/windows/PatrolArea.cpp | 5 --- src/openrct2-ui/windows/RideConstruction.cpp | 16 -------- src/openrct2-ui/windows/Scenery.cpp | 12 ------ src/openrct2-ui/windows/Staff.cpp | 3 -- src/openrct2-ui/windows/TileInspector.cpp | 2 - src/openrct2-ui/windows/TrackDesignPlace.cpp | 3 -- src/openrct2-ui/windows/ViewClipping.cpp | 2 - src/openrct2-ui/windows/Water.cpp | 4 -- src/openrct2/interface/Window.cpp | 3 -- src/openrct2/ride/RideConstruction.cpp | 1 - src/openrct2/ride/TrackDesign.cpp | 1 - src/openrct2/world/MapSelection.cpp | 37 ------------------- src/openrct2/world/MapSelection.h | 2 - 22 files changed, 131 deletions(-) diff --git a/src/openrct2-ui/scripting/ScTileSelection.hpp b/src/openrct2-ui/scripting/ScTileSelection.hpp index bc9b05899346..90204844a1a7 100644 --- a/src/openrct2-ui/scripting/ScTileSelection.hpp +++ b/src/openrct2-ui/scripting/ScTileSelection.hpp @@ -51,7 +51,6 @@ namespace OpenRCT2::Scripting void range_set(DukValue value) { - MapInvalidateSelectionRect(); if (value.type() == DukValue::Type::OBJECT) { auto range = GetMapRange(value); @@ -69,7 +68,6 @@ namespace OpenRCT2::Scripting { gMapSelectFlags.unset(MapSelectFlag::enable); } - MapInvalidateSelectionRect(); } DukValue tiles_get() const @@ -94,7 +92,6 @@ namespace OpenRCT2::Scripting void tiles_set(DukValue value) { - MapInvalidateMapSelectionTiles(); gMapSelectionTiles.clear(); if (value.is_array()) { @@ -124,7 +121,6 @@ namespace OpenRCT2::Scripting { gMapSelectFlags.set(MapSelectFlag::enableConstruct); } - MapInvalidateMapSelectionTiles(); } static void Register(duk_context* ctx) diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 6cddde3b3f9e..f0d221372c55 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -218,7 +218,6 @@ namespace OpenRCT2::Ui::Windows { uint8_t state_changed = 0; - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); auto mapTile = ScreenGetMapXY(screenPos, nullptr); @@ -275,7 +274,6 @@ namespace OpenRCT2::Ui::Windows state_changed++; } - MapInvalidateSelectionRect(); return state_changed; } @@ -347,7 +345,6 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_BACKGROUND: - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); gCurrentToolId = Tool::bulldozer; break; diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 18d9c0102062..653b727d7397 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -166,8 +166,6 @@ namespace OpenRCT2::Ui::Windows void PlaceParkEntranceToolUpdate(const ScreenCoordsXY& screenCoords) { - MapInvalidateSelectionRect(); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enable, MapSelectFlag::enableArrow, MapSelectFlag::enableConstruct); CoordsXYZD parkEntrancePosition = PlaceParkEntranceGetMapPosition(screenCoords); if (parkEntrancePosition.IsNull()) @@ -190,7 +188,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectArrowDirection = parkEntrancePosition.direction; gMapSelectFlags.set(MapSelectFlag::enableConstruct, MapSelectFlag::enableArrow); - MapInvalidateMapSelectionTiles(); if (gParkEntranceGhostExists && parkEntrancePosition == gParkEntranceGhostPosition) { return; diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index fad523809cfb..488b00cef4ee 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -254,7 +254,6 @@ namespace OpenRCT2::Ui::Windows { FootpathUpdateProvisional(); ViewportSetVisibility(ViewportVisibility::standard); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); auto* windowMgr = Ui::GetWindowManager(); @@ -345,7 +344,6 @@ namespace OpenRCT2::Ui::Windows _windowFootpathCost = kMoney64Undefined; ToolCancel(); FootpathUpdateProvisional(); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); _footpathConstructionMode = PathConstructionMode::dragArea; ToolSet(*this, WIDX_CONSTRUCT_DRAG_AREA, Tool::pathDown); @@ -370,7 +368,6 @@ namespace OpenRCT2::Ui::Windows _windowFootpathCost = kMoney64Undefined; ToolCancel(); FootpathUpdateProvisional(); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); _footpathConstructionMode = PathConstructionMode::onLand; ToolSet(*this, WIDX_CONSTRUCT_ON_LAND, Tool::pathDown); @@ -395,7 +392,6 @@ namespace OpenRCT2::Ui::Windows _windowFootpathCost = kMoney64Undefined; ToolCancel(); FootpathUpdateProvisional(); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); _footpathConstructionMode = PathConstructionMode::bridgeOrTunnelPick; ToolSet(*this, WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL, Tool::crosshair); @@ -670,7 +666,6 @@ namespace OpenRCT2::Ui::Windows { gMapSelectFlags.unset(MapSelectFlag::enableArrow); } - MapInvalidateTileFull(footpathLoc); } } @@ -1040,7 +1035,6 @@ namespace OpenRCT2::Ui::Windows */ void WindowFootpathSetProvisionalPathAtPoint(const ScreenCoordsXY& screenCoords) { - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enableArrow); // Get current map pos and handle key modifier state @@ -1107,7 +1101,6 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathSetProvisionalPathDragArea(MapRange range, int32_t baseZ) { - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enableArrow); // Check for change @@ -1146,7 +1139,6 @@ namespace OpenRCT2::Ui::Windows int32_t direction; TileElement* tileElement; - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable, MapSelectFlag::enableArrow); auto mapCoords = FootpathBridgeGetInfoFromPos(screenCoords, &direction, &tileElement); @@ -1174,8 +1166,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectArrowPosition = CoordsXYZ{ mapCoords, z }; gMapSelectArrowDirection = direction; - - MapInvalidateSelectionRect(); } FootpathPlacementResult WindowFootpathGetPlacementFromScreenCoords(const ScreenCoordsXY& screenCoords) @@ -1602,7 +1592,6 @@ namespace OpenRCT2::Ui::Windows { if (_footpathConstructionMode == PathConstructionMode::bridgeOrTunnel) { - MapInvalidateMapSelectionTiles(); gMapSelectFlags.set(MapSelectFlag::enableConstruct, MapSelectFlag::green); int32_t direction = _footpathConstructDirection; @@ -1610,7 +1599,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectionTiles.push_back( { _footpathConstructFromPosition.x + CoordsDirectionDelta[direction].x, _footpathConstructFromPosition.y + CoordsDirectionDelta[direction].y }); - MapInvalidateMapSelectionTiles(); } uint64_t newPressedWidgets = pressedWidgets @@ -2036,7 +2024,6 @@ namespace OpenRCT2::Ui::Windows _provisionalFootpath.flags.unset(ProvisionalPathFlag::showArrow); gMapSelectFlags.unset(MapSelectFlag::enableArrow); - MapInvalidateTileFull(_footpathConstructFromPosition); } FootpathRemoveProvisional(); } diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 90af29899345..7b211c5971a0 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -977,8 +977,6 @@ namespace OpenRCT2::Ui::Windows if (widgetIndex != WIDX_PICKUP) return; - MapInvalidateSelectionRect(); - gMapSelectFlags.unset(MapSelectFlag::enable); auto mapCoords = FootpathGetCoordinatesFromPos({ screenCoords.x, screenCoords.y + 16 }, nullptr, nullptr); @@ -988,7 +986,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectType = MapSelectType::full; gMapSelectPositionA = mapCoords; gMapSelectPositionB = mapCoords; - MapInvalidateSelectionRect(); } gPickupPeepImage = ImageId(); diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index 0e2de599f588..9b7cac4c8a91 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -444,7 +444,6 @@ namespace OpenRCT2::Ui::Windows { uint8_t state_changed = 0; - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); auto mapTile = ScreenGetMapXY(screenPos, nullptr); @@ -501,7 +500,6 @@ namespace OpenRCT2::Ui::Windows state_changed++; } - MapInvalidateSelectionRect(); return state_changed; } @@ -582,7 +580,6 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_BACKGROUND: - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); gCurrentToolId = Tool::digDown; break; @@ -609,8 +606,6 @@ namespace OpenRCT2::Ui::Windows const bool mapCtrlPressed = GetInputManager().isModifierKeyPressed(ModifierKey::ctrl); auto* windowMgr = Ui::GetWindowManager(); - MapInvalidateSelectionRect(); - if (gCurrentToolId == Tool::upDownArrow) { if (!(gMapSelectFlags.has(MapSelectFlag::enable))) @@ -700,7 +695,6 @@ namespace OpenRCT2::Ui::Windows state_changed++; } - MapInvalidateSelectionRect(); if (!state_changed) return; @@ -827,7 +821,6 @@ namespace OpenRCT2::Ui::Windows state_changed++; } - MapInvalidateSelectionRect(); if (!state_changed) return; diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index cfbf37b184d5..e10b49ac0ecc 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -459,7 +459,6 @@ namespace OpenRCT2::Ui::Windows void onToolUpdate(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override { - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); auto info = GetMapCoordinatesFromPos( @@ -529,7 +528,6 @@ namespace OpenRCT2::Ui::Windows state_changed++; } - MapInvalidateSelectionRect(); if (!state_changed) return; diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 880f37b405ca..be4fe990281b 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -449,7 +449,6 @@ namespace OpenRCT2::Ui::Windows { int32_t direction; TileElement* tileElement; - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable, MapSelectFlag::enableArrow); auto mapCoords = FootpathBridgeGetInfoFromPos(screenCoords, &direction, &tileElement); if (mapCoords.IsNull()) @@ -470,7 +469,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectPositionB = mapCoords; gMapSelectArrowPosition = CoordsXYZ{ mapCoords, mapZ }; gMapSelectArrowDirection = DirectionReverse(direction); - MapInvalidateSelectionRect(); } void SetPeepSpawnToolDown(const ScreenCoordsXY& screenCoords) diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 41134953356c..97b16449079c 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -118,7 +118,6 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); ViewportSetVisibility(ViewportVisibility::standard); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); @@ -344,8 +343,6 @@ namespace OpenRCT2::Ui::Windows { RideConstructionInvalidateCurrentTrack(); - MapInvalidateSelectionRect(); - gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableArrow); diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index dab5a095d41f..8c8f88ae6131 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -181,15 +181,10 @@ namespace OpenRCT2::Ui::Windows if (stateChanged) { - // Invalidate previous area - MapInvalidateSelectionRect(); - - // Update and invalidate new area gMapSelectFlags.set(MapSelectFlag::enable); gMapSelectType = MapSelectType::full; gMapSelectPositionA = posA; gMapSelectPositionB = posB; - MapInvalidateSelectionRect(); } } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index a405657754b4..0ae144c313e0 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -286,7 +286,6 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); ViewportSetVisibility(ViewportVisibility::standard); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); @@ -2242,7 +2241,6 @@ namespace OpenRCT2::Ui::Windows int32_t trackDirection; CoordsXYZ trackPos{}; - MapInvalidateMapSelectionTiles(); gMapSelectFlags.set(MapSelectFlag::enableConstruct); gMapSelectFlags.set(MapSelectFlag::green); @@ -2274,7 +2272,6 @@ namespace OpenRCT2::Ui::Windows if (GetRide(_currentRideIndex)) { selectMapTiles(trackType, trackDirection, trackPos); - MapInvalidateMapSelectionTiles(); } } @@ -2653,7 +2650,6 @@ namespace OpenRCT2::Ui::Windows void ToolDownEntranceExit(const ScreenCoordsXY& screenCoords) { RideConstructionInvalidateCurrentTrack(); - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableArrow); @@ -3288,7 +3284,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::enableArrow); if (_currentTrackSelectionFlags.has(TrackSelectionFlag::arrow)) gMapSelectFlags.set(MapSelectFlag::enableArrow); - MapInvalidateTileFull(_currentTrackBegin); break; } case RideConstructionState::Selected: @@ -3338,7 +3333,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::enableArrow); if (_currentTrackSelectionFlags.has(TrackSelectionFlag::arrow)) gMapSelectFlags.set(MapSelectFlag::enableArrow); - MapInvalidateTileFull(trackPos); break; } default: @@ -3354,7 +3348,6 @@ namespace OpenRCT2::Ui::Windows { int32_t z; - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); @@ -3362,7 +3355,6 @@ namespace OpenRCT2::Ui::Windows if (!mapCoords) { RideConstructionInvalidateCurrentTrack(); - MapInvalidateMapSelectionTiles(); return; } @@ -3386,7 +3378,6 @@ namespace OpenRCT2::Ui::Windows &trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, nullptr, nullptr)) { RideConstructionInvalidateCurrentTrack(); - MapInvalidateMapSelectionTiles(); return; } _currentTrackPieceType = trackType; @@ -3446,7 +3437,6 @@ namespace OpenRCT2::Ui::Windows _currentTrackBegin.z = z; if (_currentTrackSelectionFlags.has(TrackSelectionFlag::track) && _currentTrackBegin == _previousTrackPiece) { - MapInvalidateMapSelectionTiles(); return; } @@ -3475,7 +3465,6 @@ namespace OpenRCT2::Ui::Windows auto intent = Intent(INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION); ContextBroadcastIntent(&intent); - MapInvalidateMapSelectionTiles(); return; } @@ -3564,7 +3553,6 @@ namespace OpenRCT2::Ui::Windows } WindowRideConstructionUpdateActiveElements(); - MapInvalidateMapSelectionTiles(); } /** @@ -3573,8 +3561,6 @@ namespace OpenRCT2::Ui::Windows */ void RideConstructionToolupdateEntranceExit(const ScreenCoordsXY& screenCoords) { - MapInvalidateSelectionRect(); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); @@ -3591,7 +3577,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectPositionB = entranceOrExitCoords; gMapSelectArrowPosition = entranceOrExitCoords; gMapSelectArrowDirection = DirectionReverse(entranceOrExitCoords.direction); - MapInvalidateSelectionRect(); entranceOrExitCoords.direction = DirectionReverse(gRideEntranceExitPlaceDirection); StationIndex stationNum = gRideEntranceExitPlaceStationIndex; @@ -3619,7 +3604,6 @@ namespace OpenRCT2::Ui::Windows WindowBase* w; - MapInvalidateMapSelectionTiles(); RideConstructionInvalidateCurrentTrack(); CoordsXYZ mapCoords{}; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index c3d3892c0642..7b834ac7cc2d 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1761,8 +1761,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectType = getMapSelectQuarter((quadrant ^ 2)); } - MapInvalidateSelectionRect(); - // If no change in ghost placement if ((gSceneryGhostType & SCENERY_GHOST_FLAG_0) && mapTile == gSceneryGhostPosition && quadrant == _unkF64F0E && gSceneryPlaceZ == _unkF64F0A && gSceneryPlaceObject.SceneryType == SCENERY_TYPE_SMALL @@ -1817,8 +1815,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectPositionB.y = mapTile.y; gMapSelectType = MapSelectType::full; - MapInvalidateSelectionRect(); - // If no change in ghost placement if ((gSceneryGhostType & SCENERY_GHOST_FLAG_1) && mapTile == gSceneryGhostPosition && z == gSceneryGhostPosition.z) { @@ -1856,8 +1852,6 @@ namespace OpenRCT2::Ui::Windows setMapSelectRange(mapTile); gMapSelectType = getMapSelectEdge(edge); - MapInvalidateSelectionRect(); - // If no change in ghost placement if ((gSceneryGhostType & SCENERY_GHOST_FLAG_2) && mapTile == gSceneryGhostPosition && edge == gSceneryGhostWallRotation && gSceneryPlaceZ == _unkF64F0A) @@ -1919,7 +1913,6 @@ namespace OpenRCT2::Ui::Windows } gMapSelectFlags.set(MapSelectFlag::enableConstruct); - MapInvalidateMapSelectionTiles(); // If no change in ghost placement if ((gSceneryGhostType & SCENERY_GHOST_FLAG_3) && mapTile == gSceneryGhostPosition && gSceneryPlaceZ == _unkF64F0A @@ -1977,8 +1970,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectPositionB.y = mapTile.y; gMapSelectType = MapSelectType::full; - MapInvalidateSelectionRect(); - // If no change in ghost placement if ((gSceneryGhostType & SCENERY_GHOST_FLAG_4) && mapTile == gSceneryGhostPosition && z == gSceneryGhostPosition.z && direction == gSceneryPlaceRotation) @@ -1999,9 +1990,6 @@ namespace OpenRCT2::Ui::Windows */ void onToolUpdate(WidgetIndex widgetIndex, const ScreenCoordsXY& screenPos) override { - MapInvalidateSelectionRect(); - MapInvalidateMapSelectionTiles(); - gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index d62cfd78f6dd..450ca1555019 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -668,8 +668,6 @@ namespace OpenRCT2::Ui::Windows if (widgetIndex != WIDX_PICKUP) return; - MapInvalidateSelectionRect(); - gMapSelectFlags.unset(MapSelectFlag::enable); auto mapCoords = FootpathGetCoordinatesFromPos({ screenCoords.x, screenCoords.y + 16 }, nullptr, nullptr); @@ -679,7 +677,6 @@ namespace OpenRCT2::Ui::Windows gMapSelectType = MapSelectType::full; gMapSelectPositionA = mapCoords; gMapSelectPositionB = mapCoords; - MapInvalidateSelectionRect(); } gPickupPeepImage = ImageId(); diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 51a12de56c3a..e79042f0b804 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -969,7 +969,6 @@ static uint64_t PageDisabledWidgets[] = { void onToolUpdate(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override { - MapInvalidateSelectionRect(); gMapSelectFlags.set(MapSelectFlag::enable); CoordsXY mapCoords; @@ -999,7 +998,6 @@ static uint64_t PageDisabledWidgets[] = { gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectType = MapSelectType::full; - MapInvalidateSelectionRect(); } void onToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index cc08d5509958..c194b9bf0460 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -121,7 +121,6 @@ namespace OpenRCT2::Ui::Windows { ClearProvisional(); ViewportSetVisibility(ViewportVisibility::standard); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); HideGridlines(); @@ -172,7 +171,6 @@ namespace OpenRCT2::Ui::Windows { TrackDesignState tds{}; - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); @@ -256,7 +254,6 @@ namespace OpenRCT2::Ui::Windows void onToolDown(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) override { ClearProvisional(); - MapInvalidateMapSelectionTiles(); gMapSelectFlags.unset(MapSelectFlag::enable); gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::enableArrow); diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index f6f0b320eef2..46966210f4f2 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -248,14 +248,12 @@ namespace OpenRCT2::Ui::Windows auto mapCoords = ScreenPosToMapPos(screenCoords, &direction); if (mapCoords) { - MapInvalidateSelectionRect(); gMapSelectFlags.set(MapSelectFlag::enable); gMapSelectPositionA.x = std::min(_selectionStart.x, mapCoords->x); gMapSelectPositionB.x = std::max(_selectionStart.x, mapCoords->x); gMapSelectPositionA.y = std::min(_selectionStart.y, mapCoords->y); gMapSelectPositionB.y = std::max(_selectionStart.y, mapCoords->y); gMapSelectType = MapSelectType::full; - MapInvalidateSelectionRect(); } } diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index b8af23f4ad0d..e28ee615e480 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -224,7 +224,6 @@ namespace OpenRCT2::Ui::Windows switch (widgetIndex) { case WIDX_BACKGROUND: - MapInvalidateSelectionRect(); gMapSelectFlags.unset(MapSelectFlag::enable); gCurrentToolId = Tool::waterDown; break; @@ -295,8 +294,6 @@ namespace OpenRCT2::Ui::Windows */ void ToolUpdateWater(const ScreenCoordsXY& screenPos) { - MapInvalidateSelectionRect(); - auto* windowMgr = Ui::GetWindowManager(); auto& gameState = getGameState(); @@ -392,7 +389,6 @@ namespace OpenRCT2::Ui::Windows state_changed++; } - MapInvalidateSelectionRect(); if (!state_changed) return; diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index f69a50ab4247..907f4b40e54b 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -696,9 +696,6 @@ static constexpr float kWindowScrollLocations[][2] = { { gInputFlags.unset(InputFlag::toolActive); - MapInvalidateSelectionRect(); - MapInvalidateMapSelectionTiles(); - // Reset map selection gMapSelectFlags.clearAll(); diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 589a0899d3fe..8e6925e3caa8 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -533,7 +533,6 @@ void RideConstructionInvalidateCurrentTrack() { _currentTrackSelectionFlags.unset(TrackSelectionFlag::arrow); gMapSelectFlags.unset(MapSelectFlag::enableArrow); - MapInvalidateTileFull(_currentTrackBegin); } RideConstructionRemoveGhosts(); break; diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index a4efaadd5e1c..6345f9ba11bf 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1816,7 +1816,6 @@ static GameActions::Result TrackDesignPlaceVirtual( gMapSelectFlags.set(MapSelectFlag::enableConstruct); gMapSelectFlags.set(MapSelectFlag::enableArrow); gMapSelectFlags.unset(MapSelectFlag::green); - MapInvalidateMapSelectionTiles(); } auto res = GameActions::Result(); diff --git a/src/openrct2/world/MapSelection.cpp b/src/openrct2/world/MapSelection.cpp index fa0138906f18..72dc5eea9bd2 100644 --- a/src/openrct2/world/MapSelection.cpp +++ b/src/openrct2/world/MapSelection.cpp @@ -21,43 +21,6 @@ uint8_t gMapSelectArrowDirection; std::vector gMapSelectionTiles; -/** - * - * rct2: 0x0068AB1B - */ -void MapInvalidateMapSelectionTiles() -{ - if (!(gMapSelectFlags.has(MapSelectFlag::enableConstruct))) - return; - - for (const auto& position : gMapSelectionTiles) - MapInvalidateTileFull(position); -} - -/** - * - * rct2: 0x0068AAE1 - */ -void MapInvalidateSelectionRect() -{ - int32_t x0, y0, x1, y1, left, right, top, bottom; - - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) - return; - - x0 = gMapSelectPositionA.x + 16; - y0 = gMapSelectPositionA.y + 16; - x1 = gMapSelectPositionB.x + 16; - y1 = gMapSelectPositionB.y + 16; - MapGetBoundingBox({ x0, y0, x1, y1 }, &left, &top, &right, &bottom); - left -= 32; - right += 32; - bottom += 32; - top -= 32 + 2080; - - OpenRCT2::ViewportsInvalidate({ { left, top }, { right, bottom } }); -} - MapRange getMapSelectRange() { return MapRange(gMapSelectPositionA, gMapSelectPositionB); diff --git a/src/openrct2/world/MapSelection.h b/src/openrct2/world/MapSelection.h index 8899b8c76cdf..f266d235ffb9 100644 --- a/src/openrct2/world/MapSelection.h +++ b/src/openrct2/world/MapSelection.h @@ -63,8 +63,6 @@ extern uint8_t gMapSelectArrowDirection; extern std::vector gMapSelectionTiles; -void MapInvalidateMapSelectionTiles(); -void MapInvalidateSelectionRect(); MapRange getMapSelectRange(); void setMapSelectRange(const MapRange& range); void setMapSelectRange(const CoordsXY coords); From 68dc53bfc8d063c4ca23d85799ac6487da627f4e Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 03:13:08 +0000 Subject: [PATCH 043/222] Invalidate map selection region and arrow only if changed --- src/openrct2/paint/Painter.cpp | 2 ++ src/openrct2/world/MapSelection.cpp | 53 +++++++++++++++++++++++++++++ src/openrct2/world/MapSelection.h | 5 +++ 3 files changed, 60 insertions(+) diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index 89c102172ac0..9404507fc2a6 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -24,6 +24,7 @@ #include "../scenes/intro/IntroScene.h" #include "../ui/UiContext.h" #include "../ui/WindowManager.h" +#include "../world/MapSelection.h" #include "../world/TileInspector.h" using namespace OpenRCT2; @@ -48,6 +49,7 @@ void Painter::Paint(IDrawingEngine& de) } else { + MapSelection::Invalidate(); VirtualFloorInvalidate(false); de.PaintWindows(); diff --git a/src/openrct2/world/MapSelection.cpp b/src/openrct2/world/MapSelection.cpp index 72dc5eea9bd2..75ba8fdd7b8a 100644 --- a/src/openrct2/world/MapSelection.cpp +++ b/src/openrct2/world/MapSelection.cpp @@ -21,6 +21,12 @@ uint8_t gMapSelectArrowDirection; std::vector gMapSelectionTiles; +static MapSelectFlags _previousMapSelectFlags; +static CoordsXY _previousMapSelectPositionA; +static CoordsXY _previousMapSelectPositionB; +static CoordsXYZ _previousMapSelectArrowPosition; +static uint8_t _previousMapSelectArrowDirection; + MapRange getMapSelectRange() { return MapRange(gMapSelectPositionA, gMapSelectPositionB); @@ -37,3 +43,50 @@ void setMapSelectRange(const CoordsXY coords) { setMapSelectRange({ coords, coords }); } + +namespace OpenRCT2::MapSelection +{ + + void Invalidate() + { + if (!_previousMapSelectFlags.has(MapSelectFlag::enable) && gMapSelectFlags.has(MapSelectFlag::enable)) + { + MapInvalidateRegion(gMapSelectPositionA, gMapSelectPositionB); + } + else if (_previousMapSelectFlags.has(MapSelectFlag::enable) && !gMapSelectFlags.has(MapSelectFlag::enable)) + { + MapInvalidateRegion(_previousMapSelectPositionA, _previousMapSelectPositionB); + } + else if ( + gMapSelectFlags.has(MapSelectFlag::enable) + && (_previousMapSelectPositionA != gMapSelectPositionA || _previousMapSelectPositionB != gMapSelectPositionB)) + { + MapInvalidateRegion(_previousMapSelectPositionA, _previousMapSelectPositionB); + MapInvalidateRegion(gMapSelectPositionA, gMapSelectPositionB); + } + + if (!_previousMapSelectFlags.has(MapSelectFlag::enableArrow) && gMapSelectFlags.has(MapSelectFlag::enableArrow)) + { + MapInvalidateTile({ gMapSelectArrowPosition, gMapSelectArrowPosition.z }); + } + else if (_previousMapSelectFlags.has(MapSelectFlag::enableArrow) && !gMapSelectFlags.has(MapSelectFlag::enableArrow)) + { + MapInvalidateTile({ _previousMapSelectArrowPosition, _previousMapSelectArrowPosition.z }); + } + else if (gMapSelectFlags.has(MapSelectFlag::enableArrow) && _previousMapSelectArrowPosition != gMapSelectArrowPosition) + { + MapInvalidateTile({ _previousMapSelectArrowPosition, _previousMapSelectArrowPosition.z }); + MapInvalidateTile({ gMapSelectArrowPosition, gMapSelectArrowPosition.z }); + } + else if (_previousMapSelectArrowDirection != gMapSelectArrowDirection) + { + MapInvalidateTile({ gMapSelectArrowPosition, gMapSelectArrowPosition.z }); + } + + _previousMapSelectFlags = gMapSelectFlags; + _previousMapSelectPositionA = gMapSelectPositionA; + _previousMapSelectPositionB = gMapSelectPositionB; + _previousMapSelectArrowPosition = gMapSelectArrowPosition; + _previousMapSelectArrowDirection = gMapSelectArrowDirection; + } +} // namespace OpenRCT2::MapSelection diff --git a/src/openrct2/world/MapSelection.h b/src/openrct2/world/MapSelection.h index f266d235ffb9..d79f3e3527d0 100644 --- a/src/openrct2/world/MapSelection.h +++ b/src/openrct2/world/MapSelection.h @@ -66,3 +66,8 @@ extern std::vector gMapSelectionTiles; MapRange getMapSelectRange(); void setMapSelectRange(const MapRange& range); void setMapSelectRange(const CoordsXY coords); + +namespace OpenRCT2::MapSelection +{ + void Invalidate(); +} // namespace OpenRCT2::MapSelection From 6631b452adeb19125c2cab61e5e5278be823b88a Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 03:52:01 +0000 Subject: [PATCH 044/222] Encapsulate selected tiles and invalidate when changed --- src/openrct2-ui/scripting/ScTileSelection.hpp | 8 ++--- .../windows/EditorParkEntrance.cpp | 8 ++--- src/openrct2-ui/windows/Footpath.cpp | 4 +-- src/openrct2-ui/windows/RideConstruction.cpp | 14 ++++---- src/openrct2-ui/windows/Scenery.cpp | 4 +-- src/openrct2/paint/VirtualFloor.cpp | 6 ++-- .../paint/tile_element/Paint.Surface.cpp | 2 +- src/openrct2/ride/TrackDesign.cpp | 11 ++++--- src/openrct2/world/MapSelection.cpp | 33 ++++++++++++++++++- src/openrct2/world/MapSelection.h | 6 ++-- 10 files changed, 65 insertions(+), 31 deletions(-) diff --git a/src/openrct2-ui/scripting/ScTileSelection.hpp b/src/openrct2-ui/scripting/ScTileSelection.hpp index 90204844a1a7..6c7022420492 100644 --- a/src/openrct2-ui/scripting/ScTileSelection.hpp +++ b/src/openrct2-ui/scripting/ScTileSelection.hpp @@ -76,7 +76,7 @@ namespace OpenRCT2::Scripting if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { duk_uarridx_t index = 0; - for (const auto& tile : gMapSelectionTiles) + for (const auto& tile : MapSelection::GetSelectedTiles()) { duk_push_object(_ctx); duk_push_int(_ctx, tile.x); @@ -92,7 +92,7 @@ namespace OpenRCT2::Scripting void tiles_set(DukValue value) { - gMapSelectionTiles.clear(); + MapSelection::ClearSelectedTiles(); if (value.is_array()) { value.push(); @@ -105,14 +105,14 @@ namespace OpenRCT2::Scripting auto coords = GetCoordsXY(dukElement); if (coords) { - gMapSelectionTiles.push_back(*coords); + MapSelection::AddSelectedTile(*coords); } } } duk_pop(_ctx); } - if (gMapSelectionTiles.empty()) + if (MapSelection::GetSelectedTiles().empty()) { gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::green); diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 653b727d7397..19ff78cde68b 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -175,12 +175,12 @@ namespace OpenRCT2::Ui::Windows } int32_t sideDirection = (parkEntrancePosition.direction + 1) & 3; - gMapSelectionTiles.clear(); - gMapSelectionTiles.push_back({ parkEntrancePosition.x, parkEntrancePosition.y }); - gMapSelectionTiles.push_back( + MapSelection::ClearSelectedTiles(); + MapSelection::AddSelectedTile({ parkEntrancePosition.x, parkEntrancePosition.y }); + MapSelection::AddSelectedTile( { parkEntrancePosition.x + CoordsDirectionDelta[sideDirection].x, parkEntrancePosition.y + CoordsDirectionDelta[sideDirection].y }); - gMapSelectionTiles.push_back( + MapSelection::AddSelectedTile( { parkEntrancePosition.x - CoordsDirectionDelta[sideDirection].x, parkEntrancePosition.y - CoordsDirectionDelta[sideDirection].y }); diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 488b00cef4ee..af039e05c2af 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1595,8 +1595,8 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.set(MapSelectFlag::enableConstruct, MapSelectFlag::green); int32_t direction = _footpathConstructDirection; - gMapSelectionTiles.clear(); - gMapSelectionTiles.push_back( + MapSelection::ClearSelectedTiles(); + MapSelection::AddSelectedTile( { _footpathConstructFromPosition.x + CoordsDirectionDelta[direction].x, _footpathConstructFromPosition.y + CoordsDirectionDelta[direction].y }); } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 0ae144c313e0..915a28ae2ef6 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2257,7 +2257,7 @@ namespace OpenRCT2::Ui::Windows trackPos = _currentTrackBegin; break; case RideConstructionState::EntranceExit: - gMapSelectionTiles.clear(); + MapSelection::ClearSelectedTiles(); return; default: if (WindowRideConstructionUpdateState(&trackType, &trackDirection, nullptr, nullptr, &trackPos, nullptr)) @@ -2286,13 +2286,13 @@ namespace OpenRCT2::Ui::Windows const auto& ted = GetTrackElementDescriptor(trackType); trackDirection &= 3; - gMapSelectionTiles.clear(); + MapSelection::ClearSelectedTiles(); for (uint8_t i = 0; i < ted.numSequences; i++) { CoordsXY offsets = { ted.sequences[i].clearance.x, ted.sequences[i].clearance.y }; CoordsXY currentTileCoords = tileCoords + offsets.Rotate(trackDirection); - gMapSelectionTiles.push_back(currentTileCoords); + MapSelection::AddSelectedTile(currentTileCoords); } } @@ -3367,8 +3367,8 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::green); gMapSelectArrowPosition = CoordsXYZ{ *mapCoords, z }; gMapSelectArrowDirection = _currentTrackPieceDirection; - gMapSelectionTiles.clear(); - gMapSelectionTiles.push_back(*mapCoords); + MapSelection::ClearSelectedTiles(); + MapSelection::AddSelectedTile(*mapCoords); RideId rideIndex; OpenRCT2::TrackElemType trackType; @@ -3409,7 +3409,7 @@ namespace OpenRCT2::Ui::Windows if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { int32_t highestZ = 0; - for (const auto& selectedTile : gMapSelectionTiles) + for (const auto& selectedTile : MapSelection::GetSelectedTiles()) { if (MapIsLocationValid(selectedTile)) { @@ -3620,7 +3620,7 @@ namespace OpenRCT2::Ui::Windows highestZ = 0; if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { - for (const auto& selectedTile : gMapSelectionTiles) + for (const auto& selectedTile : MapSelection::GetSelectedTiles()) { if (!MapIsLocationValid(selectedTile)) continue; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 7b834ac7cc2d..1d9099a44134 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1899,7 +1899,7 @@ namespace OpenRCT2::Ui::Windows } auto* sceneryEntry = ObjectManager::GetObjectEntry(selection.EntryIndex); - gMapSelectionTiles.clear(); + MapSelection::ClearSelectedTiles(); for (auto& tile : sceneryEntry->tiles) { @@ -1909,7 +1909,7 @@ namespace OpenRCT2::Ui::Windows rotatedTileCoords.x += mapTile.x; rotatedTileCoords.y += mapTile.y; - gMapSelectionTiles.push_back(rotatedTileCoords); + MapSelection::AddSelectedTile(rotatedTileCoords); } gMapSelectFlags.set(MapSelectFlag::enableConstruct); diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index bf72fa6ffa13..9df27a1cd83a 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -107,7 +107,7 @@ void VirtualFloorInvalidate(const bool alwaysInvalidate) if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { - for (const auto& tile : gMapSelectionTiles) + for (const auto& tile : MapSelection::GetSelectedTiles()) { min_position.x = std::min(min_position.x, tile.x); min_position.y = std::min(min_position.y, tile.y); @@ -177,7 +177,7 @@ bool VirtualFloorTileIsFloor(const CoordsXY& loc) if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { // Check if we are anywhere near the selection tiles (larger scenery / rides) - for (const auto& tile : gMapSelectionTiles) + for (const auto& tile : MapSelection::GetSelectedTiles()) { if (loc.x >= tile.x - kVirtualFloorBaseSize && loc.y >= tile.y - kVirtualFloorBaseSize && loc.x <= tile.x + kVirtualFloorBaseSize && loc.y <= tile.y + kVirtualFloorBaseSize) @@ -213,7 +213,7 @@ static void VirtualFloorGetTileProperties( // See if we are on top of the selection tiles if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { - for (const auto& tile : gMapSelectionTiles) + for (const auto& tile : MapSelection::GetSelectedTiles()) { if (tile == loc) { diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index 448f8b2090b8..3654f6ba3736 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -1168,7 +1168,7 @@ void PaintSurface(PaintSession& session, uint8_t direction, uint16_t height, con { const CoordsXY& pos = session.MapPosition; - for (const auto& tile : gMapSelectionTiles) + for (const auto& tile : MapSelection::GetSelectedTiles()) { if (tile.x != pos.x || tile.y != pos.y) { diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 6345f9ba11bf..b1ae8aa833b6 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -924,10 +924,11 @@ void TrackDesignMirror(TrackDesign& td) static void TrackDesignAddSelectedTile(const CoordsXY& coords) { - auto tileIterator = std::find(gMapSelectionTiles.begin(), gMapSelectionTiles.end(), coords); - if (tileIterator == gMapSelectionTiles.end()) + const auto& selectedTiles = MapSelection::GetSelectedTiles(); + const auto tileIterator = std::find(selectedTiles.begin(), selectedTiles.end(), coords); + if (tileIterator == selectedTiles.end()) { - gMapSelectionTiles.push_back(coords); + MapSelection::AddSelectedTile(coords); } } @@ -1436,7 +1437,7 @@ static GameActions::Result TrackDesignPlaceMaze( { if (tds.placeOperation == TrackPlaceOperation::drawOutlines) { - gMapSelectionTiles.clear(); + MapSelection::ClearSelectedTiles(); gMapSelectArrowPosition = CoordsXYZ{ origin, TileElementHeight(origin) }; gMapSelectArrowDirection = _currentTrackPieceDirection; } @@ -1565,7 +1566,7 @@ static GameActions::Result TrackDesignPlaceRide( tds.origin = origin; if (tds.placeOperation == TrackPlaceOperation::drawOutlines) { - gMapSelectionTiles.clear(); + MapSelection::ClearSelectedTiles(); gMapSelectArrowPosition = CoordsXYZ{ origin, TileElementHeight(origin) }; gMapSelectArrowDirection = _currentTrackPieceDirection; } diff --git a/src/openrct2/world/MapSelection.cpp b/src/openrct2/world/MapSelection.cpp index 75ba8fdd7b8a..dc9a83a8b81d 100644 --- a/src/openrct2/world/MapSelection.cpp +++ b/src/openrct2/world/MapSelection.cpp @@ -19,7 +19,8 @@ CoordsXY gMapSelectPositionB; CoordsXYZ gMapSelectArrowPosition; uint8_t gMapSelectArrowDirection; -std::vector gMapSelectionTiles; +static std::vector _mapSelectionTiles; +static bool _mapSelectionTilesInvalidate = false; static MapSelectFlags _previousMapSelectFlags; static CoordsXY _previousMapSelectPositionA; @@ -46,6 +47,26 @@ void setMapSelectRange(const CoordsXY coords) namespace OpenRCT2::MapSelection { + void ClearSelectedTiles() + { + for (const CoordsXY& coords : _mapSelectionTiles) + { + MapInvalidateTileFull(coords); + } + _mapSelectionTiles.clear(); + _mapSelectionTilesInvalidate = false; + } + + void AddSelectedTile(const CoordsXY& coords) + { + _mapSelectionTiles.push_back(coords); + _mapSelectionTilesInvalidate = true; + } + + const std::vector& GetSelectedTiles() + { + return _mapSelectionTiles; + } void Invalidate() { @@ -83,6 +104,16 @@ namespace OpenRCT2::MapSelection MapInvalidateTile({ gMapSelectArrowPosition, gMapSelectArrowPosition.z }); } + if (_previousMapSelectFlags.has(MapSelectFlag::enableConstruct) != gMapSelectFlags.has(MapSelectFlag::enableConstruct) + || _mapSelectionTilesInvalidate) + { + for (const CoordsXY& coords : _mapSelectionTiles) + { + MapInvalidateTileFull(coords); + } + _mapSelectionTilesInvalidate = false; + } + _previousMapSelectFlags = gMapSelectFlags; _previousMapSelectPositionA = gMapSelectPositionA; _previousMapSelectPositionB = gMapSelectPositionB; diff --git a/src/openrct2/world/MapSelection.h b/src/openrct2/world/MapSelection.h index d79f3e3527d0..407171d70f25 100644 --- a/src/openrct2/world/MapSelection.h +++ b/src/openrct2/world/MapSelection.h @@ -61,13 +61,15 @@ extern CoordsXY gMapSelectPositionB; extern CoordsXYZ gMapSelectArrowPosition; extern uint8_t gMapSelectArrowDirection; -extern std::vector gMapSelectionTiles; - MapRange getMapSelectRange(); void setMapSelectRange(const MapRange& range); void setMapSelectRange(const CoordsXY coords); namespace OpenRCT2::MapSelection { + void ClearSelectedTiles(); + void AddSelectedTile(const CoordsXY& coords); + const std::vector& GetSelectedTiles(); + void Invalidate(); } // namespace OpenRCT2::MapSelection From 6085665dae15d473f0e9b6f3816ca66af13e0fce Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 08:16:36 +0000 Subject: [PATCH 045/222] Invalidate map selection if selection type was changed --- src/openrct2/world/MapSelection.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/openrct2/world/MapSelection.cpp b/src/openrct2/world/MapSelection.cpp index dc9a83a8b81d..d25e4fa24cc1 100644 --- a/src/openrct2/world/MapSelection.cpp +++ b/src/openrct2/world/MapSelection.cpp @@ -23,6 +23,7 @@ static std::vector _mapSelectionTiles; static bool _mapSelectionTilesInvalidate = false; static MapSelectFlags _previousMapSelectFlags; +static MapSelectType _previousMapSelectType; static CoordsXY _previousMapSelectPositionA; static CoordsXY _previousMapSelectPositionB; static CoordsXYZ _previousMapSelectArrowPosition; @@ -85,6 +86,10 @@ namespace OpenRCT2::MapSelection MapInvalidateRegion(_previousMapSelectPositionA, _previousMapSelectPositionB); MapInvalidateRegion(gMapSelectPositionA, gMapSelectPositionB); } + else if (_previousMapSelectType != gMapSelectType) + { + MapInvalidateRegion(gMapSelectPositionA, gMapSelectPositionB); + } if (!_previousMapSelectFlags.has(MapSelectFlag::enableArrow) && gMapSelectFlags.has(MapSelectFlag::enableArrow)) { @@ -115,6 +120,7 @@ namespace OpenRCT2::MapSelection } _previousMapSelectFlags = gMapSelectFlags; + _previousMapSelectType = gMapSelectType; _previousMapSelectPositionA = gMapSelectPositionA; _previousMapSelectPositionB = gMapSelectPositionB; _previousMapSelectArrowPosition = gMapSelectArrowPosition; From 32b32adffcba5b03e39fb85d5bff60c1244c0a0b Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 15:28:10 +0000 Subject: [PATCH 046/222] Prevent large scenery selected tiles invalidating every frame --- src/openrct2-ui/windows/Scenery.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 1d9099a44134..dd6050f4079e 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1899,18 +1899,6 @@ namespace OpenRCT2::Ui::Windows } auto* sceneryEntry = ObjectManager::GetObjectEntry(selection.EntryIndex); - MapSelection::ClearSelectedTiles(); - - for (auto& tile : sceneryEntry->tiles) - { - CoordsXY tileLocation = { tile.offset }; - auto rotatedTileCoords = tileLocation.Rotate(direction); - - rotatedTileCoords.x += mapTile.x; - rotatedTileCoords.y += mapTile.y; - - MapSelection::AddSelectedTile(rotatedTileCoords); - } gMapSelectFlags.set(MapSelectFlag::enableConstruct); @@ -1922,6 +1910,12 @@ namespace OpenRCT2::Ui::Windows return; } + MapSelection::ClearSelectedTiles(); + for (auto& tile : sceneryEntry->tiles) + { + MapSelection::AddSelectedTile(mapTile + tile.offset.Rotate(direction)); + } + SceneryRemoveGhostToolPlacement(); gSceneryPlaceObject.SceneryType = SCENERY_TYPE_LARGE; From f7bc440966996befbb20a5351ab46eca3614f7c7 Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 15:51:13 +0000 Subject: [PATCH 047/222] Add changelog entry for map selection grid invalidation improvements --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 2706afcab612..3bf6af5ff444 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.30 (in development) ------------------------------------------------------------------------ +- Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. 0.4.29 (2025-11-22) From e0f9e756cb37827279b390766718909b949bf016 Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 16:54:01 +0000 Subject: [PATCH 048/222] Rename OpenRCT2::MapSelection functions to lowerCamelCase --- src/openrct2-ui/scripting/ScTileSelection.hpp | 8 ++++---- src/openrct2-ui/windows/EditorParkEntrance.cpp | 8 ++++---- src/openrct2-ui/windows/Footpath.cpp | 4 ++-- src/openrct2-ui/windows/RideConstruction.cpp | 14 +++++++------- src/openrct2-ui/windows/Scenery.cpp | 4 ++-- src/openrct2/paint/Painter.cpp | 2 +- src/openrct2/paint/VirtualFloor.cpp | 6 +++--- src/openrct2/paint/tile_element/Paint.Surface.cpp | 2 +- src/openrct2/ride/TrackDesign.cpp | 8 ++++---- src/openrct2/world/MapSelection.cpp | 8 ++++---- src/openrct2/world/MapSelection.h | 8 ++++---- 11 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/openrct2-ui/scripting/ScTileSelection.hpp b/src/openrct2-ui/scripting/ScTileSelection.hpp index 6c7022420492..b3546dd97583 100644 --- a/src/openrct2-ui/scripting/ScTileSelection.hpp +++ b/src/openrct2-ui/scripting/ScTileSelection.hpp @@ -76,7 +76,7 @@ namespace OpenRCT2::Scripting if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { duk_uarridx_t index = 0; - for (const auto& tile : MapSelection::GetSelectedTiles()) + for (const auto& tile : MapSelection::getSelectedTiles()) { duk_push_object(_ctx); duk_push_int(_ctx, tile.x); @@ -92,7 +92,7 @@ namespace OpenRCT2::Scripting void tiles_set(DukValue value) { - MapSelection::ClearSelectedTiles(); + MapSelection::clearSelectedTiles(); if (value.is_array()) { value.push(); @@ -105,14 +105,14 @@ namespace OpenRCT2::Scripting auto coords = GetCoordsXY(dukElement); if (coords) { - MapSelection::AddSelectedTile(*coords); + MapSelection::addSelectedTile(*coords); } } } duk_pop(_ctx); } - if (MapSelection::GetSelectedTiles().empty()) + if (MapSelection::getSelectedTiles().empty()) { gMapSelectFlags.unset(MapSelectFlag::enableConstruct); gMapSelectFlags.unset(MapSelectFlag::green); diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 19ff78cde68b..128f2145ad32 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -175,12 +175,12 @@ namespace OpenRCT2::Ui::Windows } int32_t sideDirection = (parkEntrancePosition.direction + 1) & 3; - MapSelection::ClearSelectedTiles(); - MapSelection::AddSelectedTile({ parkEntrancePosition.x, parkEntrancePosition.y }); - MapSelection::AddSelectedTile( + MapSelection::clearSelectedTiles(); + MapSelection::addSelectedTile({ parkEntrancePosition.x, parkEntrancePosition.y }); + MapSelection::addSelectedTile( { parkEntrancePosition.x + CoordsDirectionDelta[sideDirection].x, parkEntrancePosition.y + CoordsDirectionDelta[sideDirection].y }); - MapSelection::AddSelectedTile( + MapSelection::addSelectedTile( { parkEntrancePosition.x - CoordsDirectionDelta[sideDirection].x, parkEntrancePosition.y - CoordsDirectionDelta[sideDirection].y }); diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index af039e05c2af..ccaa3c13d113 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1595,8 +1595,8 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.set(MapSelectFlag::enableConstruct, MapSelectFlag::green); int32_t direction = _footpathConstructDirection; - MapSelection::ClearSelectedTiles(); - MapSelection::AddSelectedTile( + MapSelection::clearSelectedTiles(); + MapSelection::addSelectedTile( { _footpathConstructFromPosition.x + CoordsDirectionDelta[direction].x, _footpathConstructFromPosition.y + CoordsDirectionDelta[direction].y }); } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 915a28ae2ef6..385c639ffaa1 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2257,7 +2257,7 @@ namespace OpenRCT2::Ui::Windows trackPos = _currentTrackBegin; break; case RideConstructionState::EntranceExit: - MapSelection::ClearSelectedTiles(); + MapSelection::clearSelectedTiles(); return; default: if (WindowRideConstructionUpdateState(&trackType, &trackDirection, nullptr, nullptr, &trackPos, nullptr)) @@ -2286,13 +2286,13 @@ namespace OpenRCT2::Ui::Windows const auto& ted = GetTrackElementDescriptor(trackType); trackDirection &= 3; - MapSelection::ClearSelectedTiles(); + MapSelection::clearSelectedTiles(); for (uint8_t i = 0; i < ted.numSequences; i++) { CoordsXY offsets = { ted.sequences[i].clearance.x, ted.sequences[i].clearance.y }; CoordsXY currentTileCoords = tileCoords + offsets.Rotate(trackDirection); - MapSelection::AddSelectedTile(currentTileCoords); + MapSelection::addSelectedTile(currentTileCoords); } } @@ -3367,8 +3367,8 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::green); gMapSelectArrowPosition = CoordsXYZ{ *mapCoords, z }; gMapSelectArrowDirection = _currentTrackPieceDirection; - MapSelection::ClearSelectedTiles(); - MapSelection::AddSelectedTile(*mapCoords); + MapSelection::clearSelectedTiles(); + MapSelection::addSelectedTile(*mapCoords); RideId rideIndex; OpenRCT2::TrackElemType trackType; @@ -3409,7 +3409,7 @@ namespace OpenRCT2::Ui::Windows if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { int32_t highestZ = 0; - for (const auto& selectedTile : MapSelection::GetSelectedTiles()) + for (const auto& selectedTile : MapSelection::getSelectedTiles()) { if (MapIsLocationValid(selectedTile)) { @@ -3620,7 +3620,7 @@ namespace OpenRCT2::Ui::Windows highestZ = 0; if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { - for (const auto& selectedTile : MapSelection::GetSelectedTiles()) + for (const auto& selectedTile : MapSelection::getSelectedTiles()) { if (!MapIsLocationValid(selectedTile)) continue; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index dd6050f4079e..2bff37e02292 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1910,10 +1910,10 @@ namespace OpenRCT2::Ui::Windows return; } - MapSelection::ClearSelectedTiles(); + MapSelection::clearSelectedTiles(); for (auto& tile : sceneryEntry->tiles) { - MapSelection::AddSelectedTile(mapTile + tile.offset.Rotate(direction)); + MapSelection::addSelectedTile(mapTile + tile.offset.Rotate(direction)); } SceneryRemoveGhostToolPlacement(); diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index 9404507fc2a6..2117d4060479 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -49,7 +49,7 @@ void Painter::Paint(IDrawingEngine& de) } else { - MapSelection::Invalidate(); + MapSelection::invalidate(); VirtualFloorInvalidate(false); de.PaintWindows(); diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index 9df27a1cd83a..5f3e490d395a 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -107,7 +107,7 @@ void VirtualFloorInvalidate(const bool alwaysInvalidate) if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { - for (const auto& tile : MapSelection::GetSelectedTiles()) + for (const auto& tile : MapSelection::getSelectedTiles()) { min_position.x = std::min(min_position.x, tile.x); min_position.y = std::min(min_position.y, tile.y); @@ -177,7 +177,7 @@ bool VirtualFloorTileIsFloor(const CoordsXY& loc) if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { // Check if we are anywhere near the selection tiles (larger scenery / rides) - for (const auto& tile : MapSelection::GetSelectedTiles()) + for (const auto& tile : MapSelection::getSelectedTiles()) { if (loc.x >= tile.x - kVirtualFloorBaseSize && loc.y >= tile.y - kVirtualFloorBaseSize && loc.x <= tile.x + kVirtualFloorBaseSize && loc.y <= tile.y + kVirtualFloorBaseSize) @@ -213,7 +213,7 @@ static void VirtualFloorGetTileProperties( // See if we are on top of the selection tiles if (gMapSelectFlags.has(MapSelectFlag::enableConstruct)) { - for (const auto& tile : MapSelection::GetSelectedTiles()) + for (const auto& tile : MapSelection::getSelectedTiles()) { if (tile == loc) { diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index 3654f6ba3736..bf132c8cf918 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -1168,7 +1168,7 @@ void PaintSurface(PaintSession& session, uint8_t direction, uint16_t height, con { const CoordsXY& pos = session.MapPosition; - for (const auto& tile : MapSelection::GetSelectedTiles()) + for (const auto& tile : MapSelection::getSelectedTiles()) { if (tile.x != pos.x || tile.y != pos.y) { diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index b1ae8aa833b6..e2d1914e055f 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -924,11 +924,11 @@ void TrackDesignMirror(TrackDesign& td) static void TrackDesignAddSelectedTile(const CoordsXY& coords) { - const auto& selectedTiles = MapSelection::GetSelectedTiles(); + const auto& selectedTiles = MapSelection::getSelectedTiles(); const auto tileIterator = std::find(selectedTiles.begin(), selectedTiles.end(), coords); if (tileIterator == selectedTiles.end()) { - MapSelection::AddSelectedTile(coords); + MapSelection::addSelectedTile(coords); } } @@ -1437,7 +1437,7 @@ static GameActions::Result TrackDesignPlaceMaze( { if (tds.placeOperation == TrackPlaceOperation::drawOutlines) { - MapSelection::ClearSelectedTiles(); + MapSelection::clearSelectedTiles(); gMapSelectArrowPosition = CoordsXYZ{ origin, TileElementHeight(origin) }; gMapSelectArrowDirection = _currentTrackPieceDirection; } @@ -1566,7 +1566,7 @@ static GameActions::Result TrackDesignPlaceRide( tds.origin = origin; if (tds.placeOperation == TrackPlaceOperation::drawOutlines) { - MapSelection::ClearSelectedTiles(); + MapSelection::clearSelectedTiles(); gMapSelectArrowPosition = CoordsXYZ{ origin, TileElementHeight(origin) }; gMapSelectArrowDirection = _currentTrackPieceDirection; } diff --git a/src/openrct2/world/MapSelection.cpp b/src/openrct2/world/MapSelection.cpp index d25e4fa24cc1..6b2153abcffe 100644 --- a/src/openrct2/world/MapSelection.cpp +++ b/src/openrct2/world/MapSelection.cpp @@ -48,7 +48,7 @@ void setMapSelectRange(const CoordsXY coords) namespace OpenRCT2::MapSelection { - void ClearSelectedTiles() + void clearSelectedTiles() { for (const CoordsXY& coords : _mapSelectionTiles) { @@ -58,18 +58,18 @@ namespace OpenRCT2::MapSelection _mapSelectionTilesInvalidate = false; } - void AddSelectedTile(const CoordsXY& coords) + void addSelectedTile(const CoordsXY& coords) { _mapSelectionTiles.push_back(coords); _mapSelectionTilesInvalidate = true; } - const std::vector& GetSelectedTiles() + const std::vector& getSelectedTiles() { return _mapSelectionTiles; } - void Invalidate() + void invalidate() { if (!_previousMapSelectFlags.has(MapSelectFlag::enable) && gMapSelectFlags.has(MapSelectFlag::enable)) { diff --git a/src/openrct2/world/MapSelection.h b/src/openrct2/world/MapSelection.h index 407171d70f25..5d732968f06c 100644 --- a/src/openrct2/world/MapSelection.h +++ b/src/openrct2/world/MapSelection.h @@ -67,9 +67,9 @@ void setMapSelectRange(const CoordsXY coords); namespace OpenRCT2::MapSelection { - void ClearSelectedTiles(); - void AddSelectedTile(const CoordsXY& coords); - const std::vector& GetSelectedTiles(); + void clearSelectedTiles(); + void addSelectedTile(const CoordsXY& coords); + const std::vector& getSelectedTiles(); - void Invalidate(); + void invalidate(); } // namespace OpenRCT2::MapSelection From 4895b0878e9d75ac61aefe565f816ac76aa92427 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Sun, 23 Nov 2025 04:11:31 +0000 Subject: [PATCH 049/222] Merge Localisation/master into OpenRCT2/develop --- data/language/eo-ZZ.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/eo-ZZ.txt b/data/language/eo-ZZ.txt index 71208c01413c..a07a1faf679a 100644 --- a/data/language/eo-ZZ.txt +++ b/data/language/eo-ZZ.txt @@ -3834,3 +3834,4 @@ STR_7004 :Devigi redesegnon STR_7005 :Treni areon de trotuaro STR_7006 :Desegni borderon ĉirkaŭ bildo-butonoj STR_7007 :Atrakciotipo +STR_7008 :Nekonata atrakciotipo ({INT32}) From 32dcc9b66f92dc2476340bea5e06f6980e4e724a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 23 Nov 2025 23:03:18 +0100 Subject: [PATCH 050/222] Update badge links in README for releases and commits (#25550) Update the badge link to use github's latest release automatically. Update the colour to match for develop badge. --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 7405e0e39d25..66382241e2f5 100644 --- a/readme.md +++ b/readme.md @@ -19,7 +19,7 @@ ### Download | Latest release | Latest development build | |----------------------------------------------------------------------------------------------------------------------|--------------------------| -| [![OpenRCT2.io](https://img.shields.io/badge/master-v0.4.29-green.svg)](https://openrct2.io/download/release/latest) | [![OpenRCT2.io](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop)](https://openrct2.io/download/develop/latest) | +| [![OpenRCT2.io](https://img.shields.io/github/v/release/OpenRCT2/OpenRCT2.svg?color=green)](https://openrct2.io/download/release/latest) | [![OpenRCT2.io](https://img.shields.io/github/last-commit/OpenRCT2/OpenRCT2/develop?color=green)](https://openrct2.io/download/develop/latest) | --- From 66188a108ad226711a4dbe0e83fde3c3e17d11c2 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Tue, 25 Nov 2025 21:52:39 +0100 Subject: [PATCH 051/222] Close #25530: Allow cancelling wall drag without closing Scenery window (#25564) --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Scenery.cpp | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 3bf6af5ff444..543e02624947 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,6 +1,7 @@ 0.4.30 (in development) ------------------------------------------------------------------------ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. +- Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. 0.4.29 (2025-11-22) diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 2bff37e02292..886dd2861393 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -553,8 +553,20 @@ namespace OpenRCT2::Ui::Windows if (!isToolActive(WindowClass::scenery)) { - close(); - return; + if (_inDragMode) + { + removeProvisionalTilesFromMap(); + _provisionalTiles.clear(); + _inDragMode = false; + + ToolSet(*this, WIDX_SCENERY_BACKGROUND, Tool::arrow); + gInputFlags.set(InputFlag::unk6); + } + else + { + close(); + return; + } } if (gWindowSceneryEyedropperEnabled) From a5a2ad8652c73c953e4cf1974e9df1836a3bbe61 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Tue, 25 Nov 2025 22:15:35 +0000 Subject: [PATCH 052/222] Fix chairlift station end tunnels not drawing at certain angles --- distribution/changelog.txt | 1 + src/openrct2/paint/track/transport/Chairlift.cpp | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 543e02624947..3b9ed513c450 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -3,6 +3,7 @@ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. +- Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2/paint/track/transport/Chairlift.cpp b/src/openrct2/paint/track/transport/Chairlift.cpp index c79ba3da5e35..e0722d581b29 100644 --- a/src/openrct2/paint/track/transport/Chairlift.cpp +++ b/src/openrct2/paint/track/transport/Chairlift.cpp @@ -368,10 +368,9 @@ static void ChairliftPaintStationSeNw( imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_SE_NW); PaintAddImageAsParent( session, imageId, { 16, 30, height + 2 }, { { 16, 1, height + 2 }, { 1, 1, 7 } }); // bound offset x is wrong? - - PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); } + PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } From 553b52f709d97c13b574851d734d5f9227d69d31 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sat, 1 Nov 2025 14:53:59 +0000 Subject: [PATCH 053/222] Make the pressed swatch sprite more pronounced Co-Authored-By: matheusvb3 Update colour_pressed_large.png --- distribution/changelog.txt | 1 + resources/g2/icons/colour_pressed_large.png | Bin 269 -> 277 bytes 2 files changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 543e02624947..56124aefc922 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -2,6 +2,7 @@ ------------------------------------------------------------------------ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. +- Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. 0.4.29 (2025-11-22) diff --git a/resources/g2/icons/colour_pressed_large.png b/resources/g2/icons/colour_pressed_large.png index c73c31cb2827e9f358a834a0255e5a22b9036e21..13227a67e122b407f28da5deb440ceef336acc78 100644 GIT binary patch delta 249 zcmVfiFVjye=T{^Dn=}7^C;wj`|F=K?&r7%%bjSbz z0JTX(K~#7F9gl&j#2^qv{UyY!AZcMQRv@H+Fg75*3IhJ}Z_KcZzMWyk^tT;Lo9mPE zy6mg+H)Sz;ganU4t(O>T)Rd8;!BDShi&K`Ju;aXwFW3p>5ORtqZ9NKf+}?&Qg3-MC zXa+^Z$xH{%joU3lBML8E>5wg)l_3jjC{DvB21xgU9i$;s%(NFnAE+%j!GB=1@S~nV z0SsBK19$0~hTCJs3!iJwS+Du{Oy60naq0gDFCJE1Vg6sZ00000NkvXXu0mjfei(7c delta 241 zcmVfiFVjye=T{^DUmyQ}C;yu>|F=IUZv~nF006K_ zL_t(|0X&a~VFV!z1aSu+3vjAHa1Ai}2GF|yQoK0)UVu?ndpW;to&8?h4QqD4ne8re zMo5tDCe`ebstrg{keY@Vvh0b`t~*}!1VjoMZZkSe{28!|AZm-zKFXko7(Chsj?3jw zh9Wu}^wmCP7mk(TF051xhuuViv^Knhlrn{(8)l-4qkRnU4&9C^tR6mlhhD1_9{+S6)dn>g_k500000NkvXXu0mjfLhffy From a7dd47f48bc31b43b7eaf2a6d9a16822d025ff44 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:43:39 +0100 Subject: [PATCH 054/222] Fix #24952: Duplicate track designs when running via Steam without having RCT1 linked --- distribution/changelog.txt | 1 + src/openrct2/PlatformEnvironment.cpp | 3 +++ src/openrct2/core/FileIndex.hpp | 3 +++ 3 files changed, 7 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index f35eb05840f7..ad806be60f5f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -3,6 +3,7 @@ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. +- Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. diff --git a/src/openrct2/PlatformEnvironment.cpp b/src/openrct2/PlatformEnvironment.cpp index 877204870381..f656142adb0b 100644 --- a/src/openrct2/PlatformEnvironment.cpp +++ b/src/openrct2/PlatformEnvironment.cpp @@ -108,6 +108,9 @@ class PlatformEnvironment final : public IPlatformEnvironment { default: case DirBase::rct1: + if (basePath.empty()) + return {}; + directoryName = kDirectoryNamesRCT2[EnumValue(did)]; break; case DirBase::rct2: diff --git a/src/openrct2/core/FileIndex.hpp b/src/openrct2/core/FileIndex.hpp index cd4af38ec385..10ebf9328276 100644 --- a/src/openrct2/core/FileIndex.hpp +++ b/src/openrct2/core/FileIndex.hpp @@ -144,6 +144,9 @@ class FileIndex std::vector files; for (const auto& directory : SearchPaths) { + if (directory.empty()) + continue; + auto absoluteDirectory = OpenRCT2::Path::GetAbsolute(directory); LOG_VERBOSE("FileIndex:Scanning for %s in '%s'", _pattern.c_str(), absoluteDirectory.c_str()); From cce6cea260e125b1db35b85656c07f47cf92d625 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Thu, 27 Nov 2025 04:03:28 +0000 Subject: [PATCH 055/222] Merge Localisation/master into OpenRCT2/develop --- data/language/gl-ES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/gl-ES.txt b/data/language/gl-ES.txt index 144166c6376e..ff329b74d7e7 100644 --- a/data/language/gl-ES.txt +++ b/data/language/gl-ES.txt @@ -3834,3 +3834,4 @@ STR_7004 :Forzar redeseño STR_7005 :Arrastra unha área de camiño STR_7006 :Debuxa un bordo arredor dos botóns de imaxe STR_7007 :Tipo de atracción +STR_7008 :Tipo de atracción descoñecida ({INT32}) From 23da3c6b4631801322b0c148df7c0674c0c71d51 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Thu, 27 Nov 2025 23:24:45 +0100 Subject: [PATCH 056/222] Fix #22484: Lingering ghost entrance after placing park entrance Co-authored-by: mixiate --- distribution/changelog.txt | 2 ++ src/openrct2-ui/windows/EditorParkEntrance.cpp | 11 +++++++++++ src/openrct2/world/Entrance.cpp | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index ad806be60f5f..12e19d15126a 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -3,9 +3,11 @@ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. +- Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. +- Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 128f2145ad32..416360ba0f88 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -41,6 +41,7 @@ namespace OpenRCT2::Ui::Windows static constexpr int32_t kScrollWidth = (kImageSize * kNumColumns) + kScrollBarWidth + 4; static constexpr int32_t kScrollHeight = (kImageSize * kNumRows); static constexpr ScreenSize kWindowSize = { kScrollWidth + 28, kScrollHeight + 51 }; + static bool _placingEntrance = false; struct EntranceSelection { @@ -166,6 +167,11 @@ namespace OpenRCT2::Ui::Windows void PlaceParkEntranceToolUpdate(const ScreenCoordsXY& screenCoords) { + if (_placingEntrance) + { + return; + } + gMapSelectFlags.unset(MapSelectFlag::enable, MapSelectFlag::enableArrow, MapSelectFlag::enableConstruct); CoordsXYZD parkEntrancePosition = PlaceParkEntranceGetMapPosition(screenCoords); if (parkEntrancePosition.IsNull()) @@ -211,6 +217,8 @@ namespace OpenRCT2::Ui::Windows void PlaceParkEntranceToolDown(const ScreenCoordsXY& screenCoords) { + _placingEntrance = true; + gMapSelectFlags.unset(MapSelectFlag::enable, MapSelectFlag::enableArrow, MapSelectFlag::enableConstruct); ParkEntranceRemoveGhost(); CoordsXYZD parkEntrancePosition = PlaceParkEntranceGetMapPosition(screenCoords); @@ -220,6 +228,8 @@ namespace OpenRCT2::Ui::Windows auto pathIndex = isLegacyPath ? gFootpathSelection.LegacyPath : gFootpathSelection.NormalSurface; auto gameAction = GameActions::ParkEntrancePlaceAction( parkEntrancePosition, pathIndex, _selectedEntranceType, isLegacyPath); + gameAction.SetCallback( + [&](const GameActions::GameAction*, const GameActions::Result* result) { _placingEntrance = false; }); auto result = GameActions::Execute(&gameAction, getGameState()); if (result.Error == GameActions::Status::Ok) { @@ -412,6 +422,7 @@ namespace OpenRCT2::Ui::Windows window = windowMgr->Create( WindowClass::editorParkEntrance, kWindowSize, { WindowFlag::higherContrastOnPress, WindowFlag::resizable }); + _placingEntrance = false; return window; } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 89b72bfd30c9..991531b7c19c 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -62,7 +62,7 @@ void ParkEntranceRemoveGhost() { gParkEntranceGhostExists = false; auto parkEntranceRemoveAction = GameActions::ParkEntranceRemoveAction(gParkEntranceGhostPosition); - parkEntranceRemoveAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + parkEntranceRemoveAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); GameActions::Execute(&parkEntranceRemoveAction, getGameState()); } } From 2cc05eb353f86cab46da084658cc7616ca920a8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Fri, 28 Nov 2025 16:46:41 +0200 Subject: [PATCH 057/222] Remove check if Guest/Staff is deleted, this is handled by EntityList --- src/openrct2/entity/Peep.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 4b34e6438359..603aee08192d 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -211,7 +211,7 @@ void PeepUpdateAll() const auto currentTicksMasked = currentTicks & kTicks128Mask; uint32_t index = 0; - // Warning this loop can delete peeps + for (auto peep : EntityList()) { if ((index & kTicks128Mask) == currentTicksMasked) @@ -219,11 +219,7 @@ void PeepUpdateAll() peep->Tick128UpdateGuest(index); } - // 128 tick can delete so double check its not deleted - if (peep->Type == EntityType::guest) - { - peep->Update(); - } + peep->Update(); index++; } @@ -235,11 +231,7 @@ void PeepUpdateAll() staff->Tick128UpdateStaff(); } - // 128 tick can delete so double check its not deleted - if (staff->Type == EntityType::staff) - { - staff->Update(); - } + staff->Update(); index++; } From 762d4fa7debe71f507bb3600ee11a0d5ee037cac Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Fri, 28 Nov 2025 17:53:41 +0100 Subject: [PATCH 058/222] Fix #25552: Clear Scenery does not show an error message about insufficient money if cash is negative --- distribution/changelog.txt | 1 + src/openrct2/actions/ClearAction.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 12e19d15126a..db61c9c601a0 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -6,6 +6,7 @@ - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. +- Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index 379a844d9ad5..756632765c08 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -154,6 +154,10 @@ namespace OpenRCT2::GameActions totalCost += res.Cost; tileEdited = executing; } + else if (res.Error == Status::InsufficientFunds) + { + totalCost += res.Cost; + } } break; case TileElementType::SmallScenery: @@ -172,6 +176,10 @@ namespace OpenRCT2::GameActions totalCost += res.Cost; tileEdited = executing; } + else if (res.Error == Status::InsufficientFunds) + { + totalCost += res.Cost; + } } break; case TileElementType::Wall: @@ -189,6 +197,10 @@ namespace OpenRCT2::GameActions totalCost += res.Cost; tileEdited = executing; } + else if (res.Error == Status::InsufficientFunds) + { + totalCost += res.Cost; + } } break; case TileElementType::LargeScenery: @@ -207,6 +219,10 @@ namespace OpenRCT2::GameActions totalCost += res.Cost; tileEdited = executing; } + else if (res.Error == Status::InsufficientFunds) + { + totalCost += res.Cost; + } } break; default: From 26c7093d319b4599bf1380bc7ebab61859e310b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Fri, 28 Nov 2025 23:20:26 +0200 Subject: [PATCH 059/222] Make the progress bar work with large numbers Fix the progress bar freaking out --- src/openrct2-ui/windows/ProgressWindow.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/openrct2-ui/windows/ProgressWindow.cpp b/src/openrct2-ui/windows/ProgressWindow.cpp index 2dfbca8cd987..6ba42122740a 100644 --- a/src/openrct2-ui/windows/ProgressWindow.cpp +++ b/src/openrct2-ui/windows/ProgressWindow.cpp @@ -198,9 +198,14 @@ namespace OpenRCT2::Ui::Windows int16_t vehicleWidth = (vehicle != nullptr) ? vehicle->width : 0; int32_t position; if (_totalCount > 0) - position = (-vehicleWidth + 2) + width * _currentProgress / _totalCount; + { + const auto progress = static_cast(_currentProgress) / _totalCount; + position = static_cast((-vehicleWidth + 2) + width * progress); + } else + { position = (vehicleWidth + width) / 2; + } GfxDrawSprite(clipDPI, variant.vehicle, ScreenCoordsXY(position, widget.bottom + 1)); } @@ -208,9 +213,6 @@ namespace OpenRCT2::Ui::Windows void setCaption(const std::string& text) { _progressTitle = text; - _currentProgress = 0; - _totalCount = 0; - invalidate(); } From 3f4068a8ec94ba3ec0c1a3f2bd72806b5b1576b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:26:32 +0200 Subject: [PATCH 060/222] Fix #25571: Potential crash due to drawing a Crooked House ride --- src/openrct2/paint/track/gentle/CrookedHouse.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openrct2/paint/track/gentle/CrookedHouse.cpp b/src/openrct2/paint/track/gentle/CrookedHouse.cpp index 9182782c9139..7fc59828ced4 100644 --- a/src/openrct2/paint/track/gentle/CrookedHouse.cpp +++ b/src/openrct2/paint/track/gentle/CrookedHouse.cpp @@ -85,6 +85,7 @@ static void PaintCrookedHouseStructure( { { boundBox.offset, height + 3 }, { boundBox.length, 127 } }); session.CurrentlyDrawnEntity = nullptr; + session.InteractionType = ViewportInteractionItem::ride; } static void PaintCrookedHouse( From 43f438129863b1cb2500f7cdfeec7571c5181b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:45:49 +0200 Subject: [PATCH 061/222] Update changelog.txt --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index db61c9c601a0..5707772e0a72 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -9,6 +9,7 @@ - Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. +- Fix: [#25571] Potential crash due to drawing a Crooked House ride. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ From 530fc8fa59d1b437b8dfc4d53f316d95d60005ef Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 29 Nov 2025 13:37:29 +0100 Subject: [PATCH 062/222] Create `landSlopeFitsUnderTrack()` function --- src/openrct2/world/ConstructionClearance.cpp | 39 ++++++++++++-------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index bafe549d3f9b..bf4cc8b52188 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -88,6 +88,29 @@ int32_t MapPlaceNonSceneryClearFunc(TileElement** tile_element, const CoordsXY& return MapPlaceClearFunc(tile_element, coords, flags, price, /*is_scenery=*/false); } +static bool landSlopeFitsUnderTrack(int32_t baseZ, uint8_t slope, const TrackElement& trackElement) +{ + const auto [slopeNorthZ, slopeEastZ, slopeSouthZ, slopeWestZ] = GetSlopeCornerHeights(baseZ, slope); + + const TrackElemType trackElemType = trackElement.GetTrackType(); + const auto& ted = OpenRCT2::TrackMetaData::GetTrackElementDescriptor(trackElemType); + const uint8_t sequenceIndex = trackElemType == TrackElemType::Maze ? 0 : trackElement.GetSequenceIndex(); + const auto& trackClearances = ted.sequences[sequenceIndex].clearance; + const auto trackQuarters = trackClearances.quarterTile.Rotate(trackElement.GetDirection()); + const auto trackQuarterHeights = trackQuarters.GetQuarterHeights(trackElement.GetBaseZ()); + const uint8_t trackOccupiedQuarters = trackQuarters.GetBaseQuarterOccupied(); + + if ((!(trackOccupiedQuarters & 0b0001) || slopeNorthZ <= trackQuarterHeights.north) + && (!(trackOccupiedQuarters & 0b0010) || slopeEastZ <= trackQuarterHeights.east) + && (!(trackOccupiedQuarters & 0b0100) || slopeSouthZ <= trackQuarterHeights.south) + && (!(trackOccupiedQuarters & 0b1000) || slopeWestZ <= trackQuarterHeights.west)) + { + return true; + } + + return false; +} + static bool MapLoc68BABCShouldContinue( TileElement** tileElementPtr, const CoordsXYRangedZ& pos, CLEAR_FUNC clearFunc, const uint8_t flags, money64& price, const CreateCrossingMode crossingMode, const bool canBuildCrossing, const uint8_t slope) @@ -104,21 +127,7 @@ static bool MapLoc68BABCShouldContinue( if (slope != kTileSlopeFlat && tileElement->GetType() == TileElementType::Track) { - const auto [slopeNorthZ, slopeEastZ, slopeSouthZ, slopeWestZ] = GetSlopeCornerHeights(pos.baseZ, slope); - - const TrackElement* const trackElement = tileElement->AsTrack(); - const TrackElemType trackElemType = trackElement->GetTrackType(); - const auto& ted = OpenRCT2::TrackMetaData::GetTrackElementDescriptor(trackElemType); - const uint8_t sequenceIndex = trackElemType == TrackElemType::Maze ? 0 : trackElement->GetSequenceIndex(); - const auto& trackClearances = ted.sequences[sequenceIndex].clearance; - const auto trackQuarters = trackClearances.quarterTile.Rotate(trackElement->GetDirection()); - const auto trackQuarterHeights = trackQuarters.GetQuarterHeights(trackElement->GetBaseZ()); - const uint8_t trackOccupiedQuarters = trackQuarters.GetBaseQuarterOccupied(); - - if ((!(trackOccupiedQuarters & 0b0001) || slopeNorthZ <= trackQuarterHeights.north) - && (!(trackOccupiedQuarters & 0b0010) || slopeEastZ <= trackQuarterHeights.east) - && (!(trackOccupiedQuarters & 0b0100) || slopeSouthZ <= trackQuarterHeights.south) - && (!(trackOccupiedQuarters & 0b1000) || slopeWestZ <= trackQuarterHeights.west)) + if (landSlopeFitsUnderTrack(pos.baseZ, slope, *tileElement->AsTrack())) { return true; } From 4828fbd918409eecb68ad61a41c59be6890d5f6c Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 29 Nov 2025 13:39:25 +0100 Subject: [PATCH 063/222] Create `landSlopeFitsUnderPath()` function --- src/openrct2/world/ConstructionClearance.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index bf4cc8b52188..0b78829ef48c 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -111,6 +111,16 @@ static bool landSlopeFitsUnderTrack(int32_t baseZ, uint8_t slope, const TrackEle return false; } +static bool landSlopeFitsUnderPath(int32_t baseZ, uint8_t slope, const PathElement& pathElement) +{ + const auto slopeCornerHeights = GetSlopeCornerHeights(baseZ, slope); + + const uint8_t pathSlope = Numerics::rol4(kTileSlopeSWSideUp, pathElement.GetSlopeDirection()); + const auto pathCornerHeights = GetSlopeCornerHeights(pathElement.GetBaseZ(), pathSlope); + + return (slopeCornerHeights <= pathCornerHeights); +} + static bool MapLoc68BABCShouldContinue( TileElement** tileElementPtr, const CoordsXYRangedZ& pos, CLEAR_FUNC clearFunc, const uint8_t flags, money64& price, const CreateCrossingMode crossingMode, const bool canBuildCrossing, const uint8_t slope) @@ -135,13 +145,7 @@ static bool MapLoc68BABCShouldContinue( if (slope != kTileSlopeFlat && tileElement->GetType() == TileElementType::Path && tileElement->AsPath()->IsSloped()) { - const auto slopeCornerHeights = GetSlopeCornerHeights(pos.baseZ, slope); - - const PathElement& pathElement = *tileElement->AsPath(); - const uint8_t pathSlope = Numerics::rol4(kTileSlopeSWSideUp, pathElement.GetSlopeDirection()); - const auto pathCornerHeights = GetSlopeCornerHeights(pathElement.GetBaseZ(), pathSlope); - - if (slopeCornerHeights <= pathCornerHeights) + if (landSlopeFitsUnderPath(pos.baseZ, slope, *tileElement->AsPath())) { return true; } From c90ce582fd2d068855511941fb53cf3bb3902db8 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 29 Nov 2025 13:50:17 +0100 Subject: [PATCH 064/222] Make `MapPlaceClearFunc()` return bool, fix name of CLEAR_FUNC --- src/openrct2/actions/LandSetHeightAction.cpp | 8 +++--- src/openrct2/actions/LandSetHeightAction.h | 2 +- src/openrct2/world/ConstructionClearance.cpp | 28 ++++++++++---------- src/openrct2/world/ConstructionClearance.h | 9 +++---- 4 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 2321b64a0a7e..3f5fed4cfe36 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -347,16 +347,16 @@ namespace OpenRCT2::GameActions MapInvalidateTileFull(_coords); } - int32_t LandSetHeightAction::MapSetLandHeightClearFunc( + bool LandSetHeightAction::MapSetLandHeightClearFunc( TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, [[maybe_unused]] uint8_t flags, [[maybe_unused]] money64* price) { if ((*tile_element)->GetType() == TileElementType::Surface) - return 0; + return true; if ((*tile_element)->GetType() == TileElementType::SmallScenery) - return 0; + return true; - return 1; + return false; } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LandSetHeightAction.h b/src/openrct2/actions/LandSetHeightAction.h index 191d56ec4eec..1739d08eb73c 100644 --- a/src/openrct2/actions/LandSetHeightAction.h +++ b/src/openrct2/actions/LandSetHeightAction.h @@ -46,7 +46,7 @@ namespace OpenRCT2::GameActions * * rct2: 0x00663CB9 */ - static int32_t MapSetLandHeightClearFunc( + static bool MapSetLandHeightClearFunc( TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, [[maybe_unused]] uint8_t flags, [[maybe_unused]] money64* price); }; diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 0b78829ef48c..66c4e089b3ff 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -35,14 +35,14 @@ using namespace OpenRCT2; -static int32_t MapPlaceClearFunc( +static bool MapPlaceClearFunc( TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price, bool is_scenery) { if ((*tile_element)->GetType() != TileElementType::SmallScenery) - return 1; + return false; if (is_scenery && !(flags & GAME_COMMAND_FLAG_TRACK_DESIGN)) - return 1; + return false; auto* scenery = (*tile_element)->AsSmallScenery()->GetEntry(); @@ -50,31 +50,31 @@ static int32_t MapPlaceClearFunc( if (park.flags & PARK_FLAGS_FORBID_TREE_REMOVAL) { if (scenery != nullptr && scenery->HasFlag(SMALL_SCENERY_FLAG_IS_TREE)) - return 1; + return false; } if (!(park.flags & PARK_FLAGS_NO_MONEY) && scenery != nullptr) *price += scenery->removal_price; if (flags & GAME_COMMAND_FLAG_GHOST) - return 0; + return true; if (!(flags & GAME_COMMAND_FLAG_APPLY)) - return 0; + return true; MapInvalidateTile({ coords, (*tile_element)->GetBaseZ(), (*tile_element)->GetClearanceZ() }); TileElementRemove(*tile_element); (*tile_element)--; - return 0; + return true; } /** * * rct2: 0x006E0D6E, 0x006B8D88 */ -int32_t MapPlaceSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price) +bool MapPlaceSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price) { return MapPlaceClearFunc(tile_element, coords, flags, price, /*is_scenery=*/true); } @@ -83,7 +83,7 @@ int32_t MapPlaceSceneryClearFunc(TileElement** tile_element, const CoordsXY& coo * * rct2: 0x006C5A4F, 0x006CDE57, 0x006A6733, 0x0066637E */ -int32_t MapPlaceNonSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price) +bool MapPlaceNonSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price) { return MapPlaceClearFunc(tile_element, coords, flags, price, /*is_scenery=*/false); } @@ -122,12 +122,12 @@ static bool landSlopeFitsUnderPath(int32_t baseZ, uint8_t slope, const PathEleme } static bool MapLoc68BABCShouldContinue( - TileElement** tileElementPtr, const CoordsXYRangedZ& pos, CLEAR_FUNC clearFunc, const uint8_t flags, money64& price, + TileElement** tileElementPtr, const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const uint8_t flags, money64& price, const CreateCrossingMode crossingMode, const bool canBuildCrossing, const uint8_t slope) { if (clearFunc != nullptr) { - if (!clearFunc(tileElementPtr, pos, flags, &price)) + if (clearFunc(tileElementPtr, pos, flags, &price)) { return true; } @@ -182,8 +182,8 @@ static bool MapLoc68BABCShouldContinue( * bl = bl */ GameActions::Result MapCanConstructWithClearAt( - const CoordsXYRangedZ& pos, CLEAR_FUNC clearFunc, const QuarterTile quarterTile, const uint8_t flags, const uint8_t slope, - const CreateCrossingMode crossingMode, const bool isTree) + const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const QuarterTile quarterTile, const uint8_t flags, + const uint8_t slope, const CreateCrossingMode crossingMode, const bool isTree) { auto res = GameActions::Result(); @@ -241,7 +241,7 @@ GameActions::Result MapCanConstructWithClearAt( groundFlags |= ELEMENT_IS_UNDERWATER; if (waterHeight < pos.clearanceZ) { - if (clearFunc != nullptr && clearFunc(&tileElement, pos, flags, &res.Cost)) + if (clearFunc != nullptr && !clearFunc(&tileElement, pos, flags, &res.Cost)) { res.Error = GameActions::Status::NoClearance; res.ErrorMessage = STR_CANNOT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_WATER; diff --git a/src/openrct2/world/ConstructionClearance.h b/src/openrct2/world/ConstructionClearance.h index 78e907d31ad6..529943076c12 100644 --- a/src/openrct2/world/ConstructionClearance.h +++ b/src/openrct2/world/ConstructionClearance.h @@ -23,7 +23,7 @@ struct CoordsXY; struct CoordsXYRangedZ; class QuarterTile; -using CLEAR_FUNC = int32_t (*)(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); +using ClearingFunction = bool (*)(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); enum { @@ -42,9 +42,8 @@ enum class CreateCrossingMode pathOverTrack, }; -int32_t MapPlaceNonSceneryClearFunc( - OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); -int32_t MapPlaceSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); +bool MapPlaceNonSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); +bool MapPlaceSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); struct ConstructClearResult { @@ -52,7 +51,7 @@ struct ConstructClearResult }; [[nodiscard]] OpenRCT2::GameActions::Result MapCanConstructWithClearAt( - const CoordsXYRangedZ& pos, CLEAR_FUNC clearFunc, QuarterTile quarterTile, uint8_t flags, uint8_t slope, + const CoordsXYRangedZ& pos, ClearingFunction clearFunc, QuarterTile quarterTile, uint8_t flags, uint8_t slope, CreateCrossingMode crossingMode = CreateCrossingMode::none, bool isTree = false); [[nodiscard]] OpenRCT2::GameActions::Result MapCanConstructAt(const CoordsXYRangedZ& pos, QuarterTile bl); From ad96737e9aafc376060db8d308794a591ad6a953 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 29 Nov 2025 14:04:30 +0100 Subject: [PATCH 065/222] Make ClearingFunction a reference, rather than a pointer --- .../actions/FootpathLayoutPlaceAction.cpp | 4 ++-- src/openrct2/actions/FootpathPlaceAction.cpp | 4 ++-- src/openrct2/actions/LandSetHeightAction.cpp | 2 +- .../actions/LargeSceneryPlaceAction.cpp | 4 ++-- src/openrct2/actions/MazePlaceTrackAction.cpp | 4 ++-- .../actions/RideEntranceExitPlaceAction.cpp | 6 +++--- .../actions/SmallSceneryPlaceAction.cpp | 4 ++-- src/openrct2/actions/TrackPlaceAction.cpp | 4 ++-- src/openrct2/world/ConstructionClearance.cpp | 18 +++++++++++------- src/openrct2/world/ConstructionClearance.h | 2 +- 10 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 0b6aa37e9c18..7fe146995d9b 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -155,7 +155,7 @@ namespace OpenRCT2::GameActions auto crossingMode = isQueue || (_slope.type != FootpathSlopeType::flat) ? CreateCrossingMode::none : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, &MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); + { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); if (!entrancePath && canBuild.Error != Status::Ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; @@ -224,7 +224,7 @@ namespace OpenRCT2::GameActions auto crossingMode = isQueue || (_slope.type != FootpathSlopeType::flat) ? CreateCrossingMode::none : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, &MapPlaceNonSceneryClearFunc, quarterTile, GAME_COMMAND_FLAG_APPLY | GetFlags(), + { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GAME_COMMAND_FLAG_APPLY | GetFlags(), kTileSlopeFlat, crossingMode); if (!entrancePath && canBuild.Error != Status::Ok) { diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 6883a092c847..904d66e36f8e 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -320,7 +320,7 @@ namespace OpenRCT2::GameActions auto crossingMode = isQueue || (_slope.type != FootpathSlopeType::flat) ? CreateCrossingMode::none : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, &MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); + { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); if (!entrancePath && canBuild.Error != Status::Ok) { canBuild.ErrorTitle = STR_CANT_BUILD_FOOTPATH_HERE; @@ -388,7 +388,7 @@ namespace OpenRCT2::GameActions auto crossingMode = isQueue || (_slope.type != FootpathSlopeType::flat) ? CreateCrossingMode::none : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, &MapPlaceNonSceneryClearFunc, quarterTile, GAME_COMMAND_FLAG_APPLY | GetFlags(), + { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GAME_COMMAND_FLAG_APPLY | GetFlags(), kTileSlopeFlat, crossingMode); if (!entrancePath && canBuild.Error != Status::Ok) { diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 3f5fed4cfe36..116e40e25131 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -140,7 +140,7 @@ namespace OpenRCT2::GameActions } auto clearResult = MapCanConstructWithClearAt( - { _coords, _height * kCoordsZStep, zCorner * kCoordsZStep }, &MapSetLandHeightClearFunc, { 0b1111, 0 }, 0, + { _coords, _height * kCoordsZStep, zCorner * kCoordsZStep }, MapSetLandHeightClearFunc, { 0b1111, 0 }, 0, _style, CreateCrossingMode::none); if (clearResult.Error != Status::Ok) { diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 96ea7bf18451..5e3dbd6d53a9 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -138,7 +138,7 @@ namespace OpenRCT2::GameActions QuarterTile quarterTile = QuarterTile{ tile.corners, 0 }.Rotate(_loc.direction); const auto isTree = (sceneryEntry->flags & LARGE_SCENERY_FLAG_IS_TREE) != 0; auto canBuild = MapCanConstructWithClearAt( - { curTile, zLow, zHigh }, &MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, + { curTile, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); if (canBuild.Error != Status::Ok) { @@ -270,7 +270,7 @@ namespace OpenRCT2::GameActions QuarterTile quarterTile = QuarterTile{ tile.corners, 0 }.Rotate(_loc.direction); const auto isTree = (sceneryEntry->flags & LARGE_SCENERY_FLAG_IS_TREE) != 0; auto canBuild = MapCanConstructWithClearAt( - { curTile, zLow, zHigh }, &MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, + { curTile, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); if (canBuild.Error != Status::Ok) { diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 54bc77b0c5a0..10807a31c967 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -107,7 +107,7 @@ namespace OpenRCT2::GameActions } auto canBuild = MapCanConstructWithClearAt( - { _loc.ToTileStart(), baseHeight, clearanceHeight }, &MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), + { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); if (canBuild.Error != Status::Ok) { @@ -172,7 +172,7 @@ namespace OpenRCT2::GameActions auto clearanceHeight = _loc.z + kMazeClearanceHeight; auto canBuild = MapCanConstructWithClearAt( - { _loc.ToTileStart(), baseHeight, clearanceHeight }, &MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, + { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat); if (canBuild.Error != Status::Ok) { diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 90acdf34bf77..38a66c014035 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -116,7 +116,7 @@ namespace OpenRCT2::GameActions } auto clear_z = z + (_isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( - { _loc, z, clear_z }, &MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); + { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); if (canBuild.Error != Status::Ok) { canBuild.ErrorTitle = errorTitle; @@ -186,7 +186,7 @@ namespace OpenRCT2::GameActions auto clear_z = z + (_isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( - { _loc, z, clear_z }, &MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags() | GAME_COMMAND_FLAG_APPLY, + { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat); if (canBuild.Error != Status::Ok) { @@ -254,7 +254,7 @@ namespace OpenRCT2::GameActions int16_t baseZ = loc.z; int16_t clearZ = baseZ + (isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( - { loc, baseZ, clearZ }, &MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, 0, kTileSlopeFlat); + { loc, baseZ, clearZ }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, 0, kTileSlopeFlat); if (canBuild.Error != Status::Ok) { canBuild.ErrorTitle = errorTitle; diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index 42d65af5aec9..9b2eaa9a84d4 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -267,7 +267,7 @@ namespace OpenRCT2::GameActions QuarterTile quarterTile = QuarterTile{ collisionQuadrants, supports }.Rotate(quadRotation); const auto isTree = sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE); auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, &MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, + { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); if (canBuild.Error != Status::Ok) { @@ -406,7 +406,7 @@ namespace OpenRCT2::GameActions QuarterTile quarterTile = QuarterTile{ collisionQuadrants, supports }.Rotate(quadRotation); const auto isTree = sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE); auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, &MapPlaceSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat, + { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat, CreateCrossingMode::none, isTree); if (canBuild.Error != Status::Ok) { diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index fb7af292272f..0578389992e2 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -263,7 +263,7 @@ namespace OpenRCT2::GameActions ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( - { mapLoc, baseZ, clearanceZ }, &MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, + { mapLoc, baseZ, clearanceZ }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); if (canBuild.Error != Status::Ok) { @@ -468,7 +468,7 @@ namespace OpenRCT2::GameActions ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( - mapLocWithClearance, &MapPlaceNonSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, + mapLocWithClearance, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat, crossingMode); if (canBuild.Error != Status::Ok) { diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 66c4e089b3ff..1a9550a8c472 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -125,12 +125,9 @@ static bool MapLoc68BABCShouldContinue( TileElement** tileElementPtr, const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const uint8_t flags, money64& price, const CreateCrossingMode crossingMode, const bool canBuildCrossing, const uint8_t slope) { - if (clearFunc != nullptr) + if (clearFunc(tileElementPtr, pos, flags, &price)) { - if (clearFunc(tileElementPtr, pos, flags, &price)) - { - return true; - } + return true; } const TileElement* const tileElement = *tileElementPtr; @@ -241,7 +238,7 @@ GameActions::Result MapCanConstructWithClearAt( groundFlags |= ELEMENT_IS_UNDERWATER; if (waterHeight < pos.clearanceZ) { - if (clearFunc != nullptr && !clearFunc(&tileElement, pos, flags, &res.Cost)) + if (!clearFunc(&tileElement, pos, flags, &res.Cost)) { res.Error = GameActions::Status::NoClearance; res.ErrorMessage = STR_CANNOT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_WATER; @@ -310,9 +307,16 @@ GameActions::Result MapCanConstructWithClearAt( return res; } +static bool dummyClearFunc( + [[maybe_unused]] OpenRCT2::TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, + [[maybe_unused]] uint8_t flags, [[maybe_unused]] money64* price) +{ + return false; +} + GameActions::Result MapCanConstructAt(const CoordsXYRangedZ& pos, QuarterTile bl) { - return MapCanConstructWithClearAt(pos, nullptr, bl, 0, kTileSlopeFlat); + return MapCanConstructWithClearAt(pos, dummyClearFunc, bl, 0, kTileSlopeFlat); } /** diff --git a/src/openrct2/world/ConstructionClearance.h b/src/openrct2/world/ConstructionClearance.h index 529943076c12..16accc2d079b 100644 --- a/src/openrct2/world/ConstructionClearance.h +++ b/src/openrct2/world/ConstructionClearance.h @@ -23,7 +23,7 @@ struct CoordsXY; struct CoordsXYRangedZ; class QuarterTile; -using ClearingFunction = bool (*)(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); +using ClearingFunction = bool (&)(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); enum { From 61955c370f88d2055a4c332dcd25f2bcd63e89b9 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Mon, 1 Dec 2025 04:20:38 +0000 Subject: [PATCH 066/222] Merge Localisation/master into OpenRCT2/develop --- data/language/pl-PL.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/language/pl-PL.txt b/data/language/pl-PL.txt index 2c185a76eb2d..681d7e946648 100644 --- a/data/language/pl-PL.txt +++ b/data/language/pl-PL.txt @@ -1062,7 +1062,7 @@ STR_1676 :Ustaw limit prędkości hamowania STR_1677 :{WINDOW_COLOUR_2}Popularność: {BLACK}Nieznana STR_1678 :{WINDOW_COLOUR_2}Popularność: {BLACK}{COMMA16}% STR_1679 :Spirala w górę (lewo) -STR_1680 :Spirala w dół (prawo) +STR_1680 :Spirala w górę (prawo) STR_1681 :Spirala w dół (lewo) STR_1682 :Spirala w dół (prawo) STR_1683 :Wymiary bazowe 2 × 2 From e3aa52bc1a12eec3b1dd3230153d2e202cefb047 Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Mon, 1 Dec 2025 12:03:30 +0100 Subject: [PATCH 067/222] Fix #25592: Some water rides have wrong breakdowns The log flume, river rapids, and splash boats had the control failure breakdown available instead of the correct brakes failure. --- src/openrct2/ride/rtd/water/LogFlume.h | 2 +- src/openrct2/ride/rtd/water/RiverRapids.h | 2 +- src/openrct2/ride/rtd/water/SplashBoats.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openrct2/ride/rtd/water/LogFlume.h b/src/openrct2/ride/rtd/water/LogFlume.h index 5ee6e039aa8e..6111c9a0042e 100644 --- a/src/openrct2/ride/rtd/water/LogFlume.h +++ b/src/openrct2/ride/rtd/water/LogFlume.h @@ -38,7 +38,7 @@ constexpr RideTypeDescriptor LogFlumeRTD = .DefaultMode = RideMode::continuousCircuit, .Naming = { STR_RIDE_NAME_LOG_FLUME, STR_RIDE_DESCRIPTION_LOG_FLUME }, .NameConvention = { RideComponentType::Boat, RideComponentType::Track, RideComponentType::Station }, - .AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE), + .AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_BRAKES_FAILURE), .Heights = { 10, 24, 7, 9, }, .MaxMass = 255, .LiftData = { Audio::SoundId::liftFlume, 5, 5 }, diff --git a/src/openrct2/ride/rtd/water/RiverRapids.h b/src/openrct2/ride/rtd/water/RiverRapids.h index 85eca6af24ce..d425bc4f292f 100644 --- a/src/openrct2/ride/rtd/water/RiverRapids.h +++ b/src/openrct2/ride/rtd/water/RiverRapids.h @@ -39,7 +39,7 @@ constexpr RideTypeDescriptor RiverRapidsRTD = .DefaultMode = RideMode::continuousCircuit, .Naming = { STR_RIDE_NAME_RIVER_RAPIDS, STR_RIDE_DESCRIPTION_RIVER_RAPIDS }, .NameConvention = { RideComponentType::Boat, RideComponentType::Track, RideComponentType::Station }, - .AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE), + .AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_BRAKES_FAILURE), .Heights = { 9, 32, 14, 15, }, .MaxMass = 255, .LiftData = { Audio::SoundId::liftFlume, 5, 5 }, diff --git a/src/openrct2/ride/rtd/water/SplashBoats.h b/src/openrct2/ride/rtd/water/SplashBoats.h index f85b348cb1ed..964c493d76b8 100644 --- a/src/openrct2/ride/rtd/water/SplashBoats.h +++ b/src/openrct2/ride/rtd/water/SplashBoats.h @@ -39,7 +39,7 @@ constexpr RideTypeDescriptor SplashBoatsRTD = .DefaultMode = RideMode::continuousCircuit, .Naming = { STR_RIDE_NAME_SPLASH_BOATS, STR_RIDE_DESCRIPTION_SPLASH_BOATS }, .NameConvention = { RideComponentType::Boat, RideComponentType::Track, RideComponentType::Station }, - .AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE), + .AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_BRAKES_FAILURE), .Heights = { 16, 24, 7, 11, }, .MaxMass = 255, .LiftData = { Audio::SoundId::liftFlume, 5, 5 }, From 843ad4c9fcd60753a40fa58d8e27736d575e1227 Mon Sep 17 00:00:00 2001 From: Matt <5415177+ZehMatt@users.noreply.github.com> Date: Mon, 1 Dec 2025 19:44:30 +0200 Subject: [PATCH 068/222] If the master server vanishes make sure to register again, cleanup (#25588) * If the master server vanishes make sure to register again, cleanup * Update changelog.txt * Fix uncaught exceptions for the HTTP impl just silently failing * Don't set the future object to an empty one, that is always pending * Improve the console messages, adjust retry time --- distribution/changelog.txt | 1 + src/openrct2/core/Http.WinHttp.cpp | 6 +- src/openrct2/core/Http.cURL.cpp | 130 ++++++++++-------- src/openrct2/core/Http.h | 8 +- .../network/NetworkServerAdvertiser.cpp | 76 ++++++---- .../network/NetworkServerAdvertiser.h | 1 + 6 files changed, 131 insertions(+), 91 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 5707772e0a72..70db8a266786 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -10,6 +10,7 @@ - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. - Fix: [#25571] Potential crash due to drawing a Crooked House ride. +- Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2/core/Http.WinHttp.cpp b/src/openrct2/core/Http.WinHttp.cpp index b4a53c7f3dc8..309d515d9f48 100644 --- a/src/openrct2/core/Http.WinHttp.cpp +++ b/src/openrct2/core/Http.WinHttp.cpp @@ -236,7 +236,11 @@ namespace OpenRCT2::Http WinHttpCloseHandle(hSession); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hRequest); - throw; + + Response response; + response.status = Status::Error; + response.error = e.what(); + return response; } } } // namespace OpenRCT2::Http diff --git a/src/openrct2/core/Http.cURL.cpp b/src/openrct2/core/Http.cURL.cpp index 447a5ed0b64f..fc06edeca1f6 100644 --- a/src/openrct2/core/Http.cURL.cpp +++ b/src/openrct2/core/Http.cURL.cpp @@ -84,81 +84,91 @@ namespace OpenRCT2::Http Response Do(const Request& req) { - CURL* curl = curl_easy_init(); - std::shared_ptr _(nullptr, [curl](...) { curl_easy_cleanup(curl); }); + try + { + CURL* curl = curl_easy_init(); + std::shared_ptr _(nullptr, [curl](...) { curl_easy_cleanup(curl); }); - if (!curl) - throw std::runtime_error("Failed to initialize curl"); + if (!curl) + throw std::runtime_error("Failed to initialize curl"); - Response res; - WriteThis wt; + Response res; + WriteThis wt; - if (req.method == Method::POST || req.method == Method::PUT) - { - wt.readptr = req.body.c_str(); - wt.sizeleft = req.body.size(); + if (req.method == Method::POST || req.method == Method::PUT) + { + wt.readptr = req.body.c_str(); + wt.sizeleft = req.body.size(); - curl_easy_setopt(curl, CURLOPT_READFUNCTION, ReadCallback); - curl_easy_setopt(curl, CURLOPT_READDATA, &wt); - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, static_cast(wt.sizeleft)); - } + curl_easy_setopt(curl, CURLOPT_READFUNCTION, ReadCallback); + curl_easy_setopt(curl, CURLOPT_READDATA, &wt); + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, static_cast(wt.sizeleft)); + } - if (req.forceIPv4) - curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + if (req.forceIPv4) + curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); - if (req.method == Method::POST) - curl_easy_setopt(curl, CURLOPT_POST, 1L); + if (req.method == Method::POST) + curl_easy_setopt(curl, CURLOPT_POST, 1L); - if (req.method == Method::PUT) - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + if (req.method == Method::PUT) + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - curl_easy_setopt(curl, CURLOPT_URL, req.url.c_str()); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteData); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, static_cast(&res)); - curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, HeaderCallback); - curl_easy_setopt(curl, CURLOPT_HEADERDATA, static_cast(&res)); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true); - curl_easy_setopt(curl, CURLOPT_USERAGENT, kOpenRCT2UserAgent); + curl_easy_setopt(curl, CURLOPT_URL, req.url.c_str()); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteData); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, static_cast(&res)); + curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, HeaderCallback); + curl_easy_setopt(curl, CURLOPT_HEADERDATA, static_cast(&res)); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true); + curl_easy_setopt(curl, CURLOPT_USERAGENT, kOpenRCT2UserAgent); - curl_slist* chunk = nullptr; - std::shared_ptr __(nullptr, [chunk](...) { curl_slist_free_all(chunk); }); - for (auto header : req.header) - { - std::string hs = header.first + ": " + header.second; - chunk = curl_slist_append(chunk, hs.c_str()); - } - if (req.header.size() != 0) - { - if (chunk == nullptr) + curl_slist* chunk = nullptr; + std::shared_ptr __(nullptr, [chunk](...) { curl_slist_free_all(chunk); }); + for (auto header : req.header) { - throw std::runtime_error("Failed to set headers"); + std::string hs = header.first + ": " + header.second; + chunk = curl_slist_append(chunk, hs.c_str()); + } + if (req.header.size() != 0) + { + if (chunk == nullptr) + { + throw std::runtime_error("Failed to set headers"); + } + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); } - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); - } - CURLcode curl_code = curl_easy_perform(curl); - if (curl_code != CURLE_OK) - { - using namespace std::literals; - throw std::runtime_error( - "Failed to perform request. curl error code: "s + std::to_string(curl_code) + ": " - + curl_easy_strerror(curl_code)); - } + CURLcode curl_code = curl_easy_perform(curl); + if (curl_code != CURLE_OK) + { + using namespace std::literals; + throw std::runtime_error( + "Failed to perform request. curl error code: "s + std::to_string(curl_code) + ": " + + curl_easy_strerror(curl_code)); + } - // gets freed by curl_easy_cleanup - char* content_type; - long code; - curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code); - curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &content_type); - res.status = static_cast(code); - if (content_type != nullptr) + // gets freed by curl_easy_cleanup + char* content_type; + long code; + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code); + curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &content_type); + res.status = static_cast(code); + if (content_type != nullptr) + { + res.content_type = std::string(content_type); + } + + return res; + } + catch (const std::exception& e) { - res.content_type = std::string(content_type); + Response response; + response.status = Status::Error; + response.error = e.what(); + return response; } - - return res; } } // namespace OpenRCT2::Http diff --git a/src/openrct2/core/Http.h b/src/openrct2/core/Http.h index cafd8e8de0ec..22eb318602a8 100644 --- a/src/openrct2/core/Http.h +++ b/src/openrct2/core/Http.h @@ -12,15 +12,16 @@ #ifndef DISABLE_HTTP #include + #include #include #include - #include namespace OpenRCT2::Http { enum class Status { Invalid = 0, + Error = 1, Ok = 200, NotFound = 404 }; @@ -52,9 +53,9 @@ namespace OpenRCT2::Http Response Do(const Request& req); - inline void DoAsync(const Request& req, std::function fn) + inline auto DoAsync(const Request& req, std::function fn) { - auto thread = std::thread([=]() { + return std::async(std::launch::async, [=]() { Response res{}; try { @@ -67,7 +68,6 @@ namespace OpenRCT2::Http } fn(res); }); - thread.detach(); } } // namespace OpenRCT2::Http diff --git a/src/openrct2/network/NetworkServerAdvertiser.cpp b/src/openrct2/network/NetworkServerAdvertiser.cpp index 51c5828de14f..c97d89c72e19 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.cpp +++ b/src/openrct2/network/NetworkServerAdvertiser.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::Network #ifndef DISABLE_HTTP using namespace std::chrono_literals; - constexpr int32_t kMasterServerRegisterTime = std::chrono::milliseconds(2min).count(); + constexpr int32_t kMasterServerRegisterTime = std::chrono::milliseconds(30s).count(); constexpr int32_t kMasterServerHeartbeatTime = std::chrono::milliseconds(1min).count(); #endif @@ -56,6 +56,7 @@ namespace OpenRCT2::Network uint16_t _port; std::unique_ptr _lanListener; + std::shared_future _currentRequest; uint32_t _lastListenTime{}; AdvertiseStatus _status = AdvertiseStatus::unregistered; @@ -84,6 +85,17 @@ namespace OpenRCT2::Network #endif } + ~NetworkServerAdvertiser() final + { + _lanListener->Close(); + + auto currentRequest = _currentRequest; + if (currentRequest.valid()) + { + currentRequest.wait(); + } + } + AdvertiseStatus GetStatus() const override { return _status; @@ -149,13 +161,13 @@ namespace OpenRCT2::Network case AdvertiseStatus::unregistered: if (_lastAdvertiseTime == 0 || Platform::GetTicks() > _lastAdvertiseTime + kMasterServerRegisterTime) { - if (_lastAdvertiseTime == 0) - { - Console::WriteLine("Registering server on master server"); - } + Console::WriteLine("Registering server on master server..."); SendRegistration(_forceIPv4); } break; + case AdvertiseStatus::registering: + // Waiting for registration response. + break; case AdvertiseStatus::registered: if (Platform::GetTicks() > _lastHeartbeatTime + kMasterServerHeartbeatTime) { @@ -171,6 +183,7 @@ namespace OpenRCT2::Network void SendRegistration(bool forceIPv4) { _lastAdvertiseTime = Platform::GetTicks(); + _status = AdvertiseStatus::registering; // Send the registration request Http::Request request; @@ -191,17 +204,21 @@ namespace OpenRCT2::Network request.body = body.dump(); request.header["Content-Type"] = "application/json"; - Http::DoAsync(request, [&](Http::Response response) -> void { - if (response.status != Http::Status::Ok) - { - Console::Error::WriteLine("Unable to connect to master server"); - return; - } - - json_t root = Json::FromString(response.body); - root = Json::AsObject(root); - this->OnRegistrationResponse(root); - }); + _currentRequest = Http::DoAsync(request, [&](Http::Response response) -> void { + if (response.status != Http::Status::Ok) + { + Console::Error::WriteLine( + "Unable to connect to master server, retrying in %d seconds", + kMasterServerRegisterTime / 1000); + + _status = AdvertiseStatus::unregistered; + return; + } + + json_t root = Json::FromString(response.body); + root = Json::AsObject(root); + this->OnRegistrationResponse(root); + }).share(); } void SendHeartbeat() @@ -215,17 +232,24 @@ namespace OpenRCT2::Network request.header["Content-Type"] = "application/json"; _lastHeartbeatTime = Platform::GetTicks(); - Http::DoAsync(request, [&](Http::Response response) -> void { - if (response.status != Http::Status::Ok) - { - Console::Error::WriteLine("Unable to connect to master server"); - return; - } - json_t root = Json::FromString(response.body); - root = Json::AsObject(root); - this->OnHeartbeatResponse(root); - }); + _currentRequest = Http::DoAsync(request, [&](Http::Response response) -> void { + if (response.status != Http::Status::Ok) + { + Console::Error::WriteLine( + "Unable to connect to master server, retrying in %d seconds", + kMasterServerRegisterTime / 1000); + + _status = AdvertiseStatus::unregistered; + // Don't immediately retry advertising, wait for kMasterServerRegisterTime. + _lastAdvertiseTime = Platform::GetTicks(); + return; + } + + json_t root = Json::FromString(response.body); + root = Json::AsObject(root); + this->OnHeartbeatResponse(root); + }).share(); } /** diff --git a/src/openrct2/network/NetworkServerAdvertiser.h b/src/openrct2/network/NetworkServerAdvertiser.h index 1b48717e61e7..c7d8e7f3efbb 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.h +++ b/src/openrct2/network/NetworkServerAdvertiser.h @@ -18,6 +18,7 @@ namespace OpenRCT2::Network { disabled, unregistered, + registering, registered, }; From 688c60654b1e8d5db13d324aacffeccb2592c97c Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Mon, 1 Dec 2025 19:49:17 +0100 Subject: [PATCH 069/222] Update network version --- src/openrct2/network/NetworkBase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 9e3f27a4957c..4b4b963c2de6 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 0; +constexpr uint8_t kStreamVersion = 1; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From bfd26ec97f25c3642c5714748a19169a11eaa80c Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Mon, 1 Dec 2025 19:53:09 +0100 Subject: [PATCH 070/222] Update changelog.txt --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 5707772e0a72..ef38398b89e1 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -10,6 +10,7 @@ - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. - Fix: [#25571] Potential crash due to drawing a Crooked House ride. +- Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure 0.4.29 (2025-11-22) ------------------------------------------------------------------------ From ad16d0567b09c4568929c276524048e139ffac95 Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Mon, 1 Dec 2025 20:16:03 +0100 Subject: [PATCH 071/222] Update changelog.txt --- distribution/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 122624c5efbf..1e421145991e 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -10,7 +10,7 @@ - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. - Fix: [#25571] Potential crash due to drawing a Crooked House ride. -- Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure +- Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. 0.4.29 (2025-11-22) From f86728f4a243fb755cb04c79871a87442625ac80 Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Mon, 1 Dec 2025 20:23:23 +0100 Subject: [PATCH 072/222] Update changelog.txt --- distribution/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 1e421145991e..a3c5e18f5bf8 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -10,8 +10,8 @@ - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. - Fix: [#25571] Potential crash due to drawing a Crooked House ride. -- Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. +- Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ From d8698726c90cd0b169e4267bdf15047cea3af175 Mon Sep 17 00:00:00 2001 From: Matt <5415177+ZehMatt@users.noreply.github.com> Date: Wed, 3 Dec 2025 00:06:39 +0200 Subject: [PATCH 073/222] Refactor the network code also change protocol (#25575) * Change the network protocol and refactor the code, still supports the old format for now * Bump up network version * Update changelog.txt --- data/language/en-GB.txt | 1 + distribution/changelog.txt | 1 + src/openrct2/Context.cpp | 6 +- src/openrct2/Game.h | 5 + src/openrct2/GameState.cpp | 12 +- src/openrct2/localisation/StringIds.h | 1 + src/openrct2/network/Network.h | 3 +- src/openrct2/network/NetworkBase.cpp | 448 ++++++++++----------- src/openrct2/network/NetworkBase.h | 23 +- src/openrct2/network/NetworkConnection.cpp | 220 ++++++---- src/openrct2/network/NetworkConnection.h | 13 +- src/openrct2/network/NetworkPacket.cpp | 4 +- src/openrct2/network/NetworkPacket.h | 17 +- src/openrct2/network/NetworkTypes.h | 3 +- src/openrct2/network/Socket.cpp | 13 - src/openrct2/network/Socket.h | 24 +- 16 files changed, 447 insertions(+), 347 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 0102bca7d741..0eaa1171ddc3 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3838,3 +3838,4 @@ STR_7005 :Drag an area of footpath STR_7006 :Draw border around image buttons STR_7007 :Ride Type STR_7008 :Unknown ride type ({INT32}) +STR_7009 :Receiving scripts… diff --git a/distribution/changelog.txt b/distribution/changelog.txt index a3c5e18f5bf8..e4fc56fadc36 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -2,6 +2,7 @@ ------------------------------------------------------------------------ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. +- Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 78867e2f8346..7df72e4dfa17 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -1299,6 +1299,8 @@ namespace OpenRCT2 UpdateTimeAccumulators(deltaTime); + Network::Update(); + if (useVariableFrame) { RunVariableFrame(deltaTime); @@ -1307,6 +1309,8 @@ namespace OpenRCT2 { RunFixedFrame(deltaTime); } + + Network::Flush(); } void UpdateTimeAccumulators(float deltaTime) @@ -1332,7 +1336,7 @@ namespace OpenRCT2 if (_ticksAccumulator < kGameUpdateTimeMS) { - const auto sleepTimeSec = (kGameUpdateTimeMS - _ticksAccumulator); + const auto sleepTimeSec = std::min(kNetworkUpdateTimeMS, kGameUpdateTimeMS - _ticksAccumulator); Platform::Sleep(static_cast(sleepTimeSec * 1000.f)); return; } diff --git a/src/openrct2/Game.h b/src/openrct2/Game.h index 9b08cf16c3a9..308b0e224769 100644 --- a/src/openrct2/Game.h +++ b/src/openrct2/Game.h @@ -26,6 +26,11 @@ namespace OpenRCT2 // The maximum threshold to advance. constexpr float kGameUpdateMaxThreshold = kGameUpdateTimeMS * kGameMaxUpdates; + // The network update runs at a different rate to the game update. + constexpr uint32_t kNetworkUpdateFPS = 140; + // The network update interval in milliseconds, (1000 / 140fps) = ~7.14ms + constexpr float kNetworkUpdateTimeMS = 1.0f / kNetworkUpdateFPS; + constexpr float kGameMinTimeScale = 0.1f; constexpr float kGameMaxTimeScale = 5.0f; } // namespace OpenRCT2 diff --git a/src/openrct2/GameState.cpp b/src/openrct2/GameState.cpp index d8ec67127b0c..3de0e5b5a1fb 100644 --- a/src/openrct2/GameState.cpp +++ b/src/openrct2/GameState.cpp @@ -173,7 +173,7 @@ namespace OpenRCT2 getGameState().entities.UpdateMoneyEffect(); // Post-tick network update - Network::ProcessPending(); + Network::PostTick(); // Post-tick game actions. GameActions::ProcessQueue(); @@ -181,6 +181,12 @@ namespace OpenRCT2 } } + // Network has to always tick. + if (numUpdates == 0) + { + Network::Tick(); + } + // Update the game one or more times for (uint32_t i = 0; i < numUpdates; i++) { @@ -251,7 +257,7 @@ namespace OpenRCT2 GetContext()->GetReplayManager()->Update(); - Network::Update(); + Network::Tick(); auto& gameState = getGameState(); @@ -344,7 +350,7 @@ namespace OpenRCT2 GameActions::ProcessQueue(); - Network::ProcessPending(); + Network::PostTick(); Network::Flush(); gameState.currentTicks++; diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index a9276c20f39d..b1fedb852cb2 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1575,6 +1575,7 @@ enum : StringId STR_UNKNOWN_RIDE = 6375, STR_MULTIPLAYER_RECEIVING_OBJECTS_LIST = 6378, + STR_MULTIPLAYER_RECEIVING_SCRIPTS = 7009, STR_MULTIPLAYER_RECEIVED_INVALID_DATA = 6379, diff --git a/src/openrct2/network/Network.h b/src/openrct2/network/Network.h index 3f620669b0a2..3f4fd9d5e031 100644 --- a/src/openrct2/network/Network.h +++ b/src/openrct2/network/Network.h @@ -53,7 +53,8 @@ namespace OpenRCT2::Network void SendTick(); bool GamestateSnapshotsEnabled(); void Update(); - void ProcessPending(); + void Tick(); + void PostTick(); void Flush(); [[nodiscard]] Auth GetAuthstatus(); diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 4b4b963c2de6..415a5ca3e510 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 1; +constexpr uint8_t kStreamVersion = 2; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); @@ -62,7 +62,7 @@ static constexpr uint32_t kChunkSize = 1024 * 63; // If data is sent fast enough it would halt the entire server, process only a maximum amount. // This limit is per connection, the current value was determined by tests with fuzzing. -static constexpr uint32_t kMaxPacketsPerUpdate = 100; +static constexpr uint32_t kMaxPacketsPerTick = 100; #include "../Cheats.h" #include "../ParkImporter.h" @@ -119,6 +119,7 @@ namespace OpenRCT2::Network _actionId = 0; client_command_handlers[Command::auth] = &NetworkBase::Client_Handle_AUTH; + client_command_handlers[Command::beginMap] = &NetworkBase::Client_Handle_BEGINMAP; client_command_handlers[Command::map] = &NetworkBase::Client_Handle_MAP; client_command_handlers[Command::chat] = &NetworkBase::Client_Handle_CHAT; client_command_handlers[Command::gameAction] = &NetworkBase::Client_Handle_GAME_ACTION; @@ -134,7 +135,6 @@ namespace OpenRCT2::Network client_command_handlers[Command::gameInfo] = &NetworkBase::Client_Handle_GAMEINFO; client_command_handlers[Command::token] = &NetworkBase::Client_Handle_TOKEN; client_command_handlers[Command::objectsList] = &NetworkBase::Client_Handle_OBJECTS_LIST; - client_command_handlers[Command::scriptsHeader] = &NetworkBase::Client_Handle_SCRIPTS_HEADER; client_command_handlers[Command::scriptsData] = &NetworkBase::Client_Handle_SCRIPTS_DATA; client_command_handlers[Command::gameState] = &NetworkBase::Client_Handle_GAMESTATE; @@ -463,6 +463,21 @@ namespace OpenRCT2::Network } void NetworkBase::Update() + { + switch (GetMode()) + { + case Mode::server: + UpdateServer(); + break; + case Mode::client: + UpdateClient(); + break; + default: + break; + } + } + + void NetworkBase::Tick() { _closeLock = true; @@ -474,10 +489,10 @@ namespace OpenRCT2::Network switch (GetMode()) { case Mode::server: - UpdateServer(); + TickServer(); break; case Mode::client: - UpdateClient(); + TickClient(); break; default: break; @@ -511,6 +526,18 @@ namespace OpenRCT2::Network } void NetworkBase::UpdateServer() + { + for (auto& connection : client_connection_list) + { + // This can be called multiple times before the connection is removed. + if (!connection->IsValid()) + continue; + + connection->update(); + } + } + + void NetworkBase::TickServer() { for (auto& connection : client_connection_list) { @@ -520,6 +547,7 @@ namespace OpenRCT2::Network if (!ProcessConnection(*connection)) { + LOG_INFO("Disconnecting player %s", connection->player->Name.c_str()); connection->Disconnect(); } else @@ -548,6 +576,11 @@ namespace OpenRCT2::Network } void NetworkBase::UpdateClient() + { + _serverConnection->update(); + } + + void NetworkBase::TickClient() { assert(_serverConnection != nullptr); @@ -594,7 +627,6 @@ namespace OpenRCT2::Network case SocketStatus::connected: { status = Status::connected; - _serverConnection->ResetLastPacketTime(); Client_Send_TOKEN(); char str_authenticating[256]; FormatStringLegacy(str_authenticating, 256, STR_MULTIPLAYER_AUTHENTICATING, nullptr); @@ -1319,44 +1351,39 @@ namespace OpenRCT2::Network { LOG_VERBOSE("Server sends objects list with %u items", objects.size()); - if (objects.empty()) - { - Packet packet(Command::objectsList); - packet << static_cast(0) << static_cast(objects.size()); + Packet packet(Command::objectsList); - connection.QueuePacket(std::move(packet)); - } - else - { - for (size_t i = 0; i < objects.size(); ++i) - { - const auto* object = objects[i]; - - Packet packet(Command::objectsList); - packet << static_cast(i) << static_cast(objects.size()); + // Count. + packet << static_cast(objects.size()); - if (object->Identifier.empty()) - { - // DAT - LOG_VERBOSE("Object %.8s (checksum %x)", object->ObjectEntry.name, object->ObjectEntry.checksum); - packet << static_cast(0); - packet.Write(&object->ObjectEntry, sizeof(RCTObjectEntry)); - } - else - { - // JSON - LOG_VERBOSE("Object %s", object->Identifier.c_str()); - packet << static_cast(1); - packet.WriteString(object->Identifier); - } + // List + for (size_t i = 0; i < objects.size(); ++i) + { + const auto* object = objects[i]; - connection.QueuePacket(std::move(packet)); + if (object->Identifier.empty()) + { + // DAT + LOG_VERBOSE("Object %.8s (checksum %x)", object->ObjectEntry.name, object->ObjectEntry.checksum); + packet << static_cast(0); + packet.Write(&object->ObjectEntry, sizeof(RCTObjectEntry)); + } + else + { + // JSON + LOG_VERBOSE("Object %s", object->Identifier.c_str()); + packet << static_cast(1); + packet.WriteString(object->Identifier); } } + + connection.QueuePacket(std::move(packet)); } void NetworkBase::ServerSendScripts(Connection& connection) { + Packet packet(Command::scriptsData); + #ifdef ENABLE_SCRIPTING using namespace OpenRCT2::Scripting; @@ -1366,45 +1393,21 @@ namespace OpenRCT2::Network const auto remotePlugins = scriptEngine.GetRemotePlugins(); LOG_VERBOSE("Server sends %zu scripts", remotePlugins.size()); - // Build the data contents for each plugin. - MemoryStream pluginData; + packet << static_cast(remotePlugins.size()); + for (auto& plugin : remotePlugins) { const auto& code = plugin->GetCode(); - const auto codeSize = static_cast(code.size()); - pluginData.WriteValue(codeSize); - pluginData.WriteArray(code.c_str(), code.size()); - } - - // Send the header packet. - Packet packetScriptHeader(Command::scriptsHeader); - packetScriptHeader << static_cast(remotePlugins.size()); - packetScriptHeader << static_cast(pluginData.GetLength()); - connection.QueuePacket(std::move(packetScriptHeader)); - - // Segment the plugin data into chunks and send them. - const uint8_t* pluginDataBuffer = static_cast(pluginData.GetData()); - uint32_t dataOffset = 0; - while (dataOffset < pluginData.GetLength()) - { - const uint32_t chunkSize = std::min(pluginData.GetLength() - dataOffset, kChunkSize); - - Packet packet(Command::scriptsData); - packet << chunkSize; - packet.Write(pluginDataBuffer + dataOffset, chunkSize); - - connection.QueuePacket(std::move(packet)); - dataOffset += chunkSize; + packet << codeSize; + packet.Write(code.c_str(), code.size()); } - Guard::Assert(dataOffset == pluginData.GetLength()); - #else - Packet packetScriptHeader(Command::scriptsHeader); - packetScriptHeader << static_cast(0u); - packetScriptHeader << static_cast(0u); + packet << static_cast(0); #endif + + connection.QueuePacket(std::move(packet)); } void NetworkBase::Client_Send_HEARTBEAT(Connection& connection) const @@ -1472,8 +1475,8 @@ namespace OpenRCT2::Network objects = objManager.GetPackableObjects(); } - auto header = SaveForNetwork(objects); - if (header.empty()) + auto mapContent = SaveForNetwork(objects); + if (mapContent.empty()) { if (connection != nullptr) { @@ -1482,21 +1485,21 @@ namespace OpenRCT2::Network } return; } - size_t chunksize = kChunkSize; - for (size_t i = 0; i < header.size(); i += chunksize) + + Packet packetBeginMap(Command::beginMap); + + Packet packetMap(Command::map); + packetMap.Write(mapContent.data(), mapContent.size()); + + if (connection != nullptr) { - size_t datasize = std::min(chunksize, header.size() - i); - Packet packet(Command::map); - packet << static_cast(header.size()) << static_cast(i); - packet.Write(&header[i], datasize); - if (connection != nullptr) - { - connection->QueuePacket(std::move(packet)); - } - else - { - SendPacketToClients(packet); - } + connection->QueuePacket(std::move(packetBeginMap)); + connection->QueuePacket(std::move(packetMap)); + } + else + { + SendPacketToClients(packetBeginMap); + SendPacketToClients(packetMap); } } @@ -1740,6 +1743,56 @@ namespace OpenRCT2::Network SendPacketToClients(packet); } + bool NetworkBase::UpdateConnection(Connection& connection) + { + connection.update(); + + return connection.IsValid(); + } + + static void displayNetworkProgress(StringId captionStringId) + { + auto captionString = GetContext()->GetLocalisationService().GetString(captionStringId); + auto intent = Intent(INTENT_ACTION_PROGRESS_OPEN); + intent.PutExtra(INTENT_EXTRA_MESSAGE, captionString); + intent.PutExtra(INTENT_EXTRA_CALLBACK, []() -> void { + LOG_INFO("User aborted network operation"); + OpenRCT2::GetContext()->GetNetwork().Close(); + }); + ContextOpenIntent(&intent); + } + + static void reportPacketProgress(NetworkBase& network, Connection& connection) + { + if (network.GetMode() != Mode::client) + { + return; + } + + const auto nextPacketCommand = connection.getPendingPacketCommand(); + const auto bytesReceived = connection.getPendingPacketAvailable(); + const auto bytesTotal = connection.getPendingPacketSize(); + + switch (nextPacketCommand) + { + case Command::objectsList: + displayNetworkProgress(STR_MULTIPLAYER_RECEIVING_OBJECTS_LIST); + break; + case Command::map: + displayNetworkProgress(STR_MULTIPLAYER_DOWNLOADING_MAP); + break; + case Command::scriptsData: + displayNetworkProgress(STR_MULTIPLAYER_RECEIVING_SCRIPTS); + break; + default: + // Nothing to report. + return; + } + + network.GetContext().SetProgress( + static_cast(bytesReceived), static_cast(bytesTotal), STR_STRING_M_OF_N_KIB); + } + bool NetworkBase::ProcessConnection(Connection& connection) { ReadPacket packetStatus; @@ -1760,6 +1813,7 @@ namespace OpenRCT2::Network return false; case ReadPacket::success: // done reading in packet + reportPacketProgress(*this, connection); ProcessPacket(connection, connection.InboundPacket); if (!connection.IsValid()) { @@ -1768,15 +1822,20 @@ namespace OpenRCT2::Network break; case ReadPacket::moreData: // more data required to be read + reportPacketProgress(*this, connection); break; case ReadPacket::noData: // could not read anything from socket break; } - } while (packetStatus == ReadPacket::success && countProcessed < kMaxPacketsPerUpdate); + } while (packetStatus == ReadPacket::success && countProcessed < kMaxPacketsPerTick); - if (!connection.ReceivedPacketRecently()) + if (!connection.ReceivedDataRecently()) { + LOG_INFO( + "No data received recently from connection %s, disconnecting connection.", + connection.Socket->GetIpAddress().c_str()); + if (!connection.GetLastDisconnectReason()) { connection.SetLastDisconnectReason(STR_MULTIPLAYER_NO_DATA); @@ -1812,7 +1871,7 @@ namespace OpenRCT2::Network } // This is called at the end of each game tick, this where things should be processed that affects the game state. - void NetworkBase::ProcessPending() + void NetworkBase::PostTick() { if (GetMode() == Mode::server) { @@ -2302,8 +2361,7 @@ namespace OpenRCT2::Network void NetworkBase::ServerHandleHeartbeat(Connection& connection, Packet& packet) { - LOG_VERBOSE("Client %s heartbeat", connection.Socket->GetHostName()); - connection.ResetLastPacketTime(); + LOG_VERBOSE("Client %s heartbeat", connection.Socket->GetIpAddress().c_str()); } void NetworkBase::Client_Handle_AUTH(Connection& connection, Packet& packet) @@ -2392,34 +2450,17 @@ namespace OpenRCT2::Network ServerSendToken(connection); } - static void OpenNetworkProgress(StringId captionStringId) - { - auto captionString = GetContext()->GetLocalisationService().GetString(captionStringId); - auto intent = Intent(INTENT_ACTION_PROGRESS_OPEN); - intent.PutExtra(INTENT_EXTRA_MESSAGE, captionString); - intent.PutExtra(INTENT_EXTRA_CALLBACK, []() -> void { OpenRCT2::GetContext()->GetNetwork().Close(); }); - ContextOpenIntent(&intent); - } - void NetworkBase::Client_Handle_OBJECTS_LIST(Connection& connection, Packet& packet) { auto& repo = GetContext().GetObjectRepository(); - uint32_t index = 0; - uint32_t totalObjects = 0; - packet >> index >> totalObjects; + uint32_t objectCount{}; + packet >> objectCount; - static constexpr uint32_t kObjectStartIndex = 0; - if (index == kObjectStartIndex) - { - _missingObjects.clear(); - } + std::vector missingObjects; - if (totalObjects > 0) + for (uint32_t i = 0; i < objectCount; ++i) { - OpenNetworkProgress(STR_MULTIPLAYER_RECEIVING_OBJECTS_LIST); - GetContext().SetProgress(index + 1, totalObjects); - uint8_t objectType{}; packet >> objectType; @@ -2434,7 +2475,7 @@ namespace OpenRCT2::Network { auto objectName = std::string(entry->GetName()); LOG_VERBOSE("Requesting object %s with checksum %x from server", objectName.c_str(), entry->checksum); - _missingObjects.push_back(ObjectEntryDescriptor(*entry)); + missingObjects.push_back(ObjectEntryDescriptor(*entry)); } else if (object->ObjectEntry.checksum != entry->checksum || object->ObjectEntry.flags != entry->flags) { @@ -2456,69 +2497,35 @@ namespace OpenRCT2::Network { auto objectName = std::string(identifier); LOG_VERBOSE("Requesting object %s from server", objectName.c_str()); - _missingObjects.push_back(ObjectEntryDescriptor(objectName)); + missingObjects.push_back(ObjectEntryDescriptor(objectName)); } } } } - if (index + 1 >= totalObjects) - { - LOG_VERBOSE("client received object list, it has %u entries", totalObjects); - Client_Send_MAPREQUEST(_missingObjects); - _missingObjects.clear(); - } - } - - void NetworkBase::Client_Handle_SCRIPTS_HEADER(Connection& connection, Packet& packet) - { - uint32_t numScripts{}; - uint32_t dataSize{}; - packet >> numScripts >> dataSize; - - #ifdef ENABLE_SCRIPTING - _serverScriptsData.data.Clear(); - _serverScriptsData.pluginCount = numScripts; - _serverScriptsData.dataSize = dataSize; - #else - if (numScripts > 0) - { - connection.SetLastDisconnectReason("The client requires plugin support."); - Close(); - } - #endif + LOG_VERBOSE("client received object list, it has %u entries, %zu missing", objectCount, missingObjects.size()); + Client_Send_MAPREQUEST(missingObjects); } void NetworkBase::Client_Handle_SCRIPTS_DATA(Connection& connection, Packet& packet) { #ifdef ENABLE_SCRIPTING - uint32_t dataSize{}; - packet >> dataSize; - Guard::Assert(dataSize > 0); - - const auto* data = packet.Read(dataSize); - Guard::Assert(data != nullptr); + auto& scriptEngine = GetContext().GetScriptEngine(); - auto& scriptsData = _serverScriptsData.data; - scriptsData.Write(data, dataSize); + uint32_t count{}; + packet >> count; - if (scriptsData.GetLength() == _serverScriptsData.dataSize) + for (uint32_t i = 0; i < count; ++i) { - auto& scriptEngine = GetContext().GetScriptEngine(); + uint32_t codeSize{}; + packet >> codeSize; - scriptsData.SetPosition(0); - for (uint32_t i = 0; i < _serverScriptsData.pluginCount; ++i) - { - const auto codeSize = scriptsData.ReadValue(); - const auto scriptData = scriptsData.ReadArray(codeSize); + const uint8_t* scriptData = packet.Read(codeSize); - auto code = std::string_view(reinterpret_cast(scriptData.get()), codeSize); - scriptEngine.AddNetworkPlugin(code); - } - Guard::Assert(scriptsData.GetPosition() == scriptsData.GetLength()); + auto code = std::string_view(reinterpret_cast(scriptData), codeSize); + scriptEngine.AddNetworkPlugin(code); - // Empty the current buffer. - _serverScriptsData = {}; + LOG_VERBOSE("Received and loaded network script plugin %u/%u", i + 1, count); } #else connection.SetLastDisconnectReason("The client requires plugin support."); @@ -2768,84 +2775,59 @@ namespace OpenRCT2::Network } } + void NetworkBase::Client_Handle_BEGINMAP([[maybe_unused]] Connection& connection, Packet& packet) + { + // Start of a new map load, clear the queue now as we have to buffer them + // until the map is fully loaded. + GameActions::ClearQueue(); + GameActions::SuspendQueue(); + + displayNetworkProgress(STR_LOADING_SAVED_GAME); + } + void NetworkBase::Client_Handle_MAP([[maybe_unused]] Connection& connection, Packet& packet) { - uint32_t size, offset; - packet >> size >> offset; - int32_t chunksize = static_cast(packet.Header.Size - packet.BytesRead); - if (chunksize <= 0) - { - return; - } - if (offset == 0) - { - // Start of a new map load, clear the queue now as we have to buffer them - // until the map is fully loaded. - GameActions::ClearQueue(); - GameActions::SuspendQueue(); + // Allow queue processing of game actions again. + GameActions::ResumeQueue(); - _serverTickData.clear(); - _clientMapLoaded = false; + // This prevents invoking the callback for when the window closes which would close the connection. + GetContext().CloseProgress(); - OpenNetworkProgress(STR_MULTIPLAYER_DOWNLOADING_MAP); - } - if (size > chunk_buffer.size()) + GameUnloadScripts(); + GameNotifyMapChange(); + + auto ms = MemoryStream(packet.Data.data(), packet.Data.size()); + if (LoadMap(&ms)) { - chunk_buffer.resize(size); - } + GameLoadInit(); + GameLoadScripts(); + GameNotifyMapChanged(); - const auto currentProgressKiB = (offset + chunksize) / 1024; - const auto totalSizeKiB = size / 1024; + // This seems wrong, we want to catch up to that tick so we shouldn't mess with this. + //_serverState.tick = getGameState().currentTicks; - GetContext().SetProgress(currentProgressKiB, totalSizeKiB, STR_STRING_M_OF_N_KIB); + _serverState.state = ServerStatus::ok; + _clientMapLoaded = true; + gFirstTimeSaving = true; - std::memcpy(&chunk_buffer[offset], const_cast(static_cast(packet.Read(chunksize))), chunksize); - if (offset + chunksize == size) - { - // Allow queue processing of game actions again. - GameActions::ResumeQueue(); + // Notify user he is now online and which shortcut key enables chat + ChatShowConnectedMessage(); - ContextForceCloseWindowByClass(WindowClass::progressWindow); - GameUnloadScripts(); - GameNotifyMapChange(); + // Fix invalid vehicle sprite sizes, thus preventing visual corruption of sprites + FixInvalidVehicleSpriteSizes(); - bool has_to_free = false; - uint8_t* data = &chunk_buffer[0]; - size_t data_size = size; - auto ms = MemoryStream(data, data_size); - if (LoadMap(&ms)) - { - GameLoadInit(); - GameLoadScripts(); - GameNotifyMapChanged(); - _serverState.tick = getGameState().currentTicks; - // NetworkStatusOpen("Loaded new map from network"); - _serverState.state = ServerStatus::ok; - _clientMapLoaded = true; - gFirstTimeSaving = true; - - // Notify user he is now online and which shortcut key enables chat - ChatShowConnectedMessage(); - - // Fix invalid vehicle sprite sizes, thus preventing visual corruption of sprites - FixInvalidVehicleSpriteSizes(); - - // NOTE: Game actions are normally processed before processing the player list. - // Given that during map load game actions are buffered we have to process the - // player list first to have valid players for the queued game actions. - ProcessPlayerList(); - } - else - { - // Something went wrong, game is not loaded. Return to main screen. - auto loadOrQuitAction = GameActions::LoadOrQuitAction( - GameActions::LoadOrQuitModes::OpenSavePrompt, PromptMode::saveBeforeQuit); - GameActions::Execute(&loadOrQuitAction, getGameState()); - } - if (has_to_free) - { - free(data); - } + // NOTE: Game actions are normally processed before processing the player list. + // Given that during map load game actions are buffered we have to process the + // player list first to have valid players for the queued game actions. + ProcessPlayerList(); + } + else + { + // Something went wrong, game is not loaded. Return to main screen. + auto loadOrQuitAction = GameActions::LoadOrQuitAction( + GameActions::LoadOrQuitModes::OpenSavePrompt, PromptMode::saveBeforeQuit); + + loadOrQuitAction.Execute(getGameState()); } } @@ -2980,7 +2962,7 @@ namespace OpenRCT2::Network packet >> tick >> actionType; MemoryStream stream; - const size_t size = packet.Header.Size - packet.BytesRead; + const size_t size = packet.Header.size - packet.BytesRead; stream.WriteArray(packet.Read(size), size); stream.SetPosition(0); @@ -3070,7 +3052,7 @@ namespace OpenRCT2::Network } DataSerialiser stream(false); - const size_t size = packet.Header.Size - packet.BytesRead; + const size_t size = packet.Header.size - packet.BytesRead; stream.GetStream().WriteArray(packet.Read(size), size); stream.GetStream().SetPosition(0); @@ -3306,9 +3288,14 @@ namespace OpenRCT2::Network GetContext()->GetNetwork().Update(); } - void ProcessPending() + void Tick() { - GetContext()->GetNetwork().ProcessPending(); + GetContext()->GetNetwork().Tick(); + } + + void PostTick() + { + GetContext()->GetNetwork().PostTick(); } void Flush() @@ -4147,10 +4134,13 @@ namespace OpenRCT2::Network void SendGameAction(const GameActions::GameAction* action) { } + void Tick() + { + } void Update() { } - void ProcessPending() + void PostTick() { } int32_t BeginClient(const std::string& host, int32_t port) diff --git a/src/openrct2/network/NetworkBase.h b/src/openrct2/network/NetworkBase.h index fdf9b08f9a9f..006ab80a7e56 100644 --- a/src/openrct2/network/NetworkBase.h +++ b/src/openrct2/network/NetworkBase.h @@ -11,6 +11,7 @@ #include "NetworkTypes.h" #include "NetworkUser.h" +#include #include #include #include @@ -37,10 +38,10 @@ namespace OpenRCT2::Network bool Init(); void Close(); uint32_t GetServerTick() const noexcept; - // FIXME: This is currently the wrong function to override in System, will be refactored later. - void Update() override final; + void Update() final; + void Tick() final; void Flush(); - void ProcessPending(); + void PostTick() final; void ProcessPlayerList(); auto GetPlayerIteratorByID(uint8_t id) const; auto GetGroupIteratorByID(uint8_t id) const; @@ -61,6 +62,7 @@ namespace OpenRCT2::Network void CloseConnection(); Player* AddPlayer(const std::string& name, const std::string& keyhash); void ProcessPacket(Connection& connection, Packet& packet); + bool UpdateConnection(Connection& connection); public: // Server Connection* GetPlayerConnection(uint8_t id) const; @@ -81,6 +83,7 @@ namespace OpenRCT2::Network void SetupDefaultGroups(); void RemovePlayer(std::unique_ptr& connection); void UpdateServer(); + void TickServer(); void ServerClientDisconnected(std::unique_ptr& connection); bool SaveMap(IStream* stream, const std::vector& objects) const; std::vector SaveForNetwork(const std::vector& objects) const; @@ -136,6 +139,7 @@ namespace OpenRCT2::Network void ServerClientDisconnected(); bool LoadMap(IStream* stream); void UpdateClient(); + void TickClient(); // Packet dispatchers. void Client_Send_RequestGameState(uint32_t tick); @@ -152,6 +156,7 @@ namespace OpenRCT2::Network // Handlers. void Client_Handle_AUTH(Connection& connection, Packet& packet); + void Client_Handle_BEGINMAP([[maybe_unused]] Connection& connection, Packet& packet); void Client_Handle_MAP(Connection& connection, Packet& packet); void Client_Handle_CHAT(Connection& connection, Packet& packet); void Client_Handle_GAME_ACTION(Connection& connection, Packet& packet); @@ -167,10 +172,8 @@ namespace OpenRCT2::Network void Client_Handle_EVENT(Connection& connection, Packet& packet); void Client_Handle_TOKEN(Connection& connection, Packet& packet); void Client_Handle_OBJECTS_LIST(Connection& connection, Packet& packet); - void Client_Handle_SCRIPTS_HEADER(Connection& connection, Packet& packet); void Client_Handle_SCRIPTS_DATA(Connection& connection, Packet& packet); void Client_Handle_GAMESTATE(Connection& connection, Packet& packet); - std::vector _challenge; std::map _gameActionCallbacks; Key _key; @@ -190,7 +193,6 @@ namespace OpenRCT2::Network private: // Common Data using CommandHandler = void (NetworkBase::*)(Connection& connection, Packet& packet); - std::vector chunk_buffer; std::ofstream _chat_log_fs; uint32_t _lastUpdateTime = 0; uint32_t _currentDeltaTime = 0; @@ -223,19 +225,11 @@ namespace OpenRCT2::Network std::string spriteHash; }; - struct ServerScriptsData - { - uint32_t pluginCount{}; - uint32_t dataSize{}; - MemoryStream data; - }; - std::unordered_map client_command_handlers; std::unique_ptr _serverConnection; std::map _pendingPlayerLists; std::multimap _pendingPlayerInfo; std::map _serverTickData; - std::vector _missingObjects; std::string _host; std::string _chatLogPath; std::string _chatLogFilenameFormat = "%Y%m%d-%H%M%S.txt"; @@ -252,7 +246,6 @@ namespace OpenRCT2::Network SocketStatus _lastConnectStatus = SocketStatus::closed; bool _requireReconnect = false; bool _clientMapLoaded = false; - ServerScriptsData _serverScriptsData{}; }; } // namespace OpenRCT2::Network diff --git a/src/openrct2/network/NetworkConnection.cpp b/src/openrct2/network/NetworkConnection.cpp index 2e86d59a5cf0..36fd6866d712 100644 --- a/src/openrct2/network/NetworkConnection.cpp +++ b/src/openrct2/network/NetworkConnection.cpp @@ -11,6 +11,8 @@ #include "NetworkConnection.h" + #include "../Diagnostic.h" + #include "../core/Diagnostics.hpp" #include "../core/String.hpp" #include "../localisation/Formatting.h" #include "../platform/Platform.h" @@ -22,42 +24,80 @@ namespace OpenRCT2::Network { static constexpr size_t kDisconnectReasonBufSize = 256; - static constexpr size_t kBufferSize = (1024 * 64) - 1; // 64 KiB, maximum packet size. - #ifndef DEBUG - static constexpr size_t kNoDataTimeout = 20; // Seconds. - #endif - - static_assert(kBufferSize <= std::numeric_limits::max(), "kBufferSize too big, uint16_t is max."); + static constexpr size_t kBufferSize = 1024 * 128; // 128 KiB. + static constexpr size_t kNoDataTimeout = 40; // Seconds. Connection::Connection() noexcept { - ResetLastPacketTime(); + _lastReceiveTime = Platform::GetTicks(); } - ReadPacket Connection::readPacket() + void Connection::update() + { + if (!IsValid()) + { + return; + } + + receiveData(); + SendQueuedData(); + } + + void Connection::receiveData() { + uint8_t buffer[kBufferSize]; size_t bytesRead = 0; - // Read packet header. - auto& header = InboundPacket.Header; - if (InboundPacket.BytesTransferred < sizeof(InboundPacket.Header)) + ReadPacket status = Socket->ReceiveData(buffer, sizeof(buffer), &bytesRead); + if (status == ReadPacket::disconnected) { - const size_t missingLength = sizeof(header) - InboundPacket.BytesTransferred; + Disconnect(); + return; + } - uint8_t* buffer = reinterpret_cast(&InboundPacket.Header); + if (status == ReadPacket::success) + { + _lastReceiveTime = Platform::GetTicks(); + _inboundBuffer.insert(_inboundBuffer.end(), buffer, buffer + bytesRead); + } + } - ReadPacket status = Socket->ReceiveData(buffer, missingLength, &bytesRead); - if (status != ReadPacket::success) - { - return status; - } + ReadPacket Connection::readPacket() + { + uint32_t magic = 0; - InboundPacket.BytesTransferred += bytesRead; - if (InboundPacket.BytesTransferred < sizeof(InboundPacket.Header)) - { - // If still not enough data for header, keep waiting. - return ReadPacket::moreData; - } + // Check if we have enough data for the magic. + if (_inboundBuffer.size() < sizeof(magic)) + { + return ReadPacket::moreData; + } + + // Read magic. + std::memcpy(&magic, _inboundBuffer.data(), sizeof(magic)); + + size_t totalPacketLength = 0; + size_t headerSize = 0; + + magic = Convert::NetworkToHost(magic); + if (magic == PacketHeader::kMagic) + { + // New format. + auto& header = InboundPacket.Header; + std::memcpy(&header, _inboundBuffer.data(), sizeof(header)); + + header.magic = magic; + header.version = Convert::NetworkToHost(header.version); + header.size = Convert::NetworkToHost(header.size); + header.id = Convert::NetworkToHost(header.id); + + headerSize = sizeof(header); + totalPacketLength = sizeof(header) + header.size; + } + else + { + // Legacy format. + PacketLegacyHeader header{}; + std::memcpy(&header, _inboundBuffer.data(), sizeof(header)); // Normalise values. header.Size = Convert::NetworkToHost(header.Size); @@ -65,61 +105,81 @@ namespace OpenRCT2::Network // NOTE: For compatibility reasons for the master server we need to remove sizeof(Header.Id) from the size. // Previously the Id field was not part of the header rather part of the body. - header.Size -= std::min(header.Size, sizeof(header.Id)); - - // Fall-through: Read rest of packet. - } + // We correct the size to have only the length of the body. + if (header.Size < sizeof(header.Id)) + { + // This is a malformed packet, disconnect. + LOG_INFO( + "Received malformed packet (size: %u) from {%s}, disconnecting.", header.Size, + Socket->GetIpAddress().c_str()); - // Read packet body. - { - // NOTE: BytesTransfered includes the header length, this will not underflow. - const size_t missingLength = header.Size - (InboundPacket.BytesTransferred - sizeof(header)); + Disconnect(); + return ReadPacket::disconnected; + } - uint8_t buffer[kBufferSize]; + header.Size -= sizeof(header.Id); - if (missingLength > 0) - { - ReadPacket status = Socket->ReceiveData(buffer, std::min(missingLength, kBufferSize), &bytesRead); - if (status != ReadPacket::success) - { - return status; - } - - InboundPacket.BytesTransferred += bytesRead; - InboundPacket.Write(buffer, bytesRead); - } + // Fill in new header format. + InboundPacket.Header.magic = PacketHeader::kMagic; + InboundPacket.Header.size = header.Size; + InboundPacket.Header.id = header.Id; - if (InboundPacket.Data.size() == header.Size) - { - // Received complete packet. - _lastPacketTime = Platform::GetTicks(); + headerSize = sizeof(header); + totalPacketLength = sizeof(header) + header.Size; - RecordPacketStats(InboundPacket, false); + _isLegacyProtocol = true; + } - return ReadPacket::success; - } + if (_inboundBuffer.size() < totalPacketLength) + { + InboundPacket.BytesTransferred = _inboundBuffer.size(); + return ReadPacket::moreData; } - return ReadPacket::moreData; + // Read packet body. + InboundPacket.BytesTransferred = totalPacketLength; + InboundPacket.Write(_inboundBuffer.data() + headerSize, totalPacketLength - headerSize); + + // Remove read data from buffer. + _inboundBuffer.erase(_inboundBuffer.begin(), _inboundBuffer.begin() + totalPacketLength); + + RecordPacketStats(InboundPacket, false); + + return ReadPacket::success; } - static sfl::small_vector serializePacket(const Packet& packet) + static sfl::small_vector serializePacket(bool legacyProtocol, const Packet& packet) { - // NOTE: For compatibility reasons for the master server we need to add sizeof(Header.Id) to the size. - // Previously the Id field was not part of the header rather part of the body. - const auto bodyLength = packet.Data.size() + sizeof(packet.Header.Id); + sfl::small_vector buffer; - Guard::Assert(bodyLength <= std::numeric_limits::max(), "Packet size too large"); + if (legacyProtocol) + { + // NOTE: For compatibility reasons for the master server we need to add sizeof(Header.Id) to the size. + // Previously the Id field was not part of the header rather part of the body. + const auto bodyLength = packet.Data.size() + sizeof(PacketLegacyHeader::Id); - auto header = packet.Header; - header.Size = static_cast(bodyLength); - header.Size = Convert::HostToNetwork(header.Size); - header.Id = ByteSwapBE(header.Id); + Guard::Assert(bodyLength <= std::numeric_limits::max(), "Packet size too large"); - sfl::small_vector buffer; - buffer.reserve(sizeof(header) + packet.Data.size()); + PacketLegacyHeader header{}; + header.Size = static_cast(bodyLength); + header.Size = Convert::HostToNetwork(header.Size); + header.Id = ByteSwapBE(packet.Header.id); + + buffer.insert( + buffer.end(), reinterpret_cast(&header), reinterpret_cast(&header) + sizeof(header)); + } + else + { + PacketHeader header{}; + header.magic = Convert::HostToNetwork(PacketHeader::kMagic); + header.version = Convert::HostToNetwork(PacketHeader::kVersion); + header.size = Convert::HostToNetwork(static_cast(packet.Data.size())); + header.id = Convert::HostToNetwork(packet.Header.id); + + buffer.insert( + buffer.end(), reinterpret_cast(&header), reinterpret_cast(&header) + sizeof(header)); + } - buffer.insert(buffer.end(), reinterpret_cast(&header), reinterpret_cast(&header) + sizeof(header)); buffer.insert(buffer.end(), packet.Data.begin(), packet.Data.end()); return buffer; @@ -129,7 +189,7 @@ namespace OpenRCT2::Network { if (AuthStatus == Auth::ok || !packet.CommandRequiresAuth()) { - const auto payload = serializePacket(packet); + const auto payload = serializePacket(_isLegacyProtocol, packet); if (front) { _outboundBuffer.insert(_outboundBuffer.begin(), payload.begin(), payload.end()); @@ -168,20 +228,16 @@ namespace OpenRCT2::Network } } - void Connection::ResetLastPacketTime() noexcept - { - _lastPacketTime = Platform::GetTicks(); - } - - bool Connection::ReceivedPacketRecently() const noexcept + bool Connection::ReceivedDataRecently() const noexcept { - #ifndef DEBUG constexpr auto kTimeoutMs = kNoDataTimeout * 1000; - if (Platform::GetTicks() > _lastPacketTime + kTimeoutMs) + + const auto timeSinceLastRecv = Platform::GetTicks() - _lastReceiveTime; + if (timeSinceLastRecv > kTimeoutMs) { return false; } - #endif + return true; } @@ -231,6 +287,22 @@ namespace OpenRCT2::Network stats.bytesReceived[EnumValue(StatisticsGroup::Total)] += packetSize; } } + + Command Connection::getPendingPacketCommand() const noexcept + { + return InboundPacket.GetCommand(); + } + + size_t Connection::getPendingPacketSize() const noexcept + { + return InboundPacket.Header.size; + } + + size_t Connection::getPendingPacketAvailable() const noexcept + { + return InboundPacket.BytesTransferred; + } + } // namespace OpenRCT2::Network #endif diff --git a/src/openrct2/network/NetworkConnection.h b/src/openrct2/network/NetworkConnection.h index e06333a6fa93..6ed1045858b4 100644 --- a/src/openrct2/network/NetworkConnection.h +++ b/src/openrct2/network/NetworkConnection.h @@ -45,28 +45,35 @@ namespace OpenRCT2::Network Connection() noexcept; + void update(); ReadPacket readPacket(); void QueuePacket(const Packet& packet, bool front = false); + Command getPendingPacketCommand() const noexcept; + size_t getPendingPacketSize() const noexcept; + size_t getPendingPacketAvailable() const noexcept; + // This will not immediately disconnect the client. The disconnect // will happen post-tick. void Disconnect() noexcept; bool IsValid() const; void SendQueuedData(); - void ResetLastPacketTime() noexcept; - bool ReceivedPacketRecently() const noexcept; + bool ReceivedDataRecently() const noexcept; const utf8* GetLastDisconnectReason() const noexcept; void SetLastDisconnectReason(std::string_view src); void SetLastDisconnectReason(const StringId string_id, void* args = nullptr); private: + std::vector _inboundBuffer; std::vector _outboundBuffer; - uint32_t _lastPacketTime = 0; + uint32_t _lastReceiveTime = 0; std::string _lastDisconnectReason; + bool _isLegacyProtocol = false; void RecordPacketStats(const Packet& packet, bool sending); + void receiveData(); }; } // namespace OpenRCT2::Network diff --git a/src/openrct2/network/NetworkPacket.cpp b/src/openrct2/network/NetworkPacket.cpp index 87ef06317cef..82a87808bae4 100644 --- a/src/openrct2/network/NetworkPacket.cpp +++ b/src/openrct2/network/NetworkPacket.cpp @@ -18,7 +18,7 @@ namespace OpenRCT2::Network { Packet::Packet(Command id) noexcept - : Header{ 0, id } + : Header{ PacketHeader::kMagic, PacketHeader::kVersion, 0, id } { } @@ -34,7 +34,7 @@ namespace OpenRCT2::Network Command Packet::GetCommand() const noexcept { - return Header.Id; + return Header.id; } void Packet::Clear() noexcept diff --git a/src/openrct2/network/NetworkPacket.h b/src/openrct2/network/NetworkPacket.h index ce69859e3f48..72688485aac7 100644 --- a/src/openrct2/network/NetworkPacket.h +++ b/src/openrct2/network/NetworkPacket.h @@ -19,12 +19,23 @@ namespace OpenRCT2::Network { #pragma pack(push, 1) - struct PacketHeader + struct PacketLegacyHeader { uint16_t Size = 0; Command Id = Command::invalid; }; - static_assert(sizeof(PacketHeader) == 6); + static_assert(sizeof(PacketLegacyHeader) == 6); + + struct PacketHeader + { + static constexpr uint32_t kMagic = 0x3254524F; // 'ORT2' + static constexpr uint16_t kVersion = 2; + + uint32_t magic{}; + uint16_t version{}; + uint32_t size{}; + Command id{}; + }; #pragma pack(pop) struct Packet final @@ -49,7 +60,7 @@ namespace OpenRCT2::Network template Packet& operator>>(T& value) { - if (BytesRead + sizeof(value) > Header.Size) + if (BytesRead + sizeof(value) > Header.size) { value = T{}; } diff --git a/src/openrct2/network/NetworkTypes.h b/src/openrct2/network/NetworkTypes.h index 255d03eab048..fc027f478d4a 100644 --- a/src/openrct2/network/NetworkTypes.h +++ b/src/openrct2/network/NetworkTypes.h @@ -82,9 +82,10 @@ namespace OpenRCT2::Network playerInfo, requestGameState, gameState, - scriptsHeader, + scriptsHeader, // Deprecated. scriptsData, heartbeat, + beginMap, max, invalid = static_cast(-1), }; diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp index 73e2447cd7ea..795b96bcdaa1 100644 --- a/src/openrct2/network/Socket.cpp +++ b/src/openrct2/network/Socket.cpp @@ -982,17 +982,4 @@ namespace OpenRCT2::Network } // namespace OpenRCT2::Network -namespace OpenRCT2::Convert -{ - uint16_t HostToNetwork(uint16_t value) - { - return htons(value); - } - - uint16_t NetworkToHost(uint16_t value) - { - return ntohs(value); - } -} // namespace OpenRCT2::Convert - #endif diff --git a/src/openrct2/network/Socket.h b/src/openrct2/network/Socket.h index e5e9ac077126..034e615d7e2a 100644 --- a/src/openrct2/network/Socket.h +++ b/src/openrct2/network/Socket.h @@ -9,6 +9,8 @@ #pragma once +#include "../core/Endianness.h" + #include #include #include @@ -106,6 +108,24 @@ namespace OpenRCT2::Network namespace OpenRCT2::Convert { - uint16_t HostToNetwork(uint16_t value); - uint16_t NetworkToHost(uint16_t value); + template + constexpr T HostToNetwork(T value) + { + if constexpr (std::endian::native == std::endian::big) + { + return value; // already network order + } + else + { + return ByteSwapBE(value); + } + } + + template + constexpr T NetworkToHost(T value) + { + // Conversion is symmetric + return HostToNetwork(value); + } + } // namespace OpenRCT2::Convert From 41384ac97a13eefb41310df57936487535a14d59 Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Thu, 4 Dec 2025 11:15:31 +0100 Subject: [PATCH 074/222] Fix #9895: standup coaster gets incorrect intensity boost from synchronisation --- distribution/changelog.txt | 1 + src/openrct2/network/NetworkBase.cpp | 2 +- src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index e4fc56fadc36..0dcf24fb443d 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -4,6 +4,7 @@ - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. +- Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 415a5ca3e510..4f8b3dad665d 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 2; +constexpr uint8_t kStreamVersion = 3; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); diff --git a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h index 070137164fc2..c5da1ccc4b2e 100644 --- a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h @@ -67,7 +67,7 @@ constexpr RideTypeDescriptor StandUpRollerCoasterRTD = false, { { RatingsModifierType::BonusLength, 6000, 764, 0, 0 }, - { RatingsModifierType::BonusSynchronisation, 0, RideRating::make(0, 40), RideRating::make(0, 10), 0 }, + { RatingsModifierType::BonusSynchronisation, 0, RideRating::make(0, 40), RideRating::make(0, 5), 0 }, { RatingsModifierType::BonusTrainLength, 0, 187245, 0, 0 }, { RatingsModifierType::BonusMaxSpeed, 0, 44281, 123987, 35424 }, { RatingsModifierType::BonusAverageSpeed, 0, 291271, 436906, 0 }, From a563effdd9a4cc142a9041a2fc81c322729d09b2 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Fri, 5 Dec 2025 04:07:22 +0000 Subject: [PATCH 075/222] Merge Localisation/master into OpenRCT2/develop --- data/language/de-DE.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/de-DE.txt b/data/language/de-DE.txt index 00a606a774bc..aae868b05be0 100644 --- a/data/language/de-DE.txt +++ b/data/language/de-DE.txt @@ -3831,3 +3831,4 @@ STR_7004 :Erzwinge Neuzeichnung STR_7005 :Baue eine Fläche aus Fußwegen STR_7006 :Zeichne Ränder um Bildknöpfe STR_7007 :Achterbahntyp +STR_7008 :Unbekannter Fahrgeschäftstyp ({INT32}) From 646d16e745713c8ed40a0a707bb07a0d1178535d Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Thu, 18 Sep 2025 09:18:44 -0300 Subject: [PATCH 076/222] Move WaitingAtCrossing logic to peep.cpp --- src/openrct2/entity/Guest.cpp | 38 ----------------------------------- src/openrct2/entity/Guest.h | 1 - src/openrct2/entity/Peep.cpp | 36 +++++++++++++++++++++++++++++++++ src/openrct2/entity/Peep.h | 1 + src/openrct2/entity/Staff.cpp | 3 +++ 5 files changed, 40 insertions(+), 39 deletions(-) diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 94b56e9fdbd3..848140a9a5e4 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -5697,44 +5697,6 @@ void Guest::UpdateWalking() } } -void Guest::UpdateWaitingAtCrossing() -{ - if (!IsActionInterruptable()) - { - UpdateAction(); - Invalidate(); - if (!IsActionWalking()) - return; - } - - Action = PeepActionType::idle; - NextAnimationType = PeepAnimationType::watchRide; - SwitchNextAnimationType(); - - if (HasFoodOrDrink()) - { - if ((ScenarioRand() & 0xFFFF) <= 1310) - { - Action = PeepActionType::eatFood; - AnimationFrameNum = 0; - AnimationImageIdOffset = 0; - } - - UpdateCurrentAnimationType(); - - return; - } - - if ((ScenarioRand() & 0xFFFF) <= 64) - { - Action = PeepActionType::wave2; - AnimationFrameNum = 0; - AnimationImageIdOffset = 0; - } - - UpdateCurrentAnimationType(); -} - /** * * rct2: 0x69185D diff --git a/src/openrct2/entity/Guest.h b/src/openrct2/entity/Guest.h index 0257f0c93c31..f00922709899 100644 --- a/src/openrct2/entity/Guest.h +++ b/src/openrct2/entity/Guest.h @@ -377,7 +377,6 @@ struct Guest : Peep void UpdateRide(); void UpdateOnRide() {}; // TODO void UpdateWalking(); - void UpdateWaitingAtCrossing(); void UpdateQueuing(); void UpdateSitting(); void UpdateEnteringPark(); diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 603aee08192d..602f0b4948c7 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -250,6 +250,42 @@ void PeepUpdateAllBoundingBoxes() } } +void Peep::UpdateWaitingAtCrossing() +{ + if (!IsActionInterruptable()) + { + UpdateAction(); + Invalidate(); + if (!IsActionWalking()) + return; + } + + Action = PeepActionType::idle; + NextAnimationType = PeepAnimationType::watchRide; + SwitchNextAnimationType(); + + if (auto* guest = As(); guest != nullptr) + { + if (guest->HasFoodOrDrink()) + { + if ((ScenarioRand() & 0xFFFF) <= 1310) + { + Action = PeepActionType::eatFood; + AnimationFrameNum = 0; + AnimationImageIdOffset = 0; + } + } + else if ((ScenarioRand() & 0xFFFF) <= 64) + { + Action = PeepActionType::wave2; + AnimationFrameNum = 0; + AnimationImageIdOffset = 0; + } + } + + UpdateCurrentAnimationType(); +} + /* * rct2: 0x68F3AE * Set peep state to falling if path below has gone missing, return true if current path is valid, false if peep starts falling. diff --git a/src/openrct2/entity/Peep.h b/src/openrct2/entity/Peep.h index fefadec18285..88c35501836b 100644 --- a/src/openrct2/entity/Peep.h +++ b/src/openrct2/entity/Peep.h @@ -387,6 +387,7 @@ struct Peep : EntityBase void Remove(); void UpdateCurrentAnimationType(); void UpdateSpriteBoundingBox(); + void UpdateWaitingAtCrossing(); void SwitchToSpecialSprite(uint8_t special_sprite_id); void StateReset(); [[nodiscard]] uint8_t GetNextDirection() const; diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index 21cf85b90ef4..f4f47a400f49 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -1830,7 +1830,10 @@ void Staff::UpdatePatrolling() return; if (ShouldWaitForLevelCrossing() && !IsMechanicHeadingToFixRideBlockingPath()) + { + UpdateWaitingAtCrossing(); return; + } const auto [pathingResult, _] = PerformNextAction(); if (!(pathingResult & PATHING_DESTINATION_REACHED)) From 80977e1e0d04ac25f325da20bbcaa0dceb8d7624 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Mon, 6 Oct 2025 21:06:25 -0300 Subject: [PATCH 077/222] Check if guest action is interruptable This fixes a bug where the waving or eating animations for the guests could suddenly reset while it was already playing --- src/openrct2/entity/Peep.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 602f0b4948c7..dbcf8b1770f5 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -266,21 +266,24 @@ void Peep::UpdateWaitingAtCrossing() if (auto* guest = As(); guest != nullptr) { - if (guest->HasFoodOrDrink()) + if (guest->IsActionInterruptable()) { - if ((ScenarioRand() & 0xFFFF) <= 1310) + if (guest->HasFoodOrDrink()) { - Action = PeepActionType::eatFood; + if ((ScenarioRand() & 0xFFFF) <= 1310) + { + Action = PeepActionType::eatFood; + AnimationFrameNum = 0; + AnimationImageIdOffset = 0; + } + } + else if ((ScenarioRand() & 0xFFFF) <= 64) + { + Action = PeepActionType::wave2; AnimationFrameNum = 0; AnimationImageIdOffset = 0; } } - else if ((ScenarioRand() & 0xFFFF) <= 64) - { - Action = PeepActionType::wave2; - AnimationFrameNum = 0; - AnimationImageIdOffset = 0; - } } UpdateCurrentAnimationType(); From 03af42598c19630eb7ecbfa1d605358f738fd388 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Tue, 7 Oct 2025 13:57:07 -0300 Subject: [PATCH 078/222] Make crossing-related Peep methods protected --- src/openrct2/entity/Peep.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openrct2/entity/Peep.h b/src/openrct2/entity/Peep.h index 88c35501836b..2eb783394d63 100644 --- a/src/openrct2/entity/Peep.h +++ b/src/openrct2/entity/Peep.h @@ -387,7 +387,6 @@ struct Peep : EntityBase void Remove(); void UpdateCurrentAnimationType(); void UpdateSpriteBoundingBox(); - void UpdateWaitingAtCrossing(); void SwitchToSpecialSprite(uint8_t special_sprite_id); void StateReset(); [[nodiscard]] uint8_t GetNextDirection() const; @@ -422,15 +421,16 @@ struct Peep : EntityBase // TODO: Make these private again when done refactoring public: // Peep [[nodiscard]] bool CheckForPath(); - bool ShouldWaitForLevelCrossing() const; - bool IsOnLevelCrossing() const; - bool IsOnPathBlockedByVehicle() const; std::pair PerformNextAction(); [[nodiscard]] int32_t GetZOnSlope(int32_t tile_x, int32_t tile_y); void SwitchNextAnimationType(); [[nodiscard]] PeepAnimationType GetAnimationType(); protected: + bool ShouldWaitForLevelCrossing() const; + bool IsOnLevelCrossing() const; + bool IsOnPathBlockedByVehicle() const; + void UpdateWaitingAtCrossing(); void UpdateFalling(); void Update1(); void UpdatePicked(); From 72f23f5d14a0fa82cd81da03d36f2c08b0846fa5 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Sat, 4 Oct 2025 20:05:42 -0300 Subject: [PATCH 079/222] Add changelog entry --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 0dcf24fb443d..2a76ba1eaa9f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.30 (in development) ------------------------------------------------------------------------ +- Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings. - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. From f82b445a73c131965a61edfc68149a0de27b7829 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Sun, 7 Dec 2025 10:37:29 -0300 Subject: [PATCH 080/222] Update network version --- src/openrct2/network/NetworkBase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 4f8b3dad665d..c3cbf6610b95 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 3; +constexpr uint8_t kStreamVersion = 4; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From 6c97dd1dc710aeb670df69b1dcbc0b607995d7a6 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Sun, 7 Dec 2025 13:05:44 -0300 Subject: [PATCH 081/222] Implement Gymnasiast's suggestion --- src/openrct2/entity/Peep.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index dbcf8b1770f5..68936d21a212 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -264,7 +264,8 @@ void Peep::UpdateWaitingAtCrossing() NextAnimationType = PeepAnimationType::watchRide; SwitchNextAnimationType(); - if (auto* guest = As(); guest != nullptr) + auto* guest = As(); + if (guest != nullptr) { if (guest->IsActionInterruptable()) { From b1103708ea4e78844eff6f610b1c4644b4166d84 Mon Sep 17 00:00:00 2001 From: Kirill Gusev <115743784+myaumura@users.noreply.github.com> Date: Tue, 9 Dec 2025 10:56:08 +0300 Subject: [PATCH 082/222] Show error message when issuing replay_start with a nonexistent file --- data/language/en-GB.txt | 2 + src/openrct2/ReplayManager.cpp | 64 +++++++++++++------ src/openrct2/ReplayManager.h | 2 +- src/openrct2/interface/InteractiveConsole.cpp | 36 +++++++---- src/openrct2/localisation/StringIds.h | 3 + test/tests/ReplayTests.cpp | 16 ++++- 6 files changed, 85 insertions(+), 38 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 0eaa1171ddc3..c63e11c73fe9 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3839,3 +3839,5 @@ STR_7006 :Draw border around image buttons STR_7007 :Ride Type STR_7008 :Unknown ride type ({INT32}) STR_7009 :Receiving scripts… +STR_7010 :Could not start replay, file ‘{STRING}’ doesn’t exist or isn’t valid +STR_7011 :Could not start replay diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index f20979fce246..7a7a103f4705 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -27,12 +27,16 @@ #include "config/Config.h" #include "core/Compression.h" #include "core/DataSerialiser.h" +#include "core/EnumUtils.hpp" #include "core/FileStream.h" #include "core/FileSystem.hpp" #include "core/Path.hpp" +#include "core/String.hpp" #include "entity/EntityRegistry.h" #include "entity/EntityTweener.h" #include "interface/Window.h" +#include "localisation/Formatting.h" +#include "localisation/StringIds.h" #include "management/NewsItem.h" #include "object/ObjectManager.h" #include "object/ObjectRepository.h" @@ -41,7 +45,10 @@ #include "world/Park.h" #include +#include #include +#include +#include #include namespace OpenRCT2 @@ -121,6 +128,13 @@ namespace OpenRCT2 NORMALISATION, }; + static constexpr std::array modeToName = { + "NONE", + "RECORDING", + "PLAYING", + "NORMALISATION", + }; + public: virtual ~ReplayManager() { @@ -415,23 +429,25 @@ namespace OpenRCT2 } } - virtual bool StartPlayback(const std::string& file) override + void StartPlayback(const std::string& file) override { if (_mode != ReplayMode::NONE && _mode != ReplayMode::NORMALISATION) - return false; + throw std::invalid_argument(std::string("Unexpected mode ") + modeToName[EnumValue(_mode)]); auto replayData = std::make_unique(); - if (!ReadReplayData(file, *replayData)) + try { - LOG_ERROR("Unable to read replay data."); - return false; + ReadReplayData(file, *replayData); + } + catch (const std::exception&) + { + throw; } if (!LoadReplayDataMap(*replayData)) { - LOG_ERROR("Unable to load map."); - return false; + throw std::runtime_error("Unable to load map."); } getGameState().currentTicks = replayData->tickStart; @@ -447,8 +463,6 @@ namespace OpenRCT2 if (_mode != ReplayMode::NORMALISATION) _mode = ReplayMode::PLAYING; - - return true; } virtual bool IsPlaybackStateMismatching() const override @@ -485,7 +499,11 @@ namespace OpenRCT2 { _mode = ReplayMode::NORMALISATION; - if (!StartPlayback(file)) + try + { + StartPlayback(file); + } + catch (const std::invalid_argument&) { return false; } @@ -595,23 +613,31 @@ namespace OpenRCT2 return recFile.data; } - bool ReadReplayData(const std::string& file, ReplayRecordData& data) + void ReadReplayData(const std::string& file, ReplayRecordData& data) { fs::path filePath = file; - if (filePath.extension() != ".parkrep") - filePath += ".parkrep"; - if (filePath.is_relative()) + if (filePath.is_absolute()) + { + if (!fs::exists(filePath)) + { + throw std::runtime_error(FormatStringID(STR_REPLAY_FILE_NOT_FOUND, filePath.u8string().c_str())); + } + } + else if (filePath.is_relative()) { + if (filePath.extension() != ".parkrep") + filePath += ".parkrep"; fs::path replayPath = GetContext()->GetPlatformEnvironment().GetDirectoryPath( DirBase::user, DirId::replayRecordings) / filePath; - if (fs::is_regular_file(replayPath)) - filePath = replayPath; + filePath = replayPath; } if (!fs::is_regular_file(filePath)) - return false; + { + throw std::runtime_error(FormatStringID(STR_REPLAY_FILE_NOT_FOUND, filePath.u8string().c_str())); + } FileStream fileStream(filePath, FileMode::open); MemoryStream stream = DecompressFile(fileStream); @@ -620,7 +646,7 @@ namespace OpenRCT2 DataSerialiser serialiser(false, stream); if (!Serialise(serialiser, data)) { - return false; + throw std::runtime_error(LanguageGetString(STR_REPLAY_NOT_STARTED)); } // Reset position of all streams. @@ -628,8 +654,6 @@ namespace OpenRCT2 data.parkParams.SetPosition(0); data.cheatData.SetPosition(0); data.gameStateSnapshots.SetPosition(0); - - return true; } bool SerialiseCheats(DataSerialiser& serialiser) diff --git a/src/openrct2/ReplayManager.h b/src/openrct2/ReplayManager.h index d3f3a98bc0bf..a6a9ef741093 100644 --- a/src/openrct2/ReplayManager.h +++ b/src/openrct2/ReplayManager.h @@ -60,7 +60,7 @@ namespace OpenRCT2 virtual bool StopRecording(bool discard = false) = 0; virtual bool GetCurrentReplayInfo(ReplayRecordInfo& info) const = 0; - virtual bool StartPlayback(const std::string& file) = 0; + virtual void StartPlayback(const std::string& file) = 0; virtual bool IsPlaybackStateMismatching() const = 0; virtual bool StopPlayback() = 0; diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 1b8a96615d0f..f76ae9288594 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1485,25 +1485,33 @@ static void ConsoleCommandReplayStart(InteractiveConsole& console, const argumen std::string name = argv[0]; auto* replayManager = OpenRCT2::GetContext()->GetReplayManager(); - if (replayManager->StartPlayback(name)) + + try { - OpenRCT2::ReplayRecordInfo info; - replayManager->GetCurrentReplayInfo(info); + replayManager->StartPlayback(name); + } + catch (const std::exception& e) + { + console.WriteLine(e.what()); + return; + } - std::time_t ts = info.TimeRecorded; + OpenRCT2::ReplayRecordInfo info; + replayManager->GetCurrentReplayInfo(info); - char recordingDate[128] = {}; - std::strftime(recordingDate, sizeof(recordingDate), "%c", std::localtime(&ts)); + std::time_t ts = info.TimeRecorded; - const char* logFmt = "Replay playback started: %s\n" - " Date Recorded: %s\n" - " Ticks: %u\n" - " Commands: %u\n" - " Checksums: %u"; + char recordingDate[128] = {}; + std::strftime(recordingDate, sizeof(recordingDate), "%c", std::localtime(&ts)); - console.WriteFormatLine(logFmt, info.FilePath.c_str(), recordingDate, info.Ticks, info.NumCommands, info.NumChecksums); - Console::WriteLine(logFmt, info.FilePath.c_str(), recordingDate, info.Ticks, info.NumCommands, info.NumChecksums); - } + const char* logFmt = "Replay playback started: %s\n" + " Date Recorded: %s\n" + " Ticks: %u\n" + " Commands: %u\n" + " Checksums: %u"; + + console.WriteFormatLine(logFmt, info.FilePath.c_str(), recordingDate, info.Ticks, info.NumCommands, info.NumChecksums); + Console::WriteLine(logFmt, info.FilePath.c_str(), recordingDate, info.Ticks, info.NumCommands, info.NumChecksums); } static void ConsoleCommandReplayStop(InteractiveConsole& console, const arguments_t& argv) diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index b1fedb852cb2..6d4dbe7f0928 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1758,6 +1758,9 @@ enum : StringId // Window: Error STR_AUDIO_FILE_TRUNCATED = 7003, + STR_REPLAY_FILE_NOT_FOUND = 7010, + STR_REPLAY_NOT_STARTED = 7011, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working /* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings }; diff --git a/test/tests/ReplayTests.cpp b/test/tests/ReplayTests.cpp index 7780b158d494..e60c0f7c2363 100644 --- a/test/tests/ReplayTests.cpp +++ b/test/tests/ReplayTests.cpp @@ -9,8 +9,10 @@ #include "TestData.h" +#include #include #include +#include #include #include #include @@ -22,6 +24,7 @@ #include #include #include +#include #include using namespace OpenRCT2; @@ -58,7 +61,7 @@ static std::vector GetReplayFiles() { ReplayTestData test; test.name = sanitizeTestName(scanner->GetFileInfo().Name); - test.filePath = scanner->GetPath(); + test.filePath = Path::GetAbsolute(scanner->GetPath()); res.push_back(std::move(test)); } return res; @@ -84,8 +87,15 @@ TEST_P(ReplayTests, RunReplay) IReplayManager* replayManager = context->GetReplayManager(); ASSERT_NE(replayManager, nullptr); - bool startedReplay = replayManager->StartPlayback(replayFile); - ASSERT_TRUE(startedReplay); + try + { + replayManager->StartPlayback(replayFile); + } + catch (const std::exception& e) + { + LOG_WARNING("Can't start replay!. %s", e.what()); + FAIL(); + } while (replayManager->IsReplaying()) { From 4f55645c877b3b53b2a25db0b880c661dada57da Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 10 Dec 2025 02:54:59 -0300 Subject: [PATCH 083/222] Rename StoppedOnLift to StoppedBySafetyCutOut --- src/openrct2-ui/windows/Ride.cpp | 2 +- src/openrct2/ride/Ride.cpp | 2 +- src/openrct2/ride/Vehicle.cpp | 12 ++++++------ src/openrct2/ride/Vehicle.h | 3 ++- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 3794ef786574..71cab9eaf1de 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -3889,7 +3889,7 @@ namespace OpenRCT2::Ui::Windows vehicle = getGameState().entities.GetEntity(vehicle->next_vehicle_on_train)) { vehicle->ClearFlag( - VehicleFlags::CarIsBroken | VehicleFlags::StoppedOnLift + VehicleFlags::CarIsBroken | VehicleFlags::StoppedBySafetyCutOut | VehicleFlags::TrainIsBroken); } } diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 0063e017d121..2c4cd3ff5af0 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -4723,7 +4723,7 @@ void RideFixBreakdown(Ride& ride, int32_t reliabilityIncreaseFactor) for (Vehicle* vehicle = getGameState().entities.GetEntity(ride.vehicles[i]); vehicle != nullptr; vehicle = getGameState().entities.GetEntity(vehicle->next_vehicle_on_train)) { - vehicle->ClearFlag(VehicleFlags::StoppedOnLift); + vehicle->ClearFlag(VehicleFlags::StoppedBySafetyCutOut); vehicle->ClearFlag(VehicleFlags::CarIsBroken); vehicle->ClearFlag(VehicleFlags::TrainIsBroken); } diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 5d482403d39a..33c4123ebfc6 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -964,7 +964,7 @@ void Vehicle::Update() { if (!(carEntry->flags & CAR_ENTRY_FLAG_WATER_RIDE) || (pitch == VehiclePitch::up25 && velocity <= 2.0_mph)) { - SetFlag(VehicleFlags::StoppedOnLift); + SetFlag(VehicleFlags::StoppedBySafetyCutOut); } } } @@ -2342,7 +2342,7 @@ void Vehicle::UpdateDeparting() { if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT) { - SetFlag(VehicleFlags::StoppedOnLift); + SetFlag(VehicleFlags::StoppedBySafetyCutOut); ClearFlag(VehicleFlags::CollisionDisabled); } } @@ -2360,7 +2360,7 @@ void Vehicle::UpdateDeparting() { if (_vehicleBreakdown == BREAKDOWN_SAFETY_CUT_OUT) { - SetFlag(VehicleFlags::StoppedOnLift); + SetFlag(VehicleFlags::StoppedBySafetyCutOut); ClearFlag(VehicleFlags::CollisionDisabled); } } @@ -2822,7 +2822,7 @@ void Vehicle::UpdateTravelling() if (_vehicleBreakdown == 0) { sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL; - SetFlag(VehicleFlags::StoppedOnLift); + SetFlag(VehicleFlags::StoppedBySafetyCutOut); } } } @@ -2838,7 +2838,7 @@ void Vehicle::UpdateTravelling() { if (_vehicleBreakdown == 0) { - SetFlag(VehicleFlags::StoppedOnLift); + SetFlag(VehicleFlags::StoppedBySafetyCutOut); sound2_flags &= ~VEHICLE_SOUND2_FLAGS_LIFT_HILL; } } @@ -5317,7 +5317,7 @@ void Vehicle::CheckAndApplyBlockSectionStopSite() void Vehicle::UpdateVelocity() { int32_t nextVelocity = acceleration + velocity; - if (HasFlag(VehicleFlags::StoppedOnLift)) + if (HasFlag(VehicleFlags::StoppedBySafetyCutOut)) { nextVelocity = 0; } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 8dfb21fc6a70..2e933e214097 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -470,7 +470,8 @@ namespace OpenRCT2::VehicleFlags constexpr uint32_t Testing = (1 << 5); constexpr uint32_t CurrentlyColliding = (1 << 6); // When go-karts are colliding, they have a higher chance of changing // lanes - constexpr uint32_t StoppedOnLift = (1 << 7); // Used on rides when safety cutout stops them on a lift + // Used on vehicles when a safety cut-out stops them, such as RCs on a lift hill and powered rides + constexpr uint32_t StoppedBySafetyCutOut = (1 << 7); constexpr uint32_t CarIsBroken = (1 << 8); constexpr uint32_t TrainIsBroken = (1 << 9); constexpr uint32_t StoppedOnHoldingBrake = (1 << 10); From 3a27ba7db179601f73fce5715ff2bb215bb48238 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 10 Dec 2025 15:21:49 +0100 Subject: [PATCH 084/222] Fix #25628: AVX2 and SSE4 availability not detected correctly Co-authored-by: TBoshoven --- distribution/changelog.txt | 1 + src/openrct2/platform/Platform.Common.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 2a76ba1eaa9f..f4baf05c016f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -15,6 +15,7 @@ - Fix: [#25571] Potential crash due to drawing a Crooked House ride. - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. +- Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2/platform/Platform.Common.cpp b/src/openrct2/platform/Platform.Common.cpp index a64aed29429c..e33cc7b7e32e 100644 --- a/src/openrct2/platform/Platform.Common.cpp +++ b/src/openrct2/platform/Platform.Common.cpp @@ -27,6 +27,7 @@ #include "../Context.h" #include "../Game.h" +#include "../core/CallingConventions.h" #include "../core/File.h" #include "../core/Path.hpp" #include "../core/String.hpp" From b59114ddb03eb02a70647eab6cfeecdaf023d2ff Mon Sep 17 00:00:00 2001 From: MarcelVos96 Date: Wed, 10 Dec 2025 16:39:29 +0100 Subject: [PATCH 085/222] Make renewing a ride also reset its downtime --- distribution/changelog.txt | 1 + src/openrct2/ride/Ride.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index f4baf05c016f..60f80fa338ce 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -4,6 +4,7 @@ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. +- Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#22484] Lingering ghost entrance after placing park entrance. diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 0063e017d121..e4a200fa1e72 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -5386,6 +5386,8 @@ void Ride::renew() // Set build date to current date (so the ride is brand new) buildDate = GetDate().GetMonthsElapsed(); reliability = kRideInitialReliability; + std::fill(std::begin(downtimeHistory), std::end(downtimeHistory), 0); + downtime = 0; } RideClassification Ride::getClassification() const From 355bb5d58ddf3e464e6f566f027d0c05e19c83c2 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Thu, 11 Dec 2025 00:12:21 +0100 Subject: [PATCH 086/222] Refactor GAME_COMMAND_FLAG_* to enum+FlagHolder --- .../windows/EditorParkEntrance.cpp | 3 +- src/openrct2-ui/windows/Footpath.cpp | 5 +- src/openrct2-ui/windows/Land.cpp | 44 +++--- src/openrct2-ui/windows/MazeConstruction.cpp | 9 +- src/openrct2-ui/windows/RideConstruction.cpp | 12 +- src/openrct2-ui/windows/Scenery.cpp | 19 +-- src/openrct2-ui/windows/TrackDesignPlace.cpp | 11 +- src/openrct2/Editor.cpp | 5 +- src/openrct2/Game.h | 13 -- src/openrct2/ReplayManager.cpp | 2 +- src/openrct2/actions/BannerPlaceAction.cpp | 4 +- src/openrct2/actions/BannerRemoveAction.cpp | 2 +- src/openrct2/actions/ClearAction.cpp | 2 +- src/openrct2/actions/CommandFlag.h | 44 ++++++ .../actions/FootpathAdditionPlaceAction.cpp | 8 +- .../actions/FootpathAdditionRemoveAction.cpp | 4 +- .../actions/FootpathLayoutPlaceAction.cpp | 10 +- src/openrct2/actions/FootpathPlaceAction.cpp | 24 +-- src/openrct2/actions/FootpathRemoveAction.cpp | 8 +- src/openrct2/actions/GameAction.cpp | 21 ++- src/openrct2/actions/GameAction.h | 17 +- src/openrct2/actions/LandSetHeightAction.cpp | 4 +- src/openrct2/actions/LandSetHeightAction.h | 2 +- .../actions/LargeSceneryPlaceAction.cpp | 4 +- .../actions/LargeSceneryRemoveAction.cpp | 6 +- .../actions/LargeScenerySetColourAction.cpp | 2 +- src/openrct2/actions/MazePlaceTrackAction.cpp | 8 +- src/openrct2/actions/MazeSetTrackAction.cpp | 8 +- .../actions/ParkEntrancePlaceAction.cpp | 8 +- src/openrct2/actions/RideDemolishAction.cpp | 2 +- .../actions/RideEntranceExitPlaceAction.cpp | 12 +- .../actions/RideEntranceExitRemoveAction.cpp | 10 +- .../actions/SmallSceneryPlaceAction.cpp | 6 +- .../actions/SmallSceneryRemoveAction.cpp | 4 +- .../actions/SmallScenerySetColourAction.cpp | 2 +- src/openrct2/actions/TrackDesignAction.cpp | 12 +- src/openrct2/actions/TrackPlaceAction.cpp | 24 ++- src/openrct2/actions/TrackRemoveAction.cpp | 16 +- src/openrct2/actions/WallPlaceAction.cpp | 8 +- src/openrct2/actions/WallRemoveAction.cpp | 4 +- src/openrct2/actions/WallSetColourAction.cpp | 4 +- src/openrct2/core/FlagHolder.hpp | 4 +- src/openrct2/management/Finance.cpp | 9 +- src/openrct2/management/Finance.h | 7 +- src/openrct2/rct12/ScenarioPatcher.cpp | 3 +- src/openrct2/ride/RideConstruction.cpp | 9 +- src/openrct2/ride/RideConstruction.h | 4 +- src/openrct2/ride/Track.cpp | 22 +-- src/openrct2/ride/Track.h | 6 +- src/openrct2/ride/TrackDesign.cpp | 148 ++++++++---------- src/openrct2/ride/TrackDesign.h | 2 +- src/openrct2/world/ConstructionClearance.cpp | 23 +-- src/openrct2/world/ConstructionClearance.h | 11 +- src/openrct2/world/Entrance.cpp | 7 +- src/openrct2/world/Footpath.cpp | 16 +- src/openrct2/world/Footpath.h | 4 +- src/openrct2/world/Scenery.cpp | 15 +- test/tests/TileElements.cpp | 2 +- 58 files changed, 374 insertions(+), 331 deletions(-) create mode 100644 src/openrct2/actions/CommandFlag.h diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 416360ba0f88..884d982e7926 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -30,6 +30,7 @@ #include using namespace OpenRCT2::Drawing; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::Ui::Windows { @@ -205,7 +206,7 @@ namespace OpenRCT2::Ui::Windows auto pathIndex = isLegacyPath ? gFootpathSelection.LegacyPath : gFootpathSelection.NormalSurface; auto gameAction = GameActions::ParkEntrancePlaceAction( parkEntrancePosition, pathIndex, _selectedEntranceType, isLegacyPath); - gameAction.SetFlags(GAME_COMMAND_FLAG_GHOST); + gameAction.SetFlags({ CommandFlag::ghost }); auto result = GameActions::Execute(&gameAction, getGameState()); if (result.Error == GameActions::Status::Ok) diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index ccaa3c13d113..de0a03808513 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -47,6 +47,7 @@ #include using namespace OpenRCT2::Numerics; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::Ui::Windows { @@ -1937,7 +1938,7 @@ namespace OpenRCT2::Ui::Windows { auto footpathPlaceAction = GameActions::FootpathPlaceAction( tile.position, tile.slope, type, railingsType, kInvalidDirection, constructFlags); - footpathPlaceAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + footpathPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); res = GameActions::Execute(&footpathPlaceAction, getGameState()); // The latter status will be returned if there is already path at the tile in question, to prevent a ghost // from glitching through the existing path. @@ -2008,7 +2009,7 @@ namespace OpenRCT2::Ui::Windows for (const auto& tile : _provisionalFootpath.tiles) { auto action = GameActions::FootpathRemoveAction(tile.position); - action.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + action.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); GameActions::Execute(&action, getGameState()); } } diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index 9b7cac4c8a91..04a3c915e8d0 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -32,6 +32,8 @@ #include #include +using OpenRCT2::GameActions::CommandFlag; + namespace OpenRCT2::Ui::Windows { static constexpr StringId kWindowTitle = STR_LAND; @@ -51,6 +53,12 @@ namespace OpenRCT2::Ui::Windows WIDX_WALL, }; + enum class SelectionMode + { + query, + apply, + }; + // clang-format off static constexpr auto window_land_widgets = makeWidgets( makeWindowShim(kWindowTitle, kWindowSize), @@ -331,7 +339,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x006644DD */ - money64 SelectionRaiseLand(uint8_t flag) + money64 SelectionRaiseLand(const SelectionMode mode) { int32_t centreX = (gMapSelectPositionA.x + gMapSelectPositionB.x) / 2; int32_t centreY = (gMapSelectPositionA.y + gMapSelectPositionB.y) / 2; @@ -346,16 +354,16 @@ namespace OpenRCT2::Ui::Windows { centreX, centreY }, { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }, gMapSelectType, false); - auto res = (flag & GAME_COMMAND_FLAG_APPLY) ? GameActions::Execute(&landSmoothAction, gameState) - : GameActions::Query(&landSmoothAction, gameState); + auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landSmoothAction, gameState) + : GameActions::Query(&landSmoothAction, gameState); return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; } auto landRaiseAction = GameActions::LandRaiseAction( { centreX, centreY }, { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }, gMapSelectType); - auto res = (flag & GAME_COMMAND_FLAG_APPLY) ? GameActions::Execute(&landRaiseAction, gameState) - : GameActions::Query(&landRaiseAction, gameState); + auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landRaiseAction, gameState) + : GameActions::Query(&landRaiseAction, gameState); return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; } @@ -364,7 +372,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x006645B3 */ - money64 SelectionLowerLand(uint8_t flag) + money64 SelectionLowerLand(const SelectionMode mode) { int32_t centreX = (gMapSelectPositionA.x + gMapSelectPositionB.x) / 2; int32_t centreY = (gMapSelectPositionA.y + gMapSelectPositionB.y) / 2; @@ -379,16 +387,16 @@ namespace OpenRCT2::Ui::Windows { centreX, centreY }, { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }, gMapSelectType, true); - auto res = (flag & GAME_COMMAND_FLAG_APPLY) ? GameActions::Execute(&landSmoothAction, gameState) - : GameActions::Query(&landSmoothAction, gameState); + auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landSmoothAction, gameState) + : GameActions::Query(&landSmoothAction, gameState); return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; } auto landLowerAction = GameActions::LandLowerAction( { centreX, centreY }, { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }, gMapSelectType); - auto res = (flag & GAME_COMMAND_FLAG_APPLY) ? GameActions::Execute(&landLowerAction, gameState) - : GameActions::Query(&landLowerAction, gameState); + auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landLowerAction, gameState) + : GameActions::Query(&landLowerAction, gameState); return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; } @@ -424,7 +432,7 @@ namespace OpenRCT2::Ui::Windows { gInputDragLast.y += tile_height; - SelectionRaiseLand(GAME_COMMAND_FLAG_APPLY); + SelectionRaiseLand(SelectionMode::apply); _landToolRaiseCost = kMoney64Undefined; _landToolLowerCost = kMoney64Undefined; @@ -433,7 +441,7 @@ namespace OpenRCT2::Ui::Windows { gInputDragLast.y -= tile_height; - SelectionLowerLand(GAME_COMMAND_FLAG_APPLY); + SelectionLowerLand(SelectionMode::apply); _landToolRaiseCost = kMoney64Undefined; _landToolLowerCost = kMoney64Undefined; @@ -611,8 +619,8 @@ namespace OpenRCT2::Ui::Windows if (!(gMapSelectFlags.has(MapSelectFlag::enable))) return; - money64 lower_cost = SelectionLowerLand(0); - money64 raise_cost = SelectionRaiseLand(0); + money64 lower_cost = SelectionLowerLand(SelectionMode::query); + money64 raise_cost = SelectionRaiseLand(SelectionMode::query); if (_landToolRaiseCost != raise_cost || _landToolLowerCost != lower_cost) { @@ -698,8 +706,8 @@ namespace OpenRCT2::Ui::Windows if (!state_changed) return; - money64 lower_cost = SelectionLowerLand(0); - money64 raise_cost = SelectionRaiseLand(0); + money64 lower_cost = SelectionLowerLand(SelectionMode::query); + money64 raise_cost = SelectionRaiseLand(SelectionMode::query); if (_landToolRaiseCost != raise_cost || _landToolLowerCost != lower_cost) { @@ -824,8 +832,8 @@ namespace OpenRCT2::Ui::Windows if (!state_changed) return; - money64 lower_cost = SelectionLowerLand(0); - money64 raise_cost = SelectionRaiseLand(0); + money64 lower_cost = SelectionLowerLand(SelectionMode::query); + money64 raise_cost = SelectionRaiseLand(SelectionMode::query); if (_landToolRaiseCost != raise_cost || _landToolLowerCost != lower_cost) { diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 97b16449079c..68a017cbb05e 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -32,6 +32,8 @@ #include #include +using OpenRCT2::GameActions::CommandFlag; + namespace OpenRCT2::Ui::Windows { #pragma region Widgets @@ -133,7 +135,7 @@ namespace OpenRCT2::Ui::Windows if (currentRide->overallView.IsNull()) { auto gameAction = GameActions::RideDemolishAction(currentRide->id, GameActions::RideModifyType::demolish); - gameAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + gameAction.SetFlags({ CommandFlag::allowDuringPaused }); GameActions::Execute(&gameAction, getGameState()); } else @@ -396,7 +398,8 @@ namespace OpenRCT2::Ui::Windows void WindowMazeConstructionConstruct(int32_t direction) { - int32_t x, y, z, actionFlags = 0, mode; + int32_t x, y, z, mode; + CommandFlags actionFlags = {}; _currentTrackSelectionFlags.clearAll(); _rideConstructionNextArrowPulse = 0; @@ -413,7 +416,7 @@ namespace OpenRCT2::Ui::Windows break; case RideConstructionState::MazeMove: mode = GC_SET_MAZE_TRACK_MOVE; - actionFlags = GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED; + actionFlags = { CommandFlag::allowDuringPaused }; break; default: case RideConstructionState::MazeFill: diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 385c639ffaa1..0d0fcdeca099 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -65,6 +65,7 @@ constexpr uint8_t kVerticalDropButtonStart = 6; using namespace OpenRCT2::Numerics; using namespace OpenRCT2::TrackMetaData; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::Ui::Windows { @@ -331,7 +332,7 @@ namespace OpenRCT2::Ui::Windows else { auto gameAction = GameActions::RideDemolishAction(currentRide->id, GameActions::RideModifyType::demolish); - gameAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + gameAction.SetFlags({ CommandFlag::allowDuringPaused }); GameActions::Execute(&gameAction, gameState); } } @@ -4754,7 +4755,7 @@ namespace OpenRCT2::Ui::Windows const auto& rtd = ride->getRideTypeDescriptor(); if (rtd.specialType == RtdSpecialType::maze) { - int32_t flags = GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST; + CommandFlags flags = { CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; auto gameAction = GameActions::MazeSetTrackAction( CoordsXYZD{ trackPos, 0 }, true, rideIndex, GC_SET_MAZE_TRACK_BUILD); gameAction.SetFlags(flags); @@ -4775,7 +4776,7 @@ namespace OpenRCT2::Ui::Windows auto trackPlaceAction = GameActions::TrackPlaceAction( rideIndex, trackType, ride->type, { trackPos, static_cast(trackDirection) }, 0, 0, 0, liftHillAndAlternativeState, false); - trackPlaceAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + trackPlaceAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); // This command must not be sent over the network auto res = GameActions::Execute(&trackPlaceAction, getGameState()); if (res.Error != GameActions::Status::Ok) @@ -5135,7 +5136,7 @@ namespace OpenRCT2::Ui::Windows const auto& rtd = ride->getRideTypeDescriptor(); if (rtd.specialType == RtdSpecialType::maze) { - const int32_t flags = GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST; + const CommandFlags flags = { CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; const CoordsXYZD quadrants[kNumOrthogonalDirections] = { { x, y, z, 0 }, { x, y + 16, z, 1 }, @@ -5165,8 +5166,7 @@ namespace OpenRCT2::Ui::Windows auto trackRemoveAction = GameActions::TrackRemoveAction{ trackType, trackSequence, { next_track.x, next_track.y, z, static_cast(direction) } }; - trackRemoveAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + trackRemoveAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); GameActions::Execute(&trackRemoveAction, getGameState()); } } diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 886dd2861393..c2deb740f8d4 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -67,6 +67,7 @@ #include using namespace OpenRCT2::Drawing; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::Ui::Windows { @@ -2051,7 +2052,7 @@ namespace OpenRCT2::Ui::Windows // 6e252b auto smallSceneryPlaceAction = GameActions::SmallSceneryPlaceAction( loc, quadrant, entryIndex, primaryColour, secondaryColour, tertiaryColour); - smallSceneryPlaceAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + smallSceneryPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); auto res = GameActions::Execute(&smallSceneryPlaceAction, getGameState()); if (res.Error != GameActions::Status::Ok) return kMoney64Undefined; @@ -2085,7 +2086,7 @@ namespace OpenRCT2::Ui::Windows // 6e265b auto footpathAdditionPlaceAction = GameActions::FootpathAdditionPlaceAction(loc, entryIndex); - footpathAdditionPlaceAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + footpathAdditionPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); footpathAdditionPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { if (result->Error != GameActions::Status::Ok) { @@ -2110,8 +2111,7 @@ namespace OpenRCT2::Ui::Windows // 6e26b0 auto wallPlaceAction = GameActions::WallPlaceAction( entryIndex, loc, edge, primaryColour, secondaryColour, tertiaryColour); - wallPlaceAction.SetFlags( - GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND); + wallPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); wallPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { if (result->Error != GameActions::Status::Ok) return; @@ -2139,8 +2139,7 @@ namespace OpenRCT2::Ui::Windows // 6e25a7 auto sceneryPlaceAction = GameActions::LargeSceneryPlaceAction( loc, entryIndex, primaryColour, secondaryColour, tertiaryColour); - sceneryPlaceAction.SetFlags( - GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND); + sceneryPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); auto res = GameActions::Execute(&sceneryPlaceAction, getGameState()); if (res.Error != GameActions::Status::Ok) return kMoney64Undefined; @@ -2172,8 +2171,7 @@ namespace OpenRCT2::Ui::Windows // 6e2612 auto primaryColour = _sceneryPrimaryColour; auto bannerPlaceAction = GameActions::BannerPlaceAction(loc, entryIndex, primaryColour); - bannerPlaceAction.SetFlags( - GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND); + bannerPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); auto res = GameActions::Execute(&bannerPlaceAction, getGameState()); if (res.Error != GameActions::Status::Ok) return kMoney64Undefined; @@ -3161,8 +3159,7 @@ namespace OpenRCT2::Ui::Windows auto location = tile.location; location.z = tile.calculatedZ; auto wallRemoveAction = GameActions::WallRemoveAction(location); - wallRemoveAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + wallRemoveAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); wallRemoveAction.Execute(gameState); } } @@ -3184,7 +3181,7 @@ namespace OpenRCT2::Ui::Windows auto wallPlaceAction = GameActions::WallPlaceAction( tabSelection.EntryIndex, { x, y, gSceneryPlaceZ }, _startEdge, _sceneryPrimaryColour, _scenerySecondaryColour, _sceneryTertiaryColour); - wallPlaceAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + wallPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); auto result = GameActions::Execute(&wallPlaceAction, gameState); if (result.Error == GameActions::Status::Ok) diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index c194b9bf0460..8521d01700d9 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -40,6 +40,7 @@ using namespace OpenRCT2::Numerics; using namespace OpenRCT2::TrackMetaData; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::Ui::Windows { @@ -218,13 +219,13 @@ namespace OpenRCT2::Ui::Windows { ClearProvisional(); CoordsXYZD ghostTrackLoc = trackLoc; - auto res = FindValidTrackDesignPlaceHeight(ghostTrackLoc, GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + auto res = FindValidTrackDesignPlaceHeight(ghostTrackLoc, { CommandFlag::noSpend, CommandFlag::ghost }); if (res.Error == GameActions::Status::Ok) { // Valid location found. Place the ghost at the location. auto tdAction = GameActions::TrackDesignAction(ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle); - tdAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) { if (result->Error == GameActions::Status::Ok) { @@ -281,7 +282,7 @@ namespace OpenRCT2::Ui::Windows // Try increasing Z until a feasible placement is found CoordsXYZ trackLoc = { mapCoords, maybeMapZ.value() }; - auto res = FindValidTrackDesignPlaceHeight(trackLoc, 0); + auto res = FindValidTrackDesignPlaceHeight(trackLoc, {}); if (res.Error != GameActions::Status::Ok) { // Unable to build track @@ -399,7 +400,7 @@ namespace OpenRCT2::Ui::Windows { auto tdAction = GameActions::TrackDesignAction( { _placementGhostLoc }, *_trackDesign, !gTrackDesignSceneryToggle); - tdAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); auto res = GameActions::Execute(&tdAction, getGameState()); if (res.Error != GameActions::Status::Ok) { @@ -739,7 +740,7 @@ namespace OpenRCT2::Ui::Windows return &_miniPreview[pixel.y * kTrackMiniPreviewSize.width + pixel.x]; } - GameActions::Result FindValidTrackDesignPlaceHeight(CoordsXYZ& loc, uint32_t newFlags) + GameActions::Result FindValidTrackDesignPlaceHeight(CoordsXYZ& loc, CommandFlags newFlags) { GameActions::Result res; for (int32_t i = 0; i < 7; i++, loc.z += kCoordsZStep) diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index eb0596f0b552..7e91e5d5ffc8 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -55,6 +55,7 @@ #include using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::Editor { @@ -243,11 +244,11 @@ namespace OpenRCT2::Editor (gameState.mapSize.y - 3) * kCoordsXYStep }; auto landSetRightsAction = GameActions::LandSetRightsAction(range, GameActions::LandSetRightSetting::SetForSale); - landSetRightsAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND); + landSetRightsAction.SetFlags({ CommandFlag::noSpend }); GameActions::Execute(&landSetRightsAction, gameState); auto landBuyRightsAction = GameActions::LandBuyRightsAction(range, GameActions::LandBuyRightSetting::BuyLand); - landBuyRightsAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND); + landBuyRightsAction.SetFlags({ CommandFlag::noSpend }); GameActions::Execute(&landBuyRightsAction, gameState); } diff --git a/src/openrct2/Game.h b/src/openrct2/Game.h index 308b0e224769..13d5a3b989ea 100644 --- a/src/openrct2/Game.h +++ b/src/openrct2/Game.h @@ -126,19 +126,6 @@ enum class GameCommand : int32_t Count, }; -enum : uint32_t -{ - GAME_COMMAND_FLAG_APPLY = (1 << 0), // If this flag is set, the command is applied, otherwise only the cost is retrieved - GAME_COMMAND_FLAG_REPLAY = (1 << 1), // Command was issued from replay manager. - GAME_COMMAND_FLAG_2 = (1 << 2), // Unused - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED = (1 << 3), // Allow while paused - GAME_COMMAND_FLAG_4 = (1 << 4), // Unused - GAME_COMMAND_FLAG_NO_SPEND = (1 << 5), // Game command is not networked - GAME_COMMAND_FLAG_GHOST = (1 << 6), // Game command is not networked - GAME_COMMAND_FLAG_TRACK_DESIGN = (1 << 7), - GAME_COMMAND_FLAG_NETWORKED = (1u << 31) // Game command is coming from network -}; - enum { GAME_PAUSED_NORMAL = 1 << 0, diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index 7a7a103f4705..3e38a0635061 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -861,7 +861,7 @@ namespace OpenRCT2 bool isPositionValid = false; GameAction* action = command.action.get(); - action->SetFlags(action->GetFlags() | GAME_COMMAND_FLAG_REPLAY); + action->SetFlags(action->GetFlags().with(CommandFlag::replay)); GameActions::Result result = GameActions::Execute(action, gameState); if (result.Error == GameActions::Status::Ok) diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 7f8fa5fca43c..1f345bd09964 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -151,7 +151,7 @@ namespace OpenRCT2::GameActions bannerElement->SetPosition(_loc.direction); bannerElement->ResetAllowedEdges(); bannerElement->SetIndex(banner->id); - bannerElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + bannerElement->SetGhost(GetFlags().has(CommandFlag::ghost)); MapInvalidateTileFull(_loc); MapAnimations::MarkTileForInvalidation(TileCoordsXY(_loc)); @@ -170,7 +170,7 @@ namespace OpenRCT2::GameActions if (!(pathElement->GetEdges() & (1 << _loc.direction))) continue; - if (pathElement->IsGhost() && !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (pathElement->IsGhost() && !(GetFlags().has(CommandFlag::ghost))) continue; return pathElement; diff --git a/src/openrct2/actions/BannerRemoveAction.cpp b/src/openrct2/actions/BannerRemoveAction.cpp index af96b926a95c..6c6c7cb3be7b 100644 --- a/src/openrct2/actions/BannerRemoveAction.cpp +++ b/src/openrct2/actions/BannerRemoveAction.cpp @@ -144,7 +144,7 @@ namespace OpenRCT2::GameActions { if (bannerElement->GetBaseZ() != _loc.z) continue; - if (bannerElement->IsGhost() && !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (bannerElement->IsGhost() && !(GetFlags().has(CommandFlag::ghost))) continue; if (bannerElement->GetPosition() != _loc.direction) continue; diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index 756632765c08..f789175d4d34 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -209,7 +209,7 @@ namespace OpenRCT2::GameActions auto removeSceneryAction = LargeSceneryRemoveAction( { tilePos, tileElement->GetBaseZ(), tileElement->GetDirection() }, tileElement->AsLargeScenery()->GetSequenceIndex()); - removeSceneryAction.SetFlags(GetFlags() | GAME_COMMAND_FLAG_TRACK_DESIGN); + removeSceneryAction.SetFlags(GetFlags().with(CommandFlag::trackDesign)); auto res = executing ? ExecuteNested(&removeSceneryAction, gameState) : QueryNested(&removeSceneryAction, gameState); diff --git a/src/openrct2/actions/CommandFlag.h b/src/openrct2/actions/CommandFlag.h new file mode 100644 index 000000000000..07e56743c067 --- /dev/null +++ b/src/openrct2/actions/CommandFlag.h @@ -0,0 +1,44 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../core/FlagHolder.hpp" + +#include + +namespace OpenRCT2::GameActions +{ + enum class CommandFlag : uint8_t + { + /** + * If this flag is set, the command is applied, otherwise only the cost is retrieved. + */ + apply, + /** + * Command was issued from replay manager. + */ + replay, + allowDuringPaused = 3, + /** + * Game command is not networked + */ + noSpend = 5, + /** + * Game command is not networked + */ + ghost = 6, + trackDesign = 7, + /** + * Game command is coming from network + */ + networked = 31, + }; + using CommandFlags = FlagHolder; +} // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index ed3e3c816a5e..63f550c7d177 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -91,7 +91,7 @@ namespace OpenRCT2::GameActions } // No change - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && pathElement->GetAdditionEntryIndex() == _entryIndex + if (!(GetFlags().has(CommandFlag::ghost)) && pathElement->GetAdditionEntryIndex() == _entryIndex && !(pathElement->IsBroken())) { return res; @@ -129,7 +129,7 @@ namespace OpenRCT2::GameActions res.Cost = pathAdditionEntry->price; // Should place a ghost? - if (GetFlags() & GAME_COMMAND_FLAG_GHOST) + if (GetFlags().has(CommandFlag::ghost)) { // Check if there is something on the path already if (pathElement->HasAddition()) @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions } // No change - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && pathElement->GetAdditionEntryIndex() == _entryIndex + if (!(GetFlags().has(CommandFlag::ghost)) && pathElement->GetAdditionEntryIndex() == _entryIndex && !(pathElement->IsBroken()) && !pathElement->AdditionIsGhost()) { return res; @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions res.Cost = pathAdditionEntry->price; - if (GetFlags() & GAME_COMMAND_FLAG_GHOST) + if (GetFlags().has(CommandFlag::ghost)) { pathElement->SetAdditionIsGhost(true); } diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index bf90e9b4b359..8c39423832e3 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -82,7 +82,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); } - if (!pathElement->AdditionIsGhost() && (GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!pathElement->AdditionIsGhost() && (GetFlags().has(CommandFlag::ghost))) { LOG_WARNING("Tried to remove non ghost during ghost removal."); return Result(Status::Disallowed, STR_CANT_REMOVE_THIS, kStringIdNone); @@ -96,7 +96,7 @@ namespace OpenRCT2::GameActions Result FootpathAdditionRemoveAction::Execute(GameState_t& gameState) const { auto* pathElement = MapGetFootpathElement(_loc); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { FootpathInterruptPeeps(_loc); } diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 7fe146995d9b..5df4fec2135b 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -104,7 +104,7 @@ namespace OpenRCT2::GameActions res.Expenditure = ExpenditureType::landscaping; res.Position = _loc.ToTileCentre(); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { FootpathInterruptPeeps(_loc); } @@ -191,7 +191,7 @@ namespace OpenRCT2::GameActions { bool entrancePath = false, entranceIsSamePath = false; - if (!(GetFlags() & (GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_GHOST))) + if (!(GetFlags().hasAny(CommandFlag::allowDuringPaused, CommandFlag::ghost))) { FootpathRemoveLitter(_loc); } @@ -224,7 +224,7 @@ namespace OpenRCT2::GameActions auto crossingMode = isQueue || (_slope.type != FootpathSlopeType::flat) ? CreateCrossingMode::none : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GAME_COMMAND_FLAG_APPLY | GetFlags(), + { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); if (!entrancePath && canBuild.Error != Status::Ok) { @@ -247,7 +247,7 @@ namespace OpenRCT2::GameActions if (entrancePath) { - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !entranceIsSamePath) + if (!(GetFlags().has(CommandFlag::ghost)) && !entranceIsSamePath) { if (_constructFlags & PathConstructFlag::IsLegacyPathObject) { @@ -284,7 +284,7 @@ namespace OpenRCT2::GameActions pathElement->SetIsBroken(false); pathElement->SetEdges(_edges); pathElement->SetCorners(0); - pathElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + pathElement->SetGhost(GetFlags().has(CommandFlag::ghost)); MapInvalidateTileFull(_loc); } diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 904d66e36f8e..40826cdba1c6 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -132,7 +132,7 @@ namespace OpenRCT2::GameActions res.Expenditure = ExpenditureType::landscaping; res.Position = _loc.ToTileCentre(); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { FootpathInterruptPeeps(_loc); } @@ -142,7 +142,7 @@ namespace OpenRCT2::GameActions // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { if (_direction != kInvalidDirection && !getGameState().cheats.disableClearanceChecks) { @@ -223,7 +223,7 @@ namespace OpenRCT2::GameActions res.Cost += 6.00_GBP; } - if (GetFlags() & GAME_COMMAND_FLAG_GHOST && !pathElement->IsGhost()) + if (GetFlags().has(CommandFlag::ghost) && !pathElement->IsGhost()) { return Result(Status::ItemAlreadyPlaced, STR_CANT_BUILD_FOOTPATH_HERE, kStringIdNone); } @@ -239,7 +239,7 @@ namespace OpenRCT2::GameActions FootpathQueueChainReset(); - if (!(GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN)) + if (!(GetFlags().has(CommandFlag::trackDesign))) { FootpathRemoveEdgesAt(_loc, reinterpret_cast(pathElement)); } @@ -355,7 +355,7 @@ namespace OpenRCT2::GameActions { bool entrancePath = false, entranceIsSamePath = false; - if (!(GetFlags() & (GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_GHOST))) + if (!(GetFlags().hasAny(CommandFlag::allowDuringPaused, CommandFlag::ghost))) { FootpathRemoveLitter(_loc); } @@ -388,7 +388,7 @@ namespace OpenRCT2::GameActions auto crossingMode = isQueue || (_slope.type != FootpathSlopeType::flat) ? CreateCrossingMode::none : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GAME_COMMAND_FLAG_APPLY | GetFlags(), + { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); if (!entrancePath && canBuild.Error != Status::Ok) { @@ -410,7 +410,7 @@ namespace OpenRCT2::GameActions if (entrancePath) { - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !entranceIsSamePath) + if (!(GetFlags().has(CommandFlag::ghost)) && !entranceIsSamePath) { if (_constructFlags & PathConstructFlag::IsLegacyPathObject) { @@ -445,15 +445,15 @@ namespace OpenRCT2::GameActions pathElement->SetRideIndex(RideId::GetNull()); pathElement->SetAdditionStatus(255); pathElement->SetIsBroken(false); - pathElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + pathElement->SetGhost(GetFlags().has(CommandFlag::ghost)); FootpathQueueChainReset(); - if (!(GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN)) + if (!(GetFlags().has(CommandFlag::trackDesign))) { FootpathRemoveEdgesAt(_loc, pathElement->as()); } - if (gLegacyScene == LegacyScene::scenarioEditor && !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (gLegacyScene == LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::ghost))) { AutomaticallySetPeepSpawn(); } @@ -505,7 +505,7 @@ namespace OpenRCT2::GameActions void FootpathPlaceAction::RemoveIntersectingWalls(PathElement* pathElement) const { - if (pathElement->IsSloped() && !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (pathElement->IsSloped() && !(GetFlags().has(CommandFlag::ghost))) { auto direction = pathElement->GetSlopeDirection(); int32_t z = pathElement->GetBaseZ(); @@ -520,7 +520,7 @@ namespace OpenRCT2::GameActions } } - if (!(GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN)) + if (!(GetFlags().has(CommandFlag::trackDesign))) FootpathConnectEdges(_loc, reinterpret_cast(pathElement), GetFlags()); FootpathUpdateQueueChains(); diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 072adea40cc7..44f5d71ac831 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -83,7 +83,7 @@ namespace OpenRCT2::GameActions res.Expenditure = ExpenditureType::landscaping; res.Position = { _loc.x + 16, _loc.y + 16, _loc.z }; - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { FootpathInterruptPeeps(_loc); FootpathRemoveLitter(_loc); @@ -126,7 +126,7 @@ namespace OpenRCT2::GameActions TileElement* FootpathRemoveAction::GetFootpathElement() const { - bool getGhostPath = GetFlags() & GAME_COMMAND_FLAG_GHOST; + bool getGhostPath = GetFlags().has(CommandFlag::ghost); for (auto* pathElement : TileElementsView(_loc)) { @@ -167,7 +167,9 @@ namespace OpenRCT2::GameActions auto bannerRemoveAction = BannerRemoveAction( { loc, tileElement->GetBaseZ(), tileElement->AsBanner()->GetPosition() }); bool isGhost = tileElement->IsGhost(); - auto bannerFlags = GetFlags() | (isGhost ? static_cast(GAME_COMMAND_FLAG_GHOST) : 0); + auto bannerFlags = GetFlags(); + if (isGhost) + bannerFlags.set(CommandFlag::ghost); bannerRemoveAction.SetFlags(bannerFlags); auto res = ExecuteNested(&bannerRemoveAction, gameState); diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index 9fdff4938d1d..5a5efa48d768 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -138,7 +138,7 @@ namespace OpenRCT2::GameActions } GameAction* action = queued.action.get(); - action->SetFlags(action->GetFlags() | GAME_COMMAND_FLAG_NETWORKED); + action->SetFlags(action->GetFlags().with(CommandFlag::networked)); Guard::Assert(action != nullptr); @@ -288,7 +288,7 @@ namespace OpenRCT2::GameActions Guard::ArgumentNotNull(action); uint16_t actionFlags = action->GetActionFlags(); - uint32_t flags = action->GetFlags(); + auto flags = action->GetFlags(); // Some actions are not recorded in the replay. const auto ignoreForReplays = (actionFlags & Flags::IgnoreForReplays) != 0; @@ -297,7 +297,7 @@ namespace OpenRCT2::GameActions if (replayManager != nullptr && (replayManager->IsReplaying() || replayManager->IsNormalising())) { // We only accept replay commands as long the replay is active. - if ((flags & GAME_COMMAND_FLAG_REPLAY) == 0 && !ignoreForReplays) + if (!flags.has(CommandFlag::replay) && !ignoreForReplays) { // TODO: Introduce proper error. auto result = Result(); @@ -311,8 +311,7 @@ namespace OpenRCT2::GameActions Result result = QueryInternal(action, gameState, topLevel); #ifdef ENABLE_SCRIPTING - if (result.Error == Status::Ok - && ((Network::GetMode() == Network::Mode::none) || (flags & GAME_COMMAND_FLAG_NETWORKED))) + if (result.Error == Status::Ok && ((Network::GetMode() == Network::Mode::none) || flags.has(CommandFlag::networked))) { auto& scriptEngine = GetContext()->GetScriptEngine(); scriptEngine.RunGameActionHooks(*action, result, false); @@ -327,7 +326,7 @@ namespace OpenRCT2::GameActions if (Network::GetMode() == Network::Mode::client) { // As a client we have to wait or send it first. - if (!(actionFlags & Flags::ClientOnly) && !(flags & GAME_COMMAND_FLAG_NETWORKED)) + if (!(actionFlags & Flags::ClientOnly) && !flags.has(CommandFlag::networked)) { LOG_VERBOSE("[%s] GameAction::Execute %s (Out)", GetRealm(), action->GetName()); Network::SendGameAction(action); @@ -340,7 +339,7 @@ namespace OpenRCT2::GameActions // If player is the server it would execute right away as where clients execute the commands // at the beginning of the frame, so we have to put them into the queue. // This is also the case when its executed from the UI update. - if (!(actionFlags & Flags::ClientOnly) && !(flags & GAME_COMMAND_FLAG_NETWORKED)) + if (!(actionFlags & Flags::ClientOnly) && !flags.has(CommandFlag::networked)) { LOG_VERBOSE("[%s] GameAction::Execute %s (Queue)", GetRealm(), action->GetName()); Enqueue(action, getGameState().currentTicks); @@ -401,14 +400,14 @@ namespace OpenRCT2::GameActions } else { - bool commandExecutes = (flags & GAME_COMMAND_FLAG_GHOST) == 0 && (flags & GAME_COMMAND_FLAG_NO_SPEND) == 0; + bool commandExecutes = !(flags.hasAny(CommandFlag::ghost, CommandFlag::noSpend)); bool recordAction = false; if (replayManager != nullptr && !ignoreForReplays) { if (replayManager->IsRecording() && commandExecutes) recordAction = true; - else if (replayManager->IsNormalising() && (flags & GAME_COMMAND_FLAG_REPLAY) != 0) + else if (replayManager->IsNormalising() && flags.has(CommandFlag::replay)) recordAction = true; // In normalisation we only feed back actions issued by the replay manager. } if (recordAction) @@ -433,14 +432,14 @@ namespace OpenRCT2::GameActions } // Only show errors when its not a ghost and not a preview and also top level action. - bool shouldShowError = !(flags & GAME_COMMAND_FLAG_GHOST) && !(flags & GAME_COMMAND_FLAG_NO_SPEND) && topLevel; + bool shouldShowError = !(flags.has(CommandFlag::ghost)) && !(flags.has(CommandFlag::noSpend)) && topLevel; // In network mode the error should be only shown to the issuer of the action. if (Network::GetMode() != Network::Mode::none) { // If the action was never networked and query fails locally the player id is not assigned. // So compare only if the action went into the queue otherwise show errors by default. - const bool isActionFromNetwork = (action->GetFlags() & GAME_COMMAND_FLAG_NETWORKED) != 0; + const bool isActionFromNetwork = action->GetFlags().has(CommandFlag::networked); if (isActionFromNetwork && action->GetPlayer() != Network::GetCurrentPlayerId()) { shouldShowError = false; diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index 7f4dee877ac3..9574dccb1fb8 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -119,7 +119,7 @@ namespace OpenRCT2::GameActions GameCommand const _type; Network::PlayerId_t _playerId = { -1 }; // Callee - uint32_t _flags = 0; // GAME_COMMAND_FLAGS + CommandFlags _flags = {}; uint32_t _networkId = 0; Callback_t _callback; @@ -139,7 +139,7 @@ namespace OpenRCT2::GameActions void AcceptFlags(GameActionParameterVisitor& visitor) { - visitor.Visit("flags", _flags); + visitor.Visit("flags", _flags.holder); } Network::PlayerId_t GetPlayer() const @@ -160,12 +160,12 @@ namespace OpenRCT2::GameActions // Make sure we execute some things only on the client. uint16_t flags = 0; - if ((GetFlags() & GAME_COMMAND_FLAG_GHOST) != 0 || (GetFlags() & GAME_COMMAND_FLAG_NO_SPEND) != 0) + if ((GetFlags().has(CommandFlag::ghost)) != 0 || (GetFlags().has(CommandFlag::noSpend)) != 0) { flags |= OpenRCT2::GameActions::Flags::ClientOnly; } - if (GetFlags() & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED) + if (GetFlags().has(CommandFlag::allowDuringPaused)) { flags |= OpenRCT2::GameActions::Flags::AllowWhilePaused; } @@ -173,15 +173,12 @@ namespace OpenRCT2::GameActions return flags; } - /** - * Currently used for GAME_COMMAND_FLAGS, needs refactoring once everything is replaced. - */ - uint32_t GetFlags() const + CommandFlags GetFlags() const { return _flags; } - uint32_t SetFlags(uint32_t flags) + CommandFlags SetFlags(CommandFlags flags) { return _flags = flags; } @@ -213,7 +210,7 @@ namespace OpenRCT2::GameActions virtual void Serialise(DataSerialiser& stream) { - stream << DS_TAG(_networkId) << DS_TAG(_flags) << DS_TAG(_playerId); + stream << DS_TAG(_networkId) << DS_TAG(_flags.holder) << DS_TAG(_playerId); } // Helper function, allows const Objects to still serialize into DataSerialiser while being const. diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 116e40e25131..238a6cca27f8 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -140,7 +140,7 @@ namespace OpenRCT2::GameActions } auto clearResult = MapCanConstructWithClearAt( - { _coords, _height * kCoordsZStep, zCorner * kCoordsZStep }, MapSetLandHeightClearFunc, { 0b1111, 0 }, 0, + { _coords, _height * kCoordsZStep, zCorner * kCoordsZStep }, MapSetLandHeightClearFunc, { 0b1111, 0 }, {}, _style, CreateCrossingMode::none); if (clearResult.Error != Status::Ok) { @@ -348,7 +348,7 @@ namespace OpenRCT2::GameActions } bool LandSetHeightAction::MapSetLandHeightClearFunc( - TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, [[maybe_unused]] uint8_t flags, + TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, [[maybe_unused]] CommandFlags flags, [[maybe_unused]] money64* price) { if ((*tile_element)->GetType() == TileElementType::Surface) diff --git a/src/openrct2/actions/LandSetHeightAction.h b/src/openrct2/actions/LandSetHeightAction.h index 1739d08eb73c..c5a0791f4698 100644 --- a/src/openrct2/actions/LandSetHeightAction.h +++ b/src/openrct2/actions/LandSetHeightAction.h @@ -47,7 +47,7 @@ namespace OpenRCT2::GameActions * rct2: 0x00663CB9 */ static bool MapSetLandHeightClearFunc( - TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, [[maybe_unused]] uint8_t flags, + TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, [[maybe_unused]] CommandFlags flags, [[maybe_unused]] money64* price); }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 5e3dbd6d53a9..d1e03c70f6b1 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -287,7 +287,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.GetData(); resultData.GroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { FootpathRemoveLitter({ curTile, zLow }); if (!getGameState().cheats.disableClearanceChecks) @@ -389,7 +389,7 @@ namespace OpenRCT2::GameActions sceneryElement.SetSecondaryColour(_secondaryColour); sceneryElement.SetTertiaryColour(_tertiaryColour); - if (GetFlags() & GAME_COMMAND_FLAG_GHOST) + if (GetFlags().has(CommandFlag::ghost)) { sceneryElement.SetGhost(true); } diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index f7aed1901669..7bbd7e085d8c 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -53,7 +53,7 @@ namespace OpenRCT2::GameActions { auto res = Result(); - const uint32_t flags = GetFlags(); + const auto flags = GetFlags(); res.Position.x = _loc.x + 16; res.Position.y = _loc.y + 16; @@ -113,7 +113,7 @@ namespace OpenRCT2::GameActions } // Prevent duplicate costs when using the clear scenery tool that overlaps multiple large // scenery tile elements. - if (flags & GAME_COMMAND_FLAG_TRACK_DESIGN) + if (flags.has(CommandFlag::trackDesign)) { if (tileElement->AsLargeScenery()->IsAccounted()) calculate_cost = false; @@ -194,7 +194,7 @@ namespace OpenRCT2::GameActions TileElement* LargeSceneryRemoveAction::FindLargeSceneryElement(const CoordsXYZ& pos, int32_t sequenceIndex) const { - const bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + const bool isGhost = GetFlags().has(CommandFlag::ghost); for (auto* sceneryElement : TileElementsView(pos)) { // If we are removing ghost elements diff --git a/src/openrct2/actions/LargeScenerySetColourAction.cpp b/src/openrct2/actions/LargeScenerySetColourAction.cpp index d4a5a43ef54f..104f0fb86cd7 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.cpp +++ b/src/openrct2/actions/LargeScenerySetColourAction.cpp @@ -104,7 +104,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } - if ((GetFlags() & GAME_COMMAND_FLAG_GHOST) && !(largeElement->IsGhost())) + if ((GetFlags().has(CommandFlag::ghost)) && !(largeElement->IsGhost())) { return res; } diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 10807a31c967..83d7bc22f0f0 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -161,8 +161,8 @@ namespace OpenRCT2::GameActions return res; } - uint32_t flags = GetFlags(); - if (!(flags & GAME_COMMAND_FLAG_GHOST)) + auto flags = GetFlags(); + if (!(flags.has(CommandFlag::ghost))) { FootpathRemoveLitter(_loc); WallRemoveAt({ _loc.ToTileStart(), _loc.z, _loc.z + 32 }); @@ -173,7 +173,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, - GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat); + GetFlags().with(CommandFlag::apply), kTileSlopeFlat); if (canBuild.Error != Status::Ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; @@ -192,7 +192,7 @@ namespace OpenRCT2::GameActions trackElement->SetRideType(ride->type); trackElement->SetRideIndex(_rideIndex); trackElement->SetMazeEntry(_mazeEntry); - trackElement->SetGhost(flags & GAME_COMMAND_FLAG_GHOST); + trackElement->SetGhost(flags.has(CommandFlag::ghost)); MapInvalidateTileFull(startLoc); diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 0ca2fcf3e859..09115c9a04b0 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -205,8 +205,8 @@ namespace OpenRCT2::GameActions return res; } - uint32_t flags = GetFlags(); - if (!(flags & GAME_COMMAND_FLAG_GHOST)) + auto flags = GetFlags(); + if (!(flags.has(CommandFlag::ghost))) { FootpathRemoveLitter(_loc); WallRemoveAt({ _loc.ToTileStart(), _loc.z, _loc.z + 32 }); @@ -227,7 +227,7 @@ namespace OpenRCT2::GameActions trackElement->SetRideType(ride->type); trackElement->SetRideIndex(_rideIndex); trackElement->SetMazeEntry(0xFFFF); - trackElement->SetGhost(flags & GAME_COMMAND_FLAG_GHOST); + trackElement->SetGhost(flags.has(CommandFlag::ghost)); tileElement = trackElement->as(); @@ -237,7 +237,7 @@ namespace OpenRCT2::GameActions ride->getStation().SetBaseZ(tileElement->GetBaseZ()); ride->getStation().Start = { 0, 0 }; - if (_initialPlacement && !(flags & GAME_COMMAND_FLAG_GHOST)) + if (_initialPlacement && !(flags.has(CommandFlag::ghost))) { ride->overallView = startLoc; } diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index 831f631bb337..c944a0418618 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -123,7 +123,7 @@ namespace OpenRCT2::GameActions res.Expenditure = ExpenditureType::landPurchase; res.Position = CoordsXYZ{ _loc.x, _loc.y, _loc.z }; - uint32_t flags = GetFlags(); + auto flags = GetFlags(); getGameState().park.entrances.push_back(_loc); @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions entranceLoc.y += CoordsDirectionDelta[(_loc.direction + 1) & 0x3].y * 2; } - if (!(flags & GAME_COMMAND_FLAG_GHOST)) + if (!(flags.has(CommandFlag::ghost))) { SurfaceElement* surfaceElement = MapGetSurfaceElementAt(entranceLoc); if (surfaceElement != nullptr) @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions Guard::Assert(entranceElement != nullptr); entranceElement->SetClearanceZ(zHigh); - entranceElement->SetGhost(flags & GAME_COMMAND_FLAG_GHOST); + entranceElement->SetGhost(flags.has(CommandFlag::ghost)); entranceElement->SetDirection(_loc.direction); entranceElement->SetSequenceIndex(index); entranceElement->SetEntranceType(ENTRANCE_TYPE_PARK_ENTRANCE); @@ -172,7 +172,7 @@ namespace OpenRCT2::GameActions if (!entranceElement->IsGhost()) { - FootpathConnectEdges(entranceLoc, entranceElement->as(), GAME_COMMAND_FLAG_APPLY); + FootpathConnectEdges(entranceLoc, entranceElement->as(), { CommandFlag::apply }); } Park::UpdateFences(entranceLoc); diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index f511324130d1..7098123fa0ba 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -227,7 +227,7 @@ namespace OpenRCT2::GameActions if (type != TrackElemType::Maze) { auto trackRemoveAction = TrackRemoveAction(type, trackElement->GetSequenceIndex(), location); - trackRemoveAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND); + trackRemoveAction.SetFlags({ CommandFlag::noSpend }); auto removRes = ExecuteNested(&trackRemoveAction, gameState); if (removRes.Error != Status::Ok) diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 38a66c014035..b1a8bee61015 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -154,7 +154,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, errorTitle, STR_ERR_RIDE_NOT_FOUND); } - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { RideClearForConstruction(*ride); ride->removePeeps(); @@ -177,7 +177,7 @@ namespace OpenRCT2::GameActions } auto z = station.GetBaseZ(); - if (!(GetFlags() & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED) && !(GetFlags() & GAME_COMMAND_FLAG_GHOST) + if (!(GetFlags().has(CommandFlag::allowDuringPaused)) && !(GetFlags().has(CommandFlag::ghost)) && !getGameState().cheats.disableClearanceChecks) { FootpathRemoveLitter({ _loc, z }); @@ -186,7 +186,7 @@ namespace OpenRCT2::GameActions auto clear_z = z + (_isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( - { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags() | GAME_COMMAND_FLAG_APPLY, + { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags().with(CommandFlag::apply), kTileSlopeFlat); if (canBuild.Error != Status::Ok) { @@ -207,7 +207,7 @@ namespace OpenRCT2::GameActions entranceElement->SetEntranceType(_isExit ? ENTRANCE_TYPE_RIDE_EXIT : ENTRANCE_TYPE_RIDE_ENTRANCE); entranceElement->SetStationIndex(_stationNum); entranceElement->SetRideIndex(_rideIndex); - entranceElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + entranceElement->SetGhost(GetFlags().has(CommandFlag::ghost)); if (_isExit) { @@ -224,7 +224,7 @@ namespace OpenRCT2::GameActions FootpathQueueChainReset(); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { MazeEntranceHedgeRemoval({ _loc, entranceElement->as() }); } @@ -254,7 +254,7 @@ namespace OpenRCT2::GameActions int16_t baseZ = loc.z; int16_t clearZ = baseZ + (isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( - { loc, baseZ, clearZ }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, 0, kTileSlopeFlat); + { loc, baseZ, clearZ }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, {}, kTileSlopeFlat); if (canBuild.Error != Status::Ok) { canBuild.ErrorTitle = errorTitle; diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp index 686daf20166c..c8c3f2538629 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp @@ -49,7 +49,7 @@ namespace OpenRCT2::GameActions } static TileElement* FindEntranceElement( - const CoordsXY& loc, RideId rideIndex, StationIndex stationNum, int32_t entranceType, uint32_t flags) + const CoordsXY& loc, RideId rideIndex, StationIndex stationNum, int32_t entranceType) { for (auto* entranceElement : TileElementsView(loc)) { @@ -92,10 +92,10 @@ namespace OpenRCT2::GameActions } auto* entranceElement = FindEntranceElement( - _loc, _rideIndex, _stationNum, _isExit ? ENTRANCE_TYPE_RIDE_EXIT : ENTRANCE_TYPE_RIDE_ENTRANCE, GetFlags()); + _loc, _rideIndex, _stationNum, _isExit ? ENTRANCE_TYPE_RIDE_EXIT : ENTRANCE_TYPE_RIDE_ENTRANCE); // If we are trying to remove a ghost and the element we found is real, return an error, but don't log a warning - if (entranceElement != nullptr && (GetFlags() & GAME_COMMAND_FLAG_GHOST) && !(entranceElement->IsGhost())) + if (entranceElement != nullptr && (GetFlags().has(CommandFlag::ghost)) && !(entranceElement->IsGhost())) { return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_GHOST_ELEMENT_NOT_FOUND); } @@ -119,7 +119,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } - const bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + const bool isGhost = GetFlags().has(CommandFlag::ghost); if (!isGhost) { RideClearForConstruction(*ride); @@ -128,7 +128,7 @@ namespace OpenRCT2::GameActions } auto* entranceElement = FindEntranceElement( - _loc, _rideIndex, _stationNum, _isExit ? ENTRANCE_TYPE_RIDE_EXIT : ENTRANCE_TYPE_RIDE_ENTRANCE, GetFlags()); + _loc, _rideIndex, _stationNum, _isExit ? ENTRANCE_TYPE_RIDE_EXIT : ENTRANCE_TYPE_RIDE_ENTRANCE); // If we are trying to remove a ghost and the element we found is real, return an error, but don't log a warning if (entranceElement != nullptr && isGhost && !(entranceElement->IsGhost())) diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index 9b2eaa9a84d4..38c79b8803e3 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -358,7 +358,7 @@ namespace OpenRCT2::GameActions targetHeight = surfaceHeight; } - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { FootpathRemoveLitter({ _loc, targetHeight }); if (!getGameState().cheats.disableClearanceChecks && (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_NO_WALLS))) @@ -406,7 +406,7 @@ namespace OpenRCT2::GameActions QuarterTile quarterTile = QuarterTile{ collisionQuadrants, supports }.Rotate(quadRotation); const auto isTree = sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE); auto canBuild = MapCanConstructWithClearAt( - { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, kTileSlopeFlat, + { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, CreateCrossingMode::none, isTree); if (canBuild.Error != Status::Ok) { @@ -432,7 +432,7 @@ namespace OpenRCT2::GameActions sceneryElement->SetSecondaryColour(_secondaryColour); sceneryElement->SetTertiaryColour(_tertiaryColour); sceneryElement->SetClearanceZ(sceneryElement->GetBaseZ() + sceneryEntry->height + 7); - sceneryElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + sceneryElement->SetGhost(GetFlags().has(CommandFlag::ghost)); if (supportsRequired) { sceneryElement->SetNeedsSupports(); diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index 5117a3cfd510..7b997141b98a 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -74,7 +74,7 @@ namespace OpenRCT2::GameActions res.Expenditure = ExpenditureType::landscaping; res.Position = _loc; - if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags() & GAME_COMMAND_FLAG_GHOST) + if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::ghost)) && !getGameState().cheats.sandboxMode) { // Check if allowed to remove item @@ -137,7 +137,7 @@ namespace OpenRCT2::GameActions TileElement* SmallSceneryRemoveAction::FindSceneryElement() const { - const bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + const bool isGhost = GetFlags().has(CommandFlag::ghost); for (auto* sceneryElement : TileElementsView(_loc)) { // If we are removing ghost elements diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index 28ed907fa0e2..fbd068bb5201 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -99,7 +99,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } - if ((GetFlags() & GAME_COMMAND_FLAG_GHOST) && !(sceneryElement->IsGhost())) + if ((GetFlags().has(CommandFlag::ghost)) && !(sceneryElement->IsGhost())) { return res; } diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index e602e8b5b734..95d467d5c590 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -98,11 +98,9 @@ namespace OpenRCT2::GameActions bool placeScenery = _placeScenery; - uint32_t flags = 0; - if (GetFlags() & GAME_COMMAND_FLAG_GHOST) - flags |= GAME_COMMAND_FLAG_GHOST; - if (GetFlags() & GAME_COMMAND_FLAG_REPLAY) - flags |= GAME_COMMAND_FLAG_REPLAY; + CommandFlags flags = {}; + flags.set(CommandFlag::ghost, GetFlags().has(CommandFlag::ghost)); + flags.set(CommandFlag::replay, GetFlags().has(CommandFlag::replay)); auto queryRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); if (_trackDesignPlaceStateSceneryUnavailable) @@ -169,7 +167,7 @@ namespace OpenRCT2::GameActions } // Query first, this is required again to determine if scenery is available. - uint32_t flags = GetFlags() & ~GAME_COMMAND_FLAG_APPLY; + auto flags = GetFlags().without(CommandFlag::apply); bool placeScenery = _placeScenery; @@ -195,7 +193,7 @@ namespace OpenRCT2::GameActions } // Execute. - flags |= GAME_COMMAND_FLAG_APPLY; + flags.set(CommandFlag::apply); auto execRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); if (execRes.Error != Status::Ok) diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 0578389992e2..92a3175a4632 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -349,7 +349,7 @@ namespace OpenRCT2::GameActions if ((entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN) && blockIndex == 0) { const auto addElementResult = TrackAddStationElement( - { mapLoc, baseZ, _origin.direction }, _rideIndex, 0, _fromTrackDesign); + { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); if (!addElementResult.Successful) { return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, addElementResult.Message); @@ -468,7 +468,7 @@ namespace OpenRCT2::GameActions ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( - mapLocWithClearance, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, + mapLocWithClearance, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); if (canBuild.Error != Status::Ok) { @@ -478,7 +478,7 @@ namespace OpenRCT2::GameActions costs += canBuild.Cost; // When building a level crossing, remove any pre-existing path furniture. - if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags().has(CommandFlag::ghost))) { auto footpathElement = MapGetFootpathElement(mapLoc); if (footpathElement != nullptr && footpathElement->HasAddition()) @@ -487,7 +487,7 @@ namespace OpenRCT2::GameActions } } - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !gameState.cheats.disableClearanceChecks) + if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) { FootpathRemoveLitter(mapLoc); if (rtd.HasFlag(RtdFlag::noWallsAroundTrack)) @@ -543,7 +543,7 @@ namespace OpenRCT2::GameActions int32_t entranceDirections = 0; if (!ride->overallView.IsNull()) { - if (!(GetFlags() & GAME_COMMAND_FLAG_NO_SPEND)) + if (!(GetFlags().has(CommandFlag::noSpend))) { entranceDirections = ted.sequences[0].flags; } @@ -569,7 +569,7 @@ namespace OpenRCT2::GameActions trackElement->SetRideIndex(_rideIndex); trackElement->SetTrackType(_trackType); trackElement->SetRideType(_rideType); - trackElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + trackElement->SetGhost(GetFlags().has(CommandFlag::ghost)); switch (_trackType) { @@ -613,7 +613,7 @@ namespace OpenRCT2::GameActions uint32_t availableDirections = entranceDirections & 0x0F; if (availableDirections != 0) { - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !gameState.cheats.disableClearanceChecks) + if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) { for (int32_t chosenDirection = Numerics::bitScanForward(availableDirections); chosenDirection != -1; chosenDirection = Numerics::bitScanForward(availableDirections)) @@ -633,13 +633,11 @@ namespace OpenRCT2::GameActions // If the placed tile is a station modify station properties. // Don't do this if the tile is a ghost to prevent desyncs // However, ghost tiles from track designs need to modify station data to display properly - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN - && (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) || _fromTrackDesign)) + if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) { if (blockIndex == 0) { - TrackAddStationElement( - { mapLoc, _origin.direction }, _rideIndex, GAME_COMMAND_FLAG_APPLY, _fromTrackDesign); + TrackAddStationElement({ mapLoc, _origin.direction }, _rideIndex, { CommandFlag::apply }, _fromTrackDesign); } ride->validateStations(); ride->updateMaxVehicles(); @@ -657,7 +655,7 @@ namespace OpenRCT2::GameActions } } - if (!gameState.cheats.disableClearanceChecks || !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!gameState.cheats.disableClearanceChecks || !(GetFlags().has(CommandFlag::ghost))) { FootpathConnectEdges(mapLoc, tileElement, GetFlags()); } @@ -665,7 +663,7 @@ namespace OpenRCT2::GameActions } // Update ride stats and block brake count if the piece was successfully built - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { switch (_trackType) { diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index 19bd8ed2c4e9..bef46d596909 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -76,7 +76,7 @@ namespace OpenRCT2::GameActions auto comparableTrackType = normaliseTrackType(_trackType); bool found = false; - bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + bool isGhost = GetFlags().has(CommandFlag::ghost); TileElement* tileElement = MapGetFirstElementAt(_origin); do @@ -212,7 +212,7 @@ namespace OpenRCT2::GameActions int32_t entranceDirections = ted.sequences[0].flags; if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { - const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, 0); + const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) { return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); @@ -260,7 +260,7 @@ namespace OpenRCT2::GameActions auto comparableTrackType = normaliseTrackType(_trackType); bool found = false; - bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + bool isGhost = GetFlags().has(CommandFlag::ghost); TileElement* tileElement = MapGetFirstElementAt(_origin); do @@ -382,7 +382,7 @@ namespace OpenRCT2::GameActions int32_t entranceDirections = ted.sequences[0].flags; if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { - const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, 0); + const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) { return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); @@ -407,11 +407,11 @@ namespace OpenRCT2::GameActions // If the removed tile is a station modify station properties. // Don't do this if the ride is simulating and the tile is a ghost to prevent desyncs. if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN - && (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) || (GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN)) + && (!(GetFlags().has(CommandFlag::ghost)) || (GetFlags().has(CommandFlag::trackDesign))) && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { const auto removeElementResult = TrackRemoveStationElement( - { mapLoc, _origin.direction }, rideIndex, GAME_COMMAND_FLAG_APPLY); + { mapLoc, _origin.direction }, rideIndex, { CommandFlag::apply }); if (!removeElementResult.Successful) { return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); @@ -431,13 +431,13 @@ namespace OpenRCT2::GameActions } TileElementRemove(tileElement); ride->validateStations(); - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { ride->updateMaxVehicles(); } } - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { switch (trackType) { diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 7945788ac424..4447f7d5c3e2 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -92,7 +92,7 @@ namespace OpenRCT2::GameActions } auto mapSizeMax = GetMapSizeMaxXY(); - if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN) + if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.sandboxMode) { if (_loc.z == 0) @@ -252,7 +252,7 @@ namespace OpenRCT2::GameActions clearanceHeight += wallEntry->height; bool wallAcrossTrack = false; - if (!(GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN) && !gameState.cheats.disableClearanceChecks) + if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / 8, clearanceHeight, &wallAcrossTrack); if (result.Error != Status::Ok) @@ -326,7 +326,7 @@ namespace OpenRCT2::GameActions clearanceHeight += wallEntry->height; bool wallAcrossTrack = false; - if (!(GetFlags() & GAME_COMMAND_FLAG_TRACK_DESIGN) && !gameState.cheats.disableClearanceChecks) + if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / kCoordsZStep, clearanceHeight, &wallAcrossTrack); if (result.Error != Status::Ok) @@ -382,7 +382,7 @@ namespace OpenRCT2::GameActions wallElement->SetTertiaryColour(_tertiaryColour); } - wallElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + wallElement->SetGhost(GetFlags().has(CommandFlag::ghost)); MapAnimations::MarkTileForInvalidation(TileCoordsXY(targetLoc)); MapInvalidateTileZoom1({ _loc, wallElement->GetBaseZ(), wallElement->GetBaseZ() + 72 }); diff --git a/src/openrct2/actions/WallRemoveAction.cpp b/src/openrct2/actions/WallRemoveAction.cpp index 77686514eea9..e37537862214 100644 --- a/src/openrct2/actions/WallRemoveAction.cpp +++ b/src/openrct2/actions/WallRemoveAction.cpp @@ -50,7 +50,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } - const bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + const bool isGhost = GetFlags().has(CommandFlag::ghost); if (!isGhost && gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode && !MapIsLocationOwned(_loc)) { @@ -73,7 +73,7 @@ namespace OpenRCT2::GameActions res.Cost = 0; res.Expenditure = ExpenditureType::landscaping; - const bool isGhost = GetFlags() & GAME_COMMAND_FLAG_GHOST; + const bool isGhost = GetFlags().has(CommandFlag::ghost); TileElement* wallElement = GetFirstWallElementAt(_loc, isGhost); if (wallElement == nullptr) diff --git a/src/openrct2/actions/WallSetColourAction.cpp b/src/openrct2/actions/WallSetColourAction.cpp index 216177082d55..3f4f8b22dd0e 100644 --- a/src/openrct2/actions/WallSetColourAction.cpp +++ b/src/openrct2/actions/WallSetColourAction.cpp @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_WALL_ELEMENT_NOT_FOUND); } - if ((GetFlags() & GAME_COMMAND_FLAG_GHOST) && !(wallElement->IsGhost())) + if ((GetFlags().has(CommandFlag::ghost)) && !(wallElement->IsGhost())) { return res; } @@ -134,7 +134,7 @@ namespace OpenRCT2::GameActions return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } - if ((GetFlags() & GAME_COMMAND_FLAG_GHOST) && !(wallElement->IsGhost())) + if ((GetFlags().has(CommandFlag::ghost)) && !(wallElement->IsGhost())) { return res; } diff --git a/src/openrct2/core/FlagHolder.hpp b/src/openrct2/core/FlagHolder.hpp index a63ac376204e..8e6d58688d7f 100644 --- a/src/openrct2/core/FlagHolder.hpp +++ b/src/openrct2/core/FlagHolder.hpp @@ -68,7 +68,7 @@ struct FlagHolder } template - constexpr FlagHolder with(TTypes... types) + [[nodiscard]] constexpr FlagHolder with(TTypes... types) { FlagHolder res = *this; res.set(types...); @@ -76,7 +76,7 @@ struct FlagHolder } template - constexpr FlagHolder without(TTypes... types) + [[nodiscard]] constexpr FlagHolder without(TTypes... types) { FlagHolder res = *this; res.unset(types...); diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index b97bd39f95a1..ae43b75cb9aa 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -28,6 +28,7 @@ #include using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; // Monthly research funding costs const money64 kResearchCosts[RESEARCH_FUNDING_COUNT] = { @@ -58,15 +59,15 @@ static constexpr bool kCountTowardsCurrentExpenditure[EnumValue(ExpenditureType: * Checks the condition if the game is required to use money. * @param flags game command flags. */ -bool FinanceCheckMoneyRequired(uint32_t flags) +bool FinanceCheckMoneyRequired(CommandFlags flags) { if (getGameState().park.flags & PARK_FLAGS_NO_MONEY) return false; if (isInEditorMode()) return false; - if (flags & GAME_COMMAND_FLAG_NO_SPEND) + if (flags.has(CommandFlag::noSpend)) return false; - if (flags & GAME_COMMAND_FLAG_GHOST) + if (flags.has(CommandFlag::ghost)) return false; return true; } @@ -76,7 +77,7 @@ bool FinanceCheckMoneyRequired(uint32_t flags) * @param cost. * @param flags game command flags. */ -bool FinanceCheckAffordability(money64 cost, uint32_t flags) +bool FinanceCheckAffordability(money64 cost, CommandFlags flags) { return !FinanceCheckMoneyRequired(flags) || cost <= 0 || cost <= getGameState().park.cash; } diff --git a/src/openrct2/management/Finance.h b/src/openrct2/management/Finance.h index da3b683c5682..88c2329964da 100644 --- a/src/openrct2/management/Finance.h +++ b/src/openrct2/management/Finance.h @@ -9,9 +9,12 @@ #pragma once +#include "../actions/CommandFlag.h" #include "../core/Money.hpp" #include "Research.h" +using OpenRCT2::GameActions::CommandFlags; + enum class ExpenditureType : int32_t { rideConstruction = 0, @@ -38,8 +41,8 @@ constexpr uint8_t kMaxBankLoanInterestRate = 255; extern const money64 kResearchCosts[RESEARCH_FUNDING_COUNT]; -bool FinanceCheckMoneyRequired(uint32_t flags); -bool FinanceCheckAffordability(money64 cost, uint32_t flags); +bool FinanceCheckMoneyRequired(CommandFlags flags); +bool FinanceCheckAffordability(money64 cost, CommandFlags flags); void FinancePayment(money64 amount, ExpenditureType type); void FinancePayWages(); void FinancePayResearch(); diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/rct12/ScenarioPatcher.cpp index 93ffe5787d62..f103ed2408bf 100644 --- a/src/openrct2/rct12/ScenarioPatcher.cpp +++ b/src/openrct2/rct12/ScenarioPatcher.cpp @@ -45,6 +45,7 @@ #include using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; static bool _dryRun = false; @@ -531,7 +532,7 @@ static void SwapRideEntranceAndExit(RideId rideId) FootpathQueueChainReset(); FootpathConnectEdges( entranceCoords.ToCoordsXY(), reinterpret_cast(entranceElement), - GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + { CommandFlag::apply, CommandFlag::allowDuringPaused }); FootpathUpdateQueueChains(); } } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 8e6925e3caa8..808df4930ee9 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -50,6 +50,7 @@ using namespace OpenRCT2; using namespace OpenRCT2::TrackMetaData; +using OpenRCT2::GameActions::CommandFlag; money64 _currentTrackPrice; @@ -1131,7 +1132,7 @@ money64 RideGetRefundPrice(const Ride& ride) auto trackRemoveAction = GameActions::TrackRemoveAction( trackElement.element->AsTrack()->GetTrackType(), trackElement.element->AsTrack()->GetSequenceIndex(), { trackElement.x, trackElement.y, trackElement.element->GetBaseZ(), direction }); - trackRemoveAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + trackRemoveAction.SetFlags(CommandFlag::allowDuringPaused); auto res = GameActions::Query(&trackRemoveAction, getGameState()); @@ -1165,14 +1166,14 @@ money64 SetOperatingSetting(RideId rideId, GameActions::RideSetSetting setting, return res.Error == GameActions::Status::Ok ? 0 : kMoney64Undefined; } -money64 SetOperatingSettingNested(RideId rideId, GameActions::RideSetSetting setting, uint8_t value, uint8_t flags) +money64 SetOperatingSettingNested(RideId rideId, GameActions::RideSetSetting setting, uint8_t value, CommandFlags flags) { auto rideSetSetting = GameActions::RideSetSettingAction(rideId, setting, value); rideSetSetting.SetFlags(flags); auto& gameState = getGameState(); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&rideSetSetting, gameState) - : GameActions::QueryNested(&rideSetSetting, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&rideSetSetting, gameState) + : GameActions::QueryNested(&rideSetSetting, gameState); return res.Error == GameActions::Status::Ok ? 0 : kMoney64Undefined; } diff --git a/src/openrct2/ride/RideConstruction.h b/src/openrct2/ride/RideConstruction.h index 57541a6c682a..2fb54fc729b3 100644 --- a/src/openrct2/ride/RideConstruction.h +++ b/src/openrct2/ride/RideConstruction.h @@ -10,6 +10,7 @@ #pragma once #include "../Identifiers.h" +#include "../actions/CommandFlag.h" #include "../core/FlagHolder.hpp" #include "../core/Money.hpp" #include "../world/Location.hpp" @@ -138,7 +139,8 @@ void RideSelectPreviousSection(); bool RideModify(const CoordsXYE& input); money64 SetOperatingSetting(RideId rideId, OpenRCT2::GameActions::RideSetSetting setting, uint8_t value); -money64 SetOperatingSettingNested(RideId rideId, OpenRCT2::GameActions::RideSetSetting setting, uint8_t value, uint8_t flags); +money64 SetOperatingSettingNested( + RideId rideId, OpenRCT2::GameActions::RideSetSetting setting, uint8_t value, OpenRCT2::GameActions::CommandFlags flags); bool RideSelectBackwardsFromFront(); bool RideSelectForwardsFromBack(); diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index e3e8aa1b56e2..a7f6144b3652 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -40,6 +40,8 @@ using namespace OpenRCT2; using namespace OpenRCT2::TrackMetaData; +using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; PitchAndRoll TrackPitchAndRollStart(OpenRCT2::TrackElemType trackType) { @@ -114,7 +116,7 @@ static void ride_remove_station(Ride& ride, const CoordsXYZ& location) * * rct2: 0x006C4D89 */ -ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32_t flags, bool fromTrackDesign) +ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, CommandFlags flags, bool fromTrackDesign) { auto ride = GetRide(rideIndex); if (ride == nullptr) @@ -130,7 +132,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32 { return { false, STR_NO_MORE_STATIONS_ALLOWED_ON_THIS_RIDE }; } - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { auto stationIndex = RideGetFirstEmptyStationStart(*ride); assert(!stationIndex.IsNull()); @@ -159,7 +161,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32 { if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) { - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { ride_remove_station(*ride, loc); } @@ -181,7 +183,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32 { if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) { - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { ride_remove_station(*ride, loc); } @@ -205,7 +207,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32 return { false, STR_STATION_PLATFORM_TOO_LONG }; } - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { loc = { stationFrontLoc, loc.z, loc.direction }; @@ -264,7 +266,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32 * * rct2: 0x006C494B */ -ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIndex, int32_t flags) +ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIndex, CommandFlags flags) { auto ride = GetRide(rideIndex); if (ride == nullptr) @@ -281,7 +283,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn TileElement* tileElement = MapGetTrackElementAtWithDirectionFromRide(loc, rideIndex); if (tileElement != nullptr) { - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { ride_remove_station(*ride, loc); } @@ -297,7 +299,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn { if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) { - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { ride_remove_station(*ride, currentLoc); } @@ -320,7 +322,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn { if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) { - if (flags & GAME_COMMAND_FLAG_APPLY) + if (flags.has(CommandFlag::apply)) { ride_remove_station(*ride, currentLoc); } @@ -330,7 +332,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn } } while (stationElement != nullptr); - if (!(flags & GAME_COMMAND_FLAG_APPLY)) + if (!(flags.has(CommandFlag::apply))) { if ((removeLoc != stationBackLoc) && (removeLoc != stationFrontLoc) && ride->numStations >= Limits::kMaxStationsPerRide) { diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 76ef9c13eb57..3f22a42e2150 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -10,6 +10,7 @@ #pragma once #include "../Identifiers.h" +#include "../actions/CommandFlag.h" #include "../object/Object.h" #include "../world/Location.hpp" #include "../world/QuarterTile.h" @@ -737,8 +738,9 @@ TrackRoll TrackGetActualBank(OpenRCT2::TileElement* tileElement, TrackRoll bank) TrackRoll TrackGetActualBank2(ride_type_t rideType, bool isInverted, TrackRoll bank); TrackRoll TrackGetActualBank3(bool useInvertedSprites, OpenRCT2::TileElement* tileElement); -ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32_t flags, bool fromTrackDesign); -ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIndex, int32_t flags); +ResultWithMessage TrackAddStationElement( + CoordsXYZD loc, RideId rideIndex, OpenRCT2::GameActions::CommandFlags flags, bool fromTrackDesign); +ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIndex, OpenRCT2::GameActions::CommandFlags flags); bool TrackTypeHasSpeedSetting(OpenRCT2::TrackElemType trackType); bool TrackTypeIsHelix(OpenRCT2::TrackElemType trackType); diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index e2d1914e055f..930e8cda1c86 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -76,6 +76,7 @@ #include using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; namespace OpenRCT2::TrackDesignSceneryElementFlags { @@ -956,8 +957,7 @@ static GameActions::Result TrackDesignPlaceSceneryElementRemoveGhost( int32_t z = scenery.loc.z + originZ; uint8_t sceneryRotation = (rotation + scenery.getRotation()) & kTileElementDirectionMask; - const uint32_t flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND - | GAME_COMMAND_FLAG_GHOST; + const CommandFlags flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; std::unique_ptr ga; switch (entryInfo->Type) { @@ -1046,7 +1046,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( } int16_t z; - uint8_t flags; + CommandFlags flags; auto& gameState = getGameState(); @@ -1064,24 +1064,23 @@ static GameActions::Result TrackDesignPlaceSceneryElement( z = scenery.loc.z + originZ; uint8_t quadrant = (scenery.getQuadrant() + _currentTrackPieceDirection) & 3; - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN; + flags = { CommandFlag::apply, CommandFlag::trackDesign }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED - | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::trackDesign, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } else if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED - | GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::trackDesign, CommandFlag::allowDuringPaused, CommandFlag::ghost, + CommandFlag::noSpend }; } else if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = GAME_COMMAND_FLAG_TRACK_DESIGN; + flags = { CommandFlag::trackDesign }; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } auto smallSceneryPlace = GameActions::SmallSceneryPlaceAction( @@ -1089,8 +1088,8 @@ static GameActions::Result TrackDesignPlaceSceneryElement( scenery.secondaryColour, scenery.tertiaryColour); smallSceneryPlace.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&smallSceneryPlace, gameState) - : GameActions::QueryNested(&smallSceneryPlace, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&smallSceneryPlace, gameState) + : GameActions::QueryNested(&smallSceneryPlace, gameState); cost = res.Error == GameActions::Status::Ok ? res.Cost : 0; break; @@ -1107,31 +1106,30 @@ static GameActions::Result TrackDesignPlaceSceneryElement( z = scenery.loc.z + originZ; - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN; + flags = { CommandFlag::apply, CommandFlag::trackDesign }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED - | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::trackDesign, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } else if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED - | GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::trackDesign, CommandFlag::allowDuringPaused, CommandFlag::ghost, + CommandFlag::noSpend }; } else if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = GAME_COMMAND_FLAG_TRACK_DESIGN; + flags = { CommandFlag::trackDesign }; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } auto sceneryPlaceAction = GameActions::LargeSceneryPlaceAction( { mapCoord.x, mapCoord.y, z, rotation }, entryInfo->Index, scenery.primaryColour, scenery.secondaryColour, scenery.tertiaryColour); sceneryPlaceAction.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&sceneryPlaceAction, gameState) - : GameActions::QueryNested(&sceneryPlaceAction, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&sceneryPlaceAction, gameState) + : GameActions::QueryNested(&sceneryPlaceAction, gameState); cost = res.Cost; break; @@ -1147,31 +1145,29 @@ static GameActions::Result TrackDesignPlaceSceneryElement( rotation += scenery.getRotation(); rotation &= 3; - flags = GAME_COMMAND_FLAG_APPLY; + flags = { CommandFlag::apply }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_TRACK_DESIGN | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED - | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::trackDesign, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } else if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND - | GAME_COMMAND_FLAG_GHOST; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; } else if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = 0; + flags = {}; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } auto wallPlaceAction = GameActions::WallPlaceAction( entryInfo->Index, { mapCoord.x, mapCoord.y, z }, rotation, scenery.primaryColour, scenery.secondaryColour, scenery.tertiaryColour); wallPlaceAction.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&wallPlaceAction, gameState) - : GameActions::QueryNested(&wallPlaceAction, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&wallPlaceAction, gameState) + : GameActions::QueryNested(&wallPlaceAction, gameState); cost = res.Cost; break; @@ -1181,23 +1177,22 @@ static GameActions::Result TrackDesignPlaceSceneryElement( z = scenery.loc.z + originZ; if (mode == 0) { - flags = GAME_COMMAND_FLAG_APPLY; + flags = { CommandFlag::apply }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND - | GAME_COMMAND_FLAG_GHOST; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; } if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = 0; + flags = {}; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } uint8_t slopeDirection = (scenery.getSlopeDirection() + rotation) & 0x3; FootpathSlope slope = { FootpathSlopeType::flat, slopeDirection }; @@ -1212,8 +1207,8 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto footpathPlaceAction = GameActions::FootpathLayoutPlaceAction( { mapCoord.x, mapCoord.y, z }, slope, entryInfo->Index, entryInfo->SecondaryIndex, edges, constructFlags); footpathPlaceAction.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&footpathPlaceAction, gameState) - : GameActions::QueryNested(&footpathPlaceAction, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&footpathPlaceAction, gameState) + : GameActions::QueryNested(&footpathPlaceAction, gameState); // Ignore failures cost = res.Error == GameActions::Status::Ok ? res.Cost : 0; } @@ -1230,19 +1225,18 @@ static GameActions::Result TrackDesignPlaceSceneryElement( return GameActions::Result(); } - flags = GAME_COMMAND_FLAG_APPLY; + flags = { CommandFlag::apply }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND - | GAME_COMMAND_FLAG_GHOST; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview @@ -1372,30 +1366,29 @@ static std::optional TrackDesignPlaceEntrances( } auto stationIndex = tile_element->AsTrack()->GetStationIndex(); - uint8_t flags = GAME_COMMAND_FLAG_APPLY; + CommandFlags flags = { CommandFlag::apply }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED - | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND - | GAME_COMMAND_FLAG_GHOST; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend, + CommandFlag::ghost }; } if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = 0; + flags = {}; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } auto rideEntranceExitPlaceAction = GameActions::RideEntranceExitPlaceAction( newCoords, rotation, rideId, stationIndex, entrance.isExit); rideEntranceExitPlaceAction.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&rideEntranceExitPlaceAction, gameState) : GameActions::QueryNested(&rideEntranceExitPlaceAction, gameState); @@ -1465,37 +1458,36 @@ static GameActions::Result TrackDesignPlaceMaze( || tds.placeOperation == TrackPlaceOperation::placeGhost || tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - uint8_t flags; + CommandFlags flags; money64 cost = 0; uint16_t mazeEntry = Numerics::rol16(maze_element.mazeEntry, rotation * 4); if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; } else if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND - | GAME_COMMAND_FLAG_GHOST; + flags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; } else if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = 0; + flags = {}; } else { - flags = GAME_COMMAND_FLAG_APPLY; + flags = { CommandFlag::apply }; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } auto mazePlace = GameActions::MazePlaceTrackAction({ mapCoord, origin.z }, ride.id, mazeEntry); mazePlace.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&mazePlace, gameState) - : GameActions::QueryNested(&mazePlace, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&mazePlace, gameState) + : GameActions::QueryNested(&mazePlace, gameState); if (res.Error != GameActions::Status::Ok) { return res; @@ -1550,7 +1542,7 @@ static GameActions::Result TrackDesignPlaceMaze( if (tds.placeOperation == TrackPlaceOperation::removeGhost) { auto gameAction = GameActions::RideDemolishAction(ride.id, GameActions::RideModifyType::demolish); - gameAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + gameAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); GameActions::Execute(&gameAction, getGameState()); } @@ -1604,8 +1596,7 @@ static GameActions::Result TrackDesignPlaceRide( auto trackRemoveAction = GameActions::TrackRemoveAction( trackType, 0, { newCoords, tempZ, static_cast(rotation & 3) }); trackRemoveAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST - | GAME_COMMAND_FLAG_TRACK_DESIGN); + { CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost, CommandFlag::trackDesign }); GameActions::ExecuteNested(&trackRemoveAction, gameState); break; } @@ -1629,25 +1620,22 @@ static GameActions::Result TrackDesignPlaceRide( liftHillAndAlternativeState.set(LiftHillAndInverted::inverted); } - uint8_t flags = GAME_COMMAND_FLAG_APPLY; + CommandFlags flags = { CommandFlag::apply }; if (tds.placeOperation == TrackPlaceOperation::placeTrackPreview) { - flags |= GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED; - flags |= GAME_COMMAND_FLAG_NO_SPEND; + flags.set(CommandFlag::allowDuringPaused, CommandFlag::noSpend); } else if (tds.placeOperation == TrackPlaceOperation::placeGhost) { - flags |= GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED; - flags |= GAME_COMMAND_FLAG_NO_SPEND; - flags |= GAME_COMMAND_FLAG_GHOST; + flags.set(CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost); } else if (tds.placeOperation == TrackPlaceOperation::placeQuery) { - flags = GAME_COMMAND_FLAG_NO_SPEND; + flags = { CommandFlag::noSpend }; } if (tds.isReplay) { - flags |= GAME_COMMAND_FLAG_REPLAY; + flags.set(CommandFlag::replay); } auto trackPlaceAction = GameActions::TrackPlaceAction( @@ -1655,8 +1643,8 @@ static GameActions::Result TrackDesignPlaceRide( track.brakeBoosterSpeed, track.colourScheme, track.seatRotation, liftHillAndAlternativeState, true); trackPlaceAction.SetFlags(flags); - auto res = flags & GAME_COMMAND_FLAG_APPLY ? GameActions::ExecuteNested(&trackPlaceAction, gameState) - : GameActions::QueryNested(&trackPlaceAction, gameState); + auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&trackPlaceAction, gameState) + : GameActions::QueryNested(&trackPlaceAction, gameState); if (res.Error != GameActions::Status::Ok) { return res; @@ -1826,15 +1814,15 @@ static GameActions::Result TrackDesignPlaceVirtual( } GameActions::Result TrackDesignPlace( - const TrackDesign& td, uint32_t flags, bool placeScenery, Ride& ride, const CoordsXYZD& coords) + const TrackDesign& td, CommandFlags flags, bool placeScenery, Ride& ride, const CoordsXYZD& coords) { - TrackPlaceOperation ptdOperation = (flags & GAME_COMMAND_FLAG_APPLY) != 0 ? TrackPlaceOperation::place - : TrackPlaceOperation::placeQuery; - if ((flags & GAME_COMMAND_FLAG_APPLY) != 0 && (flags & GAME_COMMAND_FLAG_GHOST) != 0) + TrackPlaceOperation ptdOperation = flags.has(CommandFlag::apply) ? TrackPlaceOperation::place + : TrackPlaceOperation::placeQuery; + if (flags.hasAll(CommandFlag::apply, CommandFlag::ghost)) { ptdOperation = TrackPlaceOperation::placeGhost; } - bool isReplay = flags & GAME_COMMAND_FLAG_REPLAY; + bool isReplay = flags.has(CommandFlag::replay); TrackDesignState tds{}; return TrackDesignPlaceVirtual(tds, td, ptdOperation, placeScenery, ride, coords, isReplay); @@ -1867,7 +1855,7 @@ int32_t TrackDesignGetZPlacement(const TrackDesign& td, Ride& ride, const Coords return TrackDesignGetZPlacement(tds, td, ride, coords); } -static money64 TrackDesignCreateRide(int32_t type, int32_t subType, int32_t flags, RideId* outRideIndex) +static money64 TrackDesignCreateRide(int32_t type, int32_t subType, CommandFlags flags, RideId* outRideIndex) { // Don't set colours as will be set correctly later. auto gameAction = GameActions::RideCreateAction(type, subType, 0, 0, getGameState().lastEntranceStyle); @@ -1905,7 +1893,7 @@ static bool TrackDesignPlacePreview( auto entry_index = objManager.GetLoadedObjectEntryIndex(td.trackAndVehicle.vehicleObject); RideId rideIndex; - uint8_t rideCreateFlags = GAME_COMMAND_FLAG_APPLY | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND; + CommandFlags rideCreateFlags = { CommandFlag::apply, CommandFlag::allowDuringPaused, CommandFlag::noSpend }; if (TrackDesignCreateRide(td.trackAndVehicle.rtdIndex, entry_index, rideCreateFlags, &rideIndex) == kMoney64Undefined) { return false; diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 9738492bbb4d..ab17d53b4eb2 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -238,7 +238,7 @@ extern RideId gTrackDesignSaveRideIndex; void TrackDesignMirror(TrackDesign& td); OpenRCT2::GameActions::Result TrackDesignPlace( - const TrackDesign& td, uint32_t flags, bool placeScenery, Ride& ride, const CoordsXYZD& coords); + const TrackDesign& td, CommandFlags flags, bool placeScenery, Ride& ride, const CoordsXYZD& coords); void TrackDesignPreviewRemoveGhosts(const TrackDesign& td, Ride& ride, const CoordsXYZD& coords); void TrackDesignPreviewDrawOutlines( TrackDesignState& tds, const TrackDesign& td, Ride& ride, const CoordsXYZD& coords, bool placeScenery); diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 1a9550a8c472..cae70b1a07f7 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -34,14 +34,15 @@ #include "tile_element/WallElement.h" using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; static bool MapPlaceClearFunc( - TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price, bool is_scenery) + TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price, bool is_scenery) { if ((*tile_element)->GetType() != TileElementType::SmallScenery) return false; - if (is_scenery && !(flags & GAME_COMMAND_FLAG_TRACK_DESIGN)) + if (is_scenery && !(flags.has(CommandFlag::trackDesign))) return false; auto* scenery = (*tile_element)->AsSmallScenery()->GetEntry(); @@ -56,10 +57,10 @@ static bool MapPlaceClearFunc( if (!(park.flags & PARK_FLAGS_NO_MONEY) && scenery != nullptr) *price += scenery->removal_price; - if (flags & GAME_COMMAND_FLAG_GHOST) + if (flags.has(CommandFlag::ghost)) return true; - if (!(flags & GAME_COMMAND_FLAG_APPLY)) + if (!(flags.has(CommandFlag::apply))) return true; MapInvalidateTile({ coords, (*tile_element)->GetBaseZ(), (*tile_element)->GetClearanceZ() }); @@ -74,7 +75,7 @@ static bool MapPlaceClearFunc( * * rct2: 0x006E0D6E, 0x006B8D88 */ -bool MapPlaceSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price) +bool MapPlaceSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price) { return MapPlaceClearFunc(tile_element, coords, flags, price, /*is_scenery=*/true); } @@ -83,7 +84,7 @@ bool MapPlaceSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords * * rct2: 0x006C5A4F, 0x006CDE57, 0x006A6733, 0x0066637E */ -bool MapPlaceNonSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price) +bool MapPlaceNonSceneryClearFunc(TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price) { return MapPlaceClearFunc(tile_element, coords, flags, price, /*is_scenery=*/false); } @@ -122,8 +123,8 @@ static bool landSlopeFitsUnderPath(int32_t baseZ, uint8_t slope, const PathEleme } static bool MapLoc68BABCShouldContinue( - TileElement** tileElementPtr, const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const uint8_t flags, money64& price, - const CreateCrossingMode crossingMode, const bool canBuildCrossing, const uint8_t slope) + TileElement** tileElementPtr, const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const CommandFlags flags, + money64& price, const CreateCrossingMode crossingMode, const bool canBuildCrossing, const uint8_t slope) { if (clearFunc(tileElementPtr, pos, flags, &price)) { @@ -179,7 +180,7 @@ static bool MapLoc68BABCShouldContinue( * bl = bl */ GameActions::Result MapCanConstructWithClearAt( - const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const QuarterTile quarterTile, const uint8_t flags, + const CoordsXYRangedZ& pos, ClearingFunction clearFunc, const QuarterTile quarterTile, const CommandFlags flags, const uint8_t slope, const CreateCrossingMode crossingMode, const bool isTree) { auto res = GameActions::Result(); @@ -309,14 +310,14 @@ GameActions::Result MapCanConstructWithClearAt( static bool dummyClearFunc( [[maybe_unused]] OpenRCT2::TileElement** tile_element, [[maybe_unused]] const CoordsXY& coords, - [[maybe_unused]] uint8_t flags, [[maybe_unused]] money64* price) + [[maybe_unused]] CommandFlags flags, [[maybe_unused]] money64* price) { return false; } GameActions::Result MapCanConstructAt(const CoordsXYRangedZ& pos, QuarterTile bl) { - return MapCanConstructWithClearAt(pos, dummyClearFunc, bl, 0, kTileSlopeFlat); + return MapCanConstructWithClearAt(pos, dummyClearFunc, bl, {}, kTileSlopeFlat); } /** diff --git a/src/openrct2/world/ConstructionClearance.h b/src/openrct2/world/ConstructionClearance.h index 16accc2d079b..c993f5b57b61 100644 --- a/src/openrct2/world/ConstructionClearance.h +++ b/src/openrct2/world/ConstructionClearance.h @@ -9,6 +9,7 @@ #pragma once +#include "../actions/CommandFlag.h" #include "../actions/GameActionResult.h" #include "Location.hpp" @@ -23,7 +24,8 @@ struct CoordsXY; struct CoordsXYRangedZ; class QuarterTile; -using ClearingFunction = bool (&)(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); +using ClearingFunction = bool (&)( + OpenRCT2::TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price); enum { @@ -42,8 +44,9 @@ enum class CreateCrossingMode pathOverTrack, }; -bool MapPlaceNonSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); -bool MapPlaceSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, uint8_t flags, money64* price); +bool MapPlaceNonSceneryClearFunc( + OpenRCT2::TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price); +bool MapPlaceSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price); struct ConstructClearResult { @@ -51,7 +54,7 @@ struct ConstructClearResult }; [[nodiscard]] OpenRCT2::GameActions::Result MapCanConstructWithClearAt( - const CoordsXYRangedZ& pos, ClearingFunction clearFunc, QuarterTile quarterTile, uint8_t flags, uint8_t slope, + const CoordsXYRangedZ& pos, ClearingFunction clearFunc, QuarterTile quarterTile, CommandFlags flags, uint8_t slope, CreateCrossingMode crossingMode = CreateCrossingMode::none, bool isTree = false); [[nodiscard]] OpenRCT2::GameActions::Result MapCanConstructAt(const CoordsXYRangedZ& pos, QuarterTile bl); diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 991531b7c19c..5e162a1a06a5 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -34,6 +34,7 @@ #include "tile_element/TrackElement.h" using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; bool gParkEntranceGhostExists = false; CoordsXYZD gParkEntranceGhostPosition = { 0, 0, 0, 0 }; @@ -46,7 +47,7 @@ static money64 RideEntranceExitPlaceGhost( { auto rideEntranceExitPlaceAction = GameActions::RideEntranceExitPlaceAction( entranceExitCoords, direction, rideIndex, stationNum, placeType == ENTRANCE_TYPE_RIDE_EXIT); - rideEntranceExitPlaceAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_GHOST); + rideEntranceExitPlaceAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::ghost }); auto res = GameActions::Execute(&rideEntranceExitPlaceAction, getGameState()); return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; @@ -62,7 +63,7 @@ void ParkEntranceRemoveGhost() { gParkEntranceGhostExists = false; auto parkEntranceRemoveAction = GameActions::ParkEntranceRemoveAction(gParkEntranceGhostPosition); - parkEntranceRemoveAction.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + parkEntranceRemoveAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); GameActions::Execute(&parkEntranceRemoveAction, getGameState()); } } @@ -104,7 +105,7 @@ void RideEntranceExitRemoveGhost() gRideEntranceExitGhostPosition, _currentRideIndex, gRideEntranceExitGhostStationIndex, gRideEntranceExitPlaceType == ENTRANCE_TYPE_RIDE_EXIT); - rideEntranceExitRemove.SetFlags(GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED); + rideEntranceExitRemove.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); GameActions::Execute(&rideEntranceExitRemove, getGameState()); } } diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 57a5bdf1e3e7..0cb8acde16b7 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -49,6 +49,7 @@ using namespace OpenRCT2; using namespace OpenRCT2::TrackMetaData; +using OpenRCT2::GameActions::CommandFlag; void FootpathUpdateQueueEntranceBanner(const CoordsXY& footpathPos, TileElement* tileElement); @@ -480,7 +481,7 @@ static void Loc6A6FD2(const CoordsXYZ& initialTileElementPos, int32_t direction, static void Loc6A6F1F( const CoordsXYZ& initialTileElementPos, int32_t direction, TileElement* tileElement, TileElement* initialTileElement, - const CoordsXY& targetPos, int32_t flags, bool query, FootpathNeighbourList* neighbourList) + const CoordsXY& targetPos, CommandFlags flags, bool query, FootpathNeighbourList* neighbourList) { if (query) { @@ -516,14 +517,15 @@ static void Loc6A6F1F( } else { - FootpathDisconnectQueueFromPath(targetPos, tileElement, 1 + ((flags >> 6) & 1)); + const bool isGhost = flags.has(CommandFlag::ghost); + FootpathDisconnectQueueFromPath(targetPos, tileElement, isGhost ? 2 : 1); tileElement->AsPath()->SetEdges(tileElement->AsPath()->GetEdges() | (1 << DirectionReverse(direction))); if (tileElement->AsPath()->IsQueue()) { FootpathQueueChainPush(tileElement->AsPath()->GetRideIndex()); } } - if (!(flags & (GAME_COMMAND_FLAG_GHOST | GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED))) + if (!(flags.hasAny(CommandFlag::ghost, CommandFlag::allowDuringPaused))) { FootpathInterruptPeeps({ targetPos, tileElement->GetBaseZ() }); } @@ -532,7 +534,7 @@ static void Loc6A6F1F( } static void Loc6A6D7E( - const CoordsXYZ& initialTileElementPos, int32_t direction, TileElement* initialTileElement, int32_t flags, bool query, + const CoordsXYZ& initialTileElementPos, int32_t direction, TileElement* initialTileElement, CommandFlags flags, bool query, FootpathNeighbourList* neighbourList) { auto targetPos = CoordsXY{ initialTileElementPos } + CoordsDirectionDelta[direction]; @@ -647,7 +649,7 @@ static void Loc6A6D7E( // TODO: Change this into a simple check that validates if the direction should be fully checked with Loc6A6D7E and move the // calling of Loc6A6D7E into the parent function. static void Loc6A6C85( - const CoordsXYE& tileElementPos, int32_t direction, int32_t flags, bool query, FootpathNeighbourList* neighbourList) + const CoordsXYE& tileElementPos, int32_t direction, CommandFlags flags, bool query, FootpathNeighbourList* neighbourList) { if (query && WallInTheWay( @@ -713,7 +715,7 @@ static void Loc6A6C85( * * rct2: 0x006A6C66 */ -void FootpathConnectEdges(const CoordsXY& footpathPos, TileElement* tileElement, int32_t flags) +void FootpathConnectEdges(const CoordsXY& footpathPos, TileElement* tileElement, CommandFlags flags) { FootpathNeighbourList neighbourList; FootpathNeighbour neighbour; @@ -1035,7 +1037,7 @@ static void FootpathFixOwnership(const CoordsXY& mapPos) auto landSetRightsAction = GameActions::LandSetRightsAction( mapPos, GameActions::LandSetRightSetting::SetOwnershipWithChecks, ownership); - landSetRightsAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND); + landSetRightsAction.SetFlags({ CommandFlag::noSpend }); GameActions::Execute(&landSetRightsAction, getGameState()); } diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 9fa7c8e1880f..f6dbe5a89105 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -10,6 +10,7 @@ #pragma once #include "../Identifiers.h" +#include "../actions/CommandFlag.h" #include "../object/Object.h" namespace OpenRCT2 @@ -172,7 +173,8 @@ extern const std::array BenchUseOffsets; OpenRCT2::PathElement* MapGetFootpathElement(const CoordsXYZ& coords); void FootpathInterruptPeeps(const CoordsXYZ& footpathPos); void FootpathRemoveLitter(const CoordsXYZ& footpathPos); -void FootpathConnectEdges(const CoordsXY& footpathPos, OpenRCT2::TileElement* tileElement, int32_t flags); +void FootpathConnectEdges( + const CoordsXY& footpathPos, OpenRCT2::TileElement* tileElement, OpenRCT2::GameActions::CommandFlags flags); void FootpathUpdateQueueChains(); void FootpathChainRideQueue( RideId rideIndex, StationIndex entranceIndex, const CoordsXY& footpathPos, OpenRCT2::TileElement* tileElement, diff --git a/src/openrct2/world/Scenery.cpp b/src/openrct2/world/Scenery.cpp index 8e3b78ebfc96..f0c5c952fb18 100644 --- a/src/openrct2/world/Scenery.cpp +++ b/src/openrct2/world/Scenery.cpp @@ -59,6 +59,7 @@ int16_t gSceneryCtrlPressed; int16_t gSceneryCtrlPressZ; using namespace OpenRCT2; +using OpenRCT2::GameActions::CommandFlag; // rct2: 0x009A3E74 const CoordsXY SceneryQuadrantOffsets[] = { @@ -242,8 +243,7 @@ void SceneryRemoveGhostToolPlacement() auto removeSceneryAction = GameActions::SmallSceneryRemoveAction( gSceneryGhostPosition, gSceneryQuadrant, gSceneryPlaceObject.EntryIndex); - removeSceneryAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + removeSceneryAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); removeSceneryAction.Execute(gameState); } @@ -264,8 +264,7 @@ void SceneryRemoveGhostToolPlacement() continue; auto footpathAdditionRemoveAction = GameActions::FootpathAdditionRemoveAction(gSceneryGhostPosition); - footpathAdditionRemoveAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + footpathAdditionRemoveAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); GameActions::Execute(&footpathAdditionRemoveAction, gameState); break; } while (!(tileElement++)->IsLastForTile()); @@ -277,7 +276,7 @@ void SceneryRemoveGhostToolPlacement() CoordsXYZD wallLocation = { gSceneryGhostPosition, gSceneryGhostWallRotation }; auto wallRemoveAction = GameActions::WallRemoveAction(wallLocation); - wallRemoveAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + wallRemoveAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); wallRemoveAction.Execute(gameState); } @@ -286,8 +285,7 @@ void SceneryRemoveGhostToolPlacement() gSceneryGhostType &= ~SCENERY_GHOST_FLAG_3; auto removeSceneryAction = GameActions::LargeSceneryRemoveAction({ gSceneryGhostPosition, gSceneryPlaceRotation }, 0); - removeSceneryAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + removeSceneryAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); removeSceneryAction.Execute(gameState); } @@ -296,8 +294,7 @@ void SceneryRemoveGhostToolPlacement() gSceneryGhostType &= ~SCENERY_GHOST_FLAG_4; auto removeSceneryAction = GameActions::BannerRemoveAction({ gSceneryGhostPosition, gSceneryPlaceRotation }); - removeSceneryAction.SetFlags( - GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + removeSceneryAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); GameActions::Execute(&removeSceneryAction, gameState); } } diff --git a/test/tests/TileElements.cpp b/test/tests/TileElements.cpp index 9cd3b1b328dd..e43c12743d79 100644 --- a/test/tests/TileElements.cpp +++ b/test/tests/TileElements.cpp @@ -161,7 +161,7 @@ TEST_F(TileElementWantsFootpathConnection, MapEdge) // Calculate the connected edges and set the appropriate edge flags // FIXME: The footpath functions should only take PathElement and not TileElement. - FootpathConnectEdges({ 16, 64 }, pathElement->as(), 0); + FootpathConnectEdges({ 16, 64 }, pathElement->as(), {}); auto edges = pathElement->GetEdges(); // The tiles alongside in the Y direction are both on the map edge so should be marked as an edge From cbac9c4de5c704107b76e9e59c38b86ee1f05913 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 10 Dec 2025 02:55:33 -0300 Subject: [PATCH 087/222] Reorganise VehicleFlags comments This was causing tooltip texts to get cut off, at least in CLion --- src/openrct2/ride/Vehicle.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 2e933e214097..73f5fb9a76a5 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -468,20 +468,20 @@ namespace OpenRCT2::VehicleFlags constexpr uint32_t PoweredCarInReverse = (1 << 3); constexpr uint32_t ReadyToDepart = (1 << 4); constexpr uint32_t Testing = (1 << 5); - constexpr uint32_t CurrentlyColliding = (1 << 6); // When go-karts are colliding, they have a higher chance of changing - // lanes + // When go-karts are colliding, they have a higher chance of changing lanes + constexpr uint32_t CurrentlyColliding = (1 << 6); // Used on vehicles when a safety cut-out stops them, such as RCs on a lift hill and powered rides constexpr uint32_t StoppedBySafetyCutOut = (1 << 7); constexpr uint32_t CarIsBroken = (1 << 8); constexpr uint32_t TrainIsBroken = (1 << 9); constexpr uint32_t StoppedOnHoldingBrake = (1 << 10); - constexpr uint32_t CarIsInverted = (1 << 11); // Used on rides where trains can run for extended periods of time, - // i.e. the Flying, Lay-down and Multi-dimension RCs. - constexpr uint32_t ReverseInclineCompletedLap = (1 << 12); // Set when the vehicle travels backwards through the station for - // the first time - constexpr uint32_t SpinningIsLocked = (1 << 13); // After passing a rotation toggle track piece this will enable - constexpr uint32_t MoveSingleCar = (1 << 14); // OpenRCT2 Flag: Used to override UpdateMotion to move the position of - // an individual car on a train + // Used on vehicles that can run inverted for extended periods of time, i.e. the Flying, Lay-down and Multi-Dimension trains + constexpr uint32_t CarIsInverted = (1 << 11); + // Set when the vehicle travels backwards through the station for the first time + constexpr uint32_t ReverseInclineCompletedLap = (1 << 12); + constexpr uint32_t SpinningIsLocked = (1 << 13); // After passing a rotation toggle track piece this will enable + // OpenRCT2 Flag: Used to override UpdateMotion to move the position of an individual car on a train + constexpr uint32_t MoveSingleCar = (1 << 14); constexpr uint32_t Crashed = (1 << 15); // Car displays as smoke plume constexpr uint32_t CarIsReversed = (1 << 16); // Car is displayed running backwards } // namespace OpenRCT2::VehicleFlags From 31344adc61df4a13b4542c7f0de353ef49687d5d Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Thu, 11 Dec 2025 01:18:27 +0100 Subject: [PATCH 088/222] Fix missed 'using' in Finance.h --- src/openrct2-ui/windows/MazeConstruction.cpp | 1 + src/openrct2-ui/windows/RideConstruction.cpp | 1 + src/openrct2-ui/windows/TrackDesignPlace.cpp | 1 + src/openrct2/management/Finance.cpp | 1 + src/openrct2/management/Finance.h | 6 ++---- src/openrct2/ride/RideConstruction.cpp | 1 + src/openrct2/ride/TrackDesign.cpp | 1 + src/openrct2/ride/TrackDesign.h | 3 ++- src/openrct2/world/ConstructionClearance.cpp | 1 + src/openrct2/world/ConstructionClearance.h | 11 ++++++----- src/openrct2/world/Footpath.cpp | 1 + 11 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 68a017cbb05e..129fcd27d88b 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -33,6 +33,7 @@ #include using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; namespace OpenRCT2::Ui::Windows { diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 0d0fcdeca099..ed30e2385922 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -66,6 +66,7 @@ constexpr uint8_t kVerticalDropButtonStart = 6; using namespace OpenRCT2::Numerics; using namespace OpenRCT2::TrackMetaData; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; namespace OpenRCT2::Ui::Windows { diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 8521d01700d9..08c4278ed95d 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -41,6 +41,7 @@ using namespace OpenRCT2::Numerics; using namespace OpenRCT2::TrackMetaData; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; namespace OpenRCT2::Ui::Windows { diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index ae43b75cb9aa..ec854a490357 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -29,6 +29,7 @@ using namespace OpenRCT2; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; // Monthly research funding costs const money64 kResearchCosts[RESEARCH_FUNDING_COUNT] = { diff --git a/src/openrct2/management/Finance.h b/src/openrct2/management/Finance.h index 88c2329964da..7cf390a1c315 100644 --- a/src/openrct2/management/Finance.h +++ b/src/openrct2/management/Finance.h @@ -13,8 +13,6 @@ #include "../core/Money.hpp" #include "Research.h" -using OpenRCT2::GameActions::CommandFlags; - enum class ExpenditureType : int32_t { rideConstruction = 0, @@ -41,8 +39,8 @@ constexpr uint8_t kMaxBankLoanInterestRate = 255; extern const money64 kResearchCosts[RESEARCH_FUNDING_COUNT]; -bool FinanceCheckMoneyRequired(CommandFlags flags); -bool FinanceCheckAffordability(money64 cost, CommandFlags flags); +bool FinanceCheckMoneyRequired(OpenRCT2::GameActions::CommandFlags flags); +bool FinanceCheckAffordability(money64 cost, OpenRCT2::GameActions::CommandFlags flags); void FinancePayment(money64 amount, ExpenditureType type); void FinancePayWages(); void FinancePayResearch(); diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 808df4930ee9..9846311e7ed2 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -51,6 +51,7 @@ using namespace OpenRCT2; using namespace OpenRCT2::TrackMetaData; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; money64 _currentTrackPrice; diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 930e8cda1c86..a7583fceb30d 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -77,6 +77,7 @@ using namespace OpenRCT2; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; namespace OpenRCT2::TrackDesignSceneryElementFlags { diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index ab17d53b4eb2..a4ec9fb4ab1d 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -10,6 +10,7 @@ #pragma once #include "../Limits.h" +#include "../actions/CommandFlag.h" #include "../actions/GameActionResult.h" #include "../core/EnumUtils.hpp" #include "../object/Object.h" @@ -238,7 +239,7 @@ extern RideId gTrackDesignSaveRideIndex; void TrackDesignMirror(TrackDesign& td); OpenRCT2::GameActions::Result TrackDesignPlace( - const TrackDesign& td, CommandFlags flags, bool placeScenery, Ride& ride, const CoordsXYZD& coords); + const TrackDesign& td, OpenRCT2::GameActions::CommandFlags flags, bool placeScenery, Ride& ride, const CoordsXYZD& coords); void TrackDesignPreviewRemoveGhosts(const TrackDesign& td, Ride& ride, const CoordsXYZD& coords); void TrackDesignPreviewDrawOutlines( TrackDesignState& tds, const TrackDesign& td, Ride& ride, const CoordsXYZD& coords, bool placeScenery); diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index cae70b1a07f7..9dbcdaa78dc0 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -35,6 +35,7 @@ using namespace OpenRCT2; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; static bool MapPlaceClearFunc( TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price, bool is_scenery) diff --git a/src/openrct2/world/ConstructionClearance.h b/src/openrct2/world/ConstructionClearance.h index c993f5b57b61..8b0a06b2e325 100644 --- a/src/openrct2/world/ConstructionClearance.h +++ b/src/openrct2/world/ConstructionClearance.h @@ -25,7 +25,7 @@ struct CoordsXYRangedZ; class QuarterTile; using ClearingFunction = bool (&)( - OpenRCT2::TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price); + OpenRCT2::TileElement** tile_element, const CoordsXY& coords, OpenRCT2::GameActions::CommandFlags flags, money64* price); enum { @@ -45,8 +45,9 @@ enum class CreateCrossingMode }; bool MapPlaceNonSceneryClearFunc( - OpenRCT2::TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price); -bool MapPlaceSceneryClearFunc(OpenRCT2::TileElement** tile_element, const CoordsXY& coords, CommandFlags flags, money64* price); + OpenRCT2::TileElement** tile_element, const CoordsXY& coords, OpenRCT2::GameActions::CommandFlags flags, money64* price); +bool MapPlaceSceneryClearFunc( + OpenRCT2::TileElement** tile_element, const CoordsXY& coords, OpenRCT2::GameActions::CommandFlags flags, money64* price); struct ConstructClearResult { @@ -54,8 +55,8 @@ struct ConstructClearResult }; [[nodiscard]] OpenRCT2::GameActions::Result MapCanConstructWithClearAt( - const CoordsXYRangedZ& pos, ClearingFunction clearFunc, QuarterTile quarterTile, CommandFlags flags, uint8_t slope, - CreateCrossingMode crossingMode = CreateCrossingMode::none, bool isTree = false); + const CoordsXYRangedZ& pos, ClearingFunction clearFunc, QuarterTile quarterTile, OpenRCT2::GameActions::CommandFlags flags, + uint8_t slope, CreateCrossingMode crossingMode = CreateCrossingMode::none, bool isTree = false); [[nodiscard]] OpenRCT2::GameActions::Result MapCanConstructAt(const CoordsXYRangedZ& pos, QuarterTile bl); diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 0cb8acde16b7..fa03190db0c3 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -50,6 +50,7 @@ using namespace OpenRCT2; using namespace OpenRCT2::TrackMetaData; using OpenRCT2::GameActions::CommandFlag; +using OpenRCT2::GameActions::CommandFlags; void FootpathUpdateQueueEntranceBanner(const CoordsXY& footpathPos, TileElement* tileElement); From e40eab16ee0bb46bd5e58b6f9b22f9789cfec730 Mon Sep 17 00:00:00 2001 From: Patrxgt <62941214+Patrxgt@users.noreply.github.com> Date: Fri, 12 Dec 2025 09:54:57 +0100 Subject: [PATCH 089/222] =?UTF-8?q?Add=20support=20for=20Polish=20Z=C5=82o?= =?UTF-8?q?ty=20(PLN)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/language/en-GB.txt | 1 + distribution/changelog.txt | 1 + src/openrct2/localisation/Currency.cpp | 1 + src/openrct2/localisation/CurrencyTypes.h | 1 + src/openrct2/localisation/StringIds.h | 1 + 5 files changed, 5 insertions(+) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index c63e11c73fe9..391cbca69751 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3841,3 +3841,4 @@ STR_7008 :Unknown ride type ({INT32}) STR_7009 :Receiving scripts… STR_7010 :Could not start replay, file ‘{STRING}’ doesn’t exist or isn’t valid STR_7011 :Could not start replay +STR_7012 :Polish Złoty (PLN) \ No newline at end of file diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 60f80fa338ce..035c98fd0dce 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -4,6 +4,7 @@ - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. +- Improved: [#25621] Added the Polish Złoty (PLN) to the list of available currencies. - Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. diff --git a/src/openrct2/localisation/Currency.cpp b/src/openrct2/localisation/Currency.cpp index f569a7cc9e28..d1c5b397ce76 100644 --- a/src/openrct2/localisation/Currency.cpp +++ b/src/openrct2/localisation/Currency.cpp @@ -39,6 +39,7 @@ namespace OpenRCT2 { "TWD", 1000, CurrencyAffix::prefix, u8"NT$", CurrencyAffix::prefix, "NT$", STR_NEW_TAIWAN_DOLLAR}, // New Taiwan Dollar { "CNY", 100, CurrencyAffix::prefix, u8"CN¥", CurrencyAffix::prefix, "CNY", STR_CHINESE_YUAN }, // Chinese Yuan { "HUF", 1000, CurrencyAffix::suffix, u8" Ft", CurrencyAffix::suffix, " Ft", STR_HUNGARIAN_FORINT}, // Hungarian Forint + { "PLN", 100, CurrencyAffix::suffix, u8" zł", CurrencyAffix::suffix, " zł", STR_POLISH_ZLOTY}, // Polish Złoty { "CTM", 10, CurrencyAffix::prefix, u8"Ctm", CurrencyAffix::prefix, "Ctm", STR_CUSTOM_CURRENCY }, // Customizable currency }; // clang-format on diff --git a/src/openrct2/localisation/CurrencyTypes.h b/src/openrct2/localisation/CurrencyTypes.h index fdf5d9dccacb..81990981138b 100644 --- a/src/openrct2/localisation/CurrencyTypes.h +++ b/src/openrct2/localisation/CurrencyTypes.h @@ -33,6 +33,7 @@ namespace OpenRCT2 newTaiwanDollar, // New Taiwan Dollar yuan, // Chinese Yuan forint, // Hungarian Forint + zloty, // Polish Złoty custom, // Custom currency diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 6d4dbe7f0928..07ddcc1a9639 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1405,6 +1405,7 @@ enum : StringId STR_INVALID_RIDE_TYPE = 5764, STR_CANT_EDIT_INVALID_RIDE_TYPE = 5765, STR_HUNGARIAN_FORINT = 5766, + STR_POLISH_ZLOTY = 7012, STR_MULTIPLAYER_CONNECTED_CHAT_HINT = 5782, STR_CANT_RENAME_GROUP = 5785, STR_INVALID_GROUP_NAME = 5786, From b1703040275852b988e59e244d6e36a2b90989dd Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 11:29:06 +0100 Subject: [PATCH 090/222] =?UTF-8?q?Fix=20typo=20in=20=E2=80=98remainder?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/openrct2/core/BitSet.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openrct2/core/BitSet.hpp b/src/openrct2/core/BitSet.hpp index 232aba9e7ed3..d4e81f3aa254 100644 --- a/src/openrct2/core/BitSet.hpp +++ b/src/openrct2/core/BitSet.hpp @@ -28,8 +28,8 @@ namespace OpenRCT2 template static constexpr size_t ByteAlignBits() { - const auto reminder = TNumBits % kBitsPerByte; - if constexpr (reminder == 0u) + const auto remainder = TNumBits % kBitsPerByte; + if constexpr (remainder == 0u) { return TNumBits; } From 26289d096bfb1c43281d3cb9af58bcf97c3235b9 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 11:29:35 +0100 Subject: [PATCH 091/222] Rename ByteAlignedBitSize to kByteAlignedBitSize --- src/openrct2/core/BitSet.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openrct2/core/BitSet.hpp b/src/openrct2/core/BitSet.hpp index d4e81f3aa254..fad5855e3f91 100644 --- a/src/openrct2/core/BitSet.hpp +++ b/src/openrct2/core/BitSet.hpp @@ -145,13 +145,13 @@ namespace OpenRCT2 template class BitSet { - static constexpr size_t ByteAlignedBitSize = Detail::BitSet::ByteAlignBits(); + static constexpr size_t kByteAlignedBitSize = Detail::BitSet::ByteAlignBits(); - using StorageBlockType = typename Detail::BitSet::storage_block_type_aligned::value_type; + using StorageBlockType = typename Detail::BitSet::storage_block_type_aligned::value_type; static constexpr size_t kBlockByteSize = sizeof(StorageBlockType); static constexpr size_t kBlockBitSize = kBlockByteSize * Detail::BitSet::kBitsPerByte; - static constexpr size_t kBlockCount = Detail::BitSet::ComputekBlockCount(); + static constexpr size_t kBlockCount = Detail::BitSet::ComputekBlockCount(); static constexpr size_t kCapacityBits = kBlockCount * kBlockBitSize; static constexpr StorageBlockType kBlockValueZero = StorageBlockType{ 0u }; From 5ffee91c8a45233f5efd8fbbf405a148ae09d187 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 11:41:49 +0100 Subject: [PATCH 092/222] Rename members of GameActions::Status --- src/openrct2-ui/ride/Construction.cpp | 2 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- .../windows/EditorParkEntrance.cpp | 4 +- src/openrct2-ui/windows/Footpath.cpp | 10 +-- src/openrct2-ui/windows/Guest.cpp | 4 +- src/openrct2-ui/windows/Land.cpp | 8 +- src/openrct2-ui/windows/LandRights.cpp | 4 +- src/openrct2-ui/windows/Map.cpp | 2 +- src/openrct2-ui/windows/MazeConstruction.cpp | 4 +- src/openrct2-ui/windows/NewCampaign.cpp | 2 +- src/openrct2-ui/windows/Player.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 4 +- src/openrct2-ui/windows/RideConstruction.cpp | 20 ++--- src/openrct2-ui/windows/Scenery.cpp | 44 +++++----- src/openrct2-ui/windows/Staff.cpp | 4 +- src/openrct2-ui/windows/StaffList.cpp | 4 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 14 ++-- src/openrct2-ui/windows/Water.cpp | 8 +- src/openrct2/ReplayManager.cpp | 2 +- src/openrct2/actions/BalloonPressAction.cpp | 4 +- src/openrct2/actions/BannerPlaceAction.cpp | 20 ++--- src/openrct2/actions/BannerRemoveAction.cpp | 16 ++-- .../actions/BannerSetColourAction.cpp | 10 +-- src/openrct2/actions/BannerSetNameAction.cpp | 10 +-- src/openrct2/actions/BannerSetStyleAction.cpp | 24 +++--- src/openrct2/actions/CheatSetAction.cpp | 8 +- src/openrct2/actions/ClearAction.cpp | 20 ++--- .../actions/FootpathAdditionPlaceAction.cpp | 28 +++---- .../actions/FootpathAdditionRemoveAction.cpp | 16 ++-- .../actions/FootpathLayoutPlaceAction.cpp | 20 ++--- src/openrct2/actions/FootpathPlaceAction.cpp | 28 +++---- src/openrct2/actions/FootpathRemoveAction.cpp | 12 +-- src/openrct2/actions/GameAction.cpp | 24 +++--- src/openrct2/actions/GameActionResult.h | 32 +++---- src/openrct2/actions/GameSetSpeedAction.cpp | 4 +- src/openrct2/actions/GuestSetFlagsAction.cpp | 4 +- src/openrct2/actions/GuestSetNameAction.cpp | 8 +- src/openrct2/actions/LandBuyRightsAction.cpp | 12 +-- src/openrct2/actions/LandLowerAction.cpp | 4 +- src/openrct2/actions/LandRaiseAction.cpp | 4 +- src/openrct2/actions/LandSetHeightAction.cpp | 22 ++--- src/openrct2/actions/LandSetRightsAction.cpp | 8 +- src/openrct2/actions/LandSmoothAction.cpp | 8 +- .../actions/LargeSceneryPlaceAction.cpp | 32 +++---- .../actions/LargeSceneryRemoveAction.cpp | 16 ++-- .../actions/LargeScenerySetColourAction.cpp | 18 ++-- src/openrct2/actions/MapChangeSizeAction.cpp | 4 +- src/openrct2/actions/MazePlaceTrackAction.cpp | 24 +++--- src/openrct2/actions/MazeSetTrackAction.cpp | 26 +++--- .../actions/ParkEntrancePlaceAction.cpp | 12 +-- .../actions/ParkEntranceRemoveAction.cpp | 8 +- src/openrct2/actions/ParkMarketingAction.cpp | 4 +- src/openrct2/actions/ParkSetDateAction.cpp | 6 +- .../actions/ParkSetEntranceFeeAction.cpp | 6 +- src/openrct2/actions/ParkSetLoanAction.cpp | 6 +- src/openrct2/actions/ParkSetNameAction.cpp | 2 +- .../actions/ParkSetParameterAction.cpp | 4 +- .../actions/ParkSetResearchFundingAction.cpp | 2 +- src/openrct2/actions/PeepPickupAction.cpp | 20 ++--- src/openrct2/actions/PeepSpawnPlaceAction.cpp | 10 +-- src/openrct2/actions/RideCreateAction.cpp | 14 ++-- src/openrct2/actions/RideDemolishAction.cpp | 18 ++-- .../actions/RideEntranceExitPlaceAction.cpp | 38 ++++----- .../actions/RideEntranceExitRemoveAction.cpp | 18 ++-- .../actions/RideFreezeRatingAction.cpp | 4 +- .../actions/RideSetAppearanceAction.cpp | 10 +-- .../actions/RideSetColourSchemeAction.cpp | 6 +- src/openrct2/actions/RideSetNameAction.cpp | 6 +- src/openrct2/actions/RideSetPriceAction.cpp | 12 +-- src/openrct2/actions/RideSetSettingAction.cpp | 30 +++---- src/openrct2/actions/RideSetStatusAction.cpp | 16 ++-- src/openrct2/actions/RideSetVehicleAction.cpp | 22 ++--- .../actions/ScenarioSetSettingAction.cpp | 4 +- .../actions/ScenerySetRestrictedAction.cpp | 4 +- src/openrct2/actions/SignSetNameAction.cpp | 10 +-- src/openrct2/actions/SignSetStyleAction.cpp | 16 ++-- .../actions/SmallSceneryPlaceAction.cpp | 30 +++---- .../actions/SmallSceneryRemoveAction.cpp | 14 ++-- .../actions/SmallScenerySetColourAction.cpp | 6 +- src/openrct2/actions/StaffFireAction.cpp | 10 +-- src/openrct2/actions/StaffHireNewAction.cpp | 8 +- src/openrct2/actions/StaffSetColourAction.cpp | 4 +- .../actions/StaffSetCostumeAction.cpp | 8 +- src/openrct2/actions/StaffSetNameAction.cpp | 8 +- src/openrct2/actions/StaffSetOrdersAction.cpp | 6 +- .../actions/StaffSetPatrolAreaAction.cpp | 4 +- .../actions/SurfaceSetStyleAction.cpp | 6 +- src/openrct2/actions/TileModifyAction.cpp | 4 +- src/openrct2/actions/TrackDesignAction.cpp | 22 ++--- src/openrct2/actions/TrackPlaceAction.cpp | 72 ++++++++-------- src/openrct2/actions/TrackRemoveAction.cpp | 32 +++---- .../actions/TrackSetBrakeSpeedAction.cpp | 6 +- src/openrct2/actions/WallPlaceAction.cpp | 52 ++++++------ src/openrct2/actions/WallRemoveAction.cpp | 8 +- src/openrct2/actions/WallSetColourAction.cpp | 18 ++-- src/openrct2/actions/WaterLowerAction.cpp | 4 +- src/openrct2/actions/WaterRaiseAction.cpp | 4 +- src/openrct2/actions/WaterSetHeightAction.cpp | 16 ++-- src/openrct2/entity/Peep.cpp | 10 +-- src/openrct2/entity/Staff.cpp | 2 +- src/openrct2/interface/InteractiveConsole.cpp | 2 +- src/openrct2/network/NetworkBase.cpp | 30 +++---- src/openrct2/rct12/ScenarioPatcher.cpp | 2 +- src/openrct2/ride/RideConstruction.cpp | 4 +- src/openrct2/ride/TrackDesign.cpp | 28 +++---- src/openrct2/scripting/ScriptEngine.cpp | 12 +-- src/openrct2/world/ConstructionClearance.cpp | 12 +-- src/openrct2/world/Entrance.cpp | 2 +- src/openrct2/world/Map.cpp | 8 +- src/openrct2/world/TileInspector.cpp | 84 +++++++++---------- 110 files changed, 728 insertions(+), 728 deletions(-) diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index 3a7c89a464fb..cdb8b2b5d94b 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -234,7 +234,7 @@ namespace OpenRCT2 listItem.Type, listItem.EntryIndex, colour1, colour2, getGameState().lastEntranceStyle); gameAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; const auto rideIndex = result->GetData(); auto ride = GetRide(rideIndex); diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index f0d221372c55..be6b7e6f45f7 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -288,7 +288,7 @@ namespace OpenRCT2::Ui::Windows auto action = GetClearAction(); auto result = GameActions::Query(&action, getGameState()); - auto cost = (result.Error == GameActions::Status::Ok ? result.Cost : kMoney64Undefined); + auto cost = (result.Error == GameActions::Status::ok ? result.Cost : kMoney64Undefined); if (_clearSceneryCost != cost) { _clearSceneryCost = cost; diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 884d982e7926..12f8c740e068 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -209,7 +209,7 @@ namespace OpenRCT2::Ui::Windows gameAction.SetFlags({ CommandFlag::ghost }); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { gParkEntranceGhostPosition = parkEntrancePosition; gParkEntranceGhostExists = true; @@ -232,7 +232,7 @@ namespace OpenRCT2::Ui::Windows gameAction.SetCallback( [&](const GameActions::GameAction*, const GameActions::Result* result) { _placingEntrance = false; }); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { Audio::Play3D(Audio::SoundId::placeItem, result.Position); } diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index de0a03808513..98e711b08e1e 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1276,7 +1276,7 @@ namespace OpenRCT2::Ui::Windows auto footpathPlaceAction = GameActions::FootpathPlaceAction( tile.position, tile.slope, selectedType, gFootpathSelection.Railings, kInvalidDirection, constructFlags); auto result = GameActions::Execute(&footpathPlaceAction, getGameState()); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { anySuccess = true; cost += result.Cost; @@ -1326,7 +1326,7 @@ namespace OpenRCT2::Ui::Windows { *mapPos, placement.baseZ }, placement.slope, selectedType, gFootpathSelection.Railings, kInvalidDirection, constructFlags); footpathPlaceAction.SetCallback([this](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { // Don't play sound if it is no cost to prevent multiple sounds. TODO: make this work in no money scenarios if (result->Cost != 0) @@ -1420,7 +1420,7 @@ namespace OpenRCT2::Ui::Windows footpathPlaceAction.SetCallback( [footpathLoc](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); } @@ -1432,7 +1432,7 @@ namespace OpenRCT2::Ui::Windows return; } - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { if (_footpathConstructSlope == SlopePitch::flat) { @@ -1942,7 +1942,7 @@ namespace OpenRCT2::Ui::Windows res = GameActions::Execute(&footpathPlaceAction, getGameState()); // The latter status will be returned if there is already path at the tile in question, to prevent a ghost // from glitching through the existing path. - if (res.Error == GameActions::Status::Ok || res.Error == GameActions::Status::ItemAlreadyPlaced) + if (res.Error == GameActions::Status::ok || res.Error == GameActions::Status::itemAlreadyPlaced) { succesfulTiles.emplace_back(tile); cost += res.Cost; diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 7b211c5971a0..de04ad406048 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -661,7 +661,7 @@ namespace OpenRCT2::Ui::Windows Network::GetCurrentPlayerId() }; pickupAction.SetCallback( [peepnum = number](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; auto* windowMgr = GetWindowManager(); WindowBase* wind = windowMgr->FindByNumber(WindowClass::peep, peepnum); @@ -1027,7 +1027,7 @@ namespace OpenRCT2::Ui::Windows { destCoords, tileElement->GetBaseZ() }, Network::GetCurrentPlayerId() }; pickupAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; ToolCancel(); gPickupPeepImage = ImageId(); diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index 04a3c915e8d0..d68b0b45aa58 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -356,7 +356,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectType, false); auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landSmoothAction, gameState) : GameActions::Query(&landSmoothAction, gameState); - return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } auto landRaiseAction = GameActions::LandRaiseAction( @@ -365,7 +365,7 @@ namespace OpenRCT2::Ui::Windows auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landRaiseAction, gameState) : GameActions::Query(&landRaiseAction, gameState); - return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } /** @@ -389,7 +389,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectType, true); auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landSmoothAction, gameState) : GameActions::Query(&landSmoothAction, gameState); - return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } auto landLowerAction = GameActions::LandLowerAction( @@ -398,7 +398,7 @@ namespace OpenRCT2::Ui::Windows auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landLowerAction, gameState) : GameActions::Query(&landLowerAction, gameState); - return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } /** diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index e10b49ac0ecc..a2bcb58009e9 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -536,13 +536,13 @@ namespace OpenRCT2::Ui::Windows { auto landSetRightsAction = GetLandSetAction(); auto res = GameActions::Query(&landSetRightsAction, gameState); - _landRightsCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + _landRightsCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } else { auto landBuyRightsAction = GetLandBuyAction(); auto res = GameActions::Query(&landBuyRightsAction, gameState); - _landRightsCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + _landRightsCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } } diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index be4fe990281b..b45bb8c47f45 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -484,7 +484,7 @@ namespace OpenRCT2::Ui::Windows auto gameAction = GameActions::PeepSpawnPlaceAction({ mapCoords, mapZ, static_cast(direction) }); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { Audio::Play3D(Audio::SoundId::placeItem, result.Position); } diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 129fcd27d88b..22acbb77c7f3 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -364,7 +364,7 @@ namespace OpenRCT2::Ui::Windows rideEntranceExitPlaceAction.SetCallback([=, this]( const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); @@ -429,7 +429,7 @@ namespace OpenRCT2::Ui::Windows auto action = GameActions::MazeSetTrackAction(loc, false, _currentRideIndex, mode); action.SetFlags(actionFlags); const auto res = GameActions::Execute(&action, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return; } diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 8d2c6404871f..02b7357e2fa3 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -269,7 +269,7 @@ namespace OpenRCT2::Ui::Windows auto gameAction = GameActions::ParkMarketingAction( Campaign.campaign_type, Campaign.RideId.ToUnderlying(), Campaign.no_weeks); gameAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { auto* windowMgr = Ui::GetWindowManager(); windowMgr->CloseByClass(WindowClass::newCampaign); diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index f450d6e0da7a..1a1599c25ae0 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -533,7 +533,7 @@ namespace OpenRCT2::Ui::Windows auto playerSetGroupAction = GameActions::PlayerSetGroupAction(playerId, groupId); playerSetGroupAction.SetCallback( [windowHandle](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByNumber(windowHandle.first, windowHandle.second); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 71cab9eaf1de..f45b5d7d1d42 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4483,7 +4483,7 @@ namespace OpenRCT2::Ui::Windows rideId, GameActions::RideSetAppearanceType::EntranceStyle, objIndex, 0); rideSetAppearanceAction.SetCallback( [objIndex](const GameActions::GameAction*, const GameActions::Result* res) { - if (res->Error != GameActions::Status::Ok) + if (res->Error != GameActions::Status::ok) return; getGameState().lastEntranceStyle = objIndex; }); @@ -4496,7 +4496,7 @@ namespace OpenRCT2::Ui::Windows rideId, GameActions::RideSetAppearanceType::VehicleColourScheme, dropdownIndex, 0); rideSetAppearanceAction.SetCallback( [this](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { resetVehicleIndex(); } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index ed30e2385922..d37d3924004c 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2337,7 +2337,7 @@ namespace OpenRCT2::Ui::Windows } auto res = GameActions::Execute(&trackPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { _trackPlaceCost = kMoney64Undefined; _trackPlaceErrorMessage = std::get(res.ErrorMessage); @@ -2348,7 +2348,7 @@ namespace OpenRCT2::Ui::Windows _trackPlaceErrorMessage = kStringIdNone; } - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return; } @@ -2460,7 +2460,7 @@ namespace OpenRCT2::Ui::Windows { _currentTrackBegin.x, _currentTrackBegin.y, _currentTrackBegin.z, currentDirection }); trackRemoveAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) { WindowRideConstructionUpdateActiveElements(); } @@ -2665,7 +2665,7 @@ namespace OpenRCT2::Ui::Windows rideEntranceExitPlaceAction.SetCallback( [=, this](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); @@ -2951,7 +2951,7 @@ namespace OpenRCT2::Ui::Windows static void RideConstructPlacedForwardGameActionCallback( const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) { WindowRideConstructionUpdateActiveElements(); return; @@ -2998,7 +2998,7 @@ namespace OpenRCT2::Ui::Windows static void RideConstructPlacedBackwardGameActionCallback( const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) { WindowRideConstructionUpdateActiveElements(); return; @@ -3700,7 +3700,7 @@ namespace OpenRCT2::Ui::Windows auto gameAction = GameActions::MazeSetTrackAction( CoordsXYZD{ _currentTrackBegin, 0 }, true, _currentRideIndex, GC_SET_MAZE_TRACK_BUILD); auto mazeSetTrackResult = GameActions::Execute(&gameAction, getGameState()); - if (mazeSetTrackResult.Error == GameActions::Status::Ok) + if (mazeSetTrackResult.Error == GameActions::Status::ok) { _trackPlaceCost = mazeSetTrackResult.Cost; _trackPlaceErrorMessage = kStringIdNone; @@ -3713,7 +3713,7 @@ namespace OpenRCT2::Ui::Windows gDisableErrorWindowSound = false; - if (mazeSetTrackResult.Error != GameActions::Status::Ok) + if (mazeSetTrackResult.Error != GameActions::Status::ok) { _rideConstructionState = RideConstructionState::Place; StringId errorText = std::get(mazeSetTrackResult.ErrorMessage); @@ -4762,7 +4762,7 @@ namespace OpenRCT2::Ui::Windows gameAction.SetFlags(flags); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) return kMoney64Undefined; _unkF440C5 = { trackPos, static_cast(trackDirection) }; @@ -4780,7 +4780,7 @@ namespace OpenRCT2::Ui::Windows trackPlaceAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); // This command must not be sent over the network auto res = GameActions::Execute(&trackPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) return kMoney64Undefined; int16_t zBegin{}, zEnd{}; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index c2deb740f8d4..49e852277557 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -2054,7 +2054,7 @@ namespace OpenRCT2::Ui::Windows loc, quadrant, entryIndex, primaryColour, secondaryColour, tertiaryColour); smallSceneryPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); auto res = GameActions::Execute(&smallSceneryPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) return kMoney64Undefined; const auto placementData = res.GetData(); @@ -2088,7 +2088,7 @@ namespace OpenRCT2::Ui::Windows auto footpathAdditionPlaceAction = GameActions::FootpathAdditionPlaceAction(loc, entryIndex); footpathAdditionPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); footpathAdditionPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) { return; } @@ -2096,7 +2096,7 @@ namespace OpenRCT2::Ui::Windows gSceneryGhostType |= SCENERY_GHOST_FLAG_1; }); auto res = GameActions::Execute(&footpathAdditionPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) return kMoney64Undefined; return res.Cost; @@ -2113,7 +2113,7 @@ namespace OpenRCT2::Ui::Windows entryIndex, loc, edge, primaryColour, secondaryColour, tertiaryColour); wallPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); wallPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; const auto placementData = result->GetData(); @@ -2124,7 +2124,7 @@ namespace OpenRCT2::Ui::Windows }); auto res = GameActions::Execute(&wallPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) return kMoney64Undefined; return res.Cost; @@ -2141,7 +2141,7 @@ namespace OpenRCT2::Ui::Windows loc, entryIndex, primaryColour, secondaryColour, tertiaryColour); sceneryPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); auto res = GameActions::Execute(&sceneryPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) return kMoney64Undefined; const auto placementData = res.GetData(); @@ -2173,7 +2173,7 @@ namespace OpenRCT2::Ui::Windows auto bannerPlaceAction = GameActions::BannerPlaceAction(loc, entryIndex, primaryColour); bannerPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); auto res = GameActions::Execute(&bannerPlaceAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) return kMoney64Undefined; gSceneryGhostPosition = loc; @@ -2965,7 +2965,7 @@ namespace OpenRCT2::Ui::Windows zAttemptRange = 20; } - auto success = GameActions::Status::Unknown; + auto success = GameActions::Status::unknown; // Try find a valid z coordinate for (; zAttemptRange != 0; zAttemptRange--) { @@ -2976,12 +2976,12 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Query(&smallSceneryPlaceAction, gameState); success = res.Error; - if (res.Error == GameActions::Status::Ok) + if (res.Error == GameActions::Status::ok) { break; } - if (res.Error == GameActions::Status::InsufficientFunds) + if (res.Error == GameActions::Status::insufficientFunds) { break; } @@ -2992,7 +2992,7 @@ namespace OpenRCT2::Ui::Windows } // Actually place - if (success == GameActions::Status::Ok || ((q + 1 == quantity) && forceError)) + if (success == GameActions::Status::ok || ((q + 1 == quantity) && forceError)) { auto smallSceneryPlaceAction = GameActions::SmallSceneryPlaceAction( { cur_grid_x, cur_grid_y, gSceneryPlaceZ, gSceneryPlaceRotation }, quadrant, selectedScenery, @@ -3000,7 +3000,7 @@ namespace OpenRCT2::Ui::Windows smallSceneryPlaceAction.SetCallback( [=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { Audio::Play3D(Audio::SoundId::placeItem, result->Position); } @@ -3008,12 +3008,12 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Execute(&smallSceneryPlaceAction, gameState); - if (res.Error == GameActions::Status::Ok) + if (res.Error == GameActions::Status::ok) { forceError = false; } - if (res.Error == GameActions::Status::InsufficientFunds) + if (res.Error == GameActions::Status::insufficientFunds) { break; } @@ -3034,7 +3034,7 @@ namespace OpenRCT2::Ui::Windows auto footpathAdditionPlaceAction = GameActions::FootpathAdditionPlaceAction({ gridPos, z }, selectedScenery); footpathAdditionPlaceAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) { return; } @@ -3092,7 +3092,7 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Query(&wallPlaceAction, gameState); - if (res.Error == GameActions::Status::Ok) + if (res.Error == GameActions::Status::ok) { break; } @@ -3184,7 +3184,7 @@ namespace OpenRCT2::Ui::Windows wallPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); auto result = GameActions::Execute(&wallPlaceAction, gameState); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { const auto placementData = result.GetData(); _provisionalTiles.push_back({ CoordsXYZD(x, y, gSceneryPlaceZ, _startEdge), placementData.BaseHeight }); @@ -3233,7 +3233,7 @@ namespace OpenRCT2::Ui::Windows auto z = gSceneryPlaceZ > 0 ? gSceneryPlaceZ : TileElementHeight(_dragStartPos); Audio::Play3D(Audio::SoundId::error, { _dragStartPos, z }); - if (_lastProvisionalError.Error != GameActions::Status::Ok) + if (_lastProvisionalError.Error != GameActions::Status::ok) { auto windowManager = Ui::GetWindowManager(); windowManager->ShowError( @@ -3255,7 +3255,7 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto result = GameActions::Execute(&wallPlaceAction, gameState); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { anySuccessful = true; lastLocation = result.Position; @@ -3294,7 +3294,7 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Query(&sceneryPlaceAction, gameState); - if (res.Error == GameActions::Status::Ok) + if (res.Error == GameActions::Status::ok) { break; } @@ -3318,7 +3318,7 @@ namespace OpenRCT2::Ui::Windows auto sceneryPlaceAction = GameActions::LargeSceneryPlaceAction( loc, selectedScenery, _sceneryPrimaryColour, _scenerySecondaryColour, _sceneryTertiaryColour); sceneryPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { Audio::Play3D(Audio::SoundId::placeItem, result->Position); } @@ -3345,7 +3345,7 @@ namespace OpenRCT2::Ui::Windows auto primaryColour = _sceneryPrimaryColour; auto bannerPlaceAction = GameActions::BannerPlaceAction(loc, selectedScenery, primaryColour); bannerPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { auto data = result->GetData(); Audio::Play3D(Audio::SoundId::placeItem, result->Position); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 450ca1555019..310336f241e0 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -388,7 +388,7 @@ namespace OpenRCT2::Ui::Windows Network::GetCurrentPlayerId() }; pickupAction.SetCallback( [peepnum = number](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; auto* windowMgr = GetWindowManager(); @@ -719,7 +719,7 @@ namespace OpenRCT2::Ui::Windows { destCoords, tileElement->GetBaseZ() }, Network::GetCurrentPlayerId() }; pickupAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; ToolCancel(); gPickupPeepImage = ImageId(); diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index ae05ddd7c25d..bafd32089a2d 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -546,7 +546,7 @@ namespace OpenRCT2::Ui::Windows auto hireStaffAction = GameActions::StaffHireNewAction(autoPosition, staffType, costume, staffOrders); hireStaffAction.SetCallback([=](const GameActions::GameAction*, const GameActions::Result* res) -> void { - if (res->Error != GameActions::Status::Ok) + if (res->Error != GameActions::Status::ok) return; auto actionResult = res->GetData(); @@ -564,7 +564,7 @@ namespace OpenRCT2::Ui::Windows Network::GetCurrentPlayerId() }; pickupAction.SetCallback( [staffId = staff->Id](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) return; auto* staff2 = getGameState().entities.GetEntity(staffId); diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 08c4278ed95d..74aa3d24b0f4 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -222,13 +222,13 @@ namespace OpenRCT2::Ui::Windows CoordsXYZD ghostTrackLoc = trackLoc; auto res = FindValidTrackDesignPlaceHeight(ghostTrackLoc, { CommandFlag::noSpend, CommandFlag::ghost }); - if (res.Error == GameActions::Status::Ok) + if (res.Error == GameActions::Status::ok) { // Valid location found. Place the ghost at the location. auto tdAction = GameActions::TrackDesignAction(ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) { - if (result->Error == GameActions::Status::Ok) + if (result->Error == GameActions::Status::ok) { _placementGhostRideId = result->GetData(); _placementGhostLoc = ghostTrackLoc; @@ -236,7 +236,7 @@ namespace OpenRCT2::Ui::Windows } }); res = GameActions::Execute(&tdAction, getGameState()); - cost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + cost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; VirtualFloorSetHeight(ghostTrackLoc.z); } @@ -284,7 +284,7 @@ namespace OpenRCT2::Ui::Windows // Try increasing Z until a feasible placement is found CoordsXYZ trackLoc = { mapCoords, maybeMapZ.value() }; auto res = FindValidTrackDesignPlaceHeight(trackLoc, {}); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { // Unable to build track Audio::Play3D(Audio::SoundId::error, trackLoc); @@ -299,7 +299,7 @@ namespace OpenRCT2::Ui::Windows auto tdAction = GameActions::TrackDesignAction( { trackLoc, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetCallback([&, trackLoc](const GameActions::GameAction*, const GameActions::Result* result) { - if (result->Error != GameActions::Status::Ok) + if (result->Error != GameActions::Status::ok) { Audio::Play3D(Audio::SoundId::error, result->Position); _placingTrackDesign = false; @@ -403,7 +403,7 @@ namespace OpenRCT2::Ui::Windows { _placementGhostLoc }, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); auto res = GameActions::Execute(&tdAction, getGameState()); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { _hasPlacementGhost = false; } @@ -753,7 +753,7 @@ namespace OpenRCT2::Ui::Windows // If successful don't keep trying. // If failure due to no money then increasing height only makes problem worse - if (res.Error == GameActions::Status::Ok || res.Error == GameActions::Status::InsufficientFunds) + if (res.Error == GameActions::Status::ok || res.Error == GameActions::Status::insufficientFunds) { return res; } diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index e28ee615e480..b87921134bfd 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -308,10 +308,10 @@ namespace OpenRCT2::Ui::Windows { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }); auto res = GameActions::Query(&waterLowerAction, gameState); - money64 lowerCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + money64 lowerCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; res = GameActions::Query(&waterRaiseAction, gameState); - money64 raiseCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + money64 raiseCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; if (_waterToolRaiseCost != raiseCost || _waterToolLowerCost != lowerCost) { @@ -398,10 +398,10 @@ namespace OpenRCT2::Ui::Windows { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }); auto res = GameActions::Query(&waterLowerAction, gameState); - money64 lowerCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + money64 lowerCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; res = GameActions::Query(&waterRaiseAction, gameState); - money64 raiseCost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + money64 raiseCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; if (_waterToolRaiseCost != raiseCost || _waterToolLowerCost != lowerCost) { diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index 3e38a0635061..b51cc2645e6b 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -864,7 +864,7 @@ namespace OpenRCT2 action->SetFlags(action->GetFlags().with(CommandFlag::replay)); GameActions::Result result = GameActions::Execute(action, gameState); - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { isPositionValid = true; } diff --git a/src/openrct2/actions/BalloonPressAction.cpp b/src/openrct2/actions/BalloonPressAction.cpp index f3562fb95687..7065ca4c9640 100644 --- a/src/openrct2/actions/BalloonPressAction.cpp +++ b/src/openrct2/actions/BalloonPressAction.cpp @@ -44,7 +44,7 @@ namespace OpenRCT2::GameActions if (balloon == nullptr) { LOG_ERROR("Balloon not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_BALLOON_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_BALLOON_NOT_FOUND); } return Result(); } @@ -55,7 +55,7 @@ namespace OpenRCT2::GameActions if (balloon == nullptr) { LOG_ERROR("Balloon not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_BALLOON_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_BALLOON_NOT_FOUND); } balloon->Press(); diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 1f345bd09964..3236e41ece6e 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -62,45 +62,45 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (!MapCheckCapacityAndReorganise(_loc)) { LOG_ERROR("No free map elements."); - return Result(Status::NoFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } auto pathElement = GetValidPathElement(); if (pathElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BE_BUILT_ACROSS_PATHS); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BE_BUILT_ACROSS_PATHS); } if (!MapCanBuildAt(_loc)) { - return Result(Status::NotOwned, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } auto baseHeight = _loc.z + kPathHeightStep; BannerElement* existingBannerElement = MapGetBannerElementAt({ _loc.x, _loc.y, baseHeight }, _loc.direction); if (existingBannerElement != nullptr) { - return Result(Status::ItemAlreadyPlaced, STR_CANT_POSITION_THIS_HERE, STR_BANNER_SIGN_IN_THE_WAY); + return Result(Status::itemAlreadyPlaced, STR_CANT_POSITION_THIS_HERE, STR_BANNER_SIGN_IN_THE_WAY); } if (HasReachedBannerLimit()) { LOG_ERROR("No free banners available"); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } auto* bannerEntry = OpenRCT2::ObjectManager::GetObjectEntry(_bannerType); if (bannerEntry == nullptr) { LOG_ERROR("Banner entry not found for bannerType %u", _bannerType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } res.Cost = bannerEntry->price; res.SetData(BannerPlaceActionResult{}); @@ -120,21 +120,21 @@ namespace OpenRCT2::GameActions if (!MapCheckCapacityAndReorganise(_loc)) { LOG_ERROR("No free map elements."); - return Result(Status::NoFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } auto* bannerEntry = OpenRCT2::ObjectManager::GetObjectEntry(_bannerType); if (bannerEntry == nullptr) { LOG_ERROR("Banner entry not found for bannerType %u", _bannerType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } auto banner = CreateBanner(); if (banner == nullptr) { LOG_ERROR("No free banners available"); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } banner->flags = {}; banner->text = {}; diff --git a/src/openrct2/actions/BannerRemoveAction.cpp b/src/openrct2/actions/BannerRemoveAction.cpp index 6c6c7cb3be7b..79257169f691 100644 --- a/src/openrct2/actions/BannerRemoveAction.cpp +++ b/src/openrct2/actions/BannerRemoveAction.cpp @@ -55,11 +55,11 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } if (!MapCanBuildAt({ _loc.x, _loc.y, _loc.z - 16 })) { - return Result(Status::NotOwned, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); } BannerElement* bannerElement = GetBannerElementAt(); @@ -67,21 +67,21 @@ namespace OpenRCT2::GameActions { LOG_ERROR( "Invalid banner location, x = %d, y = %d, z = %d, direction = %d", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto bannerIndex = bannerElement->GetIndex(); if (bannerIndex == BannerIndex::GetNull()) { LOG_ERROR("Invalid banner index %u", bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto banner = bannerElement->GetBanner(); if (banner == nullptr) { LOG_ERROR("Invalid banner index %u", bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto* bannerEntry = ObjectManager::GetObjectEntry(banner->type); @@ -107,21 +107,21 @@ namespace OpenRCT2::GameActions { LOG_ERROR( "Invalid banner location, x = %d, y = %d, z = %d, direction = %d", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto bannerIndex = bannerElement->GetIndex(); if (bannerIndex == BannerIndex::GetNull()) { LOG_ERROR("Invalid banner index %u", bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto banner = bannerElement->GetBanner(); if (banner == nullptr) { LOG_ERROR("Invalid banner index %u", bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto* bannerEntry = ObjectManager::GetObjectEntry(banner->type); diff --git a/src/openrct2/actions/BannerSetColourAction.cpp b/src/openrct2/actions/BannerSetColourAction.cpp index 1b8348513d68..b53a20fbbaed 100644 --- a/src/openrct2/actions/BannerSetColourAction.cpp +++ b/src/openrct2/actions/BannerSetColourAction.cpp @@ -66,18 +66,18 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { LOG_ERROR("Invalid x / y coordinates: x = %d, y = %d", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); } if (_primaryColour > 31) { LOG_ERROR("Invalid primary colour %u", _primaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } if (!MapCanBuildAt({ _loc.x, _loc.y, _loc.z - 16 })) { - return Result(Status::NotOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); } auto bannerElement = MapGetBannerElementAt(_loc, _loc.direction); @@ -85,7 +85,7 @@ namespace OpenRCT2::GameActions if (bannerElement == nullptr) { LOG_ERROR("No banner at x = %d, y = %d, z = %d, direction = %u", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } auto index = bannerElement->GetIndex(); @@ -93,7 +93,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Invalid banner index %u", index); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } if (isExecuting) diff --git a/src/openrct2/actions/BannerSetNameAction.cpp b/src/openrct2/actions/BannerSetNameAction.cpp index e2252acf2c66..ea0f33b072b6 100644 --- a/src/openrct2/actions/BannerSetNameAction.cpp +++ b/src/openrct2/actions/BannerSetNameAction.cpp @@ -51,7 +51,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } TileElement* tileElement = BannerGetTileElement(_bannerIndex); @@ -59,7 +59,7 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("Banner tile element not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } BannerElement* bannerElement = tileElement->AsBanner(); @@ -67,11 +67,11 @@ namespace OpenRCT2::GameActions if (!LocationValid(loc)) { - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_OFF_EDGE_OF_MAP); } if (!MapCanBuildAt({ loc.x, loc.y, loc.z - 16 })) { - return Result(Status::NotOwned, STR_CANT_RENAME_BANNER, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_RENAME_BANNER, STR_LAND_NOT_OWNED_BY_PARK); } return Result(); @@ -83,7 +83,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } banner->text = _name; diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index 1101da6b14bf..83b10a3a5d68 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -61,7 +61,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, errorTitle, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, errorTitle, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } res.Expenditure = ExpenditureType::landscaping; @@ -73,7 +73,7 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("Banner tile element not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, errorTitle, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, errorTitle, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } BannerElement* bannerElement = tileElement->AsBanner(); @@ -81,11 +81,11 @@ namespace OpenRCT2::GameActions if (!LocationValid(loc)) { - return Result(Status::InvalidParameters, errorTitle, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, errorTitle, STR_OFF_EDGE_OF_MAP); } if (!MapCanBuildAt({ loc.x, loc.y, loc.z - 16 })) { - return Result(Status::NotOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); } switch (_type) @@ -94,7 +94,7 @@ namespace OpenRCT2::GameActions if (_parameter > COLOUR_COUNT) { LOG_ERROR("Invalid primary colour %u", _parameter); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } break; @@ -102,19 +102,19 @@ namespace OpenRCT2::GameActions if (_parameter > 13) { LOG_ERROR("Invalid text colour %u", _parameter); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } break; case BannerSetStyleType::NoEntry: if (tileElement->AsBanner() == nullptr) { LOG_ERROR("Tile element was not a banner."); - return Result(Status::Unknown, STR_CANT_RENAME_BANNER, kStringIdNone); + return Result(Status::unknown, STR_CANT_RENAME_BANNER, kStringIdNone); } break; default: LOG_ERROR("Invalid banner style type %u", _type); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_VALUE_OUT_OF_RANGE); } return res; } @@ -127,7 +127,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } res.Expenditure = ExpenditureType::landscaping; @@ -139,7 +139,7 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("Banner tile element not found for bannerIndex &u", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } switch (_type) @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions if (bannerElement == nullptr) { LOG_ERROR("Tile element was not a banner."); - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } banner->flags.set(BannerFlag::noEntry, (_parameter != 0)); @@ -170,7 +170,7 @@ namespace OpenRCT2::GameActions } default: LOG_ERROR("Invalid banner style type %u", _type); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_VALUE_OUT_OF_RANGE); } auto intent = Intent(INTENT_ACTION_UPDATE_BANNER); diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 5c59ce52e6b9..80083120e69d 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -79,7 +79,7 @@ namespace OpenRCT2::GameActions if (static_cast(_cheatType) >= static_cast(CheatType::count)) { LOG_ERROR("Invalid cheat type %u", _cheatType); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } ParametersRange validRange = GetParameterRange(static_cast(_cheatType.id)); @@ -89,14 +89,14 @@ namespace OpenRCT2::GameActions LOG_ERROR( "The first cheat parameter is out of range. Value = %d, min = %d, max = %d", _param1, validRange.first.first, validRange.first.second); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } if (_param2 < validRange.second.first || _param2 > validRange.second.second) { LOG_ERROR( "The second cheat parameter is out of range. Value = %d, min = %d, max = %d", _param2, validRange.second.first, validRange.second.second); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); @@ -274,7 +274,7 @@ namespace OpenRCT2::GameActions default: { LOG_ERROR("Invalid cheat type %d", _cheatType.id); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } } diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index f789175d4d34..fce603a33def 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -80,7 +80,7 @@ namespace OpenRCT2::GameActions auto result = CreateResult(); auto noValidTiles = true; - auto error = Status::Ok; + auto error = Status::ok; StringId errorMessage = kStringIdNone; money64 totalCost = 0; @@ -100,7 +100,7 @@ namespace OpenRCT2::GameActions } else { - error = Status::NotOwned; + error = Status::notOwned; errorMessage = STR_LAND_NOT_OWNED_BY_PARK; } } @@ -149,12 +149,12 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&footpathRemoveAction, gameState) : QueryNested(&footpathRemoveAction, gameState); - if (res.Error == Status::Ok) + if (res.Error == Status::ok) { totalCost += res.Cost; tileEdited = executing; } - else if (res.Error == Status::InsufficientFunds) + else if (res.Error == Status::insufficientFunds) { totalCost += res.Cost; } @@ -171,12 +171,12 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&removeSceneryAction, gameState) : QueryNested(&removeSceneryAction, gameState); - if (res.Error == Status::Ok) + if (res.Error == Status::ok) { totalCost += res.Cost; tileEdited = executing; } - else if (res.Error == Status::InsufficientFunds) + else if (res.Error == Status::insufficientFunds) { totalCost += res.Cost; } @@ -192,12 +192,12 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&wallRemoveAction, gameState) : QueryNested(&wallRemoveAction, gameState); - if (res.Error == Status::Ok) + if (res.Error == Status::ok) { totalCost += res.Cost; tileEdited = executing; } - else if (res.Error == Status::InsufficientFunds) + else if (res.Error == Status::insufficientFunds) { totalCost += res.Cost; } @@ -214,12 +214,12 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&removeSceneryAction, gameState) : QueryNested(&removeSceneryAction, gameState); - if (res.Error == Status::Ok) + if (res.Error == Status::ok) { totalCost += res.Cost; tileEdited = executing; } - else if (res.Error == Status::InsufficientFunds) + else if (res.Error == Status::insufficientFunds) { totalCost += res.Cost; } diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 63f550c7d177..49524ebe9116 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -58,36 +58,36 @@ namespace OpenRCT2::GameActions res.Position = _loc; if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } if (_loc.z < kFootpathMinHeight) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_LOW); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_LOW); } if (_loc.z > kFootpathMaxHeight) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_HIGH); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_HIGH); } auto tileElement = MapGetFootpathElement(_loc); if (tileElement == nullptr) { LOG_ERROR("No path element at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); } auto pathElement = tileElement->AsPath(); if (pathElement->IsLevelCrossing(_loc)) { return Result( - Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CANNOT_BUILD_PATH_ADDITIONS_ON_LEVEL_CROSSINGS); + Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CANNOT_BUILD_PATH_ADDITIONS_ON_LEVEL_CROSSINGS); } // No change @@ -101,29 +101,29 @@ namespace OpenRCT2::GameActions if (pathAdditionEntry == nullptr) { LOG_ERROR("Unknown footpath addition entry for entryIndex %d", _entryIndex); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } uint16_t sceneryFlags = pathAdditionEntry->flags; if ((sceneryFlags & PATH_ADDITION_FLAG_DONT_ALLOW_ON_SLOPE) && pathElement->IsSloped()) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_THIS_ON_SLOPED_FOOTPATH); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_THIS_ON_SLOPED_FOOTPATH); } if ((sceneryFlags & PATH_ADDITION_FLAG_DONT_ALLOW_ON_QUEUE) && pathElement->IsQueue()) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CANNOT_PLACE_THESE_ON_QUEUE_LINE_AREA); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CANNOT_PLACE_THESE_ON_QUEUE_LINE_AREA); } if (!(sceneryFlags & (PATH_ADDITION_FLAG_JUMPING_FOUNTAIN_WATER | PATH_ADDITION_FLAG_JUMPING_FOUNTAIN_SNOW)) && (pathElement->GetEdges()) == 0x0F) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BE_PLACED_ON_PATH_EDGES); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BE_PLACED_ON_PATH_EDGES); } if ((sceneryFlags & PATH_ADDITION_FLAG_IS_QUEUE_SCREEN) && !pathElement->IsQueue()) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_PLACE_THESE_ON_QUEUE_AREA); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_PLACE_THESE_ON_QUEUE_AREA); } res.Cost = pathAdditionEntry->price; @@ -134,7 +134,7 @@ namespace OpenRCT2::GameActions // Check if there is something on the path already if (pathElement->HasAddition()) { - return Result(Status::ItemAlreadyPlaced, STR_CANT_POSITION_THIS_HERE, kStringIdNone); + return Result(Status::itemAlreadyPlaced, STR_CANT_POSITION_THIS_HERE, kStringIdNone); } } return res; @@ -152,7 +152,7 @@ namespace OpenRCT2::GameActions if (pathElement == nullptr) { LOG_ERROR("No path element at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); } // No change @@ -166,7 +166,7 @@ namespace OpenRCT2::GameActions if (pathAdditionEntry == nullptr) { LOG_ERROR("Unknown footpath addition entry for entryIndex %d", _entryIndex); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } res.Cost = pathAdditionEntry->price; diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index 8c39423832e3..e063069defc8 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -50,42 +50,42 @@ namespace OpenRCT2::GameActions { if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { - return Result(Status::Disallowed, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); } if (_loc.z < kFootpathMinHeight) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_TOO_LOW); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_TOO_LOW); } if (_loc.z > kFootpathMaxHeight) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_TOO_HIGH); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_TOO_HIGH); } auto tileElement = MapGetFootpathElement(_loc); if (tileElement == nullptr) { LOG_ERROR("No path element at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); } auto pathElement = tileElement->AsPath(); if (pathElement == nullptr) { LOG_ERROR("No path element at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); } if (!pathElement->AdditionIsGhost() && (GetFlags().has(CommandFlag::ghost))) { LOG_WARNING("Tried to remove non ghost during ghost removal."); - return Result(Status::Disallowed, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::disallowed, STR_CANT_REMOVE_THIS, kStringIdNone); } auto res = Result(); res.Position = _loc; @@ -104,7 +104,7 @@ namespace OpenRCT2::GameActions if (pathElement == nullptr) { LOG_ERROR("No path element at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_ERR_PATH_ELEMENT_NOT_FOUND); } pathElement->SetAddition(0); diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 5df4fec2135b..83c71d6d8f20 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -76,22 +76,22 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc) || MapIsEdge(_loc)) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { - return Result(Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } if (_loc.z < kFootpathMinHeight) { - return Result(Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_LOW); + return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_LOW); } if (_loc.z > kFootpathMaxHeight) { - return Result(Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); + return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } return ElementInsertQuery(std::move(res)); @@ -124,7 +124,7 @@ namespace OpenRCT2::GameActions if (!MapCheckCapacityAndReorganise(_loc)) { return Result( - Status::NoFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + Status::noFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } res.Cost = 12.00_GBP; @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::Ok) + if (!entrancePath && canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; @@ -168,14 +168,14 @@ namespace OpenRCT2::GameActions if (!getGameState().cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) { - return Result(Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; @@ -226,7 +226,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::Ok) + if (!entrancePath && canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; @@ -240,7 +240,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 40826cdba1c6..c00545f63ecd 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -85,33 +85,33 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc) || MapIsEdge(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_OFF_EDGE_OF_MAP); } if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { - return Result(Status::Disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_LAND_NOT_OWNED_BY_PARK); } if (_slope.type == FootpathSlopeType::irregular || _slope.type == FootpathSlopeType::raise) { - return Result(Status::Disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_LAND_SLOPE_UNSUITABLE); + return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_LAND_SLOPE_UNSUITABLE); } if (_loc.z < kFootpathMinHeight) { - return Result(Status::Disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_TOO_LOW); + return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_TOO_LOW); } if (_loc.z > kFootpathMaxHeight) { - return Result(Status::Disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_TOO_HIGH); + return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_TOO_HIGH); } if (_direction != kInvalidDirection && !DirectionValid(_direction)) { LOG_ERROR("Direction invalid. direction = %u", _direction); - return Result(Status::InvalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } auto intent = Intent(INTENT_ACTION_REMOVE_PROVISIONAL_FOOTPATH); @@ -215,7 +215,7 @@ namespace OpenRCT2::GameActions { if (_constructFlags & PathConstructFlag::IsQueue && pathElement->IsLevelCrossing(_loc)) { - return Result(Status::Disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_QUEUE_PATHS_CANNOT_BE_USED_FOR_LEVEL_CROSSINGS); + return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_QUEUE_PATHS_CANNOT_BE_USED_FOR_LEVEL_CROSSINGS); } if (!IsSameAsPathElement(pathElement)) @@ -225,7 +225,7 @@ namespace OpenRCT2::GameActions if (GetFlags().has(CommandFlag::ghost) && !pathElement->IsGhost()) { - return Result(Status::ItemAlreadyPlaced, STR_CANT_BUILD_FOOTPATH_HERE, kStringIdNone); + return Result(Status::itemAlreadyPlaced, STR_CANT_BUILD_FOOTPATH_HERE, kStringIdNone); } return res; } @@ -289,7 +289,7 @@ namespace OpenRCT2::GameActions if (!MapCheckCapacityAndReorganise(_loc)) { - return Result(Status::NoFreeElements, STR_CANT_BUILD_FOOTPATH_HERE, kStringIdNone); + return Result(Status::noFreeElements, STR_CANT_BUILD_FOOTPATH_HERE, kStringIdNone); } res.Cost = 12.00_GBP; @@ -321,7 +321,7 @@ namespace OpenRCT2::GameActions : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::Ok) + if (!entrancePath && canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_CANT_BUILD_FOOTPATH_HERE; return canBuild; @@ -333,13 +333,13 @@ namespace OpenRCT2::GameActions gFootpathGroundFlags = clearanceData.GroundFlags; if (!getGameState().cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) { - return Result(Status::Disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; @@ -390,7 +390,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::Ok) + if (!entrancePath && canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_CANT_BUILD_FOOTPATH_HERE; return canBuild; @@ -403,7 +403,7 @@ namespace OpenRCT2::GameActions auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 44f5d71ac831..bee2bc9d69c9 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -57,18 +57,18 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_OFF_EDGE_OF_MAP); } if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { - return Result(Status::NotOwned, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_LAND_NOT_OWNED_BY_PARK); } TileElement* footpathElement = GetFootpathElement(); if (footpathElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); } res.Cost = GetRefundPrice(footpathElement); @@ -94,7 +94,7 @@ namespace OpenRCT2::GameActions { FootpathQueueChainReset(); auto bannerRes = RemoveBannersAtElement(gameState, _loc, footpathElement); - if (bannerRes.Error == Status::Ok) + if (bannerRes.Error == Status::ok) { res.Cost += bannerRes.Cost; } @@ -116,7 +116,7 @@ namespace OpenRCT2::GameActions } else { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, kStringIdNone); } res.Cost += GetRefundPrice(footpathElement); @@ -174,7 +174,7 @@ namespace OpenRCT2::GameActions auto res = ExecuteNested(&bannerRemoveAction, gameState); // Ghost removal is free - if (res.Error == Status::Ok && !isGhost) + if (res.Error == Status::ok && !isGhost) { result.Cost += res.Cost; } diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index 5a5efa48d768..bfa023f17810 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions Guard::Assert(action != nullptr); Result result = Execute(action, getGameState()); - if (result.Error == Status::Ok && Network::GetMode() == Network::Mode::server) + if (result.Error == Status::ok && Network::GetMode() == Network::Mode::server) { // Relay this action to all other clients. Network::SendGameAction(action); @@ -197,7 +197,7 @@ namespace OpenRCT2::GameActions { Result result = Result(); - result.Error = Status::GamePaused; + result.Error = Status::gamePaused; result.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; result.ErrorMessage = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; @@ -206,11 +206,11 @@ namespace OpenRCT2::GameActions auto result = action->Query(gameState); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { if (!FinanceCheckAffordability(result.Cost, action->GetFlags())) { - result.Error = Status::InsufficientFunds; + result.Error = Status::insufficientFunds; result.ErrorTitle = STR_CANT_DO_THIS; result.ErrorMessage = STR_NOT_ENOUGH_CASH_REQUIRES; Formatter(result.ErrorMessageArgs.data()).Add(result.Cost); @@ -266,7 +266,7 @@ namespace OpenRCT2::GameActions char temp[128] = {}; - if (result.Error != Status::Ok) + if (result.Error != Status::ok) { snprintf(temp, sizeof(temp), ") Failed, %u", static_cast(result.Error)); } @@ -301,7 +301,7 @@ namespace OpenRCT2::GameActions { // TODO: Introduce proper error. auto result = Result(); - result.Error = Status::GamePaused; + result.Error = Status::gamePaused; result.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; result.ErrorMessage = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; @@ -311,14 +311,14 @@ namespace OpenRCT2::GameActions Result result = QueryInternal(action, gameState, topLevel); #ifdef ENABLE_SCRIPTING - if (result.Error == Status::Ok && ((Network::GetMode() == Network::Mode::none) || flags.has(CommandFlag::networked))) + if (result.Error == Status::ok && ((Network::GetMode() == Network::Mode::none) || flags.has(CommandFlag::networked))) { auto& scriptEngine = GetContext()->GetScriptEngine(); scriptEngine.RunGameActionHooks(*action, result, false); // Script hooks may now have changed the game action result... } #endif - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { if (topLevel) { @@ -355,7 +355,7 @@ namespace OpenRCT2::GameActions // Execute the action, changing the game state result = action->Execute(gameState); #ifdef ENABLE_SCRIPTING - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { auto& scriptEngine = GetContext()->GetScriptEngine(); scriptEngine.RunGameActionHooks(*action, result, true); @@ -370,13 +370,13 @@ namespace OpenRCT2::GameActions return result; // Update money balance - if (result.Error == Status::Ok && FinanceCheckMoneyRequired(flags) && result.Cost != 0) + if (result.Error == Status::ok && FinanceCheckMoneyRequired(flags) && result.Cost != 0) { FinancePayment(result.Cost, result.Expenditure); MoneyEffect::Create(result.Cost, result.Position); } - if (!(actionFlags & Flags::ClientOnly) && result.Error == Status::Ok) + if (!(actionFlags & Flags::ClientOnly) && result.Error == Status::ok) { if (Network::GetMode() != Network::Mode::none) { @@ -446,7 +446,7 @@ namespace OpenRCT2::GameActions } } - if (result.Error != Status::Ok && shouldShowError) + if (result.Error != Status::ok && shouldShowError) { auto windowManager = Ui::GetWindowManager(); windowManager->ShowError(result.GetErrorTitle(), result.GetErrorMessage()); diff --git a/src/openrct2/actions/GameActionResult.h b/src/openrct2/actions/GameActionResult.h index f40d2b311f98..9273d01c8407 100644 --- a/src/openrct2/actions/GameActionResult.h +++ b/src/openrct2/actions/GameActionResult.h @@ -28,25 +28,25 @@ namespace OpenRCT2::GameActions */ enum class Status : uint16_t { - Ok, - InvalidParameters, - Disallowed, - GamePaused, - InsufficientFunds, - NotInEditorMode, + ok, + invalidParameters, + disallowed, + gamePaused, + insufficientFunds, + notInEditorMode, - NotOwned, - TooLow, - TooHigh, - NoClearance, - ItemAlreadyPlaced, + notOwned, + tooLow, + tooHigh, + noClearance, + itemAlreadyPlaced, - NotClosed, - Broken, + notClosed, + broken, - NoFreeElements, + noFreeElements, - Unknown = std::numeric_limits>::max(), + unknown = std::numeric_limits>::max(), }; /** @@ -57,7 +57,7 @@ namespace OpenRCT2::GameActions public: using StringVariant = std::variant; - Status Error = Status::Ok; + Status Error = Status::ok; StringVariant ErrorTitle = kStringIdNone; StringVariant ErrorMessage = kStringIdNone; std::array ErrorMessageArgs{}; diff --git a/src/openrct2/actions/GameSetSpeedAction.cpp b/src/openrct2/actions/GameSetSpeedAction.cpp index d62a8090e08b..3d385c914b7e 100644 --- a/src/openrct2/actions/GameSetSpeedAction.cpp +++ b/src/openrct2/actions/GameSetSpeedAction.cpp @@ -44,7 +44,7 @@ namespace OpenRCT2::GameActions if (!IsValidSpeed(_speed)) { LOG_ERROR("Invalid speed %u", _speed); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return res; @@ -57,7 +57,7 @@ namespace OpenRCT2::GameActions if (!IsValidSpeed(_speed)) { LOG_ERROR("Invalid speed %u", _speed); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } gGameSpeed = _speed; diff --git a/src/openrct2/actions/GuestSetFlagsAction.cpp b/src/openrct2/actions/GuestSetFlagsAction.cpp index 5183f15ee817..6d331517423c 100644 --- a/src/openrct2/actions/GuestSetFlagsAction.cpp +++ b/src/openrct2/actions/GuestSetFlagsAction.cpp @@ -47,7 +47,7 @@ namespace OpenRCT2::GameActions if (peep == nullptr) { LOG_ERROR("Guest entity not found for peepID %u", _peepId.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_CHANGE_THIS, kStringIdNone); } return Result(); } @@ -58,7 +58,7 @@ namespace OpenRCT2::GameActions if (peep == nullptr) { LOG_ERROR("Guest entity not found for peepID %u", _peepId.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_CHANGE_THIS, kStringIdNone); } peep->PeepFlags = _newFlags; diff --git a/src/openrct2/actions/GuestSetNameAction.cpp b/src/openrct2/actions/GuestSetNameAction.cpp index 6c0f622f5ae3..2e92f3f7a190 100644 --- a/src/openrct2/actions/GuestSetNameAction.cpp +++ b/src/openrct2/actions/GuestSetNameAction.cpp @@ -60,14 +60,14 @@ namespace OpenRCT2::GameActions { if (_spriteIndex.ToUnderlying() >= kMaxEntities || _spriteIndex.IsNull()) { - return Result(Status::InvalidParameters, STR_CANT_NAME_GUEST, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_NAME_GUEST, STR_ERR_VALUE_OUT_OF_RANGE); } auto guest = getGameState().entities.TryGetEntity(_spriteIndex); if (guest == nullptr) { LOG_ERROR("Guest entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_CANT_NAME_GUEST, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_NAME_GUEST, kStringIdNone); } return Result(); @@ -79,7 +79,7 @@ namespace OpenRCT2::GameActions if (guest == nullptr) { LOG_ERROR("Guest entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_CANT_NAME_GUEST, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_NAME_GUEST, kStringIdNone); } auto curName = guest->GetName(); @@ -90,7 +90,7 @@ namespace OpenRCT2::GameActions if (!guest->SetName(_name)) { - return Result(Status::Unknown, STR_CANT_NAME_GUEST, kStringIdNone); + return Result(Status::unknown, STR_CANT_NAME_GUEST, kStringIdNone); } // Easter egg functions are for guests only diff --git a/src/openrct2/actions/LandBuyRightsAction.cpp b/src/openrct2/actions/LandBuyRightsAction.cpp index c61f5bc4f910..7a58f435b84e 100644 --- a/src/openrct2/actions/LandBuyRightsAction.cpp +++ b/src/openrct2/actions/LandBuyRightsAction.cpp @@ -96,7 +96,7 @@ namespace OpenRCT2::GameActions if (!LocationValid({ x, y })) continue; auto result = MapBuyLandRightsForTile({ x, y }, isExecuting); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { res.Cost += result.Cost; } @@ -114,14 +114,14 @@ namespace OpenRCT2::GameActions if (_setting >= LandBuyRightSetting::Count) { LOG_ERROR("Invalid land buying setting %u", _setting); - return Result(Status::InvalidParameters, kErrorTitles[0], STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, kErrorTitles[0], STR_ERR_VALUE_OUT_OF_RANGE); } SurfaceElement* surfaceElement = MapGetSurfaceElementAt(loc); if (surfaceElement == nullptr) { LOG_ERROR("No surface at x = %d, y = %d", loc.x, loc.y); - return Result(Status::InvalidParameters, kErrorTitles[EnumValue(_setting)], STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, kErrorTitles[EnumValue(_setting)], STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } auto res = Result(); @@ -135,7 +135,7 @@ namespace OpenRCT2::GameActions if (gLegacyScene == LegacyScene::scenarioEditor || (surfaceElement->GetOwnership() & OWNERSHIP_AVAILABLE) == 0) { - return Result(Status::NotOwned, kErrorTitles[EnumValue(_setting)], STR_LAND_NOT_FOR_SALE); + return Result(Status::notOwned, kErrorTitles[EnumValue(_setting)], STR_LAND_NOT_FOR_SALE); } if (isExecuting) { @@ -154,7 +154,7 @@ namespace OpenRCT2::GameActions if (gLegacyScene == LegacyScene::scenarioEditor || (surfaceElement->GetOwnership() & OWNERSHIP_CONSTRUCTION_RIGHTS_AVAILABLE) == 0) { - return Result(Status::NotOwned, kErrorTitles[EnumValue(_setting)], STR_CONSTRUCTION_RIGHTS_NOT_FOR_SALE); + return Result(Status::notOwned, kErrorTitles[EnumValue(_setting)], STR_CONSTRUCTION_RIGHTS_NOT_FOR_SALE); } if (isExecuting) @@ -168,7 +168,7 @@ namespace OpenRCT2::GameActions default: LOG_ERROR("Invalid land buying setting %u", _setting); - return Result(Status::InvalidParameters, kErrorTitles[0], STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, kErrorTitles[0], STR_ERR_VALUE_OUT_OF_RANGE); } } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index 629530681912..dd4f47633169 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -127,7 +127,7 @@ namespace OpenRCT2::GameActions landSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&landSetHeightAction, gameState) : QueryNested(&landSetHeightAction, gameState); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { res.Cost += result.Cost; } @@ -141,7 +141,7 @@ namespace OpenRCT2::GameActions if (!withinOwnership) { - return Result(Status::Disallowed, STR_CANT_LOWER_LAND_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_LOWER_LAND_HERE, STR_LAND_NOT_OWNED_BY_PARK); } // Force ride construction to recheck area diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index 6d2237fd1303..ff0e5ab94016 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -131,7 +131,7 @@ namespace OpenRCT2::GameActions landSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&landSetHeightAction, gameState) : QueryNested(&landSetHeightAction, gameState); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { res.Cost += result.Cost; } @@ -145,7 +145,7 @@ namespace OpenRCT2::GameActions if (!withinOwnership) { - return Result(Status::Disallowed, STR_CANT_RAISE_LAND_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_RAISE_LAND_HERE, STR_LAND_NOT_OWNED_BY_PARK); } // Force ride construction to recheck area diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 238a6cca27f8..178c6062d733 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -62,20 +62,20 @@ namespace OpenRCT2::GameActions { if (gameState.park.flags & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES) { - return Result(Status::Disallowed, STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY, kStringIdNone); + return Result(Status::disallowed, STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY, kStringIdNone); } StringId errorMessage = CheckParameters(); if (errorMessage != kStringIdNone) { - return Result(Status::Disallowed, kStringIdNone, errorMessage); + return Result(Status::disallowed, kStringIdNone, errorMessage); } if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(_coords)) { - return Result(Status::Disallowed, STR_LAND_NOT_OWNED_BY_PARK, kStringIdNone); + return Result(Status::disallowed, STR_LAND_NOT_OWNED_BY_PARK, kStringIdNone); } } @@ -88,7 +88,7 @@ namespace OpenRCT2::GameActions TileElement* tileElement = CheckTreeObstructions(); if (tileElement != nullptr) { - auto res = Result(Status::Disallowed, kStringIdNone, kStringIdNone); + auto res = Result(Status::disallowed, kStringIdNone, kStringIdNone); MapGetObstructionErrorText(tileElement, res); return res; } @@ -102,13 +102,13 @@ namespace OpenRCT2::GameActions errorMessage = CheckRideSupports(); if (errorMessage != kStringIdNone) { - return Result(Status::Disallowed, kStringIdNone, errorMessage); + return Result(Status::disallowed, kStringIdNone, errorMessage); } } auto* surfaceElement = MapGetSurfaceElementAt(_coords); if (surfaceElement == nullptr) - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); // We need to check if there is _currently_ a level crossing on the tile. // For that, we need the old height, so we can't use the _height variable. @@ -116,13 +116,13 @@ namespace OpenRCT2::GameActions auto* pathElement = MapGetFootpathElement(oldCoords); if (pathElement != nullptr && pathElement->AsPath()->IsLevelCrossing(oldCoords)) { - return Result(Status::Disallowed, STR_REMOVE_LEVEL_CROSSING_FIRST, kStringIdNone); + return Result(Status::disallowed, STR_REMOVE_LEVEL_CROSSING_FIRST, kStringIdNone); } TileElement* tileElement = CheckFloatingStructures(reinterpret_cast(surfaceElement), _height); if (tileElement != nullptr) { - auto res = Result(Status::Disallowed, kStringIdNone, kStringIdNone); + auto res = Result(Status::disallowed, kStringIdNone, kStringIdNone); MapGetObstructionErrorText(tileElement, res); return res; } @@ -142,9 +142,9 @@ namespace OpenRCT2::GameActions auto clearResult = MapCanConstructWithClearAt( { _coords, _height * kCoordsZStep, zCorner * kCoordsZStep }, MapSetLandHeightClearFunc, { 0b1111, 0 }, {}, _style, CreateCrossingMode::none); - if (clearResult.Error != Status::Ok) + if (clearResult.Error != Status::ok) { - clearResult.Error = Status::Disallowed; + clearResult.Error = Status::disallowed; return clearResult; } } @@ -169,7 +169,7 @@ namespace OpenRCT2::GameActions auto* surfaceElement = MapGetSurfaceElementAt(_coords); if (surfaceElement == nullptr) - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); cost += GetSurfaceHeightChangeCost(surfaceElement); SetSurfaceHeight(reinterpret_cast(surfaceElement)); diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index 4b47b49ad9f3..04794357dac1 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -88,7 +88,7 @@ namespace OpenRCT2::GameActions if (!isInEditorMode() && !getGameState().cheats.sandboxMode) { - return Result(Status::NotInEditorMode, kStringIdNone, STR_LAND_NOT_FOR_SALE); + return Result(Status::notInEditorMode, kStringIdNone, STR_LAND_NOT_FOR_SALE); } // Game command modified to accept selection size @@ -99,7 +99,7 @@ namespace OpenRCT2::GameActions if (!LocationValid({ x, y })) continue; auto result = MapBuyLandRightsForTile({ x, y }, isExecuting); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { res.Cost += result.Cost; } @@ -120,7 +120,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("No surface at x = %d, y = %d", loc.x, loc.y); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } auto res = Result(); @@ -234,7 +234,7 @@ namespace OpenRCT2::GameActions } default: LOG_ERROR("Invalid setting %u to set land rights", _setting); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LandSmoothAction.cpp b/src/openrct2/actions/LandSmoothAction.cpp index 8c65e4b5bfe2..faa6ff28d910 100644 --- a/src/openrct2/actions/LandSmoothAction.cpp +++ b/src/openrct2/actions/LandSmoothAction.cpp @@ -238,7 +238,7 @@ namespace OpenRCT2::GameActions landSetHeightAction.SetFlags(GetFlags()); auto res = isExecuting ? ExecuteNested(&landSetHeightAction, gameState) : QueryNested(&landSetHeightAction, gameState); - if (res.Error == Status::Ok) + if (res.Error == Status::ok) { totalCost += res.Cost; } @@ -326,7 +326,7 @@ namespace OpenRCT2::GameActions expectedLandHeight += landChangePerTile; // change land of current tile auto result = SmoothLandTile(gameState, direction, isExecuting, nextLoc, surfaceElement); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { totalCost += result.Cost; } @@ -642,7 +642,7 @@ namespace OpenRCT2::GameActions } default: LOG_ERROR("Invalid map selection type %u", _selectionType); - return Result(Status::InvalidParameters, std::get(res.ErrorTitle), STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, std::get(res.ErrorTitle), STR_ERR_VALUE_OUT_OF_RANGE); } // switch selectionType // Raise / lower the land tool selection area @@ -659,7 +659,7 @@ namespace OpenRCT2::GameActions lowerLandAction.SetFlags(GetFlags()); result = isExecuting ? ExecuteNested(&lowerLandAction, gameState) : QueryNested(&lowerLandAction, gameState); } - if (result.Error != Status::Ok) + if (result.Error != Status::ok) { return result; } diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index d1e03c70f6b1..272c34bc021e 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -81,29 +81,29 @@ namespace OpenRCT2::GameActions if (_primaryColour >= COLOUR_COUNT) { LOG_ERROR("Invalid primary colour %u", _primaryColour); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_INVALID_COLOUR); } else if (_secondaryColour >= COLOUR_COUNT) { LOG_ERROR("Invalid secondary colour %u", _secondaryColour); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_INVALID_COLOUR); } else if (_tertiaryColour >= COLOUR_COUNT) { LOG_ERROR("Invalid tertiary colour %u", _tertiaryColour); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_INVALID_COLOUR); } else if (_sceneryType >= kMaxLargeSceneryObjects) { LOG_ERROR("Invalid sceneryType %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } auto* sceneryEntry = ObjectManager::GetObjectEntry(_sceneryType); if (sceneryEntry == nullptr) { LOG_ERROR("Large scenery entry not found for sceneryType %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } const auto totalNumTiles = sceneryEntry->tiles.size(); @@ -121,7 +121,7 @@ namespace OpenRCT2::GameActions if (HasReachedBannerLimit()) { LOG_ERROR("No free banners available"); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } } @@ -140,7 +140,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { curTile, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; @@ -154,12 +154,12 @@ namespace OpenRCT2::GameActions { if ((clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) || (clearanceData.GroundFlags & ELEMENT_IS_UNDERGROUND)) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } if (resultData.GroundFlags && !(resultData.GroundFlags & tempSceneryGroundFlags)) { return Result( - Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND); + Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND); } } @@ -167,20 +167,20 @@ namespace OpenRCT2::GameActions if (!LocationValid(curTile) || MapIsEdge(curTile)) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (gLegacyScene != LegacyScene::scenarioEditor && !MapIsLocationOwned({ curTile, zLow }) && !gameState.cheats.sandboxMode) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } } if (!CheckMapCapacity(sceneryEntry->tiles, totalNumTiles)) { LOG_ERROR("No free map elements available"); - return Result(Status::NoFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } // Force ride construction to recheck area @@ -211,13 +211,13 @@ namespace OpenRCT2::GameActions if (sceneryEntry == nullptr) { LOG_ERROR("Large scenery entry not found for sceneryType = %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } if (sceneryEntry->tiles.empty()) { LOG_ERROR("Invalid large scenery object, sceneryType = %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, kStringIdNone); } int16_t maxHeight = GetMaxSurfaceHeight(sceneryEntry->tiles); @@ -237,7 +237,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("No free banners available"); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } banner->text = {}; @@ -272,7 +272,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { curTile, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { if (banner != nullptr) { diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index 7bbd7e085d8c..adeb34819623 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -65,7 +65,7 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("No large scenery element to remove at x = %d, y = %d", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } auto* sceneryEntry = tileElement->AsLargeScenery()->GetEntry(); @@ -73,7 +73,7 @@ namespace OpenRCT2::GameActions if (sceneryEntry == nullptr) { LOG_WARNING("Scenery entry at x = %d, y = %d not removed because it is an unknown object type", _loc.x, _loc.y); - return Result(Status::Unknown, STR_CANT_REMOVE_THIS, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::unknown, STR_CANT_REMOVE_THIS, STR_UNKNOWN_OBJECT_TYPE); } auto rotatedOffsets = CoordsXYZ{ CoordsXY{ sceneryEntry->tiles[_tileIndex].offset }.Rotate(_loc.direction), @@ -94,7 +94,7 @@ namespace OpenRCT2::GameActions { if (sceneryEntry->HasFlag(LARGE_SCENERY_FLAG_IS_TREE)) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorTitle = STR_CANT_REMOVE_THIS; res.ErrorMessage = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY; return res; @@ -103,13 +103,13 @@ namespace OpenRCT2::GameActions if (!MapIsLocationOwned({ currentTile.x, currentTile.y, currentTile.z })) { - return Result(Status::NoClearance, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::noClearance, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); } } if (!LocationValid(currentTile)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } // Prevent duplicate costs when using the clear scenery tool that overlaps multiple large // scenery tile elements. @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("No large scenery element to remove at %d, y = %d", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } auto* sceneryEntry = tileElement->AsLargeScenery()->GetEntry(); @@ -151,7 +151,7 @@ namespace OpenRCT2::GameActions if (sceneryEntry == nullptr) { LOG_WARNING("Scenery entry at x = %d, y = %d not removed because it is an unknown object type", _loc.x, _loc.y); - return Result(Status::Unknown, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::unknown, STR_CANT_REMOVE_THIS, kStringIdNone); } tileElement->RemoveBannerEntry(); @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions { if (!MapIsLocationOwned({ currentTile.x, currentTile.y, currentTile.z })) { - return Result(Status::NoClearance, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::noClearance, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); } } diff --git a/src/openrct2/actions/LargeScenerySetColourAction.cpp b/src/openrct2/actions/LargeScenerySetColourAction.cpp index 104f0fb86cd7..b8510b2ac3c0 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.cpp +++ b/src/openrct2/actions/LargeScenerySetColourAction.cpp @@ -75,23 +75,23 @@ namespace OpenRCT2::GameActions if (_loc.x < 0 || _loc.y < 0 || _loc.x > mapSizeMax.x || _loc.y > mapSizeMax.y) { LOG_ERROR("Invalid x / y coordinates: x = %d, y = %d", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_VALUE_OUT_OF_RANGE); } if (_primaryColour >= COLOUR_COUNT) { LOG_ERROR("Invalid primary colour %u", _primaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } else if (_secondaryColour >= COLOUR_COUNT) { LOG_ERROR("Invalid secondary colour %u", _secondaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } else if (_tertiaryColour >= COLOUR_COUNT) { LOG_ERROR("Invalid tertiary colour %u", _tertiaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } auto largeElement = MapGetLargeScenerySegment(_loc, _tileIndex); @@ -101,7 +101,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Could not find large scenery at: x = %d, y = %d, z = %d, direction = %d, tileIndex = %u", _loc.x, _loc.y, _loc.z, _loc.direction, _tileIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } if ((GetFlags().has(CommandFlag::ghost)) && !(largeElement->IsGhost())) @@ -114,7 +114,7 @@ namespace OpenRCT2::GameActions if (sceneryEntry == nullptr) { LOG_ERROR("Scenery element doesn't have scenery entry"); - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, kStringIdNone); } // Work out the base tile coordinates (Tile with index 0) auto rotatedBaseCoordsOffset = CoordsXYZ{ CoordsXY{ sceneryEntry->tiles[_tileIndex].offset }.Rotate(_loc.direction), @@ -132,13 +132,13 @@ namespace OpenRCT2::GameActions { if (!MapIsLocationOwned(currentTile)) { - return Result(Status::NotOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); } } if (!LocationValid(currentTile)) { - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); } auto tileElement = MapGetLargeScenerySegment({ currentTile.x, currentTile.y, _loc.z, _loc.direction }, tile.index); @@ -148,7 +148,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Large scenery element not found at: x = %d, y = %d, z = %d, direction = %d", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, kStringIdNone); } if (isExecuting) { diff --git a/src/openrct2/actions/MapChangeSizeAction.cpp b/src/openrct2/actions/MapChangeSizeAction.cpp index 97249334441b..227926b02c03 100644 --- a/src/openrct2/actions/MapChangeSizeAction.cpp +++ b/src/openrct2/actions/MapChangeSizeAction.cpp @@ -47,11 +47,11 @@ namespace OpenRCT2::GameActions { if (_targetSize.x > kMaximumMapSizeTechnical || _targetSize.y > kMaximumMapSizeTechnical) { - return Result(Status::InvalidParameters, STR_CANT_INCREASE_MAP_SIZE_ANY_FURTHER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_INCREASE_MAP_SIZE_ANY_FURTHER, STR_ERR_VALUE_OUT_OF_RANGE); } if (_targetSize.x < kMinimumMapSizeTechnical || _targetSize.y < kMinimumMapSizeTechnical) { - return Result(Status::InvalidParameters, STR_CANT_DECREASE_MAP_SIZE_ANY_FURTHER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_DECREASE_MAP_SIZE_ANY_FURTHER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); } diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 83d7bc22f0f0..6c51864608ee 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -55,35 +55,35 @@ namespace OpenRCT2::GameActions res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; if ((_loc.z & 0xF) != 0) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = STR_INVALID_HEIGHT; return res; } if (!LocationValid(_loc)) { - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorMessage = STR_OFF_EDGE_OF_MAP; return res; } if (!MapIsLocationOwned(_loc) && !gameState.cheats.sandboxMode) { - res.Error = Status::NotOwned; + res.Error = Status::notOwned; res.ErrorMessage = STR_LAND_NOT_OWNED_BY_PARK; return res; } if (!MapCheckCapacityAndReorganise(_loc)) { - res.Error = Status::NoFreeElements; + res.Error = Status::noFreeElements; res.ErrorMessage = STR_TILE_ELEMENT_LIMIT_REACHED; return res; } auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = STR_INVALID_SELECTION_OF_OBJECTS; return res; } @@ -100,7 +100,7 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); if (heightDifference > rtd.Heights.MaxHeight) { - res.Error = Status::TooHigh; + res.Error = Status::tooHigh; res.ErrorMessage = STR_TOO_HIGH_FOR_SUPPORTS; return res; } @@ -109,7 +109,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; @@ -118,14 +118,14 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.GetData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorMessage = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return res; } if (clearanceData.GroundFlags & ELEMENT_IS_UNDERGROUND) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorMessage = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; return res; } @@ -134,7 +134,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr || ride->type == kRideTypeNull) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } @@ -174,7 +174,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags().with(CommandFlag::apply), kTileSlopeFlat); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 09115c9a04b0..1b2ac6fbfec7 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -89,35 +89,35 @@ namespace OpenRCT2::GameActions res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; if ((_loc.z & 0xF) != 0 && _mode == GC_SET_MAZE_TRACK_BUILD) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = STR_INVALID_HEIGHT; return res; } if (!LocationValid(_loc)) { - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorMessage = STR_OFF_EDGE_OF_MAP; return res; } if (!MapIsLocationOwned(_loc) && !gameState.cheats.sandboxMode) { - res.Error = Status::NotOwned; + res.Error = Status::notOwned; res.ErrorMessage = STR_LAND_NOT_OWNED_BY_PARK; return res; } if (!MapCheckCapacityAndReorganise(_loc)) { - res.Error = Status::NoFreeElements; + res.Error = Status::noFreeElements; res.ErrorMessage = STR_TILE_ELEMENT_LIMIT_REACHED; return res; } auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = STR_INVALID_SELECTION_OF_OBJECTS; return res; } @@ -134,7 +134,7 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); if (heightDifference > rtd.Heights.MaxHeight) { - res.Error = Status::TooHigh; + res.Error = Status::tooHigh; res.ErrorMessage = STR_TOO_HIGH_FOR_SUPPORTS; return res; } @@ -145,12 +145,12 @@ namespace OpenRCT2::GameActions { if (_mode != GC_SET_MAZE_TRACK_BUILD) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = STR_INVALID_SELECTION_OF_OBJECTS; return res; } auto constructResult = MapCanConstructAt({ _loc.ToTileStart(), baseHeight, clearanceHeight }, { 0b1111, 0 }); - if (constructResult.Error != Status::Ok) + if (constructResult.Error != Status::ok) { constructResult.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return constructResult; @@ -159,14 +159,14 @@ namespace OpenRCT2::GameActions const auto clearanceData = constructResult.GetData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorMessage = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return res; } if (clearanceData.GroundFlags & ELEMENT_IS_UNDERGROUND) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorMessage = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; return res; } @@ -175,7 +175,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr || !RideTypeIsValid(ride->type)) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } @@ -200,7 +200,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } @@ -294,7 +294,7 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("No surface found"); - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = STR_ERR_SURFACE_ELEMENT_NOT_FOUND; return res; } diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index c944a0418618..b937c8013052 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -61,7 +61,7 @@ namespace OpenRCT2::GameActions { if (!isInEditorMode() && !getGameState().cheats.sandboxMode) { - return Result(Status::NotInEditorMode, STR_CANT_BUILD_THIS_HERE, kStringIdNone); + return Result(Status::notInEditorMode, STR_CANT_BUILD_THIS_HERE, kStringIdNone); } auto res = Result(); @@ -72,17 +72,17 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc) || _loc.x <= kCoordsXYStep || _loc.y <= kCoordsXYStep || _loc.x >= mapSizeUnits.x || _loc.y >= mapSizeUnits.y) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_TOO_CLOSE_TO_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_TOO_CLOSE_TO_EDGE_OF_MAP); } if (!CheckMapCapacity(3)) { - return Result(Status::NoFreeElements, STR_CANT_BUILD_THIS_HERE, STR_ERR_LANDSCAPE_DATA_AREA_FULL); + return Result(Status::noFreeElements, STR_CANT_BUILD_THIS_HERE, STR_ERR_LANDSCAPE_DATA_AREA_FULL); } if (gameState.park.entrances.size() >= OpenRCT2::Limits::kMaxParkEntrances) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_TOO_MANY_PARK_ENTRANCES); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_TOO_MANY_PARK_ENTRANCES); } auto zLow = _loc.z; @@ -100,7 +100,7 @@ namespace OpenRCT2::GameActions entranceLoc.y += CoordsDirectionDelta[(_loc.direction + 1) & 0x3].y * 2; } - if (auto res2 = MapCanConstructAt({ entranceLoc, zLow, zHigh }, { 0b1111, 0 }); res2.Error != Status::Ok) + if (auto res2 = MapCanConstructAt({ entranceLoc, zLow, zHigh }, { 0b1111, 0 }); res2.Error != Status::ok) { res2.ErrorTitle = STR_CANT_BUILD_THIS_HERE; return res2; @@ -110,7 +110,7 @@ namespace OpenRCT2::GameActions EntranceElement* entranceElement = MapGetParkEntranceElementAt(entranceLoc, false); if (entranceElement != nullptr) { - return Result(Status::ItemAlreadyPlaced, STR_CANT_BUILD_THIS_HERE, kStringIdNone); + return Result(Status::itemAlreadyPlaced, STR_CANT_BUILD_THIS_HERE, kStringIdNone); } } diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.cpp b/src/openrct2/actions/ParkEntranceRemoveAction.cpp index e3b76272fdc7..7adf482f498a 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.cpp +++ b/src/openrct2/actions/ParkEntranceRemoveAction.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::GameActions { if (!isInEditorMode() && !getGameState().cheats.sandboxMode) { - return Result(Status::NotInEditorMode, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::notInEditorMode, STR_CANT_REMOVE_THIS, kStringIdNone); } auto res = Result(); @@ -56,12 +56,12 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } if (ParkEntranceGetIndex(_loc) == -1) { LOG_ERROR("No park entrance at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } return res; } @@ -77,7 +77,7 @@ namespace OpenRCT2::GameActions if (entranceIndex == -1) { LOG_ERROR("No park entrance at x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } auto& park = getGameState().park; diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index 44c60c2da645..8229d2ca5257 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -52,12 +52,12 @@ namespace OpenRCT2::GameActions { if (static_cast(_type) >= std::size(AdvertisingCampaignPricePerWeek) || _numWeeks >= 256) { - return Result(Status::InvalidParameters, STR_CANT_START_MARKETING_CAMPAIGN, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_START_MARKETING_CAMPAIGN, STR_ERR_VALUE_OUT_OF_RANGE); } if (getGameState().park.flags & PARK_FLAGS_FORBID_MARKETING_CAMPAIGN) { return Result( - Status::Disallowed, STR_CANT_START_MARKETING_CAMPAIGN, STR_MARKETING_CAMPAIGNS_FORBIDDEN_BY_LOCAL_AUTHORITY); + Status::disallowed, STR_CANT_START_MARKETING_CAMPAIGN, STR_MARKETING_CAMPAIGNS_FORBIDDEN_BY_LOCAL_AUTHORITY); } return CreateResult(); diff --git a/src/openrct2/actions/ParkSetDateAction.cpp b/src/openrct2/actions/ParkSetDateAction.cpp index 583ffde86661..8b3c5407aeff 100644 --- a/src/openrct2/actions/ParkSetDateAction.cpp +++ b/src/openrct2/actions/ParkSetDateAction.cpp @@ -50,17 +50,17 @@ namespace OpenRCT2::GameActions if (_year < 0 || _year >= kMaxYear) { LOG_ERROR("Invalid park date year %d", _year); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } else if (_month < 0 || _month >= MONTH_COUNT) { LOG_ERROR("Invalid park date month %d", _year); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } else if (_day < 0 || _day >= 31) { LOG_ERROR("Invalid park date day %d", _year); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp index 02f6bd76a5df..e95949dfde18 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp @@ -46,17 +46,17 @@ namespace OpenRCT2::GameActions if ((getGameState().park.flags & PARK_FLAGS_NO_MONEY) != 0) { LOG_ERROR("Can't set park entrance fee because the park has no money"); - return Result(Status::Disallowed, STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE, kStringIdNone); + return Result(Status::disallowed, STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE, kStringIdNone); } else if (!Park::EntranceFeeUnlocked()) { LOG_ERROR("Park entrance fee is locked"); - return Result(Status::Disallowed, STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE, kStringIdNone); + return Result(Status::disallowed, STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE, kStringIdNone); } else if (_fee < 0.00_GBP || _fee > kMaxEntranceFee) { LOG_ERROR("Invalid park entrance fee %d", _fee); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); diff --git a/src/openrct2/actions/ParkSetLoanAction.cpp b/src/openrct2/actions/ParkSetLoanAction.cpp index c32654d84e58..f283e6ad190a 100644 --- a/src/openrct2/actions/ParkSetLoanAction.cpp +++ b/src/openrct2/actions/ParkSetLoanAction.cpp @@ -45,18 +45,18 @@ namespace OpenRCT2::GameActions auto& park = getGameState().park; if (_value > park.bankLoan && _value > park.maxBankLoan) { - return Result(Status::Disallowed, STR_CANT_BORROW_ANY_MORE_MONEY, STR_BANK_REFUSES_TO_INCREASE_LOAN); + return Result(Status::disallowed, STR_CANT_BORROW_ANY_MORE_MONEY, STR_BANK_REFUSES_TO_INCREASE_LOAN); } if (_value < park.bankLoan && _value < 0.00_GBP) { - return Result(Status::InvalidParameters, STR_CANT_PAY_BACK_LOAN, STR_LOAN_CANT_BE_NEGATIVE); + return Result(Status::invalidParameters, STR_CANT_PAY_BACK_LOAN, STR_LOAN_CANT_BE_NEGATIVE); } // The “isPayingBack” check is needed to allow increasing the loan when the player is in debt. const auto isPayingBack = park.bankLoan > _value; const auto amountToPayBack = park.bankLoan - _value; if (isPayingBack && amountToPayBack > park.cash) { - return Result(Status::InsufficientFunds, STR_CANT_PAY_BACK_LOAN, STR_NOT_ENOUGH_CASH_AVAILABLE); + return Result(Status::insufficientFunds, STR_CANT_PAY_BACK_LOAN, STR_NOT_ENOUGH_CASH_AVAILABLE); } return Result(); } diff --git a/src/openrct2/actions/ParkSetNameAction.cpp b/src/openrct2/actions/ParkSetNameAction.cpp index ea47f52c8588..a6efd25cc899 100644 --- a/src/openrct2/actions/ParkSetNameAction.cpp +++ b/src/openrct2/actions/ParkSetNameAction.cpp @@ -48,7 +48,7 @@ namespace OpenRCT2::GameActions if (_name.empty()) { LOG_ERROR("Can't set park name to empty string"); - return Result(Status::InvalidParameters, STR_CANT_RENAME_PARK, STR_INVALID_NAME_FOR_PARK); + return Result(Status::invalidParameters, STR_CANT_RENAME_PARK, STR_INVALID_NAME_FOR_PARK); } return Result(); } diff --git a/src/openrct2/actions/ParkSetParameterAction.cpp b/src/openrct2/actions/ParkSetParameterAction.cpp index 8a6b5df475cd..cd772b7d2413 100644 --- a/src/openrct2/actions/ParkSetParameterAction.cpp +++ b/src/openrct2/actions/ParkSetParameterAction.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::GameActions if (_parameter >= ParkParameter::Count) { LOG_ERROR("Invalid park parameter %d", _parameter); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } auto res = Result(); @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions break; default: LOG_ERROR("Invalid park parameter %d", _parameter); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } auto res = Result(); diff --git a/src/openrct2/actions/ParkSetResearchFundingAction.cpp b/src/openrct2/actions/ParkSetResearchFundingAction.cpp index fd2a3e044250..7de77f035f7d 100644 --- a/src/openrct2/actions/ParkSetResearchFundingAction.cpp +++ b/src/openrct2/actions/ParkSetResearchFundingAction.cpp @@ -48,7 +48,7 @@ namespace OpenRCT2::GameActions if (_fundingAmount >= RESEARCH_FUNDING_COUNT) { LOG_ERROR("Invalid research funding amount %d", _fundingAmount); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); } diff --git a/src/openrct2/actions/PeepPickupAction.cpp b/src/openrct2/actions/PeepPickupAction.cpp index 10143d25d19f..cbeb769fd308 100644 --- a/src/openrct2/actions/PeepPickupAction.cpp +++ b/src/openrct2/actions/PeepPickupAction.cpp @@ -51,19 +51,19 @@ namespace OpenRCT2::GameActions if (_entityId.ToUnderlying() >= kMaxEntities || _entityId.IsNull()) { LOG_ERROR("Failed to pick up peep for sprite %d", _entityId); - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } if (!_loc.IsNull() && !LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } auto* const peep = getGameState().entities.TryGetEntity(_entityId); if (peep == nullptr) { LOG_ERROR("Failed to pick up peep for sprite %d", _entityId); - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } auto res = Result(); @@ -75,7 +75,7 @@ namespace OpenRCT2::GameActions res.Position = peep->GetLocation(); if (!peep->CanBePickedUp()) { - return Result(Status::Disallowed, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::disallowed, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } Peep* existing = Network::GetPickupPeep(_owner); if (existing != nullptr) @@ -100,17 +100,17 @@ namespace OpenRCT2::GameActions res.Position = _loc; if (Network::GetPickupPeep(_owner) != peep) { - return Result(Status::Unknown, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::unknown, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } - if (auto res2 = peep->Place(TileCoordsXYZ(_loc), false); res2.Error != Status::Ok) + if (auto res2 = peep->Place(TileCoordsXYZ(_loc), false); res2.Error != Status::ok) { return res2; } break; default: LOG_ERROR("Invalid peep pickup type %u", _type); - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } return res; } @@ -121,7 +121,7 @@ namespace OpenRCT2::GameActions if (peep == nullptr) { LOG_ERROR("Failed to pick up peep for sprite %d", _entityId); - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } auto res = Result(); @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions break; case PeepPickupType::Place: res.Position = _loc; - if (auto res2 = peep->Place(TileCoordsXYZ(_loc), true); res2.Error != Status::Ok) + if (auto res2 = peep->Place(TileCoordsXYZ(_loc), true); res2.Error != Status::ok) { return res2; } @@ -179,7 +179,7 @@ namespace OpenRCT2::GameActions break; default: LOG_ERROR("Invalid peep pickup type %u", _type); - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } return res; } diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.cpp b/src/openrct2/actions/PeepSpawnPlaceAction.cpp index 79777bf968c6..8b7776fb111b 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.cpp +++ b/src/openrct2/actions/PeepSpawnPlaceAction.cpp @@ -48,7 +48,7 @@ namespace OpenRCT2::GameActions { if (!isInEditorMode() && !getGameState().cheats.sandboxMode) { - return Result(Status::NotInEditorMode, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, kStringIdNone); + return Result(Status::notInEditorMode, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, kStringIdNone); } auto res = Result(); @@ -59,26 +59,26 @@ namespace OpenRCT2::GameActions if (!LocationValid(_location) || _location.x <= 16 || _location.y <= 16 || _location.x >= mapSizeUnits.x || _location.y >= mapSizeUnits.y) { - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_OFF_EDGE_OF_MAP); } // Verify footpath exists at location, and retrieve coordinates auto pathElement = MapGetPathElementAt(TileCoordsXYZ{ _location }); if (pathElement == nullptr) { - return Result(Status::InvalidParameters, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_CAN_ONLY_BE_BUILT_ON_PATHS); + return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_CAN_ONLY_BE_BUILT_ON_PATHS); } // Verify location is unowned auto surfaceMapElement = MapGetSurfaceElementAt(_location); if (surfaceMapElement == nullptr) { - return Result(Status::Unknown, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } if (surfaceMapElement->GetOwnership() != OWNERSHIP_UNOWNED) { return Result( - Status::InvalidParameters, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_ERR_MUST_BE_OUTSIDE_PARK_BOUNDARIES); + Status::invalidParameters, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, STR_ERR_MUST_BE_OUTSIDE_PARK_BOUNDARIES); } return res; diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index 0d2d20fad12b..df1bd1724d07 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -79,40 +79,40 @@ namespace OpenRCT2::GameActions if (rideIndex.IsNull()) { // No more free slots available. - return Result(Status::NoFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_TOO_MANY_RIDES); + return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_TOO_MANY_RIDES); } if (_rideType >= RIDE_TYPE_COUNT) { LOG_ERROR("Invalid ride type %d", _rideType); - return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_INVALID_RIDE_TYPE); + return Result(Status::invalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_INVALID_RIDE_TYPE); } int32_t rideEntryIndex = RideGetEntryIndex(_rideType, _subType); if (rideEntryIndex >= kMaxRideObjects) { LOG_ERROR("Ride entry not found for rideType %d, subType %d", _rideType, _subType); - return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_INVALID_RIDE_TYPE); + return Result(Status::invalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_INVALID_RIDE_TYPE); } const auto& colourPresets = GetRideTypeDescriptor(_rideType).ColourPresets; if (_trackColourPreset >= colourPresets.count) { LOG_ERROR("Can't create ride, invalid colour preset %d", _trackColourPreset); - return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_ERR_INVALID_COLOUR); } const auto* rideEntry = GetRideEntryByIndex(rideEntryIndex); if (rideEntry == nullptr) { LOG_ERROR("Ride entry not found for rideEntryIndex %d", rideEntryIndex); - return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_UNKNOWN_OBJECT_TYPE); } const auto* presetList = rideEntry->vehicle_preset_list; if ((presetList->count > 0 && presetList->count != 255) && _vehicleColourPreset >= presetList->count) { - return Result(Status::InvalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } auto res = Result(); @@ -135,7 +135,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Ride entry not found for index rideEntryIndex %u (from rideType %u, subType %u)", rideEntryIndex, _rideType, _subType); - return Result(Status::Unknown, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::unknown, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, STR_UNKNOWN_OBJECT_TYPE); } ride->type = _rideType; diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index 7098123fa0ba..ebf25eeeabdd 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -61,7 +61,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_DEMOLISH_RIDE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_DEMOLISH_RIDE, STR_ERR_RIDE_NOT_FOUND); } if ((ride->lifecycleFlags & (RIDE_LIFECYCLE_INDESTRUCTIBLE | RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) @@ -69,7 +69,7 @@ namespace OpenRCT2::GameActions && !getGameState().cheats.makeAllDestructible) { return Result( - Status::NoClearance, STR_CANT_DEMOLISH_RIDE, + Status::noClearance, STR_CANT_DEMOLISH_RIDE, STR_LOCAL_AUTHORITY_FORBIDS_DEMOLITION_OR_MODIFICATIONS_TO_THIS_RIDE); } @@ -79,18 +79,18 @@ namespace OpenRCT2::GameActions { if (ride->status != RideStatus::closed && ride->status != RideStatus::simulating) { - return Result(Status::Disallowed, STR_CANT_REFURBISH_RIDE, STR_MUST_BE_CLOSED_FIRST); + return Result(Status::disallowed, STR_CANT_REFURBISH_RIDE, STR_MUST_BE_CLOSED_FIRST); } if (ride->numRiders > 0) { - return Result(Status::Disallowed, STR_CANT_REFURBISH_RIDE, STR_RIDE_NOT_YET_EMPTY); + return Result(Status::disallowed, STR_CANT_REFURBISH_RIDE, STR_RIDE_NOT_YET_EMPTY); } if (!(ride->lifecycleFlags & RIDE_LIFECYCLE_EVER_BEEN_OPENED) || ride->getRideTypeDescriptor().AvailableBreakdowns == 0) { - return Result(Status::Disallowed, STR_CANT_REFURBISH_RIDE, STR_CANT_REFURBISH_NOT_NEEDED); + return Result(Status::disallowed, STR_CANT_REFURBISH_RIDE, STR_CANT_REFURBISH_NOT_NEEDED); } result.ErrorTitle = STR_CANT_REFURBISH_RIDE; @@ -106,7 +106,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_DEMOLISH_RIDE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_DEMOLISH_RIDE, STR_ERR_RIDE_NOT_FOUND); } switch (_modifyType) @@ -117,7 +117,7 @@ namespace OpenRCT2::GameActions return RefurbishRide(gameState, *ride); default: LOG_ERROR("Unknown ride demolish type %d", _modifyType); - return Result(Status::InvalidParameters, STR_CANT_DO_THIS, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_DO_THIS, STR_ERR_VALUE_OUT_OF_RANGE); } } @@ -183,7 +183,7 @@ namespace OpenRCT2::GameActions setMazeTrack.SetFlags(GetFlags()); auto execRes = ExecuteNested(&setMazeTrack, gameState); - if (execRes.Error == Status::Ok) + if (execRes.Error == Status::ok) { return execRes.Cost; } @@ -230,7 +230,7 @@ namespace OpenRCT2::GameActions trackRemoveAction.SetFlags({ CommandFlag::noSpend }); auto removRes = ExecuteNested(&trackRemoveAction, gameState); - if (removRes.Error != Status::Ok) + if (removRes.Error != Status::ok) { TileElementRemove(tileElement); } diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index b1a8bee61015..4c8690b076ae 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -64,23 +64,23 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, errorTitle, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, errorTitle, STR_ERR_RIDE_NOT_FOUND); } if (_stationNum.ToUnderlying() >= Limits::kMaxStationsPerRide) { LOG_ERROR("Invalid station number for ride. stationNum: %u", _stationNum.ToUnderlying()); - return Result(Status::InvalidParameters, errorTitle, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, errorTitle, STR_ERR_VALUE_OUT_OF_RANGE); } if (ride->status != RideStatus::closed && ride->status != RideStatus::simulating) { - return Result(Status::NotClosed, errorTitle, STR_MUST_BE_CLOSED_FIRST); + return Result(Status::notClosed, errorTitle, STR_MUST_BE_CLOSED_FIRST); } if (ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) { - return Result(Status::Disallowed, errorTitle, STR_NOT_ALLOWED_TO_MODIFY_STATION); + return Result(Status::disallowed, errorTitle, STR_NOT_ALLOWED_TO_MODIFY_STATION); } const auto& station = ride->getStation(_stationNum); @@ -93,7 +93,7 @@ namespace OpenRCT2::GameActions rideEntranceExitRemove.SetFlags(GetFlags()); auto result = QueryNested(&rideEntranceExitRemove, gameState); - if (result.Error != Status::Ok) + if (result.Error != Status::ok) { result.ErrorTitle = errorTitle; return result; @@ -103,21 +103,21 @@ namespace OpenRCT2::GameActions auto z = ride->getStation(_stationNum).GetBaseZ(); if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, errorTitle, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, errorTitle, STR_OFF_EDGE_OF_MAP); } if (!getGameState().cheats.sandboxMode && !MapIsLocationOwned({ _loc, z })) { - return Result(Status::NotOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); } if (!MapCheckCapacityAndReorganise(_loc)) { - return Result(Status::NoFreeElements, errorTitle, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, errorTitle, STR_TILE_ELEMENT_LIMIT_REACHED); } auto clear_z = z + (_isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = errorTitle; return canBuild; @@ -126,12 +126,12 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.GetData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { - return Result(Status::Disallowed, errorTitle, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, errorTitle, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); } if (z > MaxRideEntranceOrExitHeight) { - return Result(Status::Disallowed, errorTitle, STR_TOO_HIGH); + return Result(Status::disallowed, errorTitle, STR_TOO_HIGH); } auto res = Result(); @@ -151,7 +151,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, errorTitle, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, errorTitle, STR_ERR_RIDE_NOT_FOUND); } if (!(GetFlags().has(CommandFlag::ghost))) @@ -169,7 +169,7 @@ namespace OpenRCT2::GameActions rideEntranceExitRemove.SetFlags(GetFlags()); auto result = ExecuteNested(&rideEntranceExitRemove, gameState); - if (result.Error != Status::Ok) + if (result.Error != Status::ok) { result.ErrorTitle = errorTitle; return result; @@ -188,7 +188,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags().with(CommandFlag::apply), kTileSlopeFlat); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = errorTitle; return canBuild; @@ -244,18 +244,18 @@ namespace OpenRCT2::GameActions if (!getGameState().cheats.sandboxMode && !MapIsLocationOwned(loc)) { - return Result(Status::NotOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); } if (!MapCheckCapacityAndReorganise(loc)) { - return Result(Status::NoFreeElements, errorTitle, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, errorTitle, STR_TILE_ELEMENT_LIMIT_REACHED); } int16_t baseZ = loc.z; int16_t clearZ = baseZ + (isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( { loc, baseZ, clearZ }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, {}, kTileSlopeFlat); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = errorTitle; return canBuild; @@ -264,12 +264,12 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.GetData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { - return Result(Status::Disallowed, errorTitle, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, errorTitle, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); } if (baseZ > MaxRideEntranceOrExitHeight) { - return Result(Status::Disallowed, errorTitle, STR_TOO_HIGH); + return Result(Status::disallowed, errorTitle, STR_TOO_HIGH); } auto res = Result(); res.Position = { loc.ToTileCentre(), TileElementHeight(loc) }; diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp index c8c3f2538629..e9853ba57e07 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp @@ -73,22 +73,22 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } if (ride->status != RideStatus::closed && ride->status != RideStatus::simulating) { - return Result(Status::InvalidParameters, STR_MUST_BE_CLOSED_FIRST, kStringIdNone); + return Result(Status::invalidParameters, STR_MUST_BE_CLOSED_FIRST, kStringIdNone); } if (ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) { - return Result(Status::InvalidParameters, STR_NOT_ALLOWED_TO_MODIFY_STATION, kStringIdNone); + return Result(Status::invalidParameters, STR_NOT_ALLOWED_TO_MODIFY_STATION, kStringIdNone); } if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } auto* entranceElement = FindEntranceElement( @@ -97,14 +97,14 @@ namespace OpenRCT2::GameActions // If we are trying to remove a ghost and the element we found is real, return an error, but don't log a warning if (entranceElement != nullptr && (GetFlags().has(CommandFlag::ghost)) && !(entranceElement->IsGhost())) { - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_GHOST_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_GHOST_ELEMENT_NOT_FOUND); } else if (entranceElement == nullptr) { LOG_ERROR( "Entrance/exit element not found. x = %d, y = %d, ride = %u, station = %u", _loc.x, _loc.y, _rideIndex.ToUnderlying(), _stationNum.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ENTRANCE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ENTRANCE_ELEMENT_NOT_FOUND); } return Result(); @@ -116,7 +116,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } const bool isGhost = GetFlags().has(CommandFlag::ghost); @@ -133,14 +133,14 @@ namespace OpenRCT2::GameActions // If we are trying to remove a ghost and the element we found is real, return an error, but don't log a warning if (entranceElement != nullptr && isGhost && !(entranceElement->IsGhost())) { - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_GHOST_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_GHOST_ELEMENT_NOT_FOUND); } else if (entranceElement == nullptr) { LOG_ERROR( "Entrance/exit element not found. x = %d, y = %d, ride = %u, station = %d", _loc.x, _loc.y, _rideIndex.ToUnderlying(), _stationNum); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ENTRANCE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ENTRANCE_ELEMENT_NOT_FOUND); } auto res = Result(); diff --git a/src/openrct2/actions/RideFreezeRatingAction.cpp b/src/openrct2/actions/RideFreezeRatingAction.cpp index 9d4d9ed9e4fb..b35bbf4bc83d 100644 --- a/src/openrct2/actions/RideFreezeRatingAction.cpp +++ b/src/openrct2/actions/RideFreezeRatingAction.cpp @@ -40,13 +40,13 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } if (_value <= 0) { LOG_ERROR("Rating value must be positive: %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); diff --git a/src/openrct2/actions/RideSetAppearanceAction.cpp b/src/openrct2/actions/RideSetAppearanceAction.cpp index 370d25218532..f97a674810ae 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.cpp +++ b/src/openrct2/actions/RideSetAppearanceAction.cpp @@ -57,7 +57,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } switch (_type) @@ -69,7 +69,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Invalid track colour %u", _index); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); } break; case RideSetAppearanceType::VehicleColourBody: @@ -79,7 +79,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Invalid vehicle colour %u", _index); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); } break; case RideSetAppearanceType::VehicleColourScheme: @@ -89,7 +89,7 @@ namespace OpenRCT2::GameActions default: LOG_ERROR("Invalid ride appearance type %u", _type); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return GameActions::Result(); @@ -102,7 +102,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } switch (_type) diff --git a/src/openrct2/actions/RideSetColourSchemeAction.cpp b/src/openrct2/actions/RideSetColourSchemeAction.cpp index 01b1bcd7c836..dafa5f16cb3c 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.cpp +++ b/src/openrct2/actions/RideSetColourSchemeAction.cpp @@ -51,7 +51,7 @@ namespace OpenRCT2::GameActions { if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_SET_COLOUR_SCHEME, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_SET_COLOUR_SCHEME, STR_OFF_EDGE_OF_MAP); } // Find the relevant track piece, prefer sequence 0 (logic copied from GetTrackElementOriginAndApplyChanges) auto trackElement = MapGetTrackElementAtOfTypeSeq(_loc, _trackType, 0); @@ -60,12 +60,12 @@ namespace OpenRCT2::GameActions trackElement = MapGetTrackElementAtOfType(_loc, _trackType); if (trackElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_SET_COLOUR_SCHEME, STR_INVALID_TRACK_PARAMETERS); + return Result(Status::invalidParameters, STR_CANT_SET_COLOUR_SCHEME, STR_INVALID_TRACK_PARAMETERS); } } if (_newColourScheme >= kNumRideColourSchemes) { - return Result(Status::InvalidParameters, STR_CANT_SET_COLOUR_SCHEME, STR_INVALID_COLOUR_SCHEME_PARAMETER); + return Result(Status::invalidParameters, STR_CANT_SET_COLOUR_SCHEME, STR_INVALID_COLOUR_SCHEME_PARAMETER); } return Result(); } diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index 37b728114dbf..e2f60196c927 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -52,12 +52,12 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_RENAME_RIDE_ATTRACTION, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RENAME_RIDE_ATTRACTION, STR_ERR_RIDE_NOT_FOUND); } if (!_name.empty() && Ride::nameExists(_name, ride->id)) { - return Result(Status::InvalidParameters, STR_CANT_RENAME_RIDE_ATTRACTION, STR_ERROR_EXISTING_NAME); + return Result(Status::invalidParameters, STR_CANT_RENAME_RIDE_ATTRACTION, STR_ERROR_EXISTING_NAME); } return Result(); @@ -69,7 +69,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_RENAME_RIDE_ATTRACTION, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RENAME_RIDE_ATTRACTION, STR_ERR_RIDE_NOT_FOUND); } if (_name.empty()) diff --git a/src/openrct2/actions/RideSetPriceAction.cpp b/src/openrct2/actions/RideSetPriceAction.cpp index 8889a2d43310..647df77a02fe 100644 --- a/src/openrct2/actions/RideSetPriceAction.cpp +++ b/src/openrct2/actions/RideSetPriceAction.cpp @@ -56,20 +56,20 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } const auto* rideEntry = GetRideEntryByIndex(ride->subtype); if (rideEntry == nullptr) { LOG_ERROR("Ride entry not found for ride subtype %u", ride->subtype); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_OBJECT_ENTRY_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_OBJECT_ENTRY_NOT_FOUND); } if (_price < kRideMinPrice || _price > kRideMaxPrice) { LOG_ERROR("Attempting to set an invalid price for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, kStringIdEmpty); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, kStringIdEmpty); } return Result(); @@ -84,20 +84,20 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } const auto* rideEntry = GetRideEntryByIndex(ride->subtype); if (rideEntry == nullptr) { LOG_ERROR("Ride entry not found for ride subtype %u", ride->subtype); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_OBJECT_ENTRY_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_OBJECT_ENTRY_NOT_FOUND); } if (_price < kRideMinPrice || _price > kRideMaxPrice) { LOG_ERROR("Attempting to set an invalid price for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, kStringIdEmpty); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, kStringIdEmpty); } if (!ride->overallView.IsNull()) diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index 52b04dbe29f2..bf3c64b7c21c 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -52,7 +52,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u.", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_RIDE_NOT_FOUND); } switch (_setting) @@ -60,18 +60,18 @@ namespace OpenRCT2::GameActions case RideSetSetting::Mode: if (ride->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN) { - return Result(Status::Disallowed, STR_CANT_CHANGE_OPERATING_MODE, STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING); + return Result(Status::disallowed, STR_CANT_CHANGE_OPERATING_MODE, STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING); } if (ride->status != RideStatus::closed && ride->status != RideStatus::simulating) { - return Result(Status::Disallowed, STR_CANT_CHANGE_OPERATING_MODE, STR_MUST_BE_CLOSED_FIRST); + return Result(Status::disallowed, STR_CANT_CHANGE_OPERATING_MODE, STR_MUST_BE_CLOSED_FIRST); } if (!RideIsModeValid(*ride) && !getGameState().cheats.showAllOperatingModes) { LOG_ERROR("Invalid ride mode: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::Departure: @@ -80,28 +80,28 @@ namespace OpenRCT2::GameActions if (_value > 250) { LOG_ERROR("Invalid minimum waiting time: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::MaxWaitingTime: if (_value > 250) { LOG_ERROR("Invalid maximum waiting time: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::Operation: if (!RideIsValidOperationOption(*ride)) { LOG_ERROR("Invalid operation option value: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, GetOperationErrorMessage(*ride)); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, GetOperationErrorMessage(*ride)); } break; case RideSetSetting::InspectionInterval: if (_value > RIDE_INSPECTION_NEVER) { LOG_ERROR("Invalid inspection interval: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::Music: @@ -113,7 +113,7 @@ namespace OpenRCT2::GameActions if (musicObj == nullptr) { LOG_ERROR("Invalid music style: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; } @@ -121,33 +121,33 @@ namespace OpenRCT2::GameActions if (!RideIsValidLiftHillSpeed(*ride)) { LOG_ERROR("Invalid lift hill speed: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::NumCircuits: if (ride->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT && _value > 1) { return Result( - Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, + Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_MULTICIRCUIT_NOT_POSSIBLE_WITH_CABLE_LIFT_HILL); } if (!RideIsValidNumCircuits()) { LOG_ERROR("Invalid number of circuits: %u", _value); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::RideType: if (!getGameState().cheats.allowArbitraryRideTypeChanges) { LOG_ERROR("Arbitrary ride type changes not allowed."); - return Result(Status::Disallowed, STR_CANT_CHANGE_OPERATING_MODE, kStringIdNone); + return Result(Status::disallowed, STR_CANT_CHANGE_OPERATING_MODE, kStringIdNone); } break; default: LOG_ERROR("Invalid ride setting %u", static_cast(_setting)); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); @@ -159,7 +159,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_RIDE_NOT_FOUND); } switch (_setting) diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index 0826a1ff5d41..cf9f69e2e970 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -61,7 +61,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; return res; @@ -70,7 +70,7 @@ namespace OpenRCT2::GameActions if (_status >= RideStatus::count) { LOG_ERROR("Invalid ride status %u for ride %u", EnumValue(_status), _rideIndex.ToUnderlying()); - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; res.ErrorMessage = kStringIdNone; return res; @@ -85,7 +85,7 @@ namespace OpenRCT2::GameActions if (_status == RideStatus::simulating && (ride->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN)) { // Simulating will force clear the track, so make sure player can't cheat around a break down - res.Error = Status::Disallowed; + res.Error = Status::disallowed; res.ErrorMessage = STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING; return res; } @@ -108,7 +108,7 @@ namespace OpenRCT2::GameActions if (!modeSwitchResult.Successful) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = modeSwitchResult.Message; return res; } @@ -125,7 +125,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - res.Error = Status::InvalidParameters; + res.Error = Status::invalidParameters; res.ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; return res; @@ -172,7 +172,7 @@ namespace OpenRCT2::GameActions const auto modeSwitchResult = ride->simulate(true); if (!modeSwitchResult.Successful) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = modeSwitchResult.Message; return res; } @@ -215,7 +215,7 @@ namespace OpenRCT2::GameActions const auto modeSwitchResult = ride->test(true); if (!modeSwitchResult.Successful) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = modeSwitchResult.Message; return res; } @@ -225,7 +225,7 @@ namespace OpenRCT2::GameActions const auto modeSwitchResult = ride->open(true); if (!modeSwitchResult.Successful) { - res.Error = Status::Unknown; + res.Error = Status::unknown; res.ErrorMessage = modeSwitchResult.Message; return res; } diff --git a/src/openrct2/actions/RideSetVehicleAction.cpp b/src/openrct2/actions/RideSetVehicleAction.cpp index eca7b7c0cb88..eddc2037fa18 100644 --- a/src/openrct2/actions/RideSetVehicleAction.cpp +++ b/src/openrct2/actions/RideSetVehicleAction.cpp @@ -73,17 +73,17 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, errTitle, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, errTitle, STR_ERR_RIDE_NOT_FOUND); } if (ride->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN) { - return Result(Status::Broken, errTitle, STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING); + return Result(Status::broken, errTitle, STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING); } if (ride->status != RideStatus::closed && ride->status != RideStatus::simulating) { - return Result(Status::NotClosed, errTitle, STR_MUST_BE_CLOSED_FIRST); + return Result(Status::notClosed, errTitle, STR_MUST_BE_CLOSED_FIRST); } switch (_type) @@ -97,13 +97,13 @@ namespace OpenRCT2::GameActions if (!RideIsVehicleTypeValid(*ride)) { LOG_ERROR("Invalid vehicle type %d", _value); - return Result(Status::InvalidParameters, errTitle, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, errTitle, STR_ERR_VALUE_OUT_OF_RANGE); } auto rideEntry = GetRideEntryByIndex(_value); if (rideEntry == nullptr) { LOG_ERROR("Ride entry not found for _value %d", _value); - return Result(Status::InvalidParameters, errTitle, kStringIdNone); + return Result(Status::invalidParameters, errTitle, kStringIdNone); } // Validate preset @@ -111,14 +111,14 @@ namespace OpenRCT2::GameActions if (_colour >= presetList->count && _colour != 255 && _colour != 0) { LOG_ERROR("Unknown vehicle colour preset. colour = %d", _colour); - return Result(Status::InvalidParameters, errTitle, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, errTitle, STR_ERR_INVALID_COLOUR); } break; } default: LOG_ERROR("Invalid ride vehicle setting %d", _type); - return Result(Status::InvalidParameters, errTitle, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, errTitle, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); @@ -131,7 +131,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, errTitle, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, errTitle, STR_ERR_RIDE_NOT_FOUND); } switch (_type) @@ -154,7 +154,7 @@ namespace OpenRCT2::GameActions if (rideEntry == nullptr) { LOG_ERROR("Ride entry not found for index %d", ride->subtype); - return Result(Status::InvalidParameters, errTitle, kStringIdNone); + return Result(Status::invalidParameters, errTitle, kStringIdNone); } uint8_t clampValue = _value; static_assert(sizeof(clampValue) == sizeof(ride->proposedNumCarsPerTrain)); @@ -177,7 +177,7 @@ namespace OpenRCT2::GameActions if (rideEntry == nullptr) { LOG_ERROR("Ride entry not found for index %d", ride->subtype); - return Result(Status::InvalidParameters, errTitle, kStringIdNone); + return Result(Status::invalidParameters, errTitle, kStringIdNone); } RideSetVehicleColoursToRandomPreset(*ride, _colour); @@ -200,7 +200,7 @@ namespace OpenRCT2::GameActions default: LOG_ERROR("Invalid ride vehicle setting %d", _type); - return Result(Status::InvalidParameters, errTitle, kStringIdNone); + return Result(Status::invalidParameters, errTitle, kStringIdNone); } ride->numCircuits = 1; diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index ce56096c3390..da91ec5284c2 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -38,7 +38,7 @@ namespace OpenRCT2::GameActions if (_setting >= ScenarioSetSetting::Count) { LOG_ERROR("Invalid scenario setting: %u", _setting); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); @@ -263,7 +263,7 @@ namespace OpenRCT2::GameActions } default: LOG_ERROR("Invalid scenario setting %u", _setting); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } windowMgr->InvalidateByClass(WindowClass::editorScenarioOptions); return Result(); diff --git a/src/openrct2/actions/ScenerySetRestrictedAction.cpp b/src/openrct2/actions/ScenerySetRestrictedAction.cpp index f2d2fc2d30fe..b47df1b22185 100644 --- a/src/openrct2/actions/ScenerySetRestrictedAction.cpp +++ b/src/openrct2/actions/ScenerySetRestrictedAction.cpp @@ -38,12 +38,12 @@ namespace OpenRCT2::GameActions { if (!ObjectTypeCanBeRestricted(_objectType)) { - return Result(Status::InvalidParameters, STR_CANT_RESTRICT_OBJECT, STR_OBJECT_TYPE_CANNOT_BE_RESTRICTED); + return Result(Status::invalidParameters, STR_CANT_RESTRICT_OBJECT, STR_OBJECT_TYPE_CANNOT_BE_RESTRICTED); } const auto* loadedObject = ObjectEntryGetObject(_objectType, _objectIndex); if (loadedObject == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_RESTRICT_OBJECT, STR_OBJECT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RESTRICT_OBJECT, STR_OBJECT_NOT_FOUND); } return Result(); diff --git a/src/openrct2/actions/SignSetNameAction.cpp b/src/openrct2/actions/SignSetNameAction.cpp index 247bcbe35ac6..8c0aaa68bd91 100644 --- a/src/openrct2/actions/SignSetNameAction.cpp +++ b/src/openrct2/actions/SignSetNameAction.cpp @@ -50,7 +50,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_RENAME_SIGN, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_RENAME_SIGN, kStringIdNone); } TileElement* tileElement = BannerGetTileElement(_bannerIndex); @@ -58,18 +58,18 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("Banner tile element not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } CoordsXYZ loc = { banner->position.ToCoordsXY(), tileElement->GetBaseZ() }; if (!LocationValid(loc)) { - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_OFF_EDGE_OF_MAP); } if (!MapCanBuildAt({ loc.x, loc.y, loc.z - 16 })) { - return Result(Status::NotOwned, STR_CANT_RENAME_BANNER, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_RENAME_BANNER, STR_LAND_NOT_OWNED_BY_PARK); } return Result(); @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %d", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_RENAME_SIGN, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_RENAME_SIGN, kStringIdNone); } if (!_name.empty()) diff --git a/src/openrct2/actions/SignSetStyleAction.cpp b/src/openrct2/actions/SignSetStyleAction.cpp index 088f25b2a5a3..d30dd7ee02a5 100644 --- a/src/openrct2/actions/SignSetStyleAction.cpp +++ b/src/openrct2/actions/SignSetStyleAction.cpp @@ -56,7 +56,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Banner not found for bannerIndex %u", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } CoordsXYZ loc; @@ -67,14 +67,14 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("Banner tile element not found for bannerIndex %u", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } if (tileElement->GetType() != TileElementType::LargeScenery) { LOG_ERROR( "Tile element has type %u, expected %d (LargeScenery)", tileElement->GetType(), TileElementType::LargeScenery); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } loc = { banner->position.ToCoordsXY(), tileElement->GetBaseZ() }; } @@ -85,18 +85,18 @@ namespace OpenRCT2::GameActions if (wallElement == nullptr) { LOG_ERROR("Wall element not found for bannerIndex", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } loc = { banner->position.ToCoordsXY(), wallElement->GetBaseZ() }; } if (!LocationValid(loc)) { - return Result(Status::InvalidParameters, STR_CANT_RENAME_BANNER, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_RENAME_BANNER, STR_OFF_EDGE_OF_MAP); } if (!MapCanBuildAt({ loc.x, loc.y, loc.z - 16 })) { - return Result(Status::NotOwned, STR_CANT_RENAME_BANNER, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_RENAME_BANNER, STR_LAND_NOT_OWNED_BY_PARK); } return Result(); @@ -108,7 +108,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("Invalid banner id %u", _bannerIndex); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } CoordsXY coords = banner->position.ToCoordsXY(); @@ -120,7 +120,7 @@ namespace OpenRCT2::GameActions { coords, tileElement->GetBaseZ(), tileElement->GetDirection() }, tileElement->AsLargeScenery()->GetSequenceIndex(), _mainColour, _textColour)) { - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, kStringIdNone); } } else diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index 38c79b8803e3..2f6cb789ca16 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -108,25 +108,25 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (!MapCheckCapacityAndReorganise(_loc)) { - return Result(Status::NoFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } auto maxSizeMax = GetMapSizeMaxXY(); if (!_trackDesignDrawingPreview && (_loc.x > maxSizeMax.x || _loc.y > maxSizeMax.y)) { - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } auto* sceneryEntry = ObjectManager::GetObjectEntry(_sceneryType); if (sceneryEntry == nullptr) { LOG_ERROR("Small scenery object entry not found for sceneryType %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } auto quadrant = _quadrant; @@ -173,7 +173,7 @@ namespace OpenRCT2::GameActions if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode && !MapIsLocationOwned({ _loc.x, _loc.y, targetHeight })) { - return Result(Status::NotOwned, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } auto* surfaceElement = MapGetSurfaceElementAt(_loc); @@ -183,7 +183,7 @@ namespace OpenRCT2::GameActions int32_t water_height = surfaceElement->GetWaterHeight() - 1; if (water_height > targetHeight) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } } @@ -191,14 +191,14 @@ namespace OpenRCT2::GameActions { if (isOnWater) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_LAND); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_LAND); } if (surfaceElement != nullptr && surfaceElement->GetWaterHeight() > 0) { if (surfaceElement->GetWaterHeight() > targetHeight) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_LAND); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_LAND); } } } @@ -206,7 +206,7 @@ namespace OpenRCT2::GameActions if (!gameState.cheats.disableClearanceChecks && (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_REQUIRE_FLAT_SURFACE)) && !supportsRequired && !isOnWater && surfaceElement != nullptr && (surfaceElement->GetSlope() != kTileSlopeFlat)) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_LEVEL_LAND_REQUIRED); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_LEVEL_LAND_REQUIRED); } if (!gameState.cheats.disableSupportLimits && !(sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_STACKABLE)) @@ -218,13 +218,13 @@ namespace OpenRCT2::GameActions { if (surfaceElement->GetWaterHeight() > 0 || (surfaceElement->GetBaseZ()) != targetHeight) { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_LEVEL_LAND_REQUIRED); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_LEVEL_LAND_REQUIRED); } } } else { - return Result(Status::Disallowed, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_LAND); + return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_LAND); } } @@ -269,7 +269,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; @@ -316,7 +316,7 @@ namespace OpenRCT2::GameActions if (sceneryEntry == nullptr) { LOG_ERROR("Small scenery object entry not found for sceneryType %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } auto quadrant = _quadrant; @@ -408,7 +408,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; @@ -421,7 +421,7 @@ namespace OpenRCT2::GameActions CoordsXYZ{ _loc, zLow }, quarterTile.GetBaseQuarterOccupied()); if (sceneryElement == nullptr) { - return Result(Status::NoFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } sceneryElement->SetDirection(_loc.direction); diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index 7b997141b98a..59c64f4f0ea5 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -61,13 +61,13 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } auto* entry = OpenRCT2::ObjectManager::GetObjectEntry(_sceneryType); if (entry == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } res.Cost = entry->removal_price; @@ -82,7 +82,7 @@ namespace OpenRCT2::GameActions { if (entry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE)) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorTitle = STR_CANT_REMOVE_THIS; res.ErrorMessage = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY; return res; @@ -92,7 +92,7 @@ namespace OpenRCT2::GameActions // Check if the land is owned if (!MapIsLocationOwned(_loc)) { - res.Error = Status::NoClearance; + res.Error = Status::noClearance; res.ErrorTitle = STR_CANT_REMOVE_THIS; res.ErrorMessage = STR_LAND_NOT_OWNED_BY_PARK; return res; @@ -102,7 +102,7 @@ namespace OpenRCT2::GameActions TileElement* tileElement = FindSceneryElement(); if (tileElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } return res; @@ -116,7 +116,7 @@ namespace OpenRCT2::GameActions if (entry == nullptr) { LOG_ERROR("Invalid small scenery type %u", _sceneryType); - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } res.Cost = entry->removal_price; @@ -126,7 +126,7 @@ namespace OpenRCT2::GameActions TileElement* tileElement = FindSceneryElement(); if (tileElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } MapInvalidateTileFull(_loc); diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index fbd068bb5201..0cc041df5a99 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -80,14 +80,14 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); } if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) { if (!MapIsLocationOwned(_loc)) { - return Result(Status::NotOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); } } @@ -96,7 +96,7 @@ namespace OpenRCT2::GameActions if (sceneryElement == nullptr) { LOG_ERROR("Small scenery not found at: x = %d, y = %d, z = %d", _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } if ((GetFlags().has(CommandFlag::ghost)) && !(sceneryElement->IsGhost())) diff --git a/src/openrct2/actions/StaffFireAction.cpp b/src/openrct2/actions/StaffFireAction.cpp index 5404ead00101..0a762b19d465 100644 --- a/src/openrct2/actions/StaffFireAction.cpp +++ b/src/openrct2/actions/StaffFireAction.cpp @@ -43,23 +43,23 @@ namespace OpenRCT2::GameActions if (_spriteId.ToUnderlying() >= kMaxEntities || _spriteId.IsNull()) { LOG_ERROR("Invalid spriteId %u", _spriteId); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } auto staff = getGameState().entities.TryGetEntity(_spriteId); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteId %u", _spriteId); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } if (staff->State == PeepState::fixing) { - return Result(Status::Disallowed, STR_CANT_FIRE_STAFF_FIXING, kStringIdNone); + return Result(Status::disallowed, STR_CANT_FIRE_STAFF_FIXING, kStringIdNone); } else if (staff->State == PeepState::inspecting) { - return Result(Status::Disallowed, STR_CANT_FIRE_STAFF_INSPECTING, kStringIdNone); + return Result(Status::disallowed, STR_CANT_FIRE_STAFF_INSPECTING, kStringIdNone); } return Result(); @@ -71,7 +71,7 @@ namespace OpenRCT2::GameActions if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteId %u", _spriteId); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } auto* windowMgr = Ui::GetWindowManager(); diff --git a/src/openrct2/actions/StaffHireNewAction.cpp b/src/openrct2/actions/StaffHireNewAction.cpp index e426427e007f..b1441797c41a 100644 --- a/src/openrct2/actions/StaffHireNewAction.cpp +++ b/src/openrct2/actions/StaffHireNewAction.cpp @@ -80,12 +80,12 @@ namespace OpenRCT2::GameActions if (_staffType >= static_cast(StaffType::count)) { LOG_ERROR("Invalid staff type %u", static_cast(_staffType)); - return Result(Status::InvalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); } if (getGameState().entities.GetNumFreeEntities() < 400) { - return Result(Status::NoFreeElements, STR_CANT_HIRE_NEW_STAFF, STR_TOO_MANY_PEOPLE_IN_GAME); + return Result(Status::noFreeElements, STR_CANT_HIRE_NEW_STAFF, STR_TOO_MANY_PEOPLE_IN_GAME); } if (_staffType == static_cast(StaffType::entertainer)) @@ -94,7 +94,7 @@ namespace OpenRCT2::GameActions if (std::find(costumes.begin(), costumes.end(), _costumeIndex) == costumes.end()) { LOG_ERROR("Unavailable entertainer costume %u", static_cast(_costumeIndex)); - return Result(Status::InvalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); } } @@ -102,7 +102,7 @@ namespace OpenRCT2::GameActions if (newPeep == nullptr) { // Too many peeps exist already. - return Result(Status::NoFreeElements, STR_CANT_HIRE_NEW_STAFF, STR_TOO_MANY_PEOPLE_IN_GAME); + return Result(Status::noFreeElements, STR_CANT_HIRE_NEW_STAFF, STR_TOO_MANY_PEOPLE_IN_GAME); } if (execute == false) diff --git a/src/openrct2/actions/StaffSetColourAction.cpp b/src/openrct2/actions/StaffSetColourAction.cpp index b8ad72c43596..3b4fbe09f2b7 100644 --- a/src/openrct2/actions/StaffSetColourAction.cpp +++ b/src/openrct2/actions/StaffSetColourAction.cpp @@ -50,7 +50,7 @@ namespace OpenRCT2::GameActions if (staffType != StaffType::handyman && staffType != StaffType::mechanic && staffType != StaffType::security) { LOG_ERROR("Staff color can't be changed for staff type %d", _staffType); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE); } return Result(); } @@ -59,7 +59,7 @@ namespace OpenRCT2::GameActions { // Update global uniform colour property auto res = StaffSetColour(static_cast(_staffType), _colour); - if (res.Error != Status::Ok) + if (res.Error != Status::ok) { return res; } diff --git a/src/openrct2/actions/StaffSetCostumeAction.cpp b/src/openrct2/actions/StaffSetCostumeAction.cpp index 8cc1cb6f4899..3b95be91ff3d 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.cpp +++ b/src/openrct2/actions/StaffSetCostumeAction.cpp @@ -50,14 +50,14 @@ namespace OpenRCT2::GameActions if (_spriteIndex.ToUnderlying() >= kMaxEntities || _spriteIndex.IsNull()) { LOG_ERROR("Invalid sprite index %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } auto* staff = getGameState().entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } auto& objManager = GetContext()->GetObjectManager(); @@ -67,7 +67,7 @@ namespace OpenRCT2::GameActions if (animObj->GetPeepType() != animPeepType) { LOG_ERROR("Invalid entertainer costume %u", _costume); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } return Result(); } @@ -78,7 +78,7 @@ namespace OpenRCT2::GameActions if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } staff->AnimationObjectIndex = _costume; diff --git a/src/openrct2/actions/StaffSetNameAction.cpp b/src/openrct2/actions/StaffSetNameAction.cpp index d199dc56ec77..ba2d8c3114f7 100644 --- a/src/openrct2/actions/StaffSetNameAction.cpp +++ b/src/openrct2/actions/StaffSetNameAction.cpp @@ -52,14 +52,14 @@ namespace OpenRCT2::GameActions if (_spriteIndex.ToUnderlying() >= kMaxEntities || _spriteIndex.IsNull()) { LOG_ERROR("Invalid sprite index %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_VALUE_OUT_OF_RANGE); } auto staff = getGameState().entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_STAFF_NOT_FOUND); } return Result(); @@ -71,7 +71,7 @@ namespace OpenRCT2::GameActions if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_STAFF_NOT_FOUND); } auto curName = staff->GetName(); @@ -82,7 +82,7 @@ namespace OpenRCT2::GameActions if (!staff->SetName(_name)) { - return Result(Status::Unknown, STR_CANT_NAME_GUEST, kStringIdNone); + return Result(Status::unknown, STR_CANT_NAME_GUEST, kStringIdNone); } GfxInvalidateScreen(); diff --git a/src/openrct2/actions/StaffSetOrdersAction.cpp b/src/openrct2/actions/StaffSetOrdersAction.cpp index 2266e41fab00..bb7dc5e4e87e 100644 --- a/src/openrct2/actions/StaffSetOrdersAction.cpp +++ b/src/openrct2/actions/StaffSetOrdersAction.cpp @@ -49,7 +49,7 @@ namespace OpenRCT2::GameActions if (_spriteIndex.ToUnderlying() >= kMaxEntities || _spriteIndex.IsNull()) { LOG_ERROR("Invalid sprite index %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } auto* staff = getGameState().entities.TryGetEntity(_spriteIndex); @@ -57,7 +57,7 @@ namespace OpenRCT2::GameActions || (staff->AssignedStaffType != StaffType::handyman && staff->AssignedStaffType != StaffType::mechanic)) { LOG_ERROR("Staff orders can't be changed for staff of type %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE); } return Result(); @@ -69,7 +69,7 @@ namespace OpenRCT2::GameActions if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } staff->StaffOrders = _ordersId; diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp index ad0fdd77359f..2512bbc3554c 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp @@ -66,7 +66,7 @@ namespace OpenRCT2::GameActions if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteID %u", _spriteId.ToUnderlying()); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_STAFF_NOT_FOUND); } auto validRange = ClampRangeWithinMap(_range); @@ -76,7 +76,7 @@ namespace OpenRCT2::GameActions { if (!LocationValid({ x, y })) { - return Result(Status::InvalidParameters, STR_SET_PATROL_AREA, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_SET_PATROL_AREA, STR_OFF_EDGE_OF_MAP); } } } diff --git a/src/openrct2/actions/SurfaceSetStyleAction.cpp b/src/openrct2/actions/SurfaceSetStyleAction.cpp index f965b1f1eefe..c94af33d2ee5 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.cpp +++ b/src/openrct2/actions/SurfaceSetStyleAction.cpp @@ -61,7 +61,7 @@ namespace OpenRCT2::GameActions if (surfaceObj == nullptr) { LOG_ERROR("Invalid surface style %u", _surfaceStyle); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_LAND_TYPE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_LAND_TYPE, STR_UNKNOWN_OBJECT_TYPE); } } @@ -72,7 +72,7 @@ namespace OpenRCT2::GameActions if (edgeObj == nullptr) { LOG_ERROR("Invalid edge style %u", _edgeStyle); - return Result(Status::InvalidParameters, STR_CANT_CHANGE_LAND_TYPE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_CHANGE_LAND_TYPE, STR_UNKNOWN_OBJECT_TYPE); } } @@ -88,7 +88,7 @@ namespace OpenRCT2::GameActions if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode && (gameState.park.flags & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES)) { - return Result(Status::Disallowed, STR_CANT_CHANGE_LAND_TYPE, STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY); + return Result(Status::disallowed, STR_CANT_CHANGE_LAND_TYPE, STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY); } money64 surfaceCost = 0; diff --git a/src/openrct2/actions/TileModifyAction.cpp b/src/openrct2/actions/TileModifyAction.cpp index fe793ca31403..cb046e61098d 100644 --- a/src/openrct2/actions/TileModifyAction.cpp +++ b/src/openrct2/actions/TileModifyAction.cpp @@ -63,7 +63,7 @@ namespace OpenRCT2::GameActions { if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_CHANGE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_CHANGE_THIS, STR_OFF_EDGE_OF_MAP); } auto res = Result(); switch (_setting) @@ -240,7 +240,7 @@ namespace OpenRCT2::GameActions } default: LOG_ERROR("Invalid tile modification type %u", _setting); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } res.Position.x = _loc.x; diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 95d467d5c590..33232349cd94 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -64,7 +64,7 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } auto& objManager = GetContext()->GetObjectManager(); @@ -83,9 +83,9 @@ namespace OpenRCT2::GameActions auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); - if (r.Error != Status::Ok) + if (r.Error != Status::ok) { - return Result(Status::NoFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); + return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } const auto rideIndex = r.GetData(); @@ -93,7 +93,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d", rideIndex); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } bool placeScenery = _placeScenery; @@ -114,7 +114,7 @@ namespace OpenRCT2::GameActions ExecuteNested(&gameAction, gameState); - if (queryRes.Error != Status::Ok) + if (queryRes.Error != Status::ok) { res.Error = queryRes.Error; res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; @@ -153,9 +153,9 @@ namespace OpenRCT2::GameActions auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); - if (r.Error != Status::Ok) + if (r.Error != Status::ok) { - return Result(Status::NoFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); + return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } const auto rideIndex = r.GetData(); @@ -163,7 +163,7 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d", rideIndex); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } // Query first, this is required again to determine if scenery is available. @@ -178,7 +178,7 @@ namespace OpenRCT2::GameActions queryRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); } - if (queryRes.Error != Status::Ok) + if (queryRes.Error != Status::ok) { auto gameAction = RideDemolishAction(ride->id, RideModifyType::demolish); gameAction.SetFlags(GetFlags()); @@ -196,7 +196,7 @@ namespace OpenRCT2::GameActions flags.set(CommandFlag::apply); auto execRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); - if (execRes.Error != Status::Ok) + if (execRes.Error != Status::ok) { auto gameAction = RideDemolishAction(ride->id, RideModifyType::demolish); gameAction.SetFlags(GetFlags()); @@ -259,7 +259,7 @@ namespace OpenRCT2::GameActions ride->vehicleColours[i] = _td.appearance.vehicleColours[i]; } - for (int32_t count = 1; count == 1 || r.Error != Status::Ok; ++count) + for (int32_t count = 1; count == 1 || r.Error != Status::ok; ++count) { auto name = count == 1 ? _td.gameStateData.name : (_td.gameStateData.name + " " + std::to_string(count)); auto gameAction = RideSetNameAction(ride->id, name); diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 92a3175a4632..0bba145ee89f 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -83,38 +83,38 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } const auto* rideEntry = GetRideEntryByIndex(ride->subtype); if (rideEntry == nullptr) { LOG_ERROR("Invalid ride subtype for track placement, rideIndex = %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } if (!DirectionValid(_origin.direction)) { LOG_ERROR("Invalid direction for track placement, direction = %d", _origin.direction); return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } if (_rideType != ride->type && !gameState.cheats.allowArbitraryRideTypeChanges) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, kStringIdNone); } if (_rideType > RIDE_TYPE_COUNT) { LOG_ERROR("Invalid ride type for track placement, rideType = %d", _rideType); return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } if (_brakeSpeed > kMaximumTrackSpeed) { LOG_WARNING("Invalid speed for track placement, speed = %d", _brakeSpeed); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_SPEED_TOO_HIGH); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_SPEED_TOO_HIGH); } auto res = Result(); @@ -130,7 +130,7 @@ namespace OpenRCT2::GameActions if ((ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _trackType == TrackElemType::EndStation) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NOT_ALLOWED_TO_MODIFY_STATION); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NOT_ALLOWED_TO_MODIFY_STATION); } if (!(GetActionFlags() & Flags::AllowWhilePaused)) @@ -138,7 +138,7 @@ namespace OpenRCT2::GameActions if (GameIsPaused() && !gameState.cheats.buildInPauseMode) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED); } } @@ -150,7 +150,7 @@ namespace OpenRCT2::GameActions if (ride->lifecycleFlags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ONLY_ONE_ON_RIDE_PHOTO_PER_RIDE); } } @@ -159,7 +159,7 @@ namespace OpenRCT2::GameActions if (ride->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ONLY_ONE_CABLE_LIFT_HILL_PER_RIDE); } } @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions if (ted.flags & TRACK_ELEM_FLAG_IS_STEEP_UP) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL); } } } @@ -187,11 +187,11 @@ namespace OpenRCT2::GameActions if (!LocationValid(tileCoords)) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (!MapIsLocationOwned(tileCoords) && !gameState.cheats.sandboxMode) { - return Result(Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } numElements++; } @@ -200,7 +200,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Not enough free map elements to place track."); return Result( - Status::NoFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + Status::noFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } if (!gameState.cheats.allowTrackPlaceInvalidHeights) @@ -210,7 +210,7 @@ namespace OpenRCT2::GameActions if ((_origin.z & 0x0F) != 8) { return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); } } else @@ -218,7 +218,7 @@ namespace OpenRCT2::GameActions if ((_origin.z & 0x0F) != 0) { return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); } } } @@ -237,7 +237,7 @@ namespace OpenRCT2::GameActions if (mapLoc.z < 16) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_LOW); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_LOW); } int32_t baseZ = floor2(mapLoc.z, kCoordsZStep); @@ -256,7 +256,7 @@ namespace OpenRCT2::GameActions if (clearanceZ > MAX_TRACK_HEIGHT) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::Flat) @@ -265,7 +265,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { mapLoc, baseZ, clearanceZ }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; @@ -279,7 +279,7 @@ namespace OpenRCT2::GameActions if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND); } } @@ -290,7 +290,7 @@ namespace OpenRCT2::GameActions if (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } } @@ -300,14 +300,14 @@ namespace OpenRCT2::GameActions if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_UNDERWATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_UNDERWATER); } } if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER && !gameState.cheats.disableClearanceChecks) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); } if (rtd.HasFlag(RtdFlag::trackMustBeOnWater) && !_trackDesignDrawingPreview) @@ -316,20 +316,20 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } auto waterHeight = surfaceElement->GetWaterHeight(); if (waterHeight == 0) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); } if (waterHeight != baseZ) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); } waterHeight -= kLandHeightStep; if (waterHeight == surfaceElement->GetBaseZ()) @@ -339,7 +339,7 @@ namespace OpenRCT2::GameActions || slope == kTileSlopeNCornerDown) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); } } @@ -352,7 +352,7 @@ namespace OpenRCT2::GameActions { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); if (!addElementResult.Successful) { - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, addElementResult.Message); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, addElementResult.Message); } } @@ -361,7 +361,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } if (!gameState.cheats.disableSupportLimits) @@ -384,7 +384,7 @@ namespace OpenRCT2::GameActions if (ride_height > maxHeight && !_trackDesignDrawingPreview) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH_FOR_SUPPORTS); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH_FOR_SUPPORTS); } } } @@ -414,14 +414,14 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Invalid ride for track placement, rideIndex = %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } const auto* rideEntry = GetRideEntryByIndex(ride->subtype); if (rideEntry == nullptr) { LOG_ERROR("Invalid ride subtype for track placement, rideIndex = %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } auto res = Result(); @@ -470,7 +470,7 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( mapLocWithClearance, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (canBuild.Error != Status::Ok) + if (canBuild.Error != Status::ok) { canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; @@ -517,7 +517,7 @@ namespace OpenRCT2::GameActions if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND); } } @@ -529,7 +529,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = baseZ - surfaceElement->GetBaseZ(); @@ -559,7 +559,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Cannot create track element for ride = %d", _rideIndex.ToUnderlying()); return Result( - Status::NoFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + Status::noFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } trackElement->SetClearanceZ(clearanceZ); diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index bef46d596909..d7db2e5b05b3 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -113,13 +113,13 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Track Element not found. x = %d, y = %d, z = %d, d = %d, seq = %d.", _origin.x, _origin.y, _origin.z, _origin.direction, _sequence); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } if (tileElement->AsTrack()->IsIndestructible()) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_YOU_ARE_NOT_ALLOWED_TO_REMOVE_THIS_SECTION); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_YOU_ARE_NOT_ALLOWED_TO_REMOVE_THIS_SECTION); } RideId rideIndex = tileElement->AsTrack()->GetRideIndex(); @@ -129,20 +129,20 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d.", rideIndex); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_RIDE_NOT_FOUND); } if (ride->type >= RIDE_TYPE_COUNT) { LOG_ERROR("Ride type not found. ride type = %d.", ride->type); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_VALUE_OUT_OF_RANGE); } const auto& ted = GetTrackElementDescriptor(trackType); auto sequenceIndex = tileElement->AsTrack()->GetSequenceIndex(); if (sequenceIndex >= ted.numSequences) { LOG_ERROR("Track block %d not found for track type %d.", sequenceIndex, trackType); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_BLOCK_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_BLOCK_NOT_FOUND); } const auto& currentTrackBlock = ted.sequences[sequenceIndex].clearance; @@ -168,7 +168,7 @@ namespace OpenRCT2::GameActions if (!LocationValid(mapLoc)) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } MapInvalidateTileFull(mapLoc); @@ -206,7 +206,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Track Element not found. x = %d, y = %d, z = %d, d = %d, seq = %d.", mapLoc.x, mapLoc.y, mapLoc.z, _origin.direction, i); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } int32_t entranceDirections = ted.sequences[0].flags; @@ -215,7 +215,7 @@ namespace OpenRCT2::GameActions const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) { - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); } } @@ -223,7 +223,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("Surface Element not found. x = %d, y = %d", mapLoc.x, mapLoc.y); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int16_t _support_height = tileElement->BaseHeight - surfaceElement->BaseHeight; @@ -297,7 +297,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Track Element not found. x = %d, y = %d, z = %d, d = %d, seq = %d.", _origin.x, _origin.y, _origin.z, _origin.direction, _sequence); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } RideId rideIndex = tileElement->AsTrack()->GetRideIndex(); @@ -308,14 +308,14 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found. ride index = %d.", rideIndex); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_RIDE_NOT_FOUND); } const auto& ted = GetTrackElementDescriptor(trackType); auto sequenceIndex = tileElement->AsTrack()->GetSequenceIndex(); if (sequenceIndex >= ted.numSequences) { LOG_ERROR("Track block %d not found for track type %d.", sequenceIndex, trackType); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_BLOCK_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_BLOCK_NOT_FOUND); } auto startLoc = _origin; @@ -376,7 +376,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Track Element not found. x = %d, y = %d, z = %d, d = %d, seq = %d.", mapLoc.x, mapLoc.y, mapLoc.z, _origin.direction, i); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } int32_t entranceDirections = ted.sequences[0].flags; @@ -385,7 +385,7 @@ namespace OpenRCT2::GameActions const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) { - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); } } @@ -393,7 +393,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("Surface Element not found. x = %d, y = %d", mapLoc.x, mapLoc.y); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int16_t _support_height = tileElement->BaseHeight - surfaceElement->BaseHeight; @@ -414,7 +414,7 @@ namespace OpenRCT2::GameActions { mapLoc, _origin.direction }, rideIndex, { CommandFlag::apply }); if (!removeElementResult.Successful) { - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, removeElementResult.Message); } } diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp index f50530a88169..681f2d2d8b63 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp @@ -64,20 +64,20 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_CHANGE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_CHANGE_THIS, STR_OFF_EDGE_OF_MAP); } TileElement* tileElement = MapGetTrackElementAtOfType(_loc, _trackType); if (tileElement == nullptr) { LOG_ERROR("Track element of type %u not found at x = %d, y = %d, z = %d", _trackType, _loc.x, _loc.y, _loc.z); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); } if (_brakeSpeed > kMaximumTrackSpeed) { LOG_WARNING("Invalid speed for track, speed = %d", _brakeSpeed); - return Result(Status::InvalidParameters, STR_SPEED_TOO_HIGH, kStringIdNone); + return Result(Status::invalidParameters, STR_SPEED_TOO_HIGH, kStringIdNone); } if (isExecuting) diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 4447f7d5c3e2..3db2342930f8 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -88,7 +88,7 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_OFF_EDGE_OF_MAP); } auto mapSizeMax = GetMapSizeMaxXY(); @@ -99,23 +99,23 @@ namespace OpenRCT2::GameActions { if (!MapIsLocationInPark(_loc)) { - return Result(Status::NotOwned, STR_CANT_BUILD_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_BUILD_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } } else if (!MapIsLocationOwned(_loc)) { - return Result(Status::NotOwned, STR_CANT_BUILD_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_BUILD_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } } else if (!_trackDesignDrawingPreview && (_loc.x > mapSizeMax.x || _loc.y > mapSizeMax.y)) { LOG_ERROR("Invalid x/y coordinates. x = %d y = %d", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (_edge > 3) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, kStringIdNone); } uint8_t edgeSlope = 0; @@ -126,7 +126,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("Surface element not found at %d, %d.", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } targetHeight = surfaceElement->GetBaseZ(); @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("Surface element not found at %d, %d.", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } if (surfaceElement->GetWaterHeight() > 0) @@ -152,13 +152,13 @@ namespace OpenRCT2::GameActions if (targetHeight < waterHeight && !gameState.cheats.disableClearanceChecks) { - return Result(Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); + return Result(Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } } if (targetHeight < surfaceElement->GetBaseZ() && !gameState.cheats.disableClearanceChecks) { - return Result(Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); + return Result(Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } if (!(edgeSlope & (EDGE_SLOPE_UPWARDS | EDGE_SLOPE_DOWNWARDS))) @@ -170,7 +170,7 @@ namespace OpenRCT2::GameActions { if (targetHeight / 8 < newBaseHeight && !gameState.cheats.disableClearanceChecks) { - return Result(Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); + return Result(Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } if (surfaceElement->GetSlope() & kTileSlopeDiagonalFlag) @@ -186,7 +186,7 @@ namespace OpenRCT2::GameActions if (targetHeight / 8 < newBaseHeight && !gameState.cheats.disableClearanceChecks) { return Result( - Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); + Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } newBaseHeight -= 2; } @@ -199,7 +199,7 @@ namespace OpenRCT2::GameActions { if (targetHeight / 8 < newBaseHeight && !gameState.cheats.disableClearanceChecks) { - return Result(Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); + return Result(Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } if (surfaceElement->GetSlope() & kTileSlopeDiagonalFlag) @@ -215,7 +215,7 @@ namespace OpenRCT2::GameActions if (targetHeight / 8 < newBaseHeight && !gameState.cheats.disableClearanceChecks) { return Result( - Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); + Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } } } @@ -228,7 +228,7 @@ namespace OpenRCT2::GameActions if (wallEntry == nullptr) { LOG_ERROR("Wall Type not found %d", _wallType); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } if (wallEntry->scrolling_mode != kScrollingModeNone) @@ -236,7 +236,7 @@ namespace OpenRCT2::GameActions if (HasReachedBannerLimit()) { LOG_ERROR("No free banners available"); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } } @@ -245,7 +245,7 @@ namespace OpenRCT2::GameActions { if (wallEntry->flags & WALL_SCENERY_CANT_BUILD_ON_SLOPE) { - return Result(Status::Disallowed, STR_CANT_BUILD_THIS_HERE, STR_ERR_UNABLE_TO_BUILD_THIS_ON_SLOPE); + return Result(Status::disallowed, STR_CANT_BUILD_THIS_HERE, STR_ERR_UNABLE_TO_BUILD_THIS_ON_SLOPE); } clearanceHeight += 2; } @@ -255,7 +255,7 @@ namespace OpenRCT2::GameActions if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / 8, clearanceHeight, &wallAcrossTrack); - if (result.Error != Status::Ok) + if (result.Error != Status::ok) { return result; } @@ -263,7 +263,7 @@ namespace OpenRCT2::GameActions if (!MapCheckCapacityAndReorganise(_loc)) { - return Result(Status::NoFreeElements, STR_CANT_BUILD_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_BUILD_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } res.Cost = wallEntry->price; @@ -296,7 +296,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("Surface element not found at %d, %d.", _loc.x, _loc.y); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } targetHeight = surfaceElement->GetBaseZ(); @@ -315,7 +315,7 @@ namespace OpenRCT2::GameActions if (wallEntry == nullptr) { LOG_ERROR("Wall Type not found %d", _wallType); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } uint8_t clearanceHeight = targetHeight / kCoordsZStep; @@ -329,7 +329,7 @@ namespace OpenRCT2::GameActions if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / kCoordsZStep, clearanceHeight, &wallAcrossTrack); - if (result.Error != Status::Ok) + if (result.Error != Status::ok) { return result; } @@ -342,7 +342,7 @@ namespace OpenRCT2::GameActions if (banner == nullptr) { LOG_ERROR("No free banners available"); - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } banner->text = {}; @@ -363,7 +363,7 @@ namespace OpenRCT2::GameActions auto* wallElement = TileElementInsert(targetLoc, 0b0000); if (wallElement == nullptr) { - return Result(Status::NoFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } wallElement->ClearanceHeight = clearanceHeight; @@ -499,7 +499,7 @@ namespace OpenRCT2::GameActions *wallAcrossTrack = false; if (MapIsEdge(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_BUILD_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_OFF_EDGE_OF_MAP); } TileElement* tileElement = MapGetFirstElementAt(_loc); @@ -521,7 +521,7 @@ namespace OpenRCT2::GameActions int32_t direction = tileElement->GetDirection(); if (_edge == direction) { - auto res = Result(Status::NoClearance, STR_CANT_BUILD_THIS_HERE, kStringIdNone); + auto res = Result(Status::noClearance, STR_CANT_BUILD_THIS_HERE, kStringIdNone); MapGetObstructionErrorText(tileElement, res); return res; } @@ -529,7 +529,7 @@ namespace OpenRCT2::GameActions } if (tileElement->GetOccupiedQuadrants() == 0) continue; - auto res = Result(Status::NoClearance, STR_CANT_BUILD_THIS_HERE, kStringIdNone); + auto res = Result(Status::noClearance, STR_CANT_BUILD_THIS_HERE, kStringIdNone); switch (elementType) { case TileElementType::Entrance: diff --git a/src/openrct2/actions/WallRemoveAction.cpp b/src/openrct2/actions/WallRemoveAction.cpp index e37537862214..e7c92669d4bc 100644 --- a/src/openrct2/actions/WallRemoveAction.cpp +++ b/src/openrct2/actions/WallRemoveAction.cpp @@ -47,20 +47,20 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } const bool isGhost = GetFlags().has(CommandFlag::ghost); if (!isGhost && gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode && !MapIsLocationOwned(_loc)) { - return Result(Status::NotOwned, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); } TileElement* wallElement = GetFirstWallElementAt(_loc, isGhost); if (wallElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } res.Cost = 0; @@ -78,7 +78,7 @@ namespace OpenRCT2::GameActions TileElement* wallElement = GetFirstWallElementAt(_loc, isGhost); if (wallElement == nullptr) { - return Result(Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); + return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } res.Position.x = _loc.x + 16; diff --git a/src/openrct2/actions/WallSetColourAction.cpp b/src/openrct2/actions/WallSetColourAction.cpp index 3f4f8b22dd0e..6b37e33f16c9 100644 --- a/src/openrct2/actions/WallSetColourAction.cpp +++ b/src/openrct2/actions/WallSetColourAction.cpp @@ -64,12 +64,12 @@ namespace OpenRCT2::GameActions if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); } if (gLegacyScene != LegacyScene::scenarioEditor && !MapIsLocationInPark(_loc) && !getGameState().cheats.sandboxMode) { - return Result(Status::NotOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); } auto wallElement = MapGetWallElementAt(_loc); @@ -78,7 +78,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Could not find wall element at: x = %d, y = %d, z = %d, direction = %u", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_WALL_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_WALL_ELEMENT_NOT_FOUND); } if ((GetFlags().has(CommandFlag::ghost)) && !(wallElement->IsGhost())) @@ -92,25 +92,25 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Wall element does not have wall entry at x = %d, y = %d, z = %d, direction = %u", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, kStringIdNone); } if (_primaryColour >= COLOUR_COUNT) { LOG_ERROR("Primary colour invalid: colour = %d", _primaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } else if (_secondaryColour >= COLOUR_COUNT) { LOG_ERROR("Secondary colour invalid: colour = %d", _secondaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_INVALID_COLOUR); } else if (wallEntry->flags & WALL_SCENERY_HAS_TERTIARY_COLOUR) { if (_tertiaryColour >= COLOUR_COUNT) { LOG_ERROR("Tertiary colour invalid: colour = %d", _tertiaryColour); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } } return res; @@ -131,7 +131,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Could not find wall element at: x = %d, y = %d, z = %d, direction = %u", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::InvalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, kStringIdNone); } if ((GetFlags().has(CommandFlag::ghost)) && !(wallElement->IsGhost())) @@ -145,7 +145,7 @@ namespace OpenRCT2::GameActions LOG_ERROR( "Wall element does not have wall entry at x = %d, y = %d, z = %d, direction = %u", _loc.x, _loc.y, _loc.z, _loc.direction); - return Result(Status::Unknown, STR_CANT_REPAINT_THIS, kStringIdNone); + return Result(Status::unknown, STR_CANT_REPAINT_THIS, kStringIdNone); } wallElement->SetPrimaryColour(_primaryColour); diff --git a/src/openrct2/actions/WaterLowerAction.cpp b/src/openrct2/actions/WaterLowerAction.cpp index bbf3a65437d2..fe45486e831f 100644 --- a/src/openrct2/actions/WaterLowerAction.cpp +++ b/src/openrct2/actions/WaterLowerAction.cpp @@ -102,7 +102,7 @@ namespace OpenRCT2::GameActions waterSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&waterSetHeightAction, gameState) : QueryNested(&waterSetHeightAction, gameState); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { res.Cost += result.Cost; hasChanged = true; @@ -117,7 +117,7 @@ namespace OpenRCT2::GameActions if (!withinOwnership) { - return Result(Status::Disallowed, STR_CANT_LOWER_WATER_LEVEL_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_LOWER_WATER_LEVEL_HERE, STR_LAND_NOT_OWNED_BY_PARK); ; } diff --git a/src/openrct2/actions/WaterRaiseAction.cpp b/src/openrct2/actions/WaterRaiseAction.cpp index 2d05aa5a7a9a..c61e01fb3267 100644 --- a/src/openrct2/actions/WaterRaiseAction.cpp +++ b/src/openrct2/actions/WaterRaiseAction.cpp @@ -116,7 +116,7 @@ namespace OpenRCT2::GameActions waterSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&waterSetHeightAction, gameState) : QueryNested(&waterSetHeightAction, gameState); - if (result.Error == Status::Ok) + if (result.Error == Status::ok) { res.Cost += result.Cost; hasChanged = true; @@ -131,7 +131,7 @@ namespace OpenRCT2::GameActions if (!withinOwnership) { - return Result(Status::Disallowed, STR_CANT_RAISE_WATER_LEVEL_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_CANT_RAISE_WATER_LEVEL_HERE, STR_LAND_NOT_OWNED_BY_PARK); } if (isExecuting && hasChanged) diff --git a/src/openrct2/actions/WaterSetHeightAction.cpp b/src/openrct2/actions/WaterSetHeightAction.cpp index f894b97db8c9..0306b0cdbd10 100644 --- a/src/openrct2/actions/WaterSetHeightAction.cpp +++ b/src/openrct2/actions/WaterSetHeightAction.cpp @@ -55,25 +55,25 @@ namespace OpenRCT2::GameActions if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode && gameState.park.flags & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES) { - return Result(Status::Disallowed, kStringIdNone, STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY); + return Result(Status::disallowed, kStringIdNone, STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY); } StringId errorMsg = CheckParameters(); if (errorMsg != kStringIdNone) { - return Result(Status::InvalidParameters, kStringIdNone, errorMsg); + return Result(Status::invalidParameters, kStringIdNone, errorMsg); } if (!LocationValid(_coords)) { - return Result(Status::NotOwned, kStringIdNone, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::notOwned, kStringIdNone, STR_LAND_NOT_OWNED_BY_PARK); } if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(_coords)) { - return Result(Status::Disallowed, kStringIdNone, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, kStringIdNone, STR_LAND_NOT_OWNED_BY_PARK); } } @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("No surface element at: x %u, y %u", _coords.x, _coords.y); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t zHigh = surfaceElement->GetBaseZ(); @@ -97,13 +97,13 @@ namespace OpenRCT2::GameActions zLow = temp; } - if (auto res2 = MapCanConstructAt({ _coords, zLow, zHigh }, { 0b1111, 0b1111 }); res2.Error != Status::Ok) + if (auto res2 = MapCanConstructAt({ _coords, zLow, zHigh }, { 0b1111, 0b1111 }); res2.Error != Status::ok) { return res2; } if (surfaceElement->HasTrackThatNeedsWater()) { - return Result(Status::Disallowed, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ON_THIS_TILE_NEEDS_WATER); + return Result(Status::disallowed, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ON_THIS_TILE_NEEDS_WATER); } res.Cost = 250; @@ -126,7 +126,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { LOG_ERROR("No surface element at: x %u, y %u", _coords.x, _coords.y); - return Result(Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } if (_height > surfaceElement->BaseHeight) diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 68936d21a212..b00c6b187973 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -660,7 +660,7 @@ void Peep::PickupAbort(int32_t old_x) gPickupPeepImage = ImageId(); } -// Returns GameActions::Status::OK when a peep can be dropped at the given location. When apply is set to true the peep gets +// Returns GameActions::Status::ok when a peep can be dropped at the given location. When apply is set to true the peep gets // dropped. GameActions::Result Peep::Place(const TileCoordsXYZ& location, bool apply) { @@ -672,7 +672,7 @@ GameActions::Result Peep::Place(const TileCoordsXYZ& location, bool apply) } if (tileElement == nullptr) { - return GameActions::Result(GameActions::Status::InvalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); + return GameActions::Result(GameActions::Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } // Set the coordinate of destination to be exactly @@ -681,17 +681,17 @@ GameActions::Result Peep::Place(const TileCoordsXYZ& location, bool apply) if (!MapIsLocationOwned(destination)) { - return GameActions::Result(GameActions::Status::NotOwned, STR_ERR_CANT_PLACE_PERSON_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return GameActions::Result(GameActions::Status::notOwned, STR_ERR_CANT_PLACE_PERSON_HERE, STR_LAND_NOT_OWNED_BY_PARK); } if (auto res = MapCanConstructAt({ destination, destination.z, destination.z + (1 * 8) }, { 0b1111, 0 }); - res.Error != GameActions::Status::Ok) + res.Error != GameActions::Status::ok) { const auto stringId = std::get(res.ErrorMessage); if (stringId != STR_RAISE_OR_LOWER_LAND_FIRST && stringId != STR_FOOTPATH_IN_THE_WAY) { return GameActions::Result( - GameActions::Status::NoClearance, STR_ERR_CANT_PLACE_PERSON_HERE, stringId, res.ErrorMessageArgs.data()); + GameActions::Status::noClearance, STR_ERR_CANT_PLACE_PERSON_HERE, stringId, res.ErrorMessageArgs.data()); } } diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index f4f47a400f49..a4997f6d4f03 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -1005,7 +1005,7 @@ GameActions::Result StaffSetColour(StaffType staffType, colour_t value) break; default: return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ACTION_INVALID_FOR_THAT_STAFF_TYPE); } return GameActions::Result(); } diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index f76ae9288594..5b6b2a666413 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -751,7 +751,7 @@ static void ConsoleSetVariableAction(InteractiveConsole& console, std::string va { auto action = TAction(std::forward(args)...); action.SetCallback([&console, var](const GameActions::GameAction*, const GameActions::Result* res) { - if (res->Error != GameActions::Status::Ok) + if (res->Error != GameActions::Status::ok) console.WriteLineError( String::stdFormat( "set %s command failed: %s - %s.", var.c_str(), res->GetErrorTitle().c_str(), diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index c3cbf6610b95..d362f28eb998 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -3579,23 +3579,23 @@ namespace OpenRCT2::Network NetworkGroup* fromgroup = network.GetGroupByID(actionPlayerId); if (player == nullptr) { - return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_DO_THIS, kStringIdNone); + return GameActions::Result(GameActions::Status::invalidParameters, STR_CANT_DO_THIS, kStringIdNone); } if (network.GetGroupByID(groupId) == nullptr) { - return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_DO_THIS, kStringIdNone); + return GameActions::Result(GameActions::Status::invalidParameters, STR_CANT_DO_THIS, kStringIdNone); } if (player->Flags & PlayerFlags::kIsServer) { return GameActions::Result( - GameActions::Status::InvalidParameters, STR_CANT_CHANGE_GROUP_THAT_THE_HOST_BELONGS_TO, kStringIdNone); + GameActions::Status::invalidParameters, STR_CANT_CHANGE_GROUP_THAT_THE_HOST_BELONGS_TO, kStringIdNone); } if (groupId == 0 && fromgroup != nullptr && fromgroup->Id != 0) { - return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_SET_TO_THIS_GROUP, kStringIdNone); + return GameActions::Result(GameActions::Status::invalidParameters, STR_CANT_SET_TO_THIS_GROUP, kStringIdNone); } if (isExecuting) @@ -3644,7 +3644,7 @@ namespace OpenRCT2::Network NetworkGroup* newgroup = network.AddGroup(); if (newgroup == nullptr) { - return GameActions::Result(GameActions::Status::Unknown, STR_CANT_DO_THIS, kStringIdNone); + return GameActions::Result(GameActions::Status::unknown, STR_CANT_DO_THIS, kStringIdNone); } } } @@ -3654,14 +3654,14 @@ namespace OpenRCT2::Network if (groupId == 0) { return GameActions::Result( - GameActions::Status::Disallowed, STR_THIS_GROUP_CANNOT_BE_MODIFIED, kStringIdNone); + GameActions::Status::disallowed, STR_THIS_GROUP_CANNOT_BE_MODIFIED, kStringIdNone); } for (const auto& it : network.player_list) { if ((it.get())->Group == groupId) { return GameActions::Result( - GameActions::Status::Disallowed, STR_CANT_REMOVE_GROUP_THAT_PLAYERS_BELONG_TO, kStringIdNone); + GameActions::Status::disallowed, STR_CANT_REMOVE_GROUP_THAT_PLAYERS_BELONG_TO, kStringIdNone); } } if (isExecuting) @@ -3675,7 +3675,7 @@ namespace OpenRCT2::Network if (groupId == 0) { // can't change admin group permissions return GameActions::Result( - GameActions::Status::Disallowed, STR_THIS_GROUP_CANNOT_BE_MODIFIED, kStringIdNone); + GameActions::Status::disallowed, STR_THIS_GROUP_CANNOT_BE_MODIFIED, kStringIdNone); } NetworkGroup* mygroup = nullptr; Player* player = network.GetPlayerByID(actionPlayerId); @@ -3686,7 +3686,7 @@ namespace OpenRCT2::Network if (mygroup == nullptr || !mygroup->CanPerformAction(networkPermission)) { return GameActions::Result( - GameActions::Status::Disallowed, STR_CANT_MODIFY_PERMISSION_THAT_YOU_DO_NOT_HAVE_YOURSELF, + GameActions::Status::disallowed, STR_CANT_MODIFY_PERMISSION_THAT_YOU_DO_NOT_HAVE_YOURSELF, kStringIdNone); } } @@ -3722,7 +3722,7 @@ namespace OpenRCT2::Network NetworkGroup* group = network.GetGroupByID(groupId); if (group == nullptr) { - return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_RENAME_GROUP, kStringIdNone); + return GameActions::Result(GameActions::Status::invalidParameters, STR_CANT_RENAME_GROUP, kStringIdNone); } const char* oldName = group->GetName().c_str(); @@ -3735,7 +3735,7 @@ namespace OpenRCT2::Network if (name.empty()) { return GameActions::Result( - GameActions::Status::InvalidParameters, STR_CANT_RENAME_GROUP, STR_INVALID_GROUP_NAME); + GameActions::Status::invalidParameters, STR_CANT_RENAME_GROUP, STR_INVALID_GROUP_NAME); } if (isExecuting) @@ -3751,7 +3751,7 @@ namespace OpenRCT2::Network { if (groupId == 0) { - return GameActions::Result(GameActions::Status::Disallowed, STR_CANT_SET_TO_THIS_GROUP, kStringIdNone); + return GameActions::Result(GameActions::Status::disallowed, STR_CANT_SET_TO_THIS_GROUP, kStringIdNone); } if (isExecuting) { @@ -3762,7 +3762,7 @@ namespace OpenRCT2::Network default: LOG_ERROR("Invalid Modify Group Type: %u", static_cast(type)); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } network.SaveGroups(); @@ -3779,12 +3779,12 @@ namespace OpenRCT2::Network // Player might be already removed by the PLAYERLIST command, need to refactor non-game commands executing too // early. return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PLAYER_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PLAYER_NOT_FOUND); } if (player->Flags & PlayerFlags::kIsServer) { - return GameActions::Result(GameActions::Status::Disallowed, STR_CANT_KICK_THE_HOST, kStringIdNone); + return GameActions::Result(GameActions::Status::disallowed, STR_CANT_KICK_THE_HOST, kStringIdNone); } if (isExecuting) diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/rct12/ScenarioPatcher.cpp index f103ed2408bf..cafaab6cdd8e 100644 --- a/src/openrct2/rct12/ScenarioPatcher.cpp +++ b/src/openrct2/rct12/ScenarioPatcher.cpp @@ -663,7 +663,7 @@ static void ApplyPathFixes(const json_t& scenarioPatch) coordinate.ToCoordsXYZ(), slope, surfaceObjIndex, railingsObjIndex, direction, constructionFlags); auto& gameState = getGameState(); auto result = footpathPlaceAction.Execute(gameState); - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) { Guard::Assert(0, "Could not patch path"); } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 9846311e7ed2..ca418ab977a6 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -1164,7 +1164,7 @@ money64 SetOperatingSetting(RideId rideId, GameActions::RideSetSetting setting, { auto rideSetSetting = GameActions::RideSetSettingAction(rideId, setting, value); auto res = GameActions::Execute(&rideSetSetting, getGameState()); - return res.Error == GameActions::Status::Ok ? 0 : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? 0 : kMoney64Undefined; } money64 SetOperatingSettingNested(RideId rideId, GameActions::RideSetSetting setting, uint8_t value, CommandFlags flags) @@ -1175,7 +1175,7 @@ money64 SetOperatingSettingNested(RideId rideId, GameActions::RideSetSetting set auto& gameState = getGameState(); auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&rideSetSetting, gameState) : GameActions::QueryNested(&rideSetSetting, gameState); - return res.Error == GameActions::Status::Ok ? 0 : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? 0 : kMoney64Undefined; } /** diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index a7583fceb30d..3399bbeec31b 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1092,7 +1092,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&smallSceneryPlace, gameState) : GameActions::QueryNested(&smallSceneryPlace, gameState); - cost = res.Error == GameActions::Status::Ok ? res.Cost : 0; + cost = res.Error == GameActions::Status::ok ? res.Cost : 0; break; } case ObjectType::largeScenery: @@ -1211,7 +1211,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&footpathPlaceAction, gameState) : GameActions::QueryNested(&footpathPlaceAction, gameState); // Ignore failures - cost = res.Error == GameActions::Status::Ok ? res.Cost : 0; + cost = res.Error == GameActions::Status::ok ? res.Cost : 0; } else { @@ -1293,7 +1293,7 @@ static GameActions::Result TrackDesignPlaceAllScenery( TrackDesignUpdatePreviewBounds(tds, mapCoord); auto placementRes = TrackDesignPlaceSceneryElement(tds, mapCoord, mode, scenery, rotation, origin.z); - if (placementRes.Error != GameActions::Status::Ok) + if (placementRes.Error != GameActions::Status::ok) { if (tds.placeOperation != TrackPlaceOperation::removeGhost) { @@ -1301,7 +1301,7 @@ static GameActions::Result TrackDesignPlaceAllScenery( return placementRes; } - if (placementRes.Error == GameActions::Status::NoClearance) + if (placementRes.Error == GameActions::Status::noClearance) { // Some scenery might be obstructed, don't abort the entire operation. continue; @@ -1352,7 +1352,7 @@ static std::optional TrackDesignPlaceEntrances( if (tile_element == nullptr) { return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); } do @@ -1393,7 +1393,7 @@ static std::optional TrackDesignPlaceEntrances( ? GameActions::ExecuteNested(&rideEntranceExitPlaceAction, gameState) : GameActions::QueryNested(&rideEntranceExitPlaceAction, gameState); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return res; } @@ -1406,7 +1406,7 @@ static std::optional TrackDesignPlaceEntrances( else { auto res = GameActions::RideEntranceExitPlaceAction::TrackPlaceQuery(newCoords, false); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return res; } @@ -1489,7 +1489,7 @@ static GameActions::Result TrackDesignPlaceMaze( mazePlace.SetFlags(flags); auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&mazePlace, gameState) : GameActions::QueryNested(&mazePlace, gameState); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return res; } @@ -1646,7 +1646,7 @@ static GameActions::Result TrackDesignPlaceRide( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&trackPlaceAction, gameState) : GameActions::QueryNested(&trackPlaceAction, gameState); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return res; } @@ -1670,7 +1670,7 @@ static GameActions::Result TrackDesignPlaceRide( if (surfaceElement == nullptr) { return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } @@ -1783,14 +1783,14 @@ static GameActions::Result TrackDesignPlaceVirtual( _currentRideIndex = savedRideId; _currentTrackPieceDirection = savedTrackPieceDirection; - if (trackPlaceRes.Error != GameActions::Status::Ok) + if (trackPlaceRes.Error != GameActions::Status::ok) { return trackPlaceRes; } // Scenery elements auto sceneryPlaceRes = TrackDesignPlaceAllScenery(tds, td.sceneryElements, coords.direction); - if (sceneryPlaceRes.Error != GameActions::Status::Ok) + if (sceneryPlaceRes.Error != GameActions::Status::ok) { return sceneryPlaceRes; } @@ -1867,7 +1867,7 @@ static money64 TrackDesignCreateRide(int32_t type, int32_t subType, CommandFlags auto res = GameActions::ExecuteNested(&gameAction, gameState); // Callee's of this function expect kMoney64Undefined in case of failure. - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return kMoney64Undefined; } @@ -1953,7 +1953,7 @@ static bool TrackDesignPlacePreview( { mapSize.x, mapSize.y, z, _currentTrackPieceDirection }); gameState.park.flags = backup_park_flags; - if (res.Error == GameActions::Status::Ok) + if (res.Error == GameActions::Status::ok) { if (entry_index == kObjectEntryIndexNull) { diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index 80a013c9d344..fb98ca06a57f 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -1087,7 +1087,7 @@ GameActions::Result ScriptEngine::QueryOrExecuteCustomGameAction(const GameActio if (!dukArgs) { auto action = GameActions::Result(); - action.Error = GameActions::Status::InvalidParameters; + action.Error = GameActions::Status::invalidParameters; action.ErrorTitle = "Invalid JSON"; return action; } @@ -1124,7 +1124,7 @@ GameActions::Result ScriptEngine::QueryOrExecuteCustomGameAction(const GameActio } auto action = GameActions::Result(); - action.Error = GameActions::Status::Unknown; + action.Error = GameActions::Status::unknown; action.ErrorTitle = "Unknown custom action"; action.ErrorMessage = customAction.GetPluginName() + ": " + actionz; return action; @@ -1151,7 +1151,7 @@ GameActions::Result ScriptEngine::DukToGameActionResult(const DukValue& d) } else { - result.Error = GameActions::Status::Unknown; + result.Error = GameActions::Status::unknown; result.ErrorTitle = "Unknown"; result.ErrorMessage = "Unknown"; } @@ -1201,7 +1201,7 @@ DukValue ScriptEngine::GameActionResultToDuk(const GameActions::GameAction& acti DukObject obj(_context); obj.Set("error", static_cast(result.Error)); - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) { obj.Set("errorTitle", result.GetErrorTitle()); obj.Set("errorMessage", result.GetErrorMessage()); @@ -1223,7 +1223,7 @@ DukValue ScriptEngine::GameActionResultToDuk(const GameActions::GameAction& acti // RideCreateAction only if (action.GetType() == GameCommand::CreateRide) { - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { const auto rideIndex = result.GetData(); obj.Set("ride", rideIndex.ToUnderlying()); @@ -1232,7 +1232,7 @@ DukValue ScriptEngine::GameActionResultToDuk(const GameActions::GameAction& acti // StaffHireNewAction only else if (action.GetType() == GameCommand::HireNewStaffMember) { - if (result.Error == GameActions::Status::Ok) + if (result.Error == GameActions::Status::ok) { const auto actionResult = result.GetData(); if (!actionResult.StaffEntityId.IsNull()) diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 9dbcdaa78dc0..fd59904cb6fb 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -192,7 +192,7 @@ GameActions::Result MapCanConstructWithClearAt( bool canBuildCrossing = false; if (MapIsEdge(pos)) { - res.Error = GameActions::Status::InvalidParameters; + res.Error = GameActions::Status::invalidParameters; res.ErrorMessage = STR_OFF_EDGE_OF_MAP; return res; } @@ -206,7 +206,7 @@ GameActions::Result MapCanConstructWithClearAt( TileElement* tileElement = MapGetFirstElementAt(pos); if (tileElement == nullptr) { - res.Error = GameActions::Status::Unknown; + res.Error = GameActions::Status::unknown; res.ErrorMessage = kStringIdNone; return res; } @@ -227,7 +227,7 @@ GameActions::Result MapCanConstructWithClearAt( } MapGetObstructionErrorText(tileElement, res); - res.Error = GameActions::Status::NoClearance; + res.Error = GameActions::Status::noClearance; return res; } } @@ -242,7 +242,7 @@ GameActions::Result MapCanConstructWithClearAt( { if (!clearFunc(&tileElement, pos, flags, &res.Cost)) { - res.Error = GameActions::Status::NoClearance; + res.Error = GameActions::Status::noClearance; res.ErrorMessage = STR_CANNOT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_WATER; return res; } @@ -255,7 +255,7 @@ GameActions::Result MapCanConstructWithClearAt( if (heightFromGround > (18 * kCoordsZStep)) { - res.Error = GameActions::Status::Disallowed; + res.Error = GameActions::Status::disallowed; res.ErrorMessage = STR_LOCAL_AUTHORITY_WONT_ALLOW_CONSTRUCTION_ABOVE_TREE_HEIGHT; return res; } @@ -298,7 +298,7 @@ GameActions::Result MapCanConstructWithClearAt( } MapGetObstructionErrorText(tileElement, res); - res.Error = GameActions::Status::NoClearance; + res.Error = GameActions::Status::noClearance; return res; } } diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 5e162a1a06a5..45f5f156e7b6 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -50,7 +50,7 @@ static money64 RideEntranceExitPlaceGhost( rideEntranceExitPlaceAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::ghost }); auto res = GameActions::Execute(&rideEntranceExitPlaceAction, getGameState()); - return res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; + return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; } /** diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 9048a28186ad..27f0ee30e890 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -1444,7 +1444,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) auto parkEntranceRemoveAction = GameActions::ParkEntranceRemoveAction(CoordsXYZ{ seqLoc, element->GetBaseZ() }); auto result = GameActions::ExecuteNested(&parkEntranceRemoveAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) { TileElementRemove(element); } @@ -1456,7 +1456,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) auto wallRemoveAction = GameActions::WallRemoveAction(wallLocation); auto result = GameActions::ExecuteNested(&wallRemoveAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) { TileElementRemove(element); } @@ -1468,7 +1468,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) { loc.x, loc.y, element->GetBaseZ(), element->GetDirection() }, element->AsLargeScenery()->GetSequenceIndex()); auto result = GameActions::ExecuteNested(&removeSceneryAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) { TileElementRemove(element); } @@ -1480,7 +1480,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) { loc.x, loc.y, element->GetBaseZ(), element->AsBanner()->GetPosition() }); auto result = GameActions::ExecuteNested(&bannerRemoveAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::Ok) + if (result.Error != GameActions::Status::ok) { TileElementRemove(element); } diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index 7f7d5b568eaa..da32aec7f7b3 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -53,19 +53,19 @@ namespace OpenRCT2::TileInspector { LOG_ERROR("First element is out of range for the tile"); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); } if (secondElement == nullptr) { LOG_ERROR("Second element is out of range for the tile"); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); } if (firstElement == secondElement) { LOG_ERROR("Can't swap the element with itself"); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_CANT_SWAP_TILE_ELEMENT_WITH_ITSELF); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_CANT_SWAP_TILE_ELEMENT_WITH_ITSELF); } // Swap their memory @@ -145,7 +145,7 @@ namespace OpenRCT2::TileInspector TileElement* const tileElement = MapGetNthElementAt(loc, elementIndex); if (tileElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -187,7 +187,7 @@ namespace OpenRCT2::TileInspector if (isExecuting) { auto res = SwapTileElements(loc, first, second); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { return res; } @@ -210,7 +210,7 @@ namespace OpenRCT2::TileInspector TileElement* const tileElement = MapGetNthElementAt(loc, elementIndex); if (tileElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -289,7 +289,7 @@ namespace OpenRCT2::TileInspector TileElement* const tileElement = MapGetNthElementAt(loc, elementIndex); if (tileElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); if (!isExecuting) { @@ -307,7 +307,7 @@ namespace OpenRCT2::TileInspector // Make sure there is enough space for the new element if (!MapCheckCapacityAndReorganise(loc)) { - return GameActions::Result(GameActions::Status::NoFreeElements, STR_CANT_PASTE, STR_TILE_ELEMENT_LIMIT_REACHED); + return GameActions::Result(GameActions::Status::noFreeElements, STR_CANT_PASTE, STR_TILE_ELEMENT_LIMIT_REACHED); } auto tileLoc = TileCoordsXY(loc); @@ -322,7 +322,7 @@ namespace OpenRCT2::TileInspector if (newBanner == nullptr) { LOG_ERROR("No free banners available"); - return GameActions::Result(GameActions::Status::Unknown, STR_TOO_MANY_BANNERS_IN_GAME, kStringIdNone); + return GameActions::Result(GameActions::Status::unknown, STR_TOO_MANY_BANNERS_IN_GAME, kStringIdNone); } auto newId = newBanner->id; // Copy the banners style @@ -375,7 +375,7 @@ namespace OpenRCT2::TileInspector const TileElement* const firstElement = MapGetFirstElementAt(loc); if (firstElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); // Count elements on tile int32_t numElement = 0; @@ -400,7 +400,7 @@ namespace OpenRCT2::TileInspector && otherElement->ClearanceHeight > currentElement->ClearanceHeight))) { auto res = SwapTileElements(loc, currentId - 1, currentId); - if (res.Error != GameActions::Status::Ok) + if (res.Error != GameActions::Status::ok) { // don't return error here, we've already ran some actions // and moved things as far as we could, the only sensible @@ -430,19 +430,19 @@ namespace OpenRCT2::TileInspector int16_t newClearanceHeight = static_cast(tileElement->ClearanceHeight + heightOffset); if (newBaseHeight < 0) { - return GameActions::Result(GameActions::Status::TooLow, STR_CANT_LOWER_ELEMENT_HERE, STR_TOO_LOW); + return GameActions::Result(GameActions::Status::tooLow, STR_CANT_LOWER_ELEMENT_HERE, STR_TOO_LOW); } if (newBaseHeight > kMaxTileElementHeight) { - return GameActions::Result(GameActions::Status::TooHigh, STR_CANT_RAISE_ELEMENT_HERE, STR_TOO_HIGH); + return GameActions::Result(GameActions::Status::tooHigh, STR_CANT_RAISE_ELEMENT_HERE, STR_TOO_HIGH); } if (newClearanceHeight < 0) { - return GameActions::Result(GameActions::Status::NoClearance, STR_CANT_LOWER_ELEMENT_HERE, STR_NO_CLEARANCE); + return GameActions::Result(GameActions::Status::noClearance, STR_CANT_LOWER_ELEMENT_HERE, STR_NO_CLEARANCE); } if (newClearanceHeight > kMaxTileElementHeight) { - return GameActions::Result(GameActions::Status::NoClearance, STR_CANT_RAISE_ELEMENT_HERE, STR_NO_CLEARANCE); + return GameActions::Result(GameActions::Status::noClearance, STR_CANT_RAISE_ELEMENT_HERE, STR_NO_CLEARANCE); } return GameActions::Result(); } @@ -452,10 +452,10 @@ namespace OpenRCT2::TileInspector TileElement* const tileElement = MapGetNthElementAt(loc, elementIndex); if (tileElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); auto heightValidationResult = ValidateTileHeight(tileElement, heightOffset); - if (heightValidationResult.Error != GameActions::Status::Ok) + if (heightValidationResult.Error != GameActions::Status::ok) return heightValidationResult; if (isExecuting) @@ -498,7 +498,7 @@ namespace OpenRCT2::TileInspector // No surface element on tile if (surfaceelement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -518,7 +518,7 @@ namespace OpenRCT2::TileInspector // No surface element on tile if (surfaceElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -565,7 +565,7 @@ namespace OpenRCT2::TileInspector // No surface element on tile if (surfaceElement == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -581,7 +581,7 @@ namespace OpenRCT2::TileInspector TileElement* const pathElement = MapGetNthElementAt(loc, elementIndex); if (pathElement == nullptr || pathElement->GetType() != TileElementType::Path) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -597,7 +597,7 @@ namespace OpenRCT2::TileInspector TileElement* const pathElement = MapGetNthElementAt(loc, elementIndex); if (pathElement == nullptr || pathElement->GetType() != TileElementType::Path) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -612,7 +612,7 @@ namespace OpenRCT2::TileInspector TileElement* const pathElement = MapGetNthElementAt(loc, elementIndex); if (pathElement == nullptr || pathElement->GetType() != TileElementType::Path) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -627,7 +627,7 @@ namespace OpenRCT2::TileInspector TileElement* const pathElement = MapGetNthElementAt(loc, elementIndex); if (pathElement == nullptr || pathElement->GetType() != TileElementType::Path) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_PATH_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -643,12 +643,12 @@ namespace OpenRCT2::TileInspector TileElement* const entranceElement = MapGetNthElementAt(loc, elementIndex); if (entranceElement == nullptr || entranceElement->GetType() != TileElementType::Entrance) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ENTRANCE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_ENTRANCE_ELEMENT_NOT_FOUND); auto ride = GetRide(entranceElement->AsEntrance()->GetRideIndex()); if (ride == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); if (isExecuting) { @@ -674,7 +674,7 @@ namespace OpenRCT2::TileInspector TileElement* const wallElement = MapGetNthElementAt(loc, elementIndex); if (wallElement == nullptr || wallElement->GetType() != TileElementType::Wall) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_WALL_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_WALL_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -691,7 +691,7 @@ namespace OpenRCT2::TileInspector TileElement* const wallElement = MapGetNthElementAt(loc, elementIndex); if (wallElement == nullptr || wallElement->GetType() != TileElementType::Wall) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_WALL_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_WALL_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -712,7 +712,7 @@ namespace OpenRCT2::TileInspector TileElement* const trackElement = MapGetNthElementAt(loc, elementIndex); if (trackElement == nullptr || trackElement->GetType() != TileElementType::Track) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -725,13 +725,13 @@ namespace OpenRCT2::TileInspector auto ride = GetRide(rideIndex); if (ride == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); const auto& ted = GetTrackElementDescriptor(type); auto sequenceIndex = trackElement->AsTrack()->GetSequenceIndex(); if (sequenceIndex >= ted.numSequences) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_BLOCK_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_BLOCK_NOT_FOUND); const auto& trackBlock = ted.sequences[sequenceIndex].clearance; uint8_t originDirection = trackElement->GetDirection(); @@ -756,7 +756,7 @@ namespace OpenRCT2::TileInspector { LOG_ERROR("Track map element part not found!"); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } // track_remove returns here on failure, not sure when this would ever be hit. Only thing I can think of is @@ -783,7 +783,7 @@ namespace OpenRCT2::TileInspector TileElement* const trackElement = MapGetNthElementAt(loc, elementIndex); if (trackElement == nullptr || trackElement->GetType() != TileElementType::Track) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -807,13 +807,13 @@ namespace OpenRCT2::TileInspector auto ride = GetRide(rideIndex); if (ride == nullptr) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); const auto& ted = GetTrackElementDescriptor(type); auto sequenceIndex = trackElement->AsTrack()->GetSequenceIndex(); if (sequenceIndex >= ted.numSequences) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_BLOCK_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_BLOCK_NOT_FOUND); const auto& trackBlock = ted.sequences[sequenceIndex].clearance; uint8_t originDirection = trackElement->GetDirection(); @@ -838,7 +838,7 @@ namespace OpenRCT2::TileInspector { LOG_ERROR("Track map element part not found!"); return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } // track_remove returns here on failure, not sure when this would ever be hit. Only thing I can think of is @@ -863,7 +863,7 @@ namespace OpenRCT2::TileInspector TileElement* const trackElement = MapGetNthElementAt(loc, elementIndex); if (trackElement == nullptr || trackElement->GetType() != TileElementType::Track) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -879,7 +879,7 @@ namespace OpenRCT2::TileInspector TileElement* const trackElement = MapGetNthElementAt(loc, elementIndex); if (trackElement == nullptr || trackElement->GetType() != TileElementType::Track) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -895,7 +895,7 @@ namespace OpenRCT2::TileInspector TileElement* const tileElement = MapGetNthElementAt(loc, elementIndex); if (tileElement == nullptr || tileElement->GetType() != TileElementType::SmallScenery) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -915,7 +915,7 @@ namespace OpenRCT2::TileInspector TileElement* const tileElement = MapGetNthElementAt(loc, elementIndex); if (tileElement == nullptr || tileElement->GetType() != TileElementType::SmallScenery) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -932,7 +932,7 @@ namespace OpenRCT2::TileInspector TileElement* const bannerElement = MapGetNthElementAt(loc, elementIndex); if (bannerElement == nullptr || bannerElement->GetType() != TileElementType::Banner) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_BANNER_ELEMENT_NOT_FOUND); if (isExecuting) { @@ -949,7 +949,7 @@ namespace OpenRCT2::TileInspector TileElement* const wallElement = MapGetNthElementAt(loc, elementIndex); if (wallElement == nullptr || wallElement->GetType() != TileElementType::Wall) return GameActions::Result( - GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_WALL_ELEMENT_NOT_FOUND); + GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_WALL_ELEMENT_NOT_FOUND); if (isExecuting) { From c744b7663204a54f7334a1951558355533037121 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 12:11:49 +0100 Subject: [PATCH 093/222] Rename members of GameActions::Result --- src/openrct2-ui/ride/Construction.cpp | 4 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- .../windows/EditorParkEntrance.cpp | 6 +- src/openrct2-ui/windows/Footpath.cpp | 20 ++-- src/openrct2-ui/windows/Guest.cpp | 4 +- src/openrct2-ui/windows/Land.cpp | 8 +- src/openrct2-ui/windows/LandRights.cpp | 4 +- src/openrct2-ui/windows/Map.cpp | 4 +- src/openrct2-ui/windows/MazeConstruction.cpp | 6 +- src/openrct2-ui/windows/NewCampaign.cpp | 2 +- src/openrct2-ui/windows/Player.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 4 +- src/openrct2-ui/windows/RideConstruction.cpp | 40 ++++---- src/openrct2-ui/windows/Scenery.cpp | 78 ++++++++-------- src/openrct2-ui/windows/Staff.cpp | 4 +- src/openrct2-ui/windows/StaffList.cpp | 6 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 22 ++--- src/openrct2-ui/windows/Water.cpp | 8 +- src/openrct2/ReplayManager.cpp | 6 +- src/openrct2/actions/BannerPlaceAction.cpp | 28 +++--- src/openrct2/actions/BannerRemoveAction.cpp | 24 ++--- .../actions/BannerSetColourAction.cpp | 10 +- src/openrct2/actions/BannerSetStyleAction.cpp | 8 +- src/openrct2/actions/ClearAction.cpp | 44 ++++----- .../actions/FootpathAdditionPlaceAction.cpp | 12 +-- .../actions/FootpathAdditionRemoveAction.cpp | 8 +- .../actions/FootpathLayoutPlaceAction.cpp | 44 ++++----- src/openrct2/actions/FootpathPlaceAction.cpp | 48 +++++----- src/openrct2/actions/FootpathRemoveAction.cpp | 24 ++--- src/openrct2/actions/GameAction.cpp | 56 +++++------ src/openrct2/actions/GameActionResult.cpp | 18 ++-- src/openrct2/actions/GameActionResult.h | 36 ++++---- src/openrct2/actions/GuestSetNameAction.cpp | 2 +- src/openrct2/actions/LandBuyRightsAction.cpp | 12 +-- src/openrct2/actions/LandLowerAction.cpp | 10 +- src/openrct2/actions/LandRaiseAction.cpp | 10 +- src/openrct2/actions/LandSetHeightAction.cpp | 14 +-- src/openrct2/actions/LandSetRightsAction.cpp | 16 ++-- src/openrct2/actions/LandSmoothAction.cpp | 92 +++++++++---------- .../actions/LargeSceneryPlaceAction.cpp | 48 +++++----- .../actions/LargeSceneryRemoveAction.cpp | 30 +++--- .../actions/LargeScenerySetColourAction.cpp | 10 +- src/openrct2/actions/MazePlaceTrackAction.cpp | 66 ++++++------- src/openrct2/actions/MazeSetTrackAction.cpp | 70 +++++++------- .../actions/ParkEntrancePlaceAction.cpp | 12 +-- .../actions/ParkEntranceRemoveAction.cpp | 12 +-- src/openrct2/actions/ParkMarketingAction.cpp | 6 +- .../actions/ParkSetParameterAction.cpp | 4 +- src/openrct2/actions/PeepPickupAction.cpp | 16 ++-- src/openrct2/actions/PeepSpawnPlaceAction.cpp | 8 +- src/openrct2/actions/RideCreateAction.cpp | 6 +- src/openrct2/actions/RideDemolishAction.cpp | 26 +++--- .../actions/RideEntranceExitPlaceAction.cpp | 42 ++++----- .../actions/RideEntranceExitRemoveAction.cpp | 6 +- .../actions/RideSetAppearanceAction.cpp | 2 +- .../actions/RideSetColourSchemeAction.cpp | 4 +- src/openrct2/actions/RideSetNameAction.cpp | 2 +- src/openrct2/actions/RideSetPriceAction.cpp | 4 +- src/openrct2/actions/RideSetSettingAction.cpp | 2 +- src/openrct2/actions/RideSetStatusAction.cpp | 50 +++++----- src/openrct2/actions/RideSetVehicleAction.cpp | 2 +- .../actions/SmallSceneryPlaceAction.cpp | 40 ++++---- .../actions/SmallSceneryRemoveAction.cpp | 24 ++--- .../actions/SmallScenerySetColourAction.cpp | 10 +- src/openrct2/actions/StaffHireNewAction.cpp | 6 +- src/openrct2/actions/StaffSetColourAction.cpp | 2 +- .../actions/StaffSetCostumeAction.cpp | 2 +- src/openrct2/actions/StaffSetNameAction.cpp | 2 +- src/openrct2/actions/StaffSetOrdersAction.cpp | 2 +- .../actions/SurfaceSetStyleAction.cpp | 24 ++--- src/openrct2/actions/TileModifyAction.cpp | 6 +- src/openrct2/actions/TrackDesignAction.cpp | 64 ++++++------- src/openrct2/actions/TrackPlaceAction.cpp | 40 ++++---- src/openrct2/actions/TrackRemoveAction.cpp | 32 +++---- .../actions/TrackSetBrakeSpeedAction.cpp | 8 +- src/openrct2/actions/WallPlaceAction.cpp | 38 ++++---- src/openrct2/actions/WallRemoveAction.cpp | 16 ++-- src/openrct2/actions/WallSetColourAction.cpp | 20 ++-- src/openrct2/actions/WaterLowerAction.cpp | 20 ++-- src/openrct2/actions/WaterRaiseAction.cpp | 20 ++-- src/openrct2/actions/WaterSetHeightAction.cpp | 14 +-- src/openrct2/entity/Peep.cpp | 6 +- src/openrct2/interface/InteractiveConsole.cpp | 6 +- src/openrct2/rct12/ScenarioPatcher.cpp | 2 +- src/openrct2/ride/RideConstruction.cpp | 6 +- src/openrct2/ride/TrackDesign.cpp | 54 +++++------ src/openrct2/scripting/ScriptEngine.cpp | 74 +++++++-------- src/openrct2/world/ConstructionClearance.cpp | 60 ++++++------ src/openrct2/world/Entrance.cpp | 2 +- src/openrct2/world/Map.cpp | 8 +- src/openrct2/world/TileInspector.cpp | 6 +- 91 files changed, 894 insertions(+), 894 deletions(-) diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index cdb8b2b5d94b..cd89e8e3f136 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -234,9 +234,9 @@ namespace OpenRCT2 listItem.Type, listItem.EntryIndex, colour1, colour2, getGameState().lastEntranceStyle); gameAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; - const auto rideIndex = result->GetData(); + const auto rideIndex = result->getData(); auto ride = GetRide(rideIndex); RideConstructionStart(*ride); }); diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index be6b7e6f45f7..e80a3f9a9b4b 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -288,7 +288,7 @@ namespace OpenRCT2::Ui::Windows auto action = GetClearAction(); auto result = GameActions::Query(&action, getGameState()); - auto cost = (result.Error == GameActions::Status::ok ? result.Cost : kMoney64Undefined); + auto cost = (result.error == GameActions::Status::ok ? result.cost : kMoney64Undefined); if (_clearSceneryCost != cost) { _clearSceneryCost = cost; diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 12f8c740e068..6226bd5a05ae 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -209,7 +209,7 @@ namespace OpenRCT2::Ui::Windows gameAction.SetFlags({ CommandFlag::ghost }); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { gParkEntranceGhostPosition = parkEntrancePosition; gParkEntranceGhostExists = true; @@ -232,9 +232,9 @@ namespace OpenRCT2::Ui::Windows gameAction.SetCallback( [&](const GameActions::GameAction*, const GameActions::Result* result) { _placingEntrance = false; }); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { - Audio::Play3D(Audio::SoundId::placeItem, result.Position); + Audio::Play3D(Audio::SoundId::placeItem, result.position); } } } diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 98e711b08e1e..ea9b2e20a0e9 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1276,10 +1276,10 @@ namespace OpenRCT2::Ui::Windows auto footpathPlaceAction = GameActions::FootpathPlaceAction( tile.position, tile.slope, selectedType, gFootpathSelection.Railings, kInvalidDirection, constructFlags); auto result = GameActions::Execute(&footpathPlaceAction, getGameState()); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { anySuccess = true; - cost += result.Cost; + cost += result.cost; } lastLocation = tile.position; } @@ -1326,12 +1326,12 @@ namespace OpenRCT2::Ui::Windows { *mapPos, placement.baseZ }, placement.slope, selectedType, gFootpathSelection.Railings, kInvalidDirection, constructFlags); footpathPlaceAction.SetCallback([this](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { // Don't play sound if it is no cost to prevent multiple sounds. TODO: make this work in no money scenarios - if (result->Cost != 0) + if (result->cost != 0) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); + OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->position); } } else @@ -1420,9 +1420,9 @@ namespace OpenRCT2::Ui::Windows footpathPlaceAction.SetCallback( [footpathLoc](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { - Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); + Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->position); } auto* windowMgr = GetWindowManager(); @@ -1432,7 +1432,7 @@ namespace OpenRCT2::Ui::Windows return; } - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { if (_footpathConstructSlope == SlopePitch::flat) { @@ -1942,10 +1942,10 @@ namespace OpenRCT2::Ui::Windows res = GameActions::Execute(&footpathPlaceAction, getGameState()); // The latter status will be returned if there is already path at the tile in question, to prevent a ghost // from glitching through the existing path. - if (res.Error == GameActions::Status::ok || res.Error == GameActions::Status::itemAlreadyPlaced) + if (res.error == GameActions::Status::ok || res.error == GameActions::Status::itemAlreadyPlaced) { succesfulTiles.emplace_back(tile); - cost += res.Cost; + cost += res.cost; } } diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index de04ad406048..4639fa9788f8 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -661,7 +661,7 @@ namespace OpenRCT2::Ui::Windows Network::GetCurrentPlayerId() }; pickupAction.SetCallback( [peepnum = number](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; auto* windowMgr = GetWindowManager(); WindowBase* wind = windowMgr->FindByNumber(WindowClass::peep, peepnum); @@ -1027,7 +1027,7 @@ namespace OpenRCT2::Ui::Windows { destCoords, tileElement->GetBaseZ() }, Network::GetCurrentPlayerId() }; pickupAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; ToolCancel(); gPickupPeepImage = ImageId(); diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index d68b0b45aa58..84e4aa0a1bae 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -356,7 +356,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectType, false); auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landSmoothAction, gameState) : GameActions::Query(&landSmoothAction, gameState); - return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + return res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } auto landRaiseAction = GameActions::LandRaiseAction( @@ -365,7 +365,7 @@ namespace OpenRCT2::Ui::Windows auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landRaiseAction, gameState) : GameActions::Query(&landRaiseAction, gameState); - return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + return res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } /** @@ -389,7 +389,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectType, true); auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landSmoothAction, gameState) : GameActions::Query(&landSmoothAction, gameState); - return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + return res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } auto landLowerAction = GameActions::LandLowerAction( @@ -398,7 +398,7 @@ namespace OpenRCT2::Ui::Windows auto res = (mode == SelectionMode::apply) ? GameActions::Execute(&landLowerAction, gameState) : GameActions::Query(&landLowerAction, gameState); - return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + return res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } /** diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index a2bcb58009e9..13ec9fd40010 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -536,13 +536,13 @@ namespace OpenRCT2::Ui::Windows { auto landSetRightsAction = GetLandSetAction(); auto res = GameActions::Query(&landSetRightsAction, gameState); - _landRightsCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + _landRightsCost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } else { auto landBuyRightsAction = GetLandBuyAction(); auto res = GameActions::Query(&landBuyRightsAction, gameState); - _landRightsCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + _landRightsCost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } } diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index b45bb8c47f45..3fd5b6cde7c4 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -484,9 +484,9 @@ namespace OpenRCT2::Ui::Windows auto gameAction = GameActions::PeepSpawnPlaceAction({ mapCoords, mapZ, static_cast(direction) }); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { - Audio::Play3D(Audio::SoundId::placeItem, result.Position); + Audio::Play3D(Audio::SoundId::placeItem, result.position); } } diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 22acbb77c7f3..d3ec79be040a 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -364,10 +364,10 @@ namespace OpenRCT2::Ui::Windows rideEntranceExitPlaceAction.SetCallback([=, this]( const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); + OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->position); auto* windowMgr = Ui::GetWindowManager(); @@ -429,7 +429,7 @@ namespace OpenRCT2::Ui::Windows auto action = GameActions::MazeSetTrackAction(loc, false, _currentRideIndex, mode); action.SetFlags(actionFlags); const auto res = GameActions::Execute(&action, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return; } diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 02b7357e2fa3..bc57fe954b10 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -269,7 +269,7 @@ namespace OpenRCT2::Ui::Windows auto gameAction = GameActions::ParkMarketingAction( Campaign.campaign_type, Campaign.RideId.ToUnderlying(), Campaign.no_weeks); gameAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { auto* windowMgr = Ui::GetWindowManager(); windowMgr->CloseByClass(WindowClass::newCampaign); diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 1a1599c25ae0..ad4600894749 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -533,7 +533,7 @@ namespace OpenRCT2::Ui::Windows auto playerSetGroupAction = GameActions::PlayerSetGroupAction(playerId, groupId); playerSetGroupAction.SetCallback( [windowHandle](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByNumber(windowHandle.first, windowHandle.second); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index f45b5d7d1d42..9d9fa61385b4 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4483,7 +4483,7 @@ namespace OpenRCT2::Ui::Windows rideId, GameActions::RideSetAppearanceType::EntranceStyle, objIndex, 0); rideSetAppearanceAction.SetCallback( [objIndex](const GameActions::GameAction*, const GameActions::Result* res) { - if (res->Error != GameActions::Status::ok) + if (res->error != GameActions::Status::ok) return; getGameState().lastEntranceStyle = objIndex; }); @@ -4496,7 +4496,7 @@ namespace OpenRCT2::Ui::Windows rideId, GameActions::RideSetAppearanceType::VehicleColourScheme, dropdownIndex, 0); rideSetAppearanceAction.SetCallback( [this](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { resetVehicleIndex(); } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index d37d3924004c..98ef3d94a75e 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2337,18 +2337,18 @@ namespace OpenRCT2::Ui::Windows } auto res = GameActions::Execute(&trackPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { _trackPlaceCost = kMoney64Undefined; - _trackPlaceErrorMessage = std::get(res.ErrorMessage); + _trackPlaceErrorMessage = std::get(res.errorMessage); } else { - _trackPlaceCost = res.Cost; + _trackPlaceCost = res.cost; _trackPlaceErrorMessage = kStringIdNone; } - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return; } @@ -2360,7 +2360,7 @@ namespace OpenRCT2::Ui::Windows _currentTrackSelectionFlags.set(TrackSelectionFlag::trackPlaceActionQueued); } - const auto resultData = res.GetData(); + const auto resultData = res.getData(); if (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) { ViewportSetVisibility(ViewportVisibility::undergroundViewOn); @@ -2460,7 +2460,7 @@ namespace OpenRCT2::Ui::Windows { _currentTrackBegin.x, _currentTrackBegin.y, _currentTrackBegin.z, currentDirection }); trackRemoveAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) { WindowRideConstructionUpdateActiveElements(); } @@ -2665,10 +2665,10 @@ namespace OpenRCT2::Ui::Windows rideEntranceExitPlaceAction.SetCallback( [=, this](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->Position); + OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, result->position); auto* windowMgr = GetWindowManager(); @@ -2951,7 +2951,7 @@ namespace OpenRCT2::Ui::Windows static void RideConstructPlacedForwardGameActionCallback( const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) { WindowRideConstructionUpdateActiveElements(); return; @@ -2998,7 +2998,7 @@ namespace OpenRCT2::Ui::Windows static void RideConstructPlacedBackwardGameActionCallback( const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) { WindowRideConstructionUpdateActiveElements(); return; @@ -3700,23 +3700,23 @@ namespace OpenRCT2::Ui::Windows auto gameAction = GameActions::MazeSetTrackAction( CoordsXYZD{ _currentTrackBegin, 0 }, true, _currentRideIndex, GC_SET_MAZE_TRACK_BUILD); auto mazeSetTrackResult = GameActions::Execute(&gameAction, getGameState()); - if (mazeSetTrackResult.Error == GameActions::Status::ok) + if (mazeSetTrackResult.error == GameActions::Status::ok) { - _trackPlaceCost = mazeSetTrackResult.Cost; + _trackPlaceCost = mazeSetTrackResult.cost; _trackPlaceErrorMessage = kStringIdNone; } else { _trackPlaceCost = kMoney64Undefined; - _trackPlaceErrorMessage = std::get(mazeSetTrackResult.ErrorMessage); + _trackPlaceErrorMessage = std::get(mazeSetTrackResult.errorMessage); } gDisableErrorWindowSound = false; - if (mazeSetTrackResult.Error != GameActions::Status::ok) + if (mazeSetTrackResult.error != GameActions::Status::ok) { _rideConstructionState = RideConstructionState::Place; - StringId errorText = std::get(mazeSetTrackResult.ErrorMessage); + StringId errorText = std::get(mazeSetTrackResult.errorMessage); z -= 8; if (errorText == STR_NOT_ENOUGH_CASH_REQUIRES || errorText == STR_CAN_ONLY_BUILD_THIS_UNDERWATER || errorText == STR_CAN_ONLY_BUILD_THIS_ON_WATER || errorText == STR_RIDE_CANT_BUILD_THIS_UNDERWATER @@ -4762,7 +4762,7 @@ namespace OpenRCT2::Ui::Windows gameAction.SetFlags(flags); auto result = GameActions::Execute(&gameAction, getGameState()); - if (result.Error != GameActions::Status::ok) + if (result.error != GameActions::Status::ok) return kMoney64Undefined; _unkF440C5 = { trackPos, static_cast(trackDirection) }; @@ -4771,7 +4771,7 @@ namespace OpenRCT2::Ui::Windows if (_currentTrackPitchEnd != TrackPitch::None) ViewportSetVisibility(ViewportVisibility::trackHeights); - return result.Cost; + return result.cost; } auto trackPlaceAction = GameActions::TrackPlaceAction( @@ -4780,7 +4780,7 @@ namespace OpenRCT2::Ui::Windows trackPlaceAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }); // This command must not be sent over the network auto res = GameActions::Execute(&trackPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) return kMoney64Undefined; int16_t zBegin{}, zEnd{}; @@ -4799,7 +4799,7 @@ namespace OpenRCT2::Ui::Windows _unkF440C5 = { trackPos.x, trackPos.y, trackPos.z + zBegin, static_cast(trackDirection) }; _currentTrackSelectionFlags.set(TrackSelectionFlag::track); - const auto resultData = res.GetData(); + const auto resultData = res.getData(); const auto visiblity = (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) ? ViewportVisibility::undergroundViewOn : ViewportVisibility::undergroundViewOff; ViewportSetVisibility(visiblity); @@ -4812,7 +4812,7 @@ namespace OpenRCT2::Ui::Windows VirtualFloorSetHeight(trackPos.z - zBegin + zEnd); } - return res.Cost; + return res.cost; } static std::pair WindowRideConstructionUpdateStateGetTrackElement() diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 49e852277557..55aee41e2377 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -2054,10 +2054,10 @@ namespace OpenRCT2::Ui::Windows loc, quadrant, entryIndex, primaryColour, secondaryColour, tertiaryColour); smallSceneryPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); auto res = GameActions::Execute(&smallSceneryPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) return kMoney64Undefined; - const auto placementData = res.GetData(); + const auto placementData = res.getData(); gSceneryPlaceRotation = loc.direction; gSceneryPlaceObject.SceneryType = SCENERY_TYPE_SMALL; @@ -2077,7 +2077,7 @@ namespace OpenRCT2::Ui::Windows } gSceneryGhostType |= SCENERY_GHOST_FLAG_0; - return res.Cost; + return res.cost; } money64 TryPlaceGhostPathAddition(CoordsXYZ loc, ObjectEntryIndex entryIndex) @@ -2088,7 +2088,7 @@ namespace OpenRCT2::Ui::Windows auto footpathAdditionPlaceAction = GameActions::FootpathAdditionPlaceAction(loc, entryIndex); footpathAdditionPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); footpathAdditionPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) { return; } @@ -2096,10 +2096,10 @@ namespace OpenRCT2::Ui::Windows gSceneryGhostType |= SCENERY_GHOST_FLAG_1; }); auto res = GameActions::Execute(&footpathAdditionPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) return kMoney64Undefined; - return res.Cost; + return res.cost; } money64 TryPlaceGhostWall( @@ -2113,10 +2113,10 @@ namespace OpenRCT2::Ui::Windows entryIndex, loc, edge, primaryColour, secondaryColour, tertiaryColour); wallPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); wallPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; - const auto placementData = result->GetData(); + const auto placementData = result->getData(); gSceneryGhostPosition = { loc, placementData.BaseHeight }; gSceneryGhostWallRotation = edge; @@ -2124,10 +2124,10 @@ namespace OpenRCT2::Ui::Windows }); auto res = GameActions::Execute(&wallPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) return kMoney64Undefined; - return res.Cost; + return res.cost; } money64 TryPlaceGhostLargeScenery( @@ -2141,10 +2141,10 @@ namespace OpenRCT2::Ui::Windows loc, entryIndex, primaryColour, secondaryColour, tertiaryColour); sceneryPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); auto res = GameActions::Execute(&sceneryPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) return kMoney64Undefined; - const auto placementData = res.GetData(); + const auto placementData = res.getData(); gSceneryPlaceRotation = loc.direction; @@ -2161,7 +2161,7 @@ namespace OpenRCT2::Ui::Windows } gSceneryGhostType |= SCENERY_GHOST_FLAG_3; - return res.Cost; + return res.cost; } money64 TryPlaceGhostBanner(CoordsXYZD loc, ObjectEntryIndex entryIndex) @@ -2173,14 +2173,14 @@ namespace OpenRCT2::Ui::Windows auto bannerPlaceAction = GameActions::BannerPlaceAction(loc, entryIndex, primaryColour); bannerPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused, CommandFlag::noSpend }); auto res = GameActions::Execute(&bannerPlaceAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) return kMoney64Undefined; gSceneryGhostPosition = loc; gSceneryGhostPosition.z += kPathHeightStep; gSceneryPlaceRotation = loc.direction; gSceneryGhostType |= SCENERY_GHOST_FLAG_4; - return res.Cost; + return res.cost; } /** @@ -2975,13 +2975,13 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Query(&smallSceneryPlaceAction, gameState); - success = res.Error; - if (res.Error == GameActions::Status::ok) + success = res.error; + if (res.error == GameActions::Status::ok) { break; } - if (res.Error == GameActions::Status::insufficientFunds) + if (res.error == GameActions::Status::insufficientFunds) { break; } @@ -3000,20 +3000,20 @@ namespace OpenRCT2::Ui::Windows smallSceneryPlaceAction.SetCallback( [=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { - Audio::Play3D(Audio::SoundId::placeItem, result->Position); + Audio::Play3D(Audio::SoundId::placeItem, result->position); } }); auto& gameState = getGameState(); auto res = GameActions::Execute(&smallSceneryPlaceAction, gameState); - if (res.Error == GameActions::Status::ok) + if (res.error == GameActions::Status::ok) { forceError = false; } - if (res.Error == GameActions::Status::insufficientFunds) + if (res.error == GameActions::Status::insufficientFunds) { break; } @@ -3034,11 +3034,11 @@ namespace OpenRCT2::Ui::Windows auto footpathAdditionPlaceAction = GameActions::FootpathAdditionPlaceAction({ gridPos, z }, selectedScenery); footpathAdditionPlaceAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) { return; } - Audio::Play3D(Audio::SoundId::placeItem, result->Position); + Audio::Play3D(Audio::SoundId::placeItem, result->position); }); auto& gameState = getGameState(); @@ -3092,12 +3092,12 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Query(&wallPlaceAction, gameState); - if (res.Error == GameActions::Status::ok) + if (res.error == GameActions::Status::ok) { break; } - if (const auto* message = std::get_if(&res.ErrorMessage)) + if (const auto* message = std::get_if(&res.errorMessage)) { if (*message == STR_NOT_ENOUGH_CASH_REQUIRES || *message == STR_CAN_ONLY_BUILD_THIS_ON_WATER) { @@ -3184,9 +3184,9 @@ namespace OpenRCT2::Ui::Windows wallPlaceAction.SetFlags({ CommandFlag::ghost, CommandFlag::allowDuringPaused }); auto result = GameActions::Execute(&wallPlaceAction, gameState); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { - const auto placementData = result.GetData(); + const auto placementData = result.getData(); _provisionalTiles.push_back({ CoordsXYZD(x, y, gSceneryPlaceZ, _startEdge), placementData.BaseHeight }); } else @@ -3233,11 +3233,11 @@ namespace OpenRCT2::Ui::Windows auto z = gSceneryPlaceZ > 0 ? gSceneryPlaceZ : TileElementHeight(_dragStartPos); Audio::Play3D(Audio::SoundId::error, { _dragStartPos, z }); - if (_lastProvisionalError.Error != GameActions::Status::ok) + if (_lastProvisionalError.error != GameActions::Status::ok) { auto windowManager = Ui::GetWindowManager(); windowManager->ShowError( - _lastProvisionalError.GetErrorTitle(), _lastProvisionalError.GetErrorMessage(), true); + _lastProvisionalError.getErrorTitle(), _lastProvisionalError.getErrorMessage(), true); } _inDragMode = false; @@ -3255,10 +3255,10 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto result = GameActions::Execute(&wallPlaceAction, gameState); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { anySuccessful = true; - lastLocation = result.Position; + lastLocation = result.position; } } @@ -3294,12 +3294,12 @@ namespace OpenRCT2::Ui::Windows auto& gameState = getGameState(); auto res = GameActions::Query(&sceneryPlaceAction, gameState); - if (res.Error == GameActions::Status::ok) + if (res.error == GameActions::Status::ok) { break; } - if (const auto* message = std::get_if(&res.ErrorMessage)) + if (const auto* message = std::get_if(&res.errorMessage)) { if (*message == STR_NOT_ENOUGH_CASH_REQUIRES || *message == STR_CAN_ONLY_BUILD_THIS_ON_WATER) { @@ -3318,9 +3318,9 @@ namespace OpenRCT2::Ui::Windows auto sceneryPlaceAction = GameActions::LargeSceneryPlaceAction( loc, selectedScenery, _sceneryPrimaryColour, _scenerySecondaryColour, _sceneryTertiaryColour); sceneryPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { - Audio::Play3D(Audio::SoundId::placeItem, result->Position); + Audio::Play3D(Audio::SoundId::placeItem, result->position); } else { @@ -3345,10 +3345,10 @@ namespace OpenRCT2::Ui::Windows auto primaryColour = _sceneryPrimaryColour; auto bannerPlaceAction = GameActions::BannerPlaceAction(loc, selectedScenery, primaryColour); bannerPlaceAction.SetCallback([=](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { - auto data = result->GetData(); - Audio::Play3D(Audio::SoundId::placeItem, result->Position); + auto data = result->getData(); + Audio::Play3D(Audio::SoundId::placeItem, result->position); ContextOpenDetailWindow(WindowDetail::banner, data.bannerId.ToUnderlying()); } }); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 310336f241e0..e52e7b9b828a 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -388,7 +388,7 @@ namespace OpenRCT2::Ui::Windows Network::GetCurrentPlayerId() }; pickupAction.SetCallback( [peepnum = number](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; auto* windowMgr = GetWindowManager(); @@ -719,7 +719,7 @@ namespace OpenRCT2::Ui::Windows { destCoords, tileElement->GetBaseZ() }, Network::GetCurrentPlayerId() }; pickupAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; ToolCancel(); gPickupPeepImage = ImageId(); diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index bafd32089a2d..b3dca0cb5ab0 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -546,10 +546,10 @@ namespace OpenRCT2::Ui::Windows auto hireStaffAction = GameActions::StaffHireNewAction(autoPosition, staffType, costume, staffOrders); hireStaffAction.SetCallback([=](const GameActions::GameAction*, const GameActions::Result* res) -> void { - if (res->Error != GameActions::Status::ok) + if (res->error != GameActions::Status::ok) return; - auto actionResult = res->GetData(); + auto actionResult = res->getData(); auto* staff = getGameState().entities.GetEntity(actionResult.StaffEntityId); if (staff == nullptr) return; @@ -564,7 +564,7 @@ namespace OpenRCT2::Ui::Windows Network::GetCurrentPlayerId() }; pickupAction.SetCallback( [staffId = staff->Id](const GameActions::GameAction* ga, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) return; auto* staff2 = getGameState().entities.GetEntity(staffId); diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 74aa3d24b0f4..e70175a3807a 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -222,21 +222,21 @@ namespace OpenRCT2::Ui::Windows CoordsXYZD ghostTrackLoc = trackLoc; auto res = FindValidTrackDesignPlaceHeight(ghostTrackLoc, { CommandFlag::noSpend, CommandFlag::ghost }); - if (res.Error == GameActions::Status::ok) + if (res.error == GameActions::Status::ok) { // Valid location found. Place the ghost at the location. auto tdAction = GameActions::TrackDesignAction(ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) { - if (result->Error == GameActions::Status::ok) + if (result->error == GameActions::Status::ok) { - _placementGhostRideId = result->GetData(); + _placementGhostRideId = result->getData(); _placementGhostLoc = ghostTrackLoc; _hasPlacementGhost = true; } }); res = GameActions::Execute(&tdAction, getGameState()); - cost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + cost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; VirtualFloorSetHeight(ghostTrackLoc.z); } @@ -284,13 +284,13 @@ namespace OpenRCT2::Ui::Windows // Try increasing Z until a feasible placement is found CoordsXYZ trackLoc = { mapCoords, maybeMapZ.value() }; auto res = FindValidTrackDesignPlaceHeight(trackLoc, {}); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { // Unable to build track Audio::Play3D(Audio::SoundId::error, trackLoc); auto windowManager = GetWindowManager(); - windowManager->ShowError(res.GetErrorTitle(), res.GetErrorMessage()); + windowManager->ShowError(res.getErrorTitle(), res.getErrorMessage()); return; } @@ -299,14 +299,14 @@ namespace OpenRCT2::Ui::Windows auto tdAction = GameActions::TrackDesignAction( { trackLoc, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetCallback([&, trackLoc](const GameActions::GameAction*, const GameActions::Result* result) { - if (result->Error != GameActions::Status::ok) + if (result->error != GameActions::Status::ok) { - Audio::Play3D(Audio::SoundId::error, result->Position); + Audio::Play3D(Audio::SoundId::error, result->position); _placingTrackDesign = false; return; } - rideId = result->GetData(); + rideId = result->getData(); auto getRide = GetRide(rideId); if (getRide != nullptr) { @@ -403,7 +403,7 @@ namespace OpenRCT2::Ui::Windows { _placementGhostLoc }, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); auto res = GameActions::Execute(&tdAction, getGameState()); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { _hasPlacementGhost = false; } @@ -753,7 +753,7 @@ namespace OpenRCT2::Ui::Windows // If successful don't keep trying. // If failure due to no money then increasing height only makes problem worse - if (res.Error == GameActions::Status::ok || res.Error == GameActions::Status::insufficientFunds) + if (res.error == GameActions::Status::ok || res.error == GameActions::Status::insufficientFunds) { return res; } diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index b87921134bfd..0f534b51dffb 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -308,10 +308,10 @@ namespace OpenRCT2::Ui::Windows { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }); auto res = GameActions::Query(&waterLowerAction, gameState); - money64 lowerCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + money64 lowerCost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; res = GameActions::Query(&waterRaiseAction, gameState); - money64 raiseCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + money64 raiseCost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; if (_waterToolRaiseCost != raiseCost || _waterToolLowerCost != lowerCost) { @@ -398,10 +398,10 @@ namespace OpenRCT2::Ui::Windows { gMapSelectPositionA.x, gMapSelectPositionA.y, gMapSelectPositionB.x, gMapSelectPositionB.y }); auto res = GameActions::Query(&waterLowerAction, gameState); - money64 lowerCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + money64 lowerCost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; res = GameActions::Query(&waterRaiseAction, gameState); - money64 raiseCost = res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + money64 raiseCost = res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; if (_waterToolRaiseCost != raiseCost || _waterToolLowerCost != lowerCost) { diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index b51cc2645e6b..4a681c186298 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -864,17 +864,17 @@ namespace OpenRCT2 action->SetFlags(action->GetFlags().with(CommandFlag::replay)); GameActions::Result result = GameActions::Execute(action, gameState); - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { isPositionValid = true; } // Focus camera on event. - if (!gSilentReplays && isPositionValid && !result.Position.IsNull()) + if (!gSilentReplays && isPositionValid && !result.position.IsNull()) { auto* mainWindow = WindowGetMain(); if (mainWindow != nullptr) - WindowScrollToLocation(*mainWindow, result.Position); + WindowScrollToLocation(*mainWindow, result.position); } replayQueue.erase(replayQueue.begin()); diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 3236e41ece6e..a47eb9bdfc07 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -54,11 +54,11 @@ namespace OpenRCT2::GameActions Result BannerPlaceAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::landscaping; - res.ErrorTitle = STR_CANT_POSITION_THIS_HERE; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_POSITION_THIS_HERE; if (!LocationValid(_loc)) { @@ -102,8 +102,8 @@ namespace OpenRCT2::GameActions LOG_ERROR("Banner entry not found for bannerType %u", _bannerType); return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } - res.Cost = bannerEntry->price; - res.SetData(BannerPlaceActionResult{}); + res.cost = bannerEntry->price; + res.setData(BannerPlaceActionResult{}); return res; } @@ -111,11 +111,11 @@ namespace OpenRCT2::GameActions Result BannerPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::landscaping; - res.ErrorTitle = STR_CANT_POSITION_THIS_HERE; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_POSITION_THIS_HERE; if (!MapCheckCapacityAndReorganise(_loc)) { @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions banner->colour = _primaryColour; banner->position = TileCoordsXY(_loc); - res.SetData(BannerPlaceActionResult{ banner->id }); + res.setData(BannerPlaceActionResult{ banner->id }); auto* bannerElement = TileElementInsert({ _loc, _loc.z + (2 * kCoordsZStep) }, 0b0000); Guard::Assert(bannerElement != nullptr); @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions MapInvalidateTileFull(_loc); MapAnimations::MarkTileForInvalidation(TileCoordsXY(_loc)); - res.Cost = bannerEntry->price; + res.cost = bannerEntry->price; return res; } diff --git a/src/openrct2/actions/BannerRemoveAction.cpp b/src/openrct2/actions/BannerRemoveAction.cpp index 79257169f691..7d5ed1a897ba 100644 --- a/src/openrct2/actions/BannerRemoveAction.cpp +++ b/src/openrct2/actions/BannerRemoveAction.cpp @@ -47,11 +47,11 @@ namespace OpenRCT2::GameActions Result BannerRemoveAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.ErrorTitle = STR_CANT_REMOVE_THIS; + res.expenditure = ExpenditureType::landscaping; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.errorTitle = STR_CANT_REMOVE_THIS; if (!LocationValid(_loc)) { @@ -87,7 +87,7 @@ namespace OpenRCT2::GameActions auto* bannerEntry = ObjectManager::GetObjectEntry(banner->type); if (bannerEntry != nullptr) { - res.Cost = -((bannerEntry->price * 3) / 4); + res.cost = -((bannerEntry->price * 3) / 4); } return res; @@ -96,11 +96,11 @@ namespace OpenRCT2::GameActions Result BannerRemoveAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.ErrorTitle = STR_CANT_REMOVE_THIS; + res.expenditure = ExpenditureType::landscaping; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.errorTitle = STR_CANT_REMOVE_THIS; BannerElement* bannerElement = GetBannerElementAt(); if (bannerElement == nullptr) @@ -127,7 +127,7 @@ namespace OpenRCT2::GameActions auto* bannerEntry = ObjectManager::GetObjectEntry(banner->type); if (bannerEntry != nullptr) { - res.Cost = -((bannerEntry->price * 3) / 4); + res.cost = -((bannerEntry->price * 3) / 4); } reinterpret_cast(bannerElement)->RemoveBannerEntry(); diff --git a/src/openrct2/actions/BannerSetColourAction.cpp b/src/openrct2/actions/BannerSetColourAction.cpp index b53a20fbbaed..28d96324a3ed 100644 --- a/src/openrct2/actions/BannerSetColourAction.cpp +++ b/src/openrct2/actions/BannerSetColourAction.cpp @@ -57,11 +57,11 @@ namespace OpenRCT2::GameActions Result BannerSetColourAction::QueryExecute(bool isExecuting) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.ErrorTitle = STR_CANT_REPAINT_THIS; + res.expenditure = ExpenditureType::landscaping; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.errorTitle = STR_CANT_REPAINT_THIS; if (!LocationValid(_loc)) { diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index 83b10a3a5d68..f1649a3ff3ac 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -64,9 +64,9 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, errorTitle, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } - res.Expenditure = ExpenditureType::landscaping; + res.expenditure = ExpenditureType::landscaping; auto location = banner->position.ToCoordsXY().ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; TileElement* tileElement = BannerGetTileElement(_bannerIndex); @@ -130,9 +130,9 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_ERR_BANNER_ELEMENT_NOT_FOUND); } - res.Expenditure = ExpenditureType::landscaping; + res.expenditure = ExpenditureType::landscaping; auto location = banner->position.ToCoordsXY().ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; TileElement* tileElement = BannerGetTileElement(_bannerIndex); diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index fce603a33def..c3a9143dd2f0 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -64,13 +64,13 @@ namespace OpenRCT2::GameActions Result ClearAction::CreateResult() const { auto result = Result(); - result.ErrorTitle = STR_UNABLE_TO_REMOVE_ALL_SCENERY_FROM_HERE; - result.Expenditure = ExpenditureType::landscaping; + result.errorTitle = STR_UNABLE_TO_REMOVE_ALL_SCENERY_FROM_HERE; + result.expenditure = ExpenditureType::landscaping; auto x = (_range.GetX1() + _range.GetX2()) / 2 + 16; auto y = (_range.GetY1() + _range.GetY2()) / 2 + 16; auto z = TileElementHeight({ x, y }); - result.Position = CoordsXYZ(x, y, z); + result.position = CoordsXYZ(x, y, z); return result; } @@ -113,11 +113,11 @@ namespace OpenRCT2::GameActions if (noValidTiles) { - result.Error = error; - result.ErrorMessage = errorMessage; + result.error = error; + result.errorMessage = errorMessage; } - result.Cost = totalCost; + result.cost = totalCost; return result; } @@ -149,14 +149,14 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&footpathRemoveAction, gameState) : QueryNested(&footpathRemoveAction, gameState); - if (res.Error == Status::ok) + if (res.error == Status::ok) { - totalCost += res.Cost; + totalCost += res.cost; tileEdited = executing; } - else if (res.Error == Status::insufficientFunds) + else if (res.error == Status::insufficientFunds) { - totalCost += res.Cost; + totalCost += res.cost; } } break; @@ -171,14 +171,14 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&removeSceneryAction, gameState) : QueryNested(&removeSceneryAction, gameState); - if (res.Error == Status::ok) + if (res.error == Status::ok) { - totalCost += res.Cost; + totalCost += res.cost; tileEdited = executing; } - else if (res.Error == Status::insufficientFunds) + else if (res.error == Status::insufficientFunds) { - totalCost += res.Cost; + totalCost += res.cost; } } break; @@ -192,14 +192,14 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&wallRemoveAction, gameState) : QueryNested(&wallRemoveAction, gameState); - if (res.Error == Status::ok) + if (res.error == Status::ok) { - totalCost += res.Cost; + totalCost += res.cost; tileEdited = executing; } - else if (res.Error == Status::insufficientFunds) + else if (res.error == Status::insufficientFunds) { - totalCost += res.Cost; + totalCost += res.cost; } } break; @@ -214,14 +214,14 @@ namespace OpenRCT2::GameActions auto res = executing ? ExecuteNested(&removeSceneryAction, gameState) : QueryNested(&removeSceneryAction, gameState); - if (res.Error == Status::ok) + if (res.error == Status::ok) { - totalCost += res.Cost; + totalCost += res.cost; tileEdited = executing; } - else if (res.Error == Status::insufficientFunds) + else if (res.error == Status::insufficientFunds) { - totalCost += res.Cost; + totalCost += res.cost; } } break; diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 49524ebe9116..86010bffb49e 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -54,8 +54,8 @@ namespace OpenRCT2::GameActions Result FootpathAdditionPlaceAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc; if (!LocationValid(_loc)) { return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); @@ -126,7 +126,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_CAN_ONLY_PLACE_THESE_ON_QUEUE_AREA); } - res.Cost = pathAdditionEntry->price; + res.cost = pathAdditionEntry->price; // Should place a ghost? if (GetFlags().has(CommandFlag::ghost)) @@ -143,8 +143,8 @@ namespace OpenRCT2::GameActions Result FootpathAdditionPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Position = _loc; - res.Expenditure = ExpenditureType::landscaping; + res.position = _loc; + res.expenditure = ExpenditureType::landscaping; auto tileElement = MapGetFootpathElement(_loc); auto pathElement = tileElement->AsPath(); @@ -169,7 +169,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } - res.Cost = pathAdditionEntry->price; + res.cost = pathAdditionEntry->price; if (GetFlags().has(CommandFlag::ghost)) { diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index e063069defc8..8289305ea595 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -88,8 +88,8 @@ namespace OpenRCT2::GameActions return Result(Status::disallowed, STR_CANT_REMOVE_THIS, kStringIdNone); } auto res = Result(); - res.Position = _loc; - res.Cost = 0.00_GBP; + res.position = _loc; + res.cost = 0.00_GBP; return res; } @@ -111,8 +111,8 @@ namespace OpenRCT2::GameActions MapInvalidateTileFull(_loc); auto res = Result(); - res.Position = _loc; - res.Cost = 0.00_GBP; + res.position = _loc; + res.cost = 0.00_GBP; return res; } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 83c71d6d8f20..2904d77e83c2 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -68,9 +68,9 @@ namespace OpenRCT2::GameActions Result FootpathLayoutPlaceAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc.ToTileCentre(); + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc.ToTileCentre(); gFootpathGroundFlags = 0; @@ -100,9 +100,9 @@ namespace OpenRCT2::GameActions Result FootpathLayoutPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc.ToTileCentre(); + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc.ToTileCentre(); if (!(GetFlags().has(CommandFlag::ghost))) { @@ -127,7 +127,7 @@ namespace OpenRCT2::GameActions Status::noFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } - res.Cost = 12.00_GBP; + res.cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -147,7 +147,7 @@ namespace OpenRCT2::GameActions if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= 6.00_GBP; + res.cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped path. @@ -156,14 +156,14 @@ namespace OpenRCT2::GameActions : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::ok) + if (!entrancePath && canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - res.Cost += canBuild.Cost; + res.cost += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); gFootpathGroundFlags = clearanceData.GroundFlags; if (!getGameState().cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) @@ -178,11 +178,11 @@ namespace OpenRCT2::GameActions Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; + res.cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; // Prevent the place sound from being spammed if (entranceIsSamePath) - res.Cost = 0; + res.cost = 0; return res; } @@ -196,7 +196,7 @@ namespace OpenRCT2::GameActions FootpathRemoveLitter(_loc); } - res.Cost = 12.00_GBP; + res.cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -216,7 +216,7 @@ namespace OpenRCT2::GameActions if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= 6.00_GBP; + res.cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped path. @@ -226,14 +226,14 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::ok) + if (!entrancePath && canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - res.Cost += canBuild.Cost; + res.cost += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); gFootpathGroundFlags = clearanceData.GroundFlags; auto surfaceElement = MapGetSurfaceElementAt(_loc); @@ -243,7 +243,7 @@ namespace OpenRCT2::GameActions Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; + res.cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; if (entrancePath) { @@ -291,7 +291,7 @@ namespace OpenRCT2::GameActions // Prevent the place sound from being spammed if (entranceIsSamePath) - res.Cost = 0; + res.cost = 0; return res; } diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index c00545f63ecd..c9564264a335 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -77,9 +77,9 @@ namespace OpenRCT2::GameActions Result FootpathPlaceAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc.ToTileCentre(); + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc.ToTileCentre(); gFootpathGroundFlags = 0; @@ -128,9 +128,9 @@ namespace OpenRCT2::GameActions Result FootpathPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc.ToTileCentre(); + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc.ToTileCentre(); if (!(GetFlags().has(CommandFlag::ghost))) { @@ -220,7 +220,7 @@ namespace OpenRCT2::GameActions if (!IsSameAsPathElement(pathElement)) { - res.Cost += 6.00_GBP; + res.cost += 6.00_GBP; } if (GetFlags().has(CommandFlag::ghost) && !pathElement->IsGhost()) @@ -234,7 +234,7 @@ namespace OpenRCT2::GameActions { if (!IsSameAsPathElement(pathElement)) { - res.Cost += 6.00_GBP; + res.cost += 6.00_GBP; } FootpathQueueChainReset(); @@ -292,7 +292,7 @@ namespace OpenRCT2::GameActions return Result(Status::noFreeElements, STR_CANT_BUILD_FOOTPATH_HERE, kStringIdNone); } - res.Cost = 12.00_GBP; + res.cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -312,7 +312,7 @@ namespace OpenRCT2::GameActions if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= 6.00_GBP; + res.cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped path. @@ -321,14 +321,14 @@ namespace OpenRCT2::GameActions : CreateCrossingMode::pathOverTrack; auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::ok) + if (!entrancePath && canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_CANT_BUILD_FOOTPATH_HERE; + canBuild.errorTitle = STR_CANT_BUILD_FOOTPATH_HERE; return canBuild; } - res.Cost += canBuild.Cost; + res.cost += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); gFootpathGroundFlags = clearanceData.GroundFlags; if (!getGameState().cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) @@ -342,11 +342,11 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; + res.cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; // Prevent the place sound from being spammed if (entranceIsSamePath) - res.Cost = 0; + res.cost = 0; return res; } @@ -360,7 +360,7 @@ namespace OpenRCT2::GameActions FootpathRemoveLitter(_loc); } - res.Cost = 12.00_GBP; + res.cost = 12.00_GBP; QuarterTile quarterTile{ 0b1111, 0 }; auto zLow = _loc.z; @@ -380,7 +380,7 @@ namespace OpenRCT2::GameActions if (IsSameAsEntranceElement(*entranceElement)) entranceIsSamePath = true; else - res.Cost -= 6.00_GBP; + res.cost -= 6.00_GBP; } // Do not attempt to build a crossing with a queue or a sloped. @@ -390,14 +390,14 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (!entrancePath && canBuild.Error != Status::ok) + if (!entrancePath && canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_CANT_BUILD_FOOTPATH_HERE; + canBuild.errorTitle = STR_CANT_BUILD_FOOTPATH_HERE; return canBuild; } - res.Cost += canBuild.Cost; + res.cost += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); gFootpathGroundFlags = clearanceData.GroundFlags; auto surfaceElement = MapGetSurfaceElementAt(_loc); @@ -406,7 +406,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = zLow - surfaceElement->GetBaseZ(); - res.Cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; + res.cost += supportHeight < 0 ? 20.00_GBP : (supportHeight / kPathHeightStep) * 5.00_GBP; if (entrancePath) { @@ -463,7 +463,7 @@ namespace OpenRCT2::GameActions // Prevent the place sound from being spammed if (entranceIsSamePath) - res.Cost = 0; + res.cost = 0; return res; } diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index bee2bc9d69c9..73419c90a5b5 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -51,9 +51,9 @@ namespace OpenRCT2::GameActions Result FootpathRemoveAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; - res.Position = { _loc.x + 16, _loc.y + 16, _loc.z }; + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; + res.position = { _loc.x + 16, _loc.y + 16, _loc.z }; if (!LocationValid(_loc)) { @@ -71,7 +71,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_ERR_PATH_ELEMENT_NOT_FOUND); } - res.Cost = GetRefundPrice(footpathElement); + res.cost = GetRefundPrice(footpathElement); return res; } @@ -79,9 +79,9 @@ namespace OpenRCT2::GameActions Result FootpathRemoveAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; - res.Position = { _loc.x + 16, _loc.y + 16, _loc.z }; + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; + res.position = { _loc.x + 16, _loc.y + 16, _loc.z }; if (!(GetFlags().has(CommandFlag::ghost))) { @@ -94,9 +94,9 @@ namespace OpenRCT2::GameActions { FootpathQueueChainReset(); auto bannerRes = RemoveBannersAtElement(gameState, _loc, footpathElement); - if (bannerRes.Error == Status::ok) + if (bannerRes.error == Status::ok) { - res.Cost += bannerRes.Cost; + res.cost += bannerRes.cost; } FootpathRemoveEdgesAt(_loc, footpathElement); MapInvalidateTileFull(_loc); @@ -119,7 +119,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, kStringIdNone); } - res.Cost += GetRefundPrice(footpathElement); + res.cost += GetRefundPrice(footpathElement); return res; } @@ -174,9 +174,9 @@ namespace OpenRCT2::GameActions auto res = ExecuteNested(&bannerRemoveAction, gameState); // Ghost removal is free - if (res.Error == Status::ok && !isGhost) + if (res.error == Status::ok && !isGhost) { - result.Cost += res.Cost; + result.cost += res.cost; } tileElement--; } diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index bfa023f17810..3932532d1f0d 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions Guard::Assert(action != nullptr); Result result = Execute(action, getGameState()); - if (result.Error == Status::ok && Network::GetMode() == Network::Mode::server) + if (result.error == Status::ok && Network::GetMode() == Network::Mode::server) { // Relay this action to all other clients. Network::SendGameAction(action); @@ -197,23 +197,23 @@ namespace OpenRCT2::GameActions { Result result = Result(); - result.Error = Status::gamePaused; - result.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - result.ErrorMessage = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; + result.error = Status::gamePaused; + result.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + result.errorMessage = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; return result; } auto result = action->Query(gameState); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - if (!FinanceCheckAffordability(result.Cost, action->GetFlags())) + if (!FinanceCheckAffordability(result.cost, action->GetFlags())) { - result.Error = Status::insufficientFunds; - result.ErrorTitle = STR_CANT_DO_THIS; - result.ErrorMessage = STR_NOT_ENOUGH_CASH_REQUIRES; - Formatter(result.ErrorMessageArgs.data()).Add(result.Cost); + result.error = Status::insufficientFunds; + result.errorTitle = STR_CANT_DO_THIS; + result.errorMessage = STR_NOT_ENOUGH_CASH_REQUIRES; + Formatter(result.errorMessageArgs.data()).Add(result.cost); } } return result; @@ -266,9 +266,9 @@ namespace OpenRCT2::GameActions char temp[128] = {}; - if (result.Error != Status::ok) + if (result.error != Status::ok) { - snprintf(temp, sizeof(temp), ") Failed, %u", static_cast(result.Error)); + snprintf(temp, sizeof(temp), ") Failed, %u", static_cast(result.error)); } else { @@ -301,9 +301,9 @@ namespace OpenRCT2::GameActions { // TODO: Introduce proper error. auto result = Result(); - result.Error = Status::gamePaused; - result.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - result.ErrorMessage = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; + result.error = Status::gamePaused; + result.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + result.errorMessage = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; return result; } @@ -311,14 +311,14 @@ namespace OpenRCT2::GameActions Result result = QueryInternal(action, gameState, topLevel); #ifdef ENABLE_SCRIPTING - if (result.Error == Status::ok && ((Network::GetMode() == Network::Mode::none) || flags.has(CommandFlag::networked))) + if (result.error == Status::ok && ((Network::GetMode() == Network::Mode::none) || flags.has(CommandFlag::networked))) { auto& scriptEngine = GetContext()->GetScriptEngine(); scriptEngine.RunGameActionHooks(*action, result, false); // Script hooks may now have changed the game action result... } #endif - if (result.Error == Status::ok) + if (result.error == Status::ok) { if (topLevel) { @@ -355,7 +355,7 @@ namespace OpenRCT2::GameActions // Execute the action, changing the game state result = action->Execute(gameState); #ifdef ENABLE_SCRIPTING - if (result.Error == Status::ok) + if (result.error == Status::ok) { auto& scriptEngine = GetContext()->GetScriptEngine(); scriptEngine.RunGameActionHooks(*action, result, true); @@ -370,13 +370,13 @@ namespace OpenRCT2::GameActions return result; // Update money balance - if (result.Error == Status::ok && FinanceCheckMoneyRequired(flags) && result.Cost != 0) + if (result.error == Status::ok && FinanceCheckMoneyRequired(flags) && result.cost != 0) { - FinancePayment(result.Cost, result.Expenditure); - MoneyEffect::Create(result.Cost, result.Position); + FinancePayment(result.cost, result.expenditure); + MoneyEffect::Create(result.cost, result.position); } - if (!(actionFlags & Flags::ClientOnly) && result.Error == Status::ok) + if (!(actionFlags & Flags::ClientOnly) && result.error == Status::ok) { if (Network::GetMode() != Network::Mode::none) { @@ -388,14 +388,14 @@ namespace OpenRCT2::GameActions Network::SetPlayerLastAction(playerIndex, action->GetType()); Network::IncrementPlayerNumCommands(playerIndex); - if (result.Cost > 0) + if (result.cost > 0) { - Network::AddPlayerMoneySpent(playerIndex, result.Cost); + Network::AddPlayerMoneySpent(playerIndex, result.cost); } - if (!result.Position.IsNull()) + if (!result.position.IsNull()) { - Network::SetPlayerLastActionCoord(playerIndex, result.Position); + Network::SetPlayerLastActionCoord(playerIndex, result.position); } } else @@ -446,10 +446,10 @@ namespace OpenRCT2::GameActions } } - if (result.Error != Status::ok && shouldShowError) + if (result.error != Status::ok && shouldShowError) { auto windowManager = Ui::GetWindowManager(); - windowManager->ShowError(result.GetErrorTitle(), result.GetErrorMessage()); + windowManager->ShowError(result.getErrorTitle(), result.getErrorMessage()); } return result; diff --git a/src/openrct2/actions/GameActionResult.cpp b/src/openrct2/actions/GameActionResult.cpp index bb53ea1010b7..94940c69c608 100644 --- a/src/openrct2/actions/GameActionResult.cpp +++ b/src/openrct2/actions/GameActionResult.cpp @@ -8,14 +8,14 @@ using namespace OpenRCT2; namespace OpenRCT2::GameActions { - Result::Result(Status error, StringId title, StringId message, uint8_t* args /*= nullptr*/) - : Error(error) - , ErrorTitle(title) - , ErrorMessage(message) + Result::Result(Status status, StringId title, StringId message, uint8_t* args /*= nullptr*/) + : error(status) + , errorTitle(title) + , errorMessage(message) { if (args != nullptr) { - std::copy_n(args, ErrorMessageArgs.size(), ErrorMessageArgs.begin()); + std::copy_n(args, errorMessageArgs.size(), errorMessageArgs.begin()); } } @@ -33,14 +33,14 @@ namespace OpenRCT2::GameActions } }; - std::string Result::GetErrorTitle() const + std::string Result::getErrorTitle() const { - return std::visit(StringVariantVisitor{ ErrorMessageArgs.data() }, ErrorTitle); + return std::visit(StringVariantVisitor{ errorMessageArgs.data() }, errorTitle); } - std::string Result::GetErrorMessage() const + std::string Result::getErrorMessage() const { - return std::visit(StringVariantVisitor{ ErrorMessageArgs.data() }, ErrorMessage); + return std::visit(StringVariantVisitor{ errorMessageArgs.data() }, errorMessage); } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/GameActionResult.h b/src/openrct2/actions/GameActionResult.h index 9273d01c8407..201bc0ed97fb 100644 --- a/src/openrct2/actions/GameActionResult.h +++ b/src/openrct2/actions/GameActionResult.h @@ -57,50 +57,50 @@ namespace OpenRCT2::GameActions public: using StringVariant = std::variant; - Status Error = Status::ok; - StringVariant ErrorTitle = kStringIdNone; - StringVariant ErrorMessage = kStringIdNone; - std::array ErrorMessageArgs{}; - CoordsXYZ Position = { kLocationNull, kLocationNull, kLocationNull }; - money64 Cost = 0; - ExpenditureType Expenditure = ExpenditureType::count; + Status error = Status::ok; + StringVariant errorTitle = kStringIdNone; + StringVariant errorMessage = kStringIdNone; + std::array errorMessageArgs{}; + CoordsXYZ position = { kLocationNull, kLocationNull, kLocationNull }; + money64 cost = 0; + ExpenditureType expenditure = ExpenditureType::count; #ifdef __ANDROID__ // Any_cast throws a bad_any_cast exception on Android // To avoid this in the Android release, a shared void pointer is used to store the result data. - std::shared_ptr ResultData; + std::shared_ptr resultData; #else // Other platforms still use Any as this provides type checks - std::any ResultData; + std::any resultData; #endif Result() = default; - Result(Status error, StringId title, StringId message, uint8_t* args = nullptr); + Result(Status status, StringId title, StringId message, uint8_t* args = nullptr); - std::string GetErrorTitle() const; - std::string GetErrorMessage() const; + std::string getErrorTitle() const; + std::string getErrorMessage() const; // It is recommended to use strong types since a type alias such as 'using MyType = uint32_t' // is still just uint32_t, this guarantees the data is associated with the correct type. template - void SetData(const T&& data) + void setData(const T&& data) { #ifdef __ANDROID__ - ResultData = std::make_shared(data); + resultData = std::make_shared(data); #else - ResultData = std::forward(data); + resultData = std::forward(data); #endif } template - T GetData() const + T getData() const { #ifdef __ANDROID__ - return *static_cast(ResultData.get()); + return *static_cast(resultData.get()); ; #else // This function will throw std::bad_any_cast if the type mismatches. - return std::any_cast(ResultData); + return std::any_cast(resultData); #endif } }; diff --git a/src/openrct2/actions/GuestSetNameAction.cpp b/src/openrct2/actions/GuestSetNameAction.cpp index 2e92f3f7a190..820d139a9f92 100644 --- a/src/openrct2/actions/GuestSetNameAction.cpp +++ b/src/openrct2/actions/GuestSetNameAction.cpp @@ -102,7 +102,7 @@ namespace OpenRCT2::GameActions ContextBroadcastIntent(&intent); auto res = Result(); - res.Position = guest->GetLocation(); + res.position = guest->GetLocation(); return res; } diff --git a/src/openrct2/actions/LandBuyRightsAction.cpp b/src/openrct2/actions/LandBuyRightsAction.cpp index 7a58f435b84e..df7accd36076 100644 --- a/src/openrct2/actions/LandBuyRightsAction.cpp +++ b/src/openrct2/actions/LandBuyRightsAction.cpp @@ -85,8 +85,8 @@ namespace OpenRCT2::GameActions (validRange.GetY1() + validRange.GetY2()) / 2 + 16, 0 }; centre.z = TileElementHeight(centre); - res.Position = centre; - res.Expenditure = ExpenditureType::landPurchase; + res.position = centre; + res.expenditure = ExpenditureType::landPurchase; // Game command modified to accept selection size for (auto y = validRange.GetY1(); y <= validRange.GetY2(); y += kCoordsXYStep) @@ -96,9 +96,9 @@ namespace OpenRCT2::GameActions if (!LocationValid({ x, y })) continue; auto result = MapBuyLandRightsForTile({ x, y }, isExecuting); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - res.Cost += result.Cost; + res.cost += result.cost; } } } @@ -142,7 +142,7 @@ namespace OpenRCT2::GameActions surfaceElement->SetOwnership(OWNERSHIP_OWNED); Park::UpdateFencesAroundTile(loc); } - res.Cost = getGameState().scenarioOptions.landPrice; + res.cost = getGameState().scenarioOptions.landPrice; return res; case LandBuyRightSetting::BuyConstructionRights: // 2 @@ -163,7 +163,7 @@ namespace OpenRCT2::GameActions uint16_t baseZ = surfaceElement->GetBaseZ(); MapInvalidateTile({ loc, baseZ, baseZ + 16 }); } - res.Cost = getGameState().scenarioOptions.constructionRightsPrice; + res.cost = getGameState().scenarioOptions.constructionRightsPrice; return res; default: diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index dd4f47633169..dd93bfdb2aa9 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -76,8 +76,8 @@ namespace OpenRCT2::GameActions auto validRange = ClampRangeWithinMap(_range); - res.Position = { _coords.x, _coords.y, TileElementHeight(_coords) }; - res.Expenditure = ExpenditureType::landscaping; + res.position = { _coords.x, _coords.y, TileElementHeight(_coords) }; + res.expenditure = ExpenditureType::landscaping; if (isExecuting) { @@ -127,13 +127,13 @@ namespace OpenRCT2::GameActions landSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&landSetHeightAction, gameState) : QueryNested(&landSetHeightAction, gameState); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - res.Cost += result.Cost; + res.cost += result.cost; } else { - result.ErrorTitle = STR_CANT_LOWER_LAND_HERE; + result.errorTitle = STR_CANT_LOWER_LAND_HERE; return result; } } diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index ff0e5ab94016..15134436b1aa 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -77,8 +77,8 @@ namespace OpenRCT2::GameActions auto validRange = ClampRangeWithinMap(_range); - res.Position = { _coords.x, _coords.y, TileElementHeight(_coords) }; - res.Expenditure = ExpenditureType::landscaping; + res.position = { _coords.x, _coords.y, TileElementHeight(_coords) }; + res.expenditure = ExpenditureType::landscaping; if (isExecuting) { @@ -131,13 +131,13 @@ namespace OpenRCT2::GameActions landSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&landSetHeightAction, gameState) : QueryNested(&landSetHeightAction, gameState); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - res.Cost += result.Cost; + res.cost += result.cost; } else { - result.ErrorTitle = STR_CANT_RAISE_LAND_HERE; + result.errorTitle = STR_CANT_RAISE_LAND_HERE; return result; } } diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 178c6062d733..48939c5ab673 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -142,15 +142,15 @@ namespace OpenRCT2::GameActions auto clearResult = MapCanConstructWithClearAt( { _coords, _height * kCoordsZStep, zCorner * kCoordsZStep }, MapSetLandHeightClearFunc, { 0b1111, 0 }, {}, _style, CreateCrossingMode::none); - if (clearResult.Error != Status::ok) + if (clearResult.error != Status::ok) { - clearResult.Error = Status::disallowed; + clearResult.error = Status::disallowed; return clearResult; } } auto res = Result(); - res.Cost = sceneryRemovalCost + GetSurfaceHeightChangeCost(surfaceElement); - res.Expenditure = ExpenditureType::landscaping; + res.cost = sceneryRemovalCost + GetSurfaceHeightChangeCost(surfaceElement); + res.expenditure = ExpenditureType::landscaping; return res; } @@ -175,9 +175,9 @@ namespace OpenRCT2::GameActions SetSurfaceHeight(reinterpret_cast(surfaceElement)); auto res = Result(); - res.Position = { _coords.x + 16, _coords.y + 16, surfaceHeight }; - res.Cost = cost; - res.Expenditure = ExpenditureType::landscaping; + res.position = { _coords.x + 16, _coords.y + 16, surfaceHeight }; + res.cost = cost; + res.expenditure = ExpenditureType::landscaping; return res; } diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index 04794357dac1..f5f68fe0a760 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -83,8 +83,8 @@ namespace OpenRCT2::GameActions (validRange.GetY1() + validRange.GetY2()) / 2 + 16, 0 }; centre.z = TileElementHeight(centre); - res.Position = centre; - res.Expenditure = ExpenditureType::landPurchase; + res.position = centre; + res.expenditure = ExpenditureType::landPurchase; if (!isInEditorMode() && !getGameState().cheats.sandboxMode) { @@ -99,9 +99,9 @@ namespace OpenRCT2::GameActions if (!LocationValid({ x, y })) continue; auto result = MapBuyLandRightsForTile({ x, y }, isExecuting); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - res.Cost += result.Cost; + res.cost += result.cost; } } } @@ -195,23 +195,23 @@ namespace OpenRCT2::GameActions { // Buying land if (!(currentOwnership & OWNERSHIP_OWNED) && (_ownership & OWNERSHIP_OWNED)) - res.Cost = gameState.scenarioOptions.landPrice; + res.cost = gameState.scenarioOptions.landPrice; // Buying construction rights if (!(currentOwnership & OWNERSHIP_CONSTRUCTION_RIGHTS_OWNED) && (_ownership & OWNERSHIP_CONSTRUCTION_RIGHTS_OWNED)) - res.Cost = gameState.scenarioOptions.constructionRightsPrice; + res.cost = gameState.scenarioOptions.constructionRightsPrice; } else { // Selling land if ((currentOwnership & OWNERSHIP_OWNED) && !(_ownership & OWNERSHIP_OWNED)) - res.Cost = -gameState.scenarioOptions.landPrice; + res.cost = -gameState.scenarioOptions.landPrice; // Selling construction rights if ((currentOwnership & OWNERSHIP_CONSTRUCTION_RIGHTS_OWNED) && !(_ownership & OWNERSHIP_CONSTRUCTION_RIGHTS_OWNED)) - res.Cost = -gameState.scenarioOptions.constructionRightsPrice; + res.cost = -gameState.scenarioOptions.constructionRightsPrice; } if (isExecuting) diff --git a/src/openrct2/actions/LandSmoothAction.cpp b/src/openrct2/actions/LandSmoothAction.cpp index faa6ff28d910..23ddcfbd737a 100644 --- a/src/openrct2/actions/LandSmoothAction.cpp +++ b/src/openrct2/actions/LandSmoothAction.cpp @@ -238,9 +238,9 @@ namespace OpenRCT2::GameActions landSetHeightAction.SetFlags(GetFlags()); auto res = isExecuting ? ExecuteNested(&landSetHeightAction, gameState) : QueryNested(&landSetHeightAction, gameState); - if (res.Error == Status::ok) + if (res.error == Status::ok) { - totalCost += res.Cost; + totalCost += res.cost; } } return totalCost; @@ -326,9 +326,9 @@ namespace OpenRCT2::GameActions expectedLandHeight += landChangePerTile; // change land of current tile auto result = SmoothLandTile(gameState, direction, isExecuting, nextLoc, surfaceElement); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - totalCost += result.Cost; + totalCost += result.cost; } } return totalCost; @@ -351,9 +351,9 @@ namespace OpenRCT2::GameActions int32_t centreZ = TileElementHeight(_coords); auto res = Result(); - res.ErrorTitle = kErrorTitles[_isLowering ? 0 : 1]; - res.Expenditure = ExpenditureType::landscaping; - res.Position = { _coords.x, _coords.y, centreZ }; + res.errorTitle = kErrorTitles[_isLowering ? 0 : 1]; + res.expenditure = ExpenditureType::landscaping; + res.position = { _coords.x, _coords.y, centreZ }; // Do the smoothing switch (selectionType) @@ -370,7 +370,7 @@ namespace OpenRCT2::GameActions { int32_t z = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 2)), minHeight, maxHeight); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, -32, 0, 2); } } @@ -380,7 +380,7 @@ namespace OpenRCT2::GameActions { int32_t z = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 3)), minHeight, maxHeight); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY2() }, z, -32, 32, 1, 3); } } @@ -390,7 +390,7 @@ namespace OpenRCT2::GameActions { int32_t z = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 0)), minHeight, maxHeight); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX2(), validRange.GetY2() }, z, 32, 32, 2, 0); } } @@ -400,7 +400,7 @@ namespace OpenRCT2::GameActions { int32_t z = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 1)), minHeight, maxHeight); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX2(), validRange.GetY1() }, z, 32, -32, 3, 1); } } @@ -416,7 +416,7 @@ namespace OpenRCT2::GameActions static_cast(TileElementGetCornerHeight(surfaceElement, 3)), minHeight, maxHeight); z2 = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 2)), minHeight, maxHeight); - res.Cost += SmoothLandRowByEdge( + res.cost += SmoothLandRowByEdge( gameState, isExecuting, { validRange.GetX1(), y }, z1, z2, -32, 0, 0, 1, 3, 2); } @@ -427,7 +427,7 @@ namespace OpenRCT2::GameActions static_cast(TileElementGetCornerHeight(surfaceElement, 1)), minHeight, maxHeight); z2 = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 0)), minHeight, maxHeight); - res.Cost += SmoothLandRowByEdge( + res.cost += SmoothLandRowByEdge( gameState, isExecuting, { validRange.GetX2(), y }, z1, z2, 32, 0, 2, 3, 1, 0); } } @@ -441,7 +441,7 @@ namespace OpenRCT2::GameActions static_cast(TileElementGetCornerHeight(surfaceElement, 1)), minHeight, maxHeight); z2 = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 2)), minHeight, maxHeight); - res.Cost += SmoothLandRowByEdge( + res.cost += SmoothLandRowByEdge( gameState, isExecuting, { x, validRange.GetY1() }, z1, z2, 0, -32, 0, 3, 1, 2); } @@ -452,7 +452,7 @@ namespace OpenRCT2::GameActions static_cast(TileElementGetCornerHeight(surfaceElement, 0)), minHeight, maxHeight); z2 = std::clamp( static_cast(TileElementGetCornerHeight(surfaceElement, 3)), minHeight, maxHeight); - res.Cost += SmoothLandRowByEdge( + res.cost += SmoothLandRowByEdge( gameState, isExecuting, { x, validRange.GetY2() }, z1, z2, 0, 32, 1, 2, 0, 3); } } @@ -487,16 +487,16 @@ namespace OpenRCT2::GameActions // Smooth the corners int32_t z = MapGetCornerHeight(newBaseZ, newSlope, 2); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, -32, 0, 2); z = MapGetCornerHeight(newBaseZ, newSlope, 0); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, 32, 2, 0); z = MapGetCornerHeight(newBaseZ, newSlope, 3); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, 32, 1, 3); z = MapGetCornerHeight(newBaseZ, newSlope, 1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, -32, 3, 1); // Smooth the edges @@ -504,54 +504,54 @@ namespace OpenRCT2::GameActions { case MapSelectType::corner0: z = MapGetCornerHeight(newBaseZ, newSlope, 0); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, 0, 3, 0); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, 32, 1, 0); z = MapGetCornerHeight(newBaseZ, newSlope, 3); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, 0, 0, 3); z = MapGetCornerHeight(newBaseZ, newSlope, 1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, -32, 0, 1); break; case MapSelectType::corner1: z = MapGetCornerHeight(newBaseZ, newSlope, 1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, 0, 2, 1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, -32, 0, 1); z = MapGetCornerHeight(newBaseZ, newSlope, 2); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, 0, 1, 2); z = MapGetCornerHeight(newBaseZ, newSlope, 0); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, 32, 1, 0); break; case MapSelectType::corner2: z = MapGetCornerHeight(newBaseZ, newSlope, 2); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, 0, 1, 2); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, -32, 3, 2); z = MapGetCornerHeight(newBaseZ, newSlope, 1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, 0, 2, 1); z = MapGetCornerHeight(newBaseZ, newSlope, 3); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, 32, 2, 3); break; case MapSelectType::corner3: z = MapGetCornerHeight(newBaseZ, newSlope, 3); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, 0, 0, 3); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, 32, 2, 3); z = MapGetCornerHeight(newBaseZ, newSlope, 0); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, 0, 3, 0); z = MapGetCornerHeight(newBaseZ, newSlope, 2); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 0, -32, 3, 2); break; default: @@ -611,38 +611,38 @@ namespace OpenRCT2::GameActions uint8_t z3 = MapGetCornerHeight(newBaseZ, newSlope, c3); uint8_t z4 = MapGetCornerHeight(newBaseZ, newSlope, c4); // Smooth the edge at the top of the new slope - res.Cost += SmoothLandRowByEdge( + res.cost += SmoothLandRowByEdge( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z1, z2, stepOffsets[edge].x, stepOffsets[edge].y, c3, c4, c1, c2); // Smooth the edge at the bottom of the new slope - res.Cost += SmoothLandRowByEdge( + res.cost += SmoothLandRowByEdge( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z3, z4, -stepOffsets[edge].x, -stepOffsets[edge].y, c1, c2, c3, c4); // Smooth corners - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z1, -stepOffsets[edge].y, stepOffsets[edge].x, c2, c1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z2, stepOffsets[edge].y, -stepOffsets[edge].x, c1, c2); int32_t z = MapGetCornerHeight(newBaseZ, newSlope, 2); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, -32, 0, 2); z = MapGetCornerHeight(newBaseZ, newSlope, 0); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, 32, 2, 0); z = MapGetCornerHeight(newBaseZ, newSlope, 3); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, -32, 32, 1, 3); z = MapGetCornerHeight(newBaseZ, newSlope, 1); - res.Cost += SmoothLandRowByCorner( + res.cost += SmoothLandRowByCorner( gameState, isExecuting, { validRange.GetX1(), validRange.GetY1() }, z, 32, -32, 3, 1); break; } default: LOG_ERROR("Invalid map selection type %u", _selectionType); - return Result(Status::invalidParameters, std::get(res.ErrorTitle), STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, std::get(res.errorTitle), STR_ERR_VALUE_OUT_OF_RANGE); } // switch selectionType // Raise / lower the land tool selection area @@ -659,7 +659,7 @@ namespace OpenRCT2::GameActions lowerLandAction.SetFlags(GetFlags()); result = isExecuting ? ExecuteNested(&lowerLandAction, gameState) : QueryNested(&lowerLandAction, gameState); } - if (result.Error != Status::ok) + if (result.error != Status::ok) { return result; } @@ -668,7 +668,7 @@ namespace OpenRCT2::GameActions { Audio::Play3D(Audio::SoundId::placeItem, { _coords.x, _coords.y, centreZ }); } - res.Cost += result.Cost; + res.cost += result.cost; return res; } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 272c34bc021e..42e7a7905902 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -67,12 +67,12 @@ namespace OpenRCT2::GameActions Result LargeSceneryPlaceAction::Query(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_POSITION_THIS_HERE; - res.Expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_POSITION_THIS_HERE; + res.expenditure = ExpenditureType::landscaping; int16_t surfaceHeight = TileElementHeight(_loc); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = surfaceHeight; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = surfaceHeight; auto resultData = LargeSceneryPlaceActionResult{}; @@ -114,7 +114,7 @@ namespace OpenRCT2::GameActions maxHeight = _loc.z; } - res.Position.z = maxHeight; + res.position.z = maxHeight; if (sceneryEntry->scrolling_mode != kScrollingModeNone) { @@ -140,15 +140,15 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { curTile, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; + canBuild.errorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; } - supportsCost += canBuild.Cost; + supportsCost += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); int32_t tempSceneryGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); if (!gameState.cheats.disableClearanceChecks) { @@ -186,8 +186,8 @@ namespace OpenRCT2::GameActions // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); - res.Cost = sceneryEntry->price + supportsCost; - res.SetData(std::move(resultData)); + res.cost = sceneryEntry->price + supportsCost; + res.setData(std::move(resultData)); return res; } @@ -195,13 +195,13 @@ namespace OpenRCT2::GameActions Result LargeSceneryPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_POSITION_THIS_HERE; - res.Expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_POSITION_THIS_HERE; + res.expenditure = ExpenditureType::landscaping; int16_t surfaceHeight = TileElementHeight(_loc); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = surfaceHeight; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = surfaceHeight; auto resultData = LargeSceneryPlaceActionResult{}; @@ -227,7 +227,7 @@ namespace OpenRCT2::GameActions maxHeight = _loc.z; } - res.Position.z = maxHeight; + res.position.z = maxHeight; // Allocate banner Banner* banner = nullptr; @@ -272,19 +272,19 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { curTile, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { if (banner != nullptr) { DeleteBanner(banner->id); } - canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; + canBuild.errorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; } - supportsCost += canBuild.Cost; + supportsCost += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); resultData.GroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); if (!(GetFlags().has(CommandFlag::ghost))) @@ -319,8 +319,8 @@ namespace OpenRCT2::GameActions // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); - res.Cost = sceneryEntry->price + supportsCost; - res.SetData(std::move(resultData)); + res.cost = sceneryEntry->price + supportsCost; + res.setData(std::move(resultData)); return res; } diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index adeb34819623..bf29e736c427 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -55,11 +55,11 @@ namespace OpenRCT2::GameActions const auto flags = GetFlags(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::landscaping; - res.Cost = 0; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::landscaping; + res.cost = 0; TileElement* tileElement = FindLargeSceneryElement(_loc, _tileIndex); if (tileElement == nullptr) @@ -94,9 +94,9 @@ namespace OpenRCT2::GameActions { if (sceneryEntry->HasFlag(LARGE_SCENERY_FLAG_IS_TREE)) { - res.Error = Status::noClearance; - res.ErrorTitle = STR_CANT_REMOVE_THIS; - res.ErrorMessage = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY; + res.error = Status::noClearance; + res.errorTitle = STR_CANT_REMOVE_THIS; + res.errorMessage = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY; return res; } } @@ -124,7 +124,7 @@ namespace OpenRCT2::GameActions } if (calculate_cost) - res.Cost = sceneryEntry->removal_price; + res.cost = sceneryEntry->removal_price; return res; } @@ -133,11 +133,11 @@ namespace OpenRCT2::GameActions { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::landscaping; - res.Cost = 0; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::landscaping; + res.cost = 0; TileElement* tileElement = FindLargeSceneryElement(_loc, _tileIndex); if (tileElement == nullptr) @@ -187,7 +187,7 @@ namespace OpenRCT2::GameActions } } - res.Cost = sceneryEntry->removal_price; + res.cost = sceneryEntry->removal_price; return res; } diff --git a/src/openrct2/actions/LargeScenerySetColourAction.cpp b/src/openrct2/actions/LargeScenerySetColourAction.cpp index b8510b2ac3c0..cd803749db3c 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.cpp +++ b/src/openrct2/actions/LargeScenerySetColourAction.cpp @@ -65,11 +65,11 @@ namespace OpenRCT2::GameActions Result LargeScenerySetColourAction::QueryExecute(bool isExecuting) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = TileElementHeight(_loc); - res.ErrorTitle = STR_CANT_REPAINT_THIS; + res.expenditure = ExpenditureType::landscaping; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = TileElementHeight(_loc); + res.errorTitle = STR_CANT_REPAINT_THIS; auto mapSizeMax = GetMapSizeMaxXY(); if (_loc.x < 0 || _loc.y < 0 || _loc.x > mapSizeMax.x || _loc.y > mapSizeMax.y) diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 6c51864608ee..3412c99f4b9f 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -50,41 +50,41 @@ namespace OpenRCT2::GameActions { auto res = Result(); - res.Position = _loc + CoordsXYZ{ 8, 8, 0 }; - res.Expenditure = ExpenditureType::rideConstruction; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.position = _loc + CoordsXYZ{ 8, 8, 0 }; + res.expenditure = ExpenditureType::rideConstruction; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; if ((_loc.z & 0xF) != 0) { - res.Error = Status::unknown; - res.ErrorMessage = STR_INVALID_HEIGHT; + res.error = Status::unknown; + res.errorMessage = STR_INVALID_HEIGHT; return res; } if (!LocationValid(_loc)) { - res.Error = Status::invalidParameters; - res.ErrorMessage = STR_OFF_EDGE_OF_MAP; + res.error = Status::invalidParameters; + res.errorMessage = STR_OFF_EDGE_OF_MAP; return res; } if (!MapIsLocationOwned(_loc) && !gameState.cheats.sandboxMode) { - res.Error = Status::notOwned; - res.ErrorMessage = STR_LAND_NOT_OWNED_BY_PARK; + res.error = Status::notOwned; + res.errorMessage = STR_LAND_NOT_OWNED_BY_PARK; return res; } if (!MapCheckCapacityAndReorganise(_loc)) { - res.Error = Status::noFreeElements; - res.ErrorMessage = STR_TILE_ELEMENT_LIMIT_REACHED; + res.error = Status::noFreeElements; + res.errorMessage = STR_TILE_ELEMENT_LIMIT_REACHED; return res; } auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { - res.Error = Status::unknown; - res.ErrorMessage = STR_INVALID_SELECTION_OF_OBJECTS; + res.error = Status::unknown; + res.errorMessage = STR_INVALID_SELECTION_OF_OBJECTS; return res; } @@ -100,8 +100,8 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); if (heightDifference > rtd.Heights.MaxHeight) { - res.Error = Status::tooHigh; - res.ErrorMessage = STR_TOO_HIGH_FOR_SUPPORTS; + res.error = Status::tooHigh; + res.errorMessage = STR_TOO_HIGH_FOR_SUPPORTS; return res; } } @@ -109,24 +109,24 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { - res.Error = Status::noClearance; - res.ErrorMessage = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; + res.error = Status::noClearance; + res.errorMessage = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return res; } if (clearanceData.GroundFlags & ELEMENT_IS_UNDERGROUND) { - res.Error = Status::noClearance; - res.ErrorMessage = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; + res.error = Status::noClearance; + res.errorMessage = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; return res; } @@ -134,12 +134,12 @@ namespace OpenRCT2::GameActions if (ride == nullptr || ride->type == kRideTypeNull) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::invalidParameters; - res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; + res.error = Status::invalidParameters; + res.errorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } - res.Cost = MazeCalculateCost(canBuild.Cost, *ride, _loc); + res.cost = MazeCalculateCost(canBuild.cost, *ride, _loc); return res; } @@ -148,16 +148,16 @@ namespace OpenRCT2::GameActions { auto res = Result(); - res.Position = _loc + CoordsXYZ{ 8, 8, 0 }; - res.Expenditure = ExpenditureType::rideConstruction; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.position = _loc + CoordsXYZ{ 8, 8, 0 }; + res.expenditure = ExpenditureType::rideConstruction; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; auto ride = GetRide(_rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::invalidParameters; - res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; + res.error = Status::invalidParameters; + res.errorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } @@ -174,13 +174,13 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc.ToTileStart(), baseHeight, clearanceHeight }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags().with(CommandFlag::apply), kTileSlopeFlat); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - res.Cost = MazeCalculateCost(canBuild.Cost, *ride, _loc); + res.cost = MazeCalculateCost(canBuild.cost, *ride, _loc); auto startLoc = _loc.ToTileStart(); diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 1b2ac6fbfec7..4fa98b4e801b 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -84,41 +84,41 @@ namespace OpenRCT2::GameActions { auto res = Result(); - res.Position = _loc + CoordsXYZ{ 8, 8, 0 }; - res.Expenditure = ExpenditureType::rideConstruction; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.position = _loc + CoordsXYZ{ 8, 8, 0 }; + res.expenditure = ExpenditureType::rideConstruction; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; if ((_loc.z & 0xF) != 0 && _mode == GC_SET_MAZE_TRACK_BUILD) { - res.Error = Status::unknown; - res.ErrorMessage = STR_INVALID_HEIGHT; + res.error = Status::unknown; + res.errorMessage = STR_INVALID_HEIGHT; return res; } if (!LocationValid(_loc)) { - res.Error = Status::invalidParameters; - res.ErrorMessage = STR_OFF_EDGE_OF_MAP; + res.error = Status::invalidParameters; + res.errorMessage = STR_OFF_EDGE_OF_MAP; return res; } if (!MapIsLocationOwned(_loc) && !gameState.cheats.sandboxMode) { - res.Error = Status::notOwned; - res.ErrorMessage = STR_LAND_NOT_OWNED_BY_PARK; + res.error = Status::notOwned; + res.errorMessage = STR_LAND_NOT_OWNED_BY_PARK; return res; } if (!MapCheckCapacityAndReorganise(_loc)) { - res.Error = Status::noFreeElements; - res.ErrorMessage = STR_TILE_ELEMENT_LIMIT_REACHED; + res.error = Status::noFreeElements; + res.errorMessage = STR_TILE_ELEMENT_LIMIT_REACHED; return res; } auto surfaceElement = MapGetSurfaceElementAt(_loc); if (surfaceElement == nullptr) { - res.Error = Status::unknown; - res.ErrorMessage = STR_INVALID_SELECTION_OF_OBJECTS; + res.error = Status::unknown; + res.errorMessage = STR_INVALID_SELECTION_OF_OBJECTS; return res; } @@ -134,8 +134,8 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); if (heightDifference > rtd.Heights.MaxHeight) { - res.Error = Status::tooHigh; - res.ErrorMessage = STR_TOO_HIGH_FOR_SUPPORTS; + res.error = Status::tooHigh; + res.errorMessage = STR_TOO_HIGH_FOR_SUPPORTS; return res; } } @@ -145,29 +145,29 @@ namespace OpenRCT2::GameActions { if (_mode != GC_SET_MAZE_TRACK_BUILD) { - res.Error = Status::unknown; - res.ErrorMessage = STR_INVALID_SELECTION_OF_OBJECTS; + res.error = Status::unknown; + res.errorMessage = STR_INVALID_SELECTION_OF_OBJECTS; return res; } auto constructResult = MapCanConstructAt({ _loc.ToTileStart(), baseHeight, clearanceHeight }, { 0b1111, 0 }); - if (constructResult.Error != Status::ok) + if (constructResult.error != Status::ok) { - constructResult.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + constructResult.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return constructResult; } - const auto clearanceData = constructResult.GetData(); + const auto clearanceData = constructResult.getData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { - res.Error = Status::noClearance; - res.ErrorMessage = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; + res.error = Status::noClearance; + res.errorMessage = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return res; } if (clearanceData.GroundFlags & ELEMENT_IS_UNDERGROUND) { - res.Error = Status::noClearance; - res.ErrorMessage = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; + res.error = Status::noClearance; + res.errorMessage = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; return res; } @@ -175,12 +175,12 @@ namespace OpenRCT2::GameActions if (ride == nullptr || !RideTypeIsValid(ride->type)) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::noClearance; - res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; + res.error = Status::noClearance; + res.errorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } - res.Cost = MazeCalculateCost(constructResult.Cost, *ride, _loc); + res.cost = MazeCalculateCost(constructResult.cost, *ride, _loc); return res; } @@ -192,16 +192,16 @@ namespace OpenRCT2::GameActions { auto res = Result(); - res.Position = _loc + CoordsXYZ{ 8, 8, 0 }; - res.Expenditure = ExpenditureType::rideConstruction; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.position = _loc + CoordsXYZ{ 8, 8, 0 }; + res.expenditure = ExpenditureType::rideConstruction; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; auto ride = GetRide(_rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex); - res.Error = Status::invalidParameters; - res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; + res.error = Status::invalidParameters; + res.errorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } @@ -215,7 +215,7 @@ namespace OpenRCT2::GameActions auto tileElement = MapGetTrackElementAtOfTypeFromRide(_loc, TrackElemType::Maze, _rideIndex); if (tileElement == nullptr) { - res.Cost = MazeCalculateCost(0, *ride, _loc); + res.cost = MazeCalculateCost(0, *ride, _loc); auto startLoc = _loc.ToTileStart(); @@ -294,8 +294,8 @@ namespace OpenRCT2::GameActions if (tileElement == nullptr) { LOG_ERROR("No surface found"); - res.Error = Status::unknown; - res.ErrorMessage = STR_ERR_SURFACE_ELEMENT_NOT_FOUND; + res.error = Status::unknown; + res.errorMessage = STR_ERR_SURFACE_ELEMENT_NOT_FOUND; return res; } diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index b937c8013052..66168e9763f6 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -65,8 +65,8 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Expenditure = ExpenditureType::landPurchase; - res.Position = _loc; + res.expenditure = ExpenditureType::landPurchase; + res.position = _loc; auto mapSizeUnits = GetMapSizeUnits() - CoordsXY{ kCoordsXYStep, kCoordsXYStep }; if (!LocationValid(_loc) || _loc.x <= kCoordsXYStep || _loc.y <= kCoordsXYStep || _loc.x >= mapSizeUnits.x @@ -100,9 +100,9 @@ namespace OpenRCT2::GameActions entranceLoc.y += CoordsDirectionDelta[(_loc.direction + 1) & 0x3].y * 2; } - if (auto res2 = MapCanConstructAt({ entranceLoc, zLow, zHigh }, { 0b1111, 0 }); res2.Error != Status::ok) + if (auto res2 = MapCanConstructAt({ entranceLoc, zLow, zHigh }, { 0b1111, 0 }); res2.error != Status::ok) { - res2.ErrorTitle = STR_CANT_BUILD_THIS_HERE; + res2.errorTitle = STR_CANT_BUILD_THIS_HERE; return res2; } @@ -120,8 +120,8 @@ namespace OpenRCT2::GameActions Result ParkEntrancePlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landPurchase; - res.Position = CoordsXYZ{ _loc.x, _loc.y, _loc.z }; + res.expenditure = ExpenditureType::landPurchase; + res.position = CoordsXYZ{ _loc.x, _loc.y, _loc.z }; auto flags = GetFlags(); diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.cpp b/src/openrct2/actions/ParkEntranceRemoveAction.cpp index 7adf482f498a..395984a466df 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.cpp +++ b/src/openrct2/actions/ParkEntranceRemoveAction.cpp @@ -50,9 +50,9 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Expenditure = ExpenditureType::landPurchase; - res.Position = _loc; - res.ErrorTitle = STR_CANT_REMOVE_THIS; + res.expenditure = ExpenditureType::landPurchase; + res.position = _loc; + res.errorTitle = STR_CANT_REMOVE_THIS; if (!LocationValid(_loc)) { @@ -69,9 +69,9 @@ namespace OpenRCT2::GameActions Result ParkEntranceRemoveAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landPurchase; - res.Position = _loc; - res.ErrorTitle = STR_CANT_REMOVE_THIS; + res.expenditure = ExpenditureType::landPurchase; + res.position = _loc; + res.errorTitle = STR_CANT_REMOVE_THIS; auto entranceIndex = ParkEntranceGetIndex(_loc); if (entranceIndex == -1) diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index 8229d2ca5257..a4bcb231c1e8 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -89,9 +89,9 @@ namespace OpenRCT2::GameActions Result ParkMarketingAction::CreateResult() const { auto result = Result(); - result.ErrorTitle = STR_CANT_START_MARKETING_CAMPAIGN; - result.Expenditure = ExpenditureType::marketing; - result.Cost = CalculatePrice(); + result.errorTitle = STR_CANT_START_MARKETING_CAMPAIGN; + result.expenditure = ExpenditureType::marketing; + result.cost = CalculatePrice(); return result; } diff --git a/src/openrct2/actions/ParkSetParameterAction.cpp b/src/openrct2/actions/ParkSetParameterAction.cpp index cd772b7d2413..be583c8be3f6 100644 --- a/src/openrct2/actions/ParkSetParameterAction.cpp +++ b/src/openrct2/actions/ParkSetParameterAction.cpp @@ -50,7 +50,7 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.ErrorTitle = kErrorTitles[EnumValue(_parameter)]; + res.errorTitle = kErrorTitles[EnumValue(_parameter)]; return res; } @@ -85,7 +85,7 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.ErrorTitle = kErrorTitles[EnumValue(_parameter)]; + res.errorTitle = kErrorTitles[EnumValue(_parameter)]; return res; } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/PeepPickupAction.cpp b/src/openrct2/actions/PeepPickupAction.cpp index cbeb769fd308..78b5ee08695f 100644 --- a/src/openrct2/actions/PeepPickupAction.cpp +++ b/src/openrct2/actions/PeepPickupAction.cpp @@ -72,7 +72,7 @@ namespace OpenRCT2::GameActions { case PeepPickupType::Pickup: { - res.Position = peep->GetLocation(); + res.position = peep->GetLocation(); if (!peep->CanBePickedUp()) { return Result(Status::disallowed, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); @@ -94,16 +94,16 @@ namespace OpenRCT2::GameActions } break; case PeepPickupType::Cancel: - res.Position = peep->GetLocation(); + res.position = peep->GetLocation(); break; case PeepPickupType::Place: - res.Position = _loc; + res.position = _loc; if (Network::GetPickupPeep(_owner) != peep) { return Result(Status::unknown, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } - if (auto res2 = peep->Place(TileCoordsXYZ(_loc), false); res2.Error != Status::ok) + if (auto res2 = peep->Place(TileCoordsXYZ(_loc), false); res2.error != Status::ok) { return res2; } @@ -130,7 +130,7 @@ namespace OpenRCT2::GameActions { case PeepPickupType::Pickup: { - res.Position = peep->GetLocation(); + res.position = peep->GetLocation(); Peep* existing = Network::GetPickupPeep(_owner); if (existing != nullptr) @@ -159,7 +159,7 @@ namespace OpenRCT2::GameActions break; case PeepPickupType::Cancel: { - res.Position = peep->GetLocation(); + res.position = peep->GetLocation(); Peep* const pickedUpPeep = Network::GetPickupPeep(_owner); if (pickedUpPeep != nullptr) @@ -170,8 +170,8 @@ namespace OpenRCT2::GameActions } break; case PeepPickupType::Place: - res.Position = _loc; - if (auto res2 = peep->Place(TileCoordsXYZ(_loc), true); res2.Error != Status::ok) + res.position = _loc; + if (auto res2 = peep->Place(TileCoordsXYZ(_loc), true); res2.error != Status::ok) { return res2; } diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.cpp b/src/openrct2/actions/PeepSpawnPlaceAction.cpp index 8b7776fb111b..0526f8a579e0 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.cpp +++ b/src/openrct2/actions/PeepSpawnPlaceAction.cpp @@ -52,8 +52,8 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Expenditure = ExpenditureType::landPurchase; - res.Position = _location; + res.expenditure = ExpenditureType::landPurchase; + res.position = _location; auto mapSizeUnits = GetMapSizeUnits() - CoordsXY{ 16, 16 }; if (!LocationValid(_location) || _location.x <= 16 || _location.y <= 16 || _location.x >= mapSizeUnits.x @@ -87,8 +87,8 @@ namespace OpenRCT2::GameActions Result PeepSpawnPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landPurchase; - res.Position = _location; + res.expenditure = ExpenditureType::landPurchase; + res.position = _location; // Shift the spawn point to the edge of the tile auto spawnPos = CoordsXY{ _location.ToTileCentre() } diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index df1bd1724d07..e8a5dc3db003 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -116,7 +116,7 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.SetData(RideId{ rideIndex }); + res.setData(RideId{ rideIndex }); return res; } @@ -294,8 +294,8 @@ namespace OpenRCT2::GameActions auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::rideList); - res.Expenditure = ExpenditureType::rideConstruction; - res.SetData(RideId{ rideIndex }); + res.expenditure = ExpenditureType::rideConstruction; + res.setData(RideId{ rideIndex }); return res; } diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index ebf25eeeabdd..ed83567e8f27 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -93,8 +93,8 @@ namespace OpenRCT2::GameActions return Result(Status::disallowed, STR_CANT_REFURBISH_RIDE, STR_CANT_REFURBISH_NOT_NEEDED); } - result.ErrorTitle = STR_CANT_REFURBISH_RIDE; - result.Cost = GetRefurbishPrice(*ride); + result.errorTitle = STR_CANT_REFURBISH_RIDE; + result.cost = GetRefurbishPrice(*ride); } return result; @@ -146,13 +146,13 @@ namespace OpenRCT2::GameActions MarketingCancelCampaignsForRide(_rideIndex); auto res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.Cost = refundPrice; + res.expenditure = ExpenditureType::rideConstruction; + res.cost = refundPrice; if (!ride.overallView.IsNull()) { auto xy = ride.overallView.ToTileCentre(); - res.Position = { xy, TileElementHeight(xy) }; + res.position = { xy, TileElementHeight(xy) }; } ride.remove(); @@ -183,9 +183,9 @@ namespace OpenRCT2::GameActions setMazeTrack.SetFlags(GetFlags()); auto execRes = ExecuteNested(&setMazeTrack, gameState); - if (execRes.Error == Status::ok) + if (execRes.error == Status::ok) { - return execRes.Cost; + return execRes.cost; } return kMoney64Undefined; @@ -229,14 +229,14 @@ namespace OpenRCT2::GameActions auto trackRemoveAction = TrackRemoveAction(type, trackElement->GetSequenceIndex(), location); trackRemoveAction.SetFlags({ CommandFlag::noSpend }); - auto removRes = ExecuteNested(&trackRemoveAction, gameState); - if (removRes.Error != Status::ok) + auto removeRes = ExecuteNested(&trackRemoveAction, gameState); + if (removeRes.error != Status::ok) { TileElementRemove(tileElement); } else { - refundPrice += removRes.Cost; + refundPrice += removeRes.cost; } } else @@ -271,8 +271,8 @@ namespace OpenRCT2::GameActions Result RideDemolishAction::RefurbishRide(GameState_t& gameState, Ride& ride) const { auto res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.Cost = GetRefurbishPrice(ride); + res.expenditure = ExpenditureType::rideConstruction; + res.cost = GetRefurbishPrice(ride); ride.renew(); @@ -284,7 +284,7 @@ namespace OpenRCT2::GameActions if (!ride.overallView.IsNull()) { auto location = ride.overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; } auto* windowMgr = Ui::GetWindowManager(); diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 4c8690b076ae..8fa8e762e26b 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -93,9 +93,9 @@ namespace OpenRCT2::GameActions rideEntranceExitRemove.SetFlags(GetFlags()); auto result = QueryNested(&rideEntranceExitRemove, gameState); - if (result.Error != Status::ok) + if (result.error != Status::ok) { - result.ErrorTitle = errorTitle; + result.errorTitle = errorTitle; return result; } } @@ -117,13 +117,13 @@ namespace OpenRCT2::GameActions auto clear_z = z + (_isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags(), kTileSlopeFlat); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = errorTitle; + canBuild.errorTitle = errorTitle; return canBuild; } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { return Result(Status::disallowed, errorTitle, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); @@ -135,9 +135,9 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Position = { _loc.ToTileCentre(), z }; - res.Expenditure = ExpenditureType::rideConstruction; - res.Cost += canBuild.Cost; + res.position = { _loc.ToTileCentre(), z }; + res.expenditure = ExpenditureType::rideConstruction; + res.cost += canBuild.cost; return res; } @@ -169,9 +169,9 @@ namespace OpenRCT2::GameActions rideEntranceExitRemove.SetFlags(GetFlags()); auto result = ExecuteNested(&rideEntranceExitRemove, gameState); - if (result.Error != Status::ok) + if (result.error != Status::ok) { - result.ErrorTitle = errorTitle; + result.errorTitle = errorTitle; return result; } } @@ -188,16 +188,16 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, z, clear_z }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, GetFlags().with(CommandFlag::apply), kTileSlopeFlat); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = errorTitle; + canBuild.errorTitle = errorTitle; return canBuild; } auto res = Result(); - res.Position = { _loc.ToTileCentre(), z }; - res.Expenditure = ExpenditureType::rideConstruction; - res.Cost += canBuild.Cost; + res.position = { _loc.ToTileCentre(), z }; + res.expenditure = ExpenditureType::rideConstruction; + res.cost += canBuild.cost; auto* entranceElement = TileElementInsert(CoordsXYZ{ _loc, z }, 0b1111); Guard::Assert(entranceElement != nullptr); @@ -255,13 +255,13 @@ namespace OpenRCT2::GameActions int16_t clearZ = baseZ + (isExit ? RideExitHeight : RideEntranceHeight); auto canBuild = MapCanConstructWithClearAt( { loc, baseZ, clearZ }, MapPlaceNonSceneryClearFunc, { 0b1111, 0 }, {}, kTileSlopeFlat); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = errorTitle; + canBuild.errorTitle = errorTitle; return canBuild; } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { return Result(Status::disallowed, errorTitle, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); @@ -272,9 +272,9 @@ namespace OpenRCT2::GameActions return Result(Status::disallowed, errorTitle, STR_TOO_HIGH); } auto res = Result(); - res.Position = { loc.ToTileCentre(), TileElementHeight(loc) }; - res.Expenditure = ExpenditureType::rideConstruction; - res.Cost += canBuild.Cost; + res.position = { loc.ToTileCentre(), TileElementHeight(loc) }; + res.expenditure = ExpenditureType::rideConstruction; + res.cost += canBuild.cost; return res; } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp index e9853ba57e07..83c79ff14086 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp @@ -144,9 +144,9 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = TileElementHeight(res.Position); + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = TileElementHeight(res.position); FootpathQueueChainReset(); MazeEntranceHedgeReplacement({ _loc, entranceElement }); diff --git a/src/openrct2/actions/RideSetAppearanceAction.cpp b/src/openrct2/actions/RideSetAppearanceAction.cpp index f97a674810ae..fa961931bf29 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.cpp +++ b/src/openrct2/actions/RideSetAppearanceAction.cpp @@ -155,7 +155,7 @@ namespace OpenRCT2::GameActions if (!ride->overallView.IsNull()) { auto location = ride->overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; } return res; diff --git a/src/openrct2/actions/RideSetColourSchemeAction.cpp b/src/openrct2/actions/RideSetColourSchemeAction.cpp index dafa5f16cb3c..b99273e77b23 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.cpp +++ b/src/openrct2/actions/RideSetColourSchemeAction.cpp @@ -73,8 +73,8 @@ namespace OpenRCT2::GameActions Result RideSetColourSchemeAction::Execute(GameState_t& gameState) const { Result res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.ErrorTitle = STR_CANT_SET_COLOUR_SCHEME; + res.expenditure = ExpenditureType::rideConstruction; + res.errorTitle = STR_CANT_SET_COLOUR_SCHEME; GetTrackElementOriginAndApplyChanges( _loc, _trackType, _newColourScheme, nullptr, { TrackElementSetFlag::colourScheme }); diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index e2f60196c927..bd6540c26bd9 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -92,7 +92,7 @@ namespace OpenRCT2::GameActions auto res = Result(); auto location = ride->overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; return res; } diff --git a/src/openrct2/actions/RideSetPriceAction.cpp b/src/openrct2/actions/RideSetPriceAction.cpp index 647df77a02fe..f82ed4ff49bf 100644 --- a/src/openrct2/actions/RideSetPriceAction.cpp +++ b/src/openrct2/actions/RideSetPriceAction.cpp @@ -78,7 +78,7 @@ namespace OpenRCT2::GameActions Result RideSetPriceAction::Execute(GameState_t& gameState) const { Result res = Result(); - res.Expenditure = ExpenditureType::parkRideTickets; + res.expenditure = ExpenditureType::parkRideTickets; auto ride = GetRide(_rideIndex); if (ride == nullptr) @@ -103,7 +103,7 @@ namespace OpenRCT2::GameActions if (!ride->overallView.IsNull()) { auto location = ride->overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; } auto* windowMgr = Ui::GetWindowManager(); diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index bf3c64b7c21c..50ecc542ad06 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -238,7 +238,7 @@ namespace OpenRCT2::GameActions if (!ride->overallView.IsNull()) { auto location = ride->overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; } auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByNumber(WindowClass::ride, _rideIndex.ToUnderlying()); diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index cf9f69e2e970..2cf65587d0f3 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -61,32 +61,32 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - res.Error = Status::invalidParameters; - res.ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; - res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; + res.error = Status::invalidParameters; + res.errorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; + res.errorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } if (_status >= RideStatus::count) { LOG_ERROR("Invalid ride status %u for ride %u", EnumValue(_status), _rideIndex.ToUnderlying()); - res.Error = Status::invalidParameters; - res.ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; - res.ErrorMessage = kStringIdNone; + res.error = Status::invalidParameters; + res.errorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; + res.errorMessage = kStringIdNone; return res; } - res.ErrorTitle = _StatusErrorTitles[EnumValue(_status)]; + res.errorTitle = _StatusErrorTitles[EnumValue(_status)]; - Formatter ft(res.ErrorMessageArgs.data()); + Formatter ft(res.errorMessageArgs.data()); ride->formatNameTo(ft); if (_status != ride->status) { if (_status == RideStatus::simulating && (ride->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN)) { // Simulating will force clear the track, so make sure player can't cheat around a break down - res.Error = Status::disallowed; - res.ErrorMessage = STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING; + res.error = Status::disallowed; + res.errorMessage = STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING; return res; } @@ -108,8 +108,8 @@ namespace OpenRCT2::GameActions if (!modeSwitchResult.Successful) { - res.Error = Status::unknown; - res.ErrorMessage = modeSwitchResult.Message; + res.error = Status::unknown; + res.errorMessage = modeSwitchResult.Message; return res; } } @@ -119,27 +119,27 @@ namespace OpenRCT2::GameActions Result RideSetStatusAction::Execute(GameState_t& gameState) const { Result res = Result(); - res.Expenditure = ExpenditureType::rideRunningCosts; + res.expenditure = ExpenditureType::rideRunningCosts; auto ride = GetRide(_rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - res.Error = Status::invalidParameters; - res.ErrorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; - res.ErrorMessage = STR_ERR_RIDE_NOT_FOUND; + res.error = Status::invalidParameters; + res.errorTitle = STR_RIDE_DESCRIPTION_UNKNOWN; + res.errorMessage = STR_ERR_RIDE_NOT_FOUND; return res; } - res.ErrorTitle = _StatusErrorTitles[EnumValue(_status)]; + res.errorTitle = _StatusErrorTitles[EnumValue(_status)]; - Formatter ft(res.ErrorMessageArgs.data()); + Formatter ft(res.errorMessageArgs.data()); ft.Increment(6); ride->formatNameTo(ft); if (!ride->overallView.IsNull()) { auto location = ride->overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(location) }; + res.position = { location, TileElementHeight(location) }; } auto* windowMgr = Ui::GetWindowManager(); @@ -172,8 +172,8 @@ namespace OpenRCT2::GameActions const auto modeSwitchResult = ride->simulate(true); if (!modeSwitchResult.Successful) { - res.Error = Status::unknown; - res.ErrorMessage = modeSwitchResult.Message; + res.error = Status::unknown; + res.errorMessage = modeSwitchResult.Message; return res; } @@ -215,8 +215,8 @@ namespace OpenRCT2::GameActions const auto modeSwitchResult = ride->test(true); if (!modeSwitchResult.Successful) { - res.Error = Status::unknown; - res.ErrorMessage = modeSwitchResult.Message; + res.error = Status::unknown; + res.errorMessage = modeSwitchResult.Message; return res; } } @@ -225,8 +225,8 @@ namespace OpenRCT2::GameActions const auto modeSwitchResult = ride->open(true); if (!modeSwitchResult.Successful) { - res.Error = Status::unknown; - res.ErrorMessage = modeSwitchResult.Message; + res.error = Status::unknown; + res.errorMessage = modeSwitchResult.Message; return res; } } diff --git a/src/openrct2/actions/RideSetVehicleAction.cpp b/src/openrct2/actions/RideSetVehicleAction.cpp index eddc2037fa18..26db9f36fc67 100644 --- a/src/openrct2/actions/RideSetVehicleAction.cpp +++ b/src/openrct2/actions/RideSetVehicleAction.cpp @@ -210,7 +210,7 @@ namespace OpenRCT2::GameActions if (!ride->overallView.IsNull()) { auto location = ride->overallView.ToTileCentre(); - res.Position = { location, TileElementHeight(res.Position) }; + res.position = { location, TileElementHeight(res.position) }; } auto intent = Intent(INTENT_ACTION_RIDE_PAINT_RESET_VEHICLE); diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index 2f6cb789ca16..790ea6430789 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -97,13 +97,13 @@ namespace OpenRCT2::GameActions } auto res = Result(); auto centre = _loc.ToTileCentre(); - res.Position.x = centre.x; - res.Position.y = centre.y; - res.Position.z = surfaceHeight; + res.position.x = centre.x; + res.position.y = centre.y; + res.position.z = surfaceHeight; if (_loc.z != 0) { surfaceHeight = _loc.z; - res.Position.z = surfaceHeight; + res.position.z = surfaceHeight; } if (!LocationValid(_loc)) @@ -269,18 +269,18 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; + canBuild.errorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); const uint8_t groundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - res.SetData(SmallSceneryPlaceActionResult{ groundFlags, 0, 0 }); + res.setData(SmallSceneryPlaceActionResult{ groundFlags, 0, 0 }); - res.Expenditure = ExpenditureType::landscaping; - res.Cost = sceneryEntry->price + canBuild.Cost; + res.expenditure = ExpenditureType::landscaping; + res.cost = sceneryEntry->price + canBuild.cost; return res; } @@ -303,13 +303,13 @@ namespace OpenRCT2::GameActions } auto res = Result(); auto centre = _loc.ToTileCentre(); - res.Position.x = centre.x; - res.Position.y = centre.y; - res.Position.z = surfaceHeight; + res.position.x = centre.x; + res.position.y = centre.y; + res.position.z = surfaceHeight; if (_loc.z != 0) { surfaceHeight = _loc.z; - res.Position.z = surfaceHeight; + res.position.z = surfaceHeight; } auto* sceneryEntry = ObjectManager::GetObjectEntry(_sceneryType); @@ -408,14 +408,14 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { _loc, zLow, zHigh }, MapPlaceSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, CreateCrossingMode::none, isTree); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_CANT_POSITION_THIS_HERE; + canBuild.errorTitle = STR_CANT_POSITION_THIS_HERE; return canBuild; } - res.Expenditure = ExpenditureType::landscaping; - res.Cost = sceneryEntry->price + canBuild.Cost; + res.expenditure = ExpenditureType::landscaping; + res.cost = sceneryEntry->price + canBuild.cost; auto* sceneryElement = TileElementInsert( CoordsXYZ{ _loc, zLow }, quarterTile.GetBaseQuarterOccupied()); @@ -438,9 +438,9 @@ namespace OpenRCT2::GameActions sceneryElement->SetNeedsSupports(); } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); const uint8_t groundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - res.SetData( + res.setData( SmallSceneryPlaceActionResult{ groundFlags, sceneryElement->GetBaseZ(), sceneryElement->GetSceneryQuadrant() }); MapInvalidateTileFull(_loc); diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index 59c64f4f0ea5..0abcf52c5e97 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -70,9 +70,9 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } - res.Cost = entry->removal_price; - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc; + res.cost = entry->removal_price; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc; if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::ghost)) && !getGameState().cheats.sandboxMode) @@ -82,9 +82,9 @@ namespace OpenRCT2::GameActions { if (entry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE)) { - res.Error = Status::noClearance; - res.ErrorTitle = STR_CANT_REMOVE_THIS; - res.ErrorMessage = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY; + res.error = Status::noClearance; + res.errorTitle = STR_CANT_REMOVE_THIS; + res.errorMessage = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY; return res; } } @@ -92,9 +92,9 @@ namespace OpenRCT2::GameActions // Check if the land is owned if (!MapIsLocationOwned(_loc)) { - res.Error = Status::noClearance; - res.ErrorTitle = STR_CANT_REMOVE_THIS; - res.ErrorMessage = STR_LAND_NOT_OWNED_BY_PARK; + res.error = Status::noClearance; + res.errorTitle = STR_CANT_REMOVE_THIS; + res.errorMessage = STR_LAND_NOT_OWNED_BY_PARK; return res; } } @@ -119,9 +119,9 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } - res.Cost = entry->removal_price; - res.Expenditure = ExpenditureType::landscaping; - res.Position = _loc; + res.cost = entry->removal_price; + res.expenditure = ExpenditureType::landscaping; + res.position = _loc; TileElement* tileElement = FindSceneryElement(); if (tileElement == nullptr) diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index 0cc041df5a99..d6f2b33d759a 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -72,11 +72,11 @@ namespace OpenRCT2::GameActions Result SmallScenerySetColourAction::QueryExecute(bool isExecuting) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.ErrorTitle = STR_CANT_REPAINT_THIS; + res.expenditure = ExpenditureType::landscaping; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.errorTitle = STR_CANT_REPAINT_THIS; if (!LocationValid(_loc)) { diff --git a/src/openrct2/actions/StaffHireNewAction.cpp b/src/openrct2/actions/StaffHireNewAction.cpp index b1441797c41a..15316138fc65 100644 --- a/src/openrct2/actions/StaffHireNewAction.cpp +++ b/src/openrct2/actions/StaffHireNewAction.cpp @@ -75,7 +75,7 @@ namespace OpenRCT2::GameActions Result StaffHireNewAction::QueryExecute(bool execute) const { auto res = Result(); - res.Expenditure = ExpenditureType::wages; + res.expenditure = ExpenditureType::wages; if (_staffType >= static_cast(StaffType::count)) { @@ -110,7 +110,7 @@ namespace OpenRCT2::GameActions // In query we just want to see if we can obtain a sprite slot. getGameState().entities.EntityRemove(newPeep); - res.SetData(StaffHireNewActionResult{ EntityId::GetNull() }); + res.setData(StaffHireNewActionResult{ EntityId::GetNull() }); } else { @@ -215,7 +215,7 @@ namespace OpenRCT2::GameActions newPeep->StaffMowingTimeout = 0; newPeep->PatrolInfo = nullptr; - res.SetData(StaffHireNewActionResult{ newPeep->Id }); + res.setData(StaffHireNewActionResult{ newPeep->Id }); } return res; diff --git a/src/openrct2/actions/StaffSetColourAction.cpp b/src/openrct2/actions/StaffSetColourAction.cpp index 3b4fbe09f2b7..6c5080e8291f 100644 --- a/src/openrct2/actions/StaffSetColourAction.cpp +++ b/src/openrct2/actions/StaffSetColourAction.cpp @@ -59,7 +59,7 @@ namespace OpenRCT2::GameActions { // Update global uniform colour property auto res = StaffSetColour(static_cast(_staffType), _colour); - if (res.Error != Status::ok) + if (res.error != Status::ok) { return res; } diff --git a/src/openrct2/actions/StaffSetCostumeAction.cpp b/src/openrct2/actions/StaffSetCostumeAction.cpp index 3b95be91ff3d..4022f81a7a6e 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.cpp +++ b/src/openrct2/actions/StaffSetCostumeAction.cpp @@ -102,7 +102,7 @@ namespace OpenRCT2::GameActions ContextBroadcastIntent(&intent); auto res = Result(); - res.Position = staff->GetLocation(); + res.position = staff->GetLocation(); return res; } diff --git a/src/openrct2/actions/StaffSetNameAction.cpp b/src/openrct2/actions/StaffSetNameAction.cpp index ba2d8c3114f7..cfedb2d2bc52 100644 --- a/src/openrct2/actions/StaffSetNameAction.cpp +++ b/src/openrct2/actions/StaffSetNameAction.cpp @@ -91,7 +91,7 @@ namespace OpenRCT2::GameActions ContextBroadcastIntent(&intent); auto res = Result(); - res.Position = staff->GetLocation(); + res.position = staff->GetLocation(); return res; } diff --git a/src/openrct2/actions/StaffSetOrdersAction.cpp b/src/openrct2/actions/StaffSetOrdersAction.cpp index bb7dc5e4e87e..43a92c52feec 100644 --- a/src/openrct2/actions/StaffSetOrdersAction.cpp +++ b/src/openrct2/actions/StaffSetOrdersAction.cpp @@ -79,7 +79,7 @@ namespace OpenRCT2::GameActions ContextBroadcastIntent(&intent); auto res = Result(); - res.Position = staff->GetLocation(); + res.position = staff->GetLocation(); return res; } diff --git a/src/openrct2/actions/SurfaceSetStyleAction.cpp b/src/openrct2/actions/SurfaceSetStyleAction.cpp index c94af33d2ee5..753ba3f64ec5 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.cpp +++ b/src/openrct2/actions/SurfaceSetStyleAction.cpp @@ -48,8 +48,8 @@ namespace OpenRCT2::GameActions Result SurfaceSetStyleAction::Query(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_CHANGE_LAND_TYPE; - res.Expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_CHANGE_LAND_TYPE; + res.expenditure = ExpenditureType::landscaping; auto validRange = ClampRangeWithinMap(_range.Normalise()); auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); @@ -80,9 +80,9 @@ namespace OpenRCT2::GameActions auto yMid = (validRange.GetY1() + validRange.GetY2()) / 2 + 16; auto heightMid = TileElementHeight({ xMid, yMid }); - res.Position.x = xMid; - res.Position.y = yMid; - res.Position.z = heightMid; + res.position.x = xMid; + res.position.y = yMid; + res.position.z = heightMid; // Do nothing if not in editor, sandbox mode or landscaping is forbidden if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode @@ -138,7 +138,7 @@ namespace OpenRCT2::GameActions } } } - res.Cost = surfaceCost + edgeCost; + res.cost = surfaceCost + edgeCost; return res; } @@ -146,17 +146,17 @@ namespace OpenRCT2::GameActions Result SurfaceSetStyleAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_CHANGE_LAND_TYPE; - res.Expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_CHANGE_LAND_TYPE; + res.expenditure = ExpenditureType::landscaping; auto validRange = ClampRangeWithinMap(_range.Normalise()); auto xMid = (validRange.GetX1() + validRange.GetX2()) / 2 + 16; auto yMid = (validRange.GetY1() + validRange.GetY2()) / 2 + 16; auto heightMid = TileElementHeight({ xMid, yMid }); - res.Position.x = xMid; - res.Position.y = yMid; - res.Position.z = heightMid; + res.position.x = xMid; + res.position.y = yMid; + res.position.z = heightMid; money64 surfaceCost = 0; money64 edgeCost = 0; @@ -220,7 +220,7 @@ namespace OpenRCT2::GameActions } } } - res.Cost = surfaceCost + edgeCost; + res.cost = surfaceCost + edgeCost; return res; } diff --git a/src/openrct2/actions/TileModifyAction.cpp b/src/openrct2/actions/TileModifyAction.cpp index cb046e61098d..0190748ff70b 100644 --- a/src/openrct2/actions/TileModifyAction.cpp +++ b/src/openrct2/actions/TileModifyAction.cpp @@ -243,9 +243,9 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } - res.Position.x = _loc.x; - res.Position.y = _loc.y; - res.Position.z = TileElementHeight(_loc); + res.position.x = _loc.x; + res.position.y = _loc.y; + res.position.z = TileElementHeight(_loc); if (isExecuting) { diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 33232349cd94..0b615143db8a 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -57,10 +57,10 @@ namespace OpenRCT2::GameActions Result TrackDesignAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::rideConstruction; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::rideConstruction; if (!LocationValid(_loc)) { @@ -83,12 +83,12 @@ namespace OpenRCT2::GameActions auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); - if (r.Error != Status::ok) + if (r.error != Status::ok) { return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } - const auto rideIndex = r.GetData(); + const auto rideIndex = r.getData(); auto ride = GetRide(rideIndex); if (ride == nullptr) { @@ -114,17 +114,17 @@ namespace OpenRCT2::GameActions ExecuteNested(&gameAction, gameState); - if (queryRes.Error != Status::ok) + if (queryRes.error != Status::ok) { - res.Error = queryRes.Error; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - res.ErrorMessage = queryRes.ErrorMessage; - res.ErrorMessageArgs = queryRes.ErrorMessageArgs; + res.error = queryRes.error; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.errorMessage = queryRes.errorMessage; + res.errorMessageArgs = queryRes.errorMessageArgs; return res; } - res.Cost = queryRes.Cost; - res.SetData(RideId{ RideId::GetNull() }); + res.cost = queryRes.cost; + res.setData(RideId{ RideId::GetNull() }); return res; } @@ -132,10 +132,10 @@ namespace OpenRCT2::GameActions Result TrackDesignAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::rideConstruction; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::rideConstruction; auto& objManager = GetContext()->GetObjectManager(); auto entryIndex = objManager.GetLoadedObjectEntryIndex(_td.trackAndVehicle.vehicleObject); @@ -153,12 +153,12 @@ namespace OpenRCT2::GameActions auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); - if (r.Error != Status::ok) + if (r.error != Status::ok) { return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } - const auto rideIndex = r.GetData(); + const auto rideIndex = r.getData(); auto ride = GetRide(rideIndex); if (ride == nullptr) { @@ -178,16 +178,16 @@ namespace OpenRCT2::GameActions queryRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); } - if (queryRes.Error != Status::ok) + if (queryRes.error != Status::ok) { auto gameAction = RideDemolishAction(ride->id, RideModifyType::demolish); gameAction.SetFlags(GetFlags()); ExecuteNested(&gameAction, gameState); - res.Error = queryRes.Error; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - res.ErrorMessage = queryRes.ErrorMessage; - res.ErrorMessageArgs = queryRes.ErrorMessageArgs; + res.error = queryRes.error; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.errorMessage = queryRes.errorMessage; + res.errorMessageArgs = queryRes.errorMessageArgs; return res; } @@ -196,16 +196,16 @@ namespace OpenRCT2::GameActions flags.set(CommandFlag::apply); auto execRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); - if (execRes.Error != Status::ok) + if (execRes.error != Status::ok) { auto gameAction = RideDemolishAction(ride->id, RideModifyType::demolish); gameAction.SetFlags(GetFlags()); ExecuteNested(&gameAction, gameState); - res.Error = execRes.Error; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - res.ErrorMessage = execRes.ErrorMessage; - res.ErrorMessageArgs = execRes.ErrorMessageArgs; + res.error = execRes.error; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.errorMessage = execRes.errorMessage; + res.errorMessageArgs = execRes.errorMessageArgs; return res; } @@ -259,15 +259,15 @@ namespace OpenRCT2::GameActions ride->vehicleColours[i] = _td.appearance.vehicleColours[i]; } - for (int32_t count = 1; count == 1 || r.Error != Status::ok; ++count) + for (int32_t count = 1; count == 1 || r.error != Status::ok; ++count) { auto name = count == 1 ? _td.gameStateData.name : (_td.gameStateData.name + " " + std::to_string(count)); auto gameAction = RideSetNameAction(ride->id, name); gameAction.SetFlags(GetFlags()); r = ExecuteNested(&gameAction, gameState); } - res.Cost = execRes.Cost; - res.SetData(RideId{ ride->id }); + res.cost = execRes.cost; + res.setData(RideId{ ride->id }); return res; } diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 0bba145ee89f..44e2bf7303c4 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -118,10 +118,10 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.Position.x = _origin.x + 16; - res.Position.y = _origin.y + 16; - res.Position.z = _origin.z; + res.expenditure = ExpenditureType::rideConstruction; + res.position.x = _origin.x + 16; + res.position.y = _origin.y + 16; + res.position.z = _origin.z; auto resultData = TrackPlaceActionResult{}; @@ -265,14 +265,14 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( { mapLoc, baseZ, clearanceZ }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - costs += canBuild.Cost; + costs += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) { @@ -402,8 +402,8 @@ namespace OpenRCT2::GameActions price *= ted.priceModifier; price >>= 16; - res.Cost = costs + supportCosts + price; - res.SetData(std::move(resultData)); + res.cost = costs + supportCosts + price; + res.setData(std::move(resultData)); return res; } @@ -425,10 +425,10 @@ namespace OpenRCT2::GameActions } auto res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.Position.x = _origin.x + 16; - res.Position.y = _origin.y + 16; - res.Position.z = _origin.z; + res.expenditure = ExpenditureType::rideConstruction; + res.position.x = _origin.x + 16; + res.position.y = _origin.y + 16; + res.position.z = _origin.z; auto resultData = TrackPlaceActionResult{}; @@ -470,12 +470,12 @@ namespace OpenRCT2::GameActions auto canBuild = MapCanConstructWithClearAt( mapLocWithClearance, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (canBuild.Error != Status::ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - costs += canBuild.Cost; + costs += canBuild.cost; // When building a level crossing, remove any pre-existing path furniture. if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags().has(CommandFlag::ghost))) @@ -510,7 +510,7 @@ namespace OpenRCT2::GameActions } } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) { @@ -721,8 +721,8 @@ namespace OpenRCT2::GameActions price *= ted.priceModifier; price >>= 16; - res.Cost = costs + supportCosts + price; - res.SetData(std::move(resultData)); + res.cost = costs + supportCosts + price; + res.setData(std::move(resultData)); return res; } diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index d7db2e5b05b3..62a5315c9e14 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -68,10 +68,10 @@ namespace OpenRCT2::GameActions Result TrackRemoveAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _origin.x + 16; - res.Position.y = _origin.y + 16; - res.Position.z = _origin.z; - res.Expenditure = ExpenditureType::rideConstruction; + res.position.x = _origin.x + 16; + res.position.y = _origin.y + 16; + res.position.z = _origin.z; + res.expenditure = ExpenditureType::rideConstruction; auto comparableTrackType = normaliseTrackType(_trackType); @@ -154,9 +154,9 @@ namespace OpenRCT2::GameActions startLoc.x -= rotatedTrack.x; startLoc.y -= rotatedTrack.y; startLoc.z -= rotatedTrack.z; - res.Position.x = startLoc.x; - res.Position.y = startLoc.y; - res.Position.z = startLoc.z; + res.position.x = startLoc.x; + res.position.y = startLoc.y; + res.position.z = startLoc.z; money64 supportCosts = 0; @@ -245,17 +245,17 @@ namespace OpenRCT2::GameActions price = (price * 45875) / 65536; } - res.Cost = -price; + res.cost = -price; return res; } Result TrackRemoveAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _origin.x + 16; - res.Position.y = _origin.y + 16; - res.Position.z = _origin.z; - res.Expenditure = ExpenditureType::rideConstruction; + res.position.x = _origin.x + 16; + res.position.y = _origin.y + 16; + res.position.z = _origin.z; + res.expenditure = ExpenditureType::rideConstruction; auto comparableTrackType = normaliseTrackType(_trackType); @@ -327,9 +327,9 @@ namespace OpenRCT2::GameActions startLoc.x -= rotatedTrackLoc.x; startLoc.y -= rotatedTrackLoc.y; startLoc.z -= rotatedTrackLoc.z; - res.Position.x = startLoc.x; - res.Position.y = startLoc.y; - res.Position.z = startLoc.z; + res.position.x = startLoc.x; + res.position.y = startLoc.y; + res.position.z = startLoc.z; money64 supportCosts = 0; @@ -505,7 +505,7 @@ namespace OpenRCT2::GameActions price = (price * 45875) / 65536; } - res.Cost = -price; + res.cost = -price; return res; } } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp index 681f2d2d8b63..85bee7375321 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp @@ -57,10 +57,10 @@ namespace OpenRCT2::GameActions { auto res = Result(); - res.Position = _loc; - res.Position.x += 16; - res.Position.y += 16; - res.Expenditure = ExpenditureType::rideConstruction; + res.position = _loc; + res.position.x += 16; + res.position.y += 16; + res.expenditure = ExpenditureType::rideConstruction; if (!LocationValid(_loc)) { diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 3db2342930f8..431506a77012 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -74,16 +74,16 @@ namespace OpenRCT2::GameActions Result WallPlaceAction::Query(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_BUILD_THIS_HERE; - res.Position = _loc; + res.errorTitle = STR_CANT_BUILD_THIS_HERE; + res.position = _loc; - res.Expenditure = ExpenditureType::landscaping; - res.Position.x += 16; - res.Position.y += 16; + res.expenditure = ExpenditureType::landscaping; + res.position.x += 16; + res.position.y += 16; if (_loc.z == 0) { - res.Position.z = TileElementHeight(res.Position); + res.position.z = TileElementHeight(res.position); } if (!LocationValid(_loc)) @@ -255,7 +255,7 @@ namespace OpenRCT2::GameActions if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / 8, clearanceHeight, &wallAcrossTrack); - if (result.Error != Status::ok) + if (result.error != Status::ok) { return result; } @@ -266,9 +266,9 @@ namespace OpenRCT2::GameActions return Result(Status::noFreeElements, STR_CANT_BUILD_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } - res.Cost = wallEntry->price; + res.cost = wallEntry->price; - res.SetData(WallPlaceActionResult{ targetHeight }); + res.setData(WallPlaceActionResult{ targetHeight }); return res; } @@ -276,16 +276,16 @@ namespace OpenRCT2::GameActions Result WallPlaceAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_BUILD_THIS_HERE; - res.Position = _loc; + res.errorTitle = STR_CANT_BUILD_THIS_HERE; + res.position = _loc; - res.Expenditure = ExpenditureType::landscaping; - res.Position.x += 16; - res.Position.y += 16; + res.expenditure = ExpenditureType::landscaping; + res.position.x += 16; + res.position.y += 16; - if (res.Position.z == 0) + if (res.position.z == 0) { - res.Position.z = TileElementHeight(res.Position); + res.position.z = TileElementHeight(res.position); } uint8_t edgeSlope = 0; @@ -329,7 +329,7 @@ namespace OpenRCT2::GameActions if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / kCoordsZStep, clearanceHeight, &wallAcrossTrack); - if (result.Error != Status::ok) + if (result.error != Status::ok) { return result; } @@ -387,10 +387,10 @@ namespace OpenRCT2::GameActions MapAnimations::MarkTileForInvalidation(TileCoordsXY(targetLoc)); MapInvalidateTileZoom1({ _loc, wallElement->GetBaseZ(), wallElement->GetBaseZ() + 72 }); - res.Cost = wallEntry->price; + res.cost = wallEntry->price; const auto bannerId = banner != nullptr ? banner->id : BannerIndex::GetNull(); - res.SetData(WallPlaceActionResult{ wallElement->GetBaseZ(), bannerId }); + res.setData(WallPlaceActionResult{ wallElement->GetBaseZ(), bannerId }); return res; } diff --git a/src/openrct2/actions/WallRemoveAction.cpp b/src/openrct2/actions/WallRemoveAction.cpp index e7c92669d4bc..f093e7d636e1 100644 --- a/src/openrct2/actions/WallRemoveAction.cpp +++ b/src/openrct2/actions/WallRemoveAction.cpp @@ -42,8 +42,8 @@ namespace OpenRCT2::GameActions Result WallRemoveAction::Query(GameState_t& gameState) const { Result res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; if (!LocationValid(_loc)) { @@ -63,15 +63,15 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } - res.Cost = 0; + res.cost = 0; return res; } Result WallRemoveAction::Execute(GameState_t& gameState) const { Result res = Result(); - res.Cost = 0; - res.Expenditure = ExpenditureType::landscaping; + res.cost = 0; + res.expenditure = ExpenditureType::landscaping; const bool isGhost = GetFlags().has(CommandFlag::ghost); @@ -81,9 +81,9 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; wallElement->RemoveBannerEntry(); MapInvalidateTileZoom1({ _loc, wallElement->GetBaseZ(), (wallElement->GetBaseZ()) + 72 }); diff --git a/src/openrct2/actions/WallSetColourAction.cpp b/src/openrct2/actions/WallSetColourAction.cpp index 6b37e33f16c9..08352e12ec8d 100644 --- a/src/openrct2/actions/WallSetColourAction.cpp +++ b/src/openrct2/actions/WallSetColourAction.cpp @@ -55,12 +55,12 @@ namespace OpenRCT2::GameActions Result WallSetColourAction::Query(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_REPAINT_THIS; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; + res.errorTitle = STR_CANT_REPAINT_THIS; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; - res.Expenditure = ExpenditureType::landscaping; + res.expenditure = ExpenditureType::landscaping; if (!LocationValid(_loc)) { @@ -119,11 +119,11 @@ namespace OpenRCT2::GameActions Result WallSetColourAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.ErrorTitle = STR_CANT_REPAINT_THIS; - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::landscaping; + res.errorTitle = STR_CANT_REPAINT_THIS; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::landscaping; auto wallElement = MapGetWallElementAt(_loc); if (wallElement == nullptr) diff --git a/src/openrct2/actions/WaterLowerAction.cpp b/src/openrct2/actions/WaterLowerAction.cpp index fe45486e831f..e468ca894d6a 100644 --- a/src/openrct2/actions/WaterLowerAction.cpp +++ b/src/openrct2/actions/WaterLowerAction.cpp @@ -56,16 +56,16 @@ namespace OpenRCT2::GameActions auto res = Result(); auto validRange = ClampRangeWithinMap(_range); - res.Position.x = ((validRange.GetX1() + validRange.GetX2()) / 2) + 16; - res.Position.y = ((validRange.GetY1() + validRange.GetY2()) / 2) + 16; - int16_t z = TileElementHeight(res.Position); - int16_t waterHeight = TileElementWaterHeight(res.Position); + res.position.x = ((validRange.GetX1() + validRange.GetX2()) / 2) + 16; + res.position.y = ((validRange.GetY1() + validRange.GetY2()) / 2) + 16; + int16_t z = TileElementHeight(res.position); + int16_t waterHeight = TileElementWaterHeight(res.position); if (waterHeight != 0) { z = waterHeight; } - res.Position.z = z; - res.Expenditure = ExpenditureType::landscaping; + res.position.z = z; + res.expenditure = ExpenditureType::landscaping; uint8_t minHeight = GetLowestHeight(gameState, validRange); bool hasChanged = false; @@ -102,14 +102,14 @@ namespace OpenRCT2::GameActions waterSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&waterSetHeightAction, gameState) : QueryNested(&waterSetHeightAction, gameState); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - res.Cost += result.Cost; + res.cost += result.cost; hasChanged = true; } else { - result.ErrorTitle = STR_CANT_LOWER_WATER_LEVEL_HERE; + result.errorTitle = STR_CANT_LOWER_WATER_LEVEL_HERE; return result; } } @@ -123,7 +123,7 @@ namespace OpenRCT2::GameActions if (isExecuting && hasChanged) { - Audio::Play3D(Audio::SoundId::layingOutWater, res.Position); + Audio::Play3D(Audio::SoundId::layingOutWater, res.position); } // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); diff --git a/src/openrct2/actions/WaterRaiseAction.cpp b/src/openrct2/actions/WaterRaiseAction.cpp index c61e01fb3267..7da27c780cbb 100644 --- a/src/openrct2/actions/WaterRaiseAction.cpp +++ b/src/openrct2/actions/WaterRaiseAction.cpp @@ -56,16 +56,16 @@ namespace OpenRCT2::GameActions auto res = Result(); auto validRange = ClampRangeWithinMap(_range); - res.Position.x = ((validRange.GetX1() + validRange.GetX2()) / 2) + 16; - res.Position.y = ((validRange.GetY1() + validRange.GetY2()) / 2) + 16; - int32_t z = TileElementHeight(res.Position); - int16_t waterHeight = TileElementWaterHeight(res.Position); + res.position.x = ((validRange.GetX1() + validRange.GetX2()) / 2) + 16; + res.position.y = ((validRange.GetY1() + validRange.GetY2()) / 2) + 16; + int32_t z = TileElementHeight(res.position); + int16_t waterHeight = TileElementWaterHeight(res.position); if (waterHeight != 0) { z = waterHeight; } - res.Position.z = z; - res.Expenditure = ExpenditureType::landscaping; + res.position.z = z; + res.expenditure = ExpenditureType::landscaping; auto maxHeight = GetHighestHeight(gameState, validRange) / kCoordsZStep; bool hasChanged = false; @@ -116,14 +116,14 @@ namespace OpenRCT2::GameActions waterSetHeightAction.SetFlags(GetFlags()); auto result = isExecuting ? ExecuteNested(&waterSetHeightAction, gameState) : QueryNested(&waterSetHeightAction, gameState); - if (result.Error == Status::ok) + if (result.error == Status::ok) { - res.Cost += result.Cost; + res.cost += result.cost; hasChanged = true; } else { - result.ErrorTitle = STR_CANT_RAISE_WATER_LEVEL_HERE; + result.errorTitle = STR_CANT_RAISE_WATER_LEVEL_HERE; return result; } } @@ -136,7 +136,7 @@ namespace OpenRCT2::GameActions if (isExecuting && hasChanged) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::layingOutWater, res.Position); + OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::layingOutWater, res.position); } // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); diff --git a/src/openrct2/actions/WaterSetHeightAction.cpp b/src/openrct2/actions/WaterSetHeightAction.cpp index 0306b0cdbd10..d4ab67503891 100644 --- a/src/openrct2/actions/WaterSetHeightAction.cpp +++ b/src/openrct2/actions/WaterSetHeightAction.cpp @@ -49,8 +49,8 @@ namespace OpenRCT2::GameActions Result WaterSetHeightAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position = { _coords, _height * kCoordsZStep }; + res.expenditure = ExpenditureType::landscaping; + res.position = { _coords, _height * kCoordsZStep }; if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode && gameState.park.flags & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES) @@ -97,7 +97,7 @@ namespace OpenRCT2::GameActions zLow = temp; } - if (auto res2 = MapCanConstructAt({ _coords, zLow, zHigh }, { 0b1111, 0b1111 }); res2.Error != Status::ok) + if (auto res2 = MapCanConstructAt({ _coords, zLow, zHigh }, { 0b1111, 0b1111 }); res2.error != Status::ok) { return res2; } @@ -106,7 +106,7 @@ namespace OpenRCT2::GameActions return Result(Status::disallowed, STR_ERR_INVALID_PARAMETER, STR_ERR_TRACK_ON_THIS_TILE_NEEDS_WATER); } - res.Cost = 250; + res.cost = 250; return res; } @@ -114,8 +114,8 @@ namespace OpenRCT2::GameActions Result WaterSetHeightAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Expenditure = ExpenditureType::landscaping; - res.Position = { _coords, _height * kCoordsZStep }; + res.expenditure = ExpenditureType::landscaping; + res.position = { _coords, _height * kCoordsZStep }; int32_t surfaceHeight = TileElementHeight(_coords); FootpathRemoveLitter({ _coords, surfaceHeight }); @@ -139,7 +139,7 @@ namespace OpenRCT2::GameActions } MapInvalidateTileFull(_coords); - res.Cost = 250; + res.cost = 250; return res; } diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index b00c6b187973..787e7a63f972 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -685,13 +685,13 @@ GameActions::Result Peep::Place(const TileCoordsXYZ& location, bool apply) } if (auto res = MapCanConstructAt({ destination, destination.z, destination.z + (1 * 8) }, { 0b1111, 0 }); - res.Error != GameActions::Status::ok) + res.error != GameActions::Status::ok) { - const auto stringId = std::get(res.ErrorMessage); + const auto stringId = std::get(res.errorMessage); if (stringId != STR_RAISE_OR_LOWER_LAND_FIRST && stringId != STR_FOOTPATH_IN_THE_WAY) { return GameActions::Result( - GameActions::Status::noClearance, STR_ERR_CANT_PLACE_PERSON_HERE, stringId, res.ErrorMessageArgs.data()); + GameActions::Status::noClearance, STR_ERR_CANT_PLACE_PERSON_HERE, stringId, res.errorMessageArgs.data()); } } diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 5b6b2a666413..727a56c4c898 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -751,11 +751,11 @@ static void ConsoleSetVariableAction(InteractiveConsole& console, std::string va { auto action = TAction(std::forward(args)...); action.SetCallback([&console, var](const GameActions::GameAction*, const GameActions::Result* res) { - if (res->Error != GameActions::Status::ok) + if (res->error != GameActions::Status::ok) console.WriteLineError( String::stdFormat( - "set %s command failed: %s - %s.", var.c_str(), res->GetErrorTitle().c_str(), - res->GetErrorMessage().c_str())); + "set %s command failed: %s - %s.", var.c_str(), res->getErrorTitle().c_str(), + res->getErrorMessage().c_str())); else console.Execute(String::stdFormat("get %s", var.c_str())); console.EndAsyncExecution(); diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/rct12/ScenarioPatcher.cpp index cafaab6cdd8e..1b2ba8217255 100644 --- a/src/openrct2/rct12/ScenarioPatcher.cpp +++ b/src/openrct2/rct12/ScenarioPatcher.cpp @@ -663,7 +663,7 @@ static void ApplyPathFixes(const json_t& scenarioPatch) coordinate.ToCoordsXYZ(), slope, surfaceObjIndex, railingsObjIndex, direction, constructionFlags); auto& gameState = getGameState(); auto result = footpathPlaceAction.Execute(gameState); - if (result.Error != GameActions::Status::ok) + if (result.error != GameActions::Status::ok) { Guard::Assert(0, "Could not patch path"); } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index ca418ab977a6..7defccdfa71b 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -1137,7 +1137,7 @@ money64 RideGetRefundPrice(const Ride& ride) auto res = GameActions::Query(&trackRemoveAction, getGameState()); - cost += res.Cost; + cost += res.cost; if (!TrackBlockGetNext(&trackElement, &trackElement, nullptr, nullptr)) { @@ -1164,7 +1164,7 @@ money64 SetOperatingSetting(RideId rideId, GameActions::RideSetSetting setting, { auto rideSetSetting = GameActions::RideSetSettingAction(rideId, setting, value); auto res = GameActions::Execute(&rideSetSetting, getGameState()); - return res.Error == GameActions::Status::ok ? 0 : kMoney64Undefined; + return res.error == GameActions::Status::ok ? 0 : kMoney64Undefined; } money64 SetOperatingSettingNested(RideId rideId, GameActions::RideSetSetting setting, uint8_t value, CommandFlags flags) @@ -1175,7 +1175,7 @@ money64 SetOperatingSettingNested(RideId rideId, GameActions::RideSetSetting set auto& gameState = getGameState(); auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&rideSetSetting, gameState) : GameActions::QueryNested(&rideSetSetting, gameState); - return res.Error == GameActions::Status::ok ? 0 : kMoney64Undefined; + return res.error == GameActions::Status::ok ? 0 : kMoney64Undefined; } /** diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 3399bbeec31b..02e9215d95d3 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1092,7 +1092,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&smallSceneryPlace, gameState) : GameActions::QueryNested(&smallSceneryPlace, gameState); - cost = res.Error == GameActions::Status::ok ? res.Cost : 0; + cost = res.error == GameActions::Status::ok ? res.cost : 0; break; } case ObjectType::largeScenery: @@ -1132,7 +1132,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&sceneryPlaceAction, gameState) : GameActions::QueryNested(&sceneryPlaceAction, gameState); - cost = res.Cost; + cost = res.cost; break; } case ObjectType::walls: @@ -1170,7 +1170,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&wallPlaceAction, gameState) : GameActions::QueryNested(&wallPlaceAction, gameState); - cost = res.Cost; + cost = res.cost; break; } case ObjectType::paths: @@ -1211,7 +1211,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&footpathPlaceAction, gameState) : GameActions::QueryNested(&footpathPlaceAction, gameState); // Ignore failures - cost = res.Error == GameActions::Status::ok ? res.Cost : 0; + cost = res.error == GameActions::Status::ok ? res.cost : 0; } else { @@ -1259,7 +1259,7 @@ static GameActions::Result TrackDesignPlaceSceneryElement( } auto res = GameActions::Result(); - res.Cost = cost; + res.cost = cost; return res; } @@ -1293,7 +1293,7 @@ static GameActions::Result TrackDesignPlaceAllScenery( TrackDesignUpdatePreviewBounds(tds, mapCoord); auto placementRes = TrackDesignPlaceSceneryElement(tds, mapCoord, mode, scenery, rotation, origin.z); - if (placementRes.Error != GameActions::Status::ok) + if (placementRes.error != GameActions::Status::ok) { if (tds.placeOperation != TrackPlaceOperation::removeGhost) { @@ -1301,18 +1301,18 @@ static GameActions::Result TrackDesignPlaceAllScenery( return placementRes; } - if (placementRes.Error == GameActions::Status::noClearance) + if (placementRes.error == GameActions::Status::noClearance) { // Some scenery might be obstructed, don't abort the entire operation. continue; } } - cost += placementRes.Cost; + cost += placementRes.cost; } } auto res = GameActions::Result(); - res.Cost = cost; + res.cost = cost; return res; } @@ -1393,11 +1393,11 @@ static std::optional TrackDesignPlaceEntrances( ? GameActions::ExecuteNested(&rideEntranceExitPlaceAction, gameState) : GameActions::QueryNested(&rideEntranceExitPlaceAction, gameState); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return res; } - totalCost += res.Cost; + totalCost += res.cost; tds.entranceExitPlaced = true; _trackDesignPlaceStateEntranceExitPlaced = true; break; @@ -1406,12 +1406,12 @@ static std::optional TrackDesignPlaceEntrances( else { auto res = GameActions::RideEntranceExitPlaceAction::TrackPlaceQuery(newCoords, false); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return res; } - totalCost += res.Cost; + totalCost += res.cost; tds.entranceExitPlaced = true; _trackDesignPlaceStateEntranceExitPlaced = true; } @@ -1489,11 +1489,11 @@ static GameActions::Result TrackDesignPlaceMaze( mazePlace.SetFlags(flags); auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&mazePlace, gameState) : GameActions::QueryNested(&mazePlace, gameState); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return res; } - cost = res.Cost; + cost = res.cost; totalCost += cost; } @@ -1548,7 +1548,7 @@ static GameActions::Result TrackDesignPlaceMaze( } auto res = GameActions::Result(); - res.Cost = totalCost; + res.cost = totalCost; return res; } @@ -1646,12 +1646,12 @@ static GameActions::Result TrackDesignPlaceRide( auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&trackPlaceAction, gameState) : GameActions::QueryNested(&trackPlaceAction, gameState); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return res; } - totalCost += res.Cost; + totalCost += res.cost; break; } case TrackPlaceOperation::getPlaceZ: @@ -1728,7 +1728,7 @@ static GameActions::Result TrackDesignPlaceRide( } auto res = GameActions::Result(); - res.Cost = totalCost; + res.cost = totalCost; return res; } @@ -1783,14 +1783,14 @@ static GameActions::Result TrackDesignPlaceVirtual( _currentRideIndex = savedRideId; _currentTrackPieceDirection = savedTrackPieceDirection; - if (trackPlaceRes.Error != GameActions::Status::ok) + if (trackPlaceRes.error != GameActions::Status::ok) { return trackPlaceRes; } // Scenery elements auto sceneryPlaceRes = TrackDesignPlaceAllScenery(tds, td.sceneryElements, coords.direction); - if (sceneryPlaceRes.Error != GameActions::Status::ok) + if (sceneryPlaceRes.error != GameActions::Status::ok) { return sceneryPlaceRes; } @@ -1809,7 +1809,7 @@ static GameActions::Result TrackDesignPlaceVirtual( } auto res = GameActions::Result(); - res.Cost = trackPlaceRes.Cost + sceneryPlaceRes.Cost; + res.cost = trackPlaceRes.cost + sceneryPlaceRes.cost; return res; } @@ -1867,14 +1867,14 @@ static money64 TrackDesignCreateRide(int32_t type, int32_t subType, CommandFlags auto res = GameActions::ExecuteNested(&gameAction, gameState); // Callee's of this function expect kMoney64Undefined in case of failure. - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return kMoney64Undefined; } - *outRideIndex = res.GetData(); + *outRideIndex = res.getData(); - return res.Cost; + return res.cost; } /** @@ -1953,7 +1953,7 @@ static bool TrackDesignPlacePreview( { mapSize.x, mapSize.y, z, _currentTrackPieceDirection }); gameState.park.flags = backup_park_flags; - if (res.Error == GameActions::Status::ok) + if (res.error == GameActions::Status::ok) { if (entry_index == kObjectEntryIndexNull) { @@ -1966,7 +1966,7 @@ static bool TrackDesignPlacePreview( _currentTrackPieceDirection = backup_rotation; _trackDesignDrawingPreview = false; - gameStateData.cost = res.Cost; + gameStateData.cost = res.cost; *outRide = ride; return true; } diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index fb98ca06a57f..e3201a7f38a1 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -1086,10 +1086,10 @@ GameActions::Result ScriptEngine::QueryOrExecuteCustomGameAction(const GameActio auto dukArgs = DuktapeTryParseJson(_context, argsz); if (!dukArgs) { - auto action = GameActions::Result(); - action.Error = GameActions::Status::invalidParameters; - action.ErrorTitle = "Invalid JSON"; - return action; + auto res = GameActions::Result(); + res.error = GameActions::Status::invalidParameters; + res.errorTitle = "Invalid JSON"; + return res; } std::vector pluginCallArgs; @@ -1123,11 +1123,11 @@ GameActions::Result ScriptEngine::QueryOrExecuteCustomGameAction(const GameActio return DukToGameActionResult(dukResult); } - auto action = GameActions::Result(); - action.Error = GameActions::Status::unknown; - action.ErrorTitle = "Unknown custom action"; - action.ErrorMessage = customAction.GetPluginName() + ": " + actionz; - return action; + auto res = GameActions::Result(); + res.error = GameActions::Status::unknown; + res.errorTitle = "Unknown custom action"; + res.errorMessage = customAction.GetPluginName() + ": " + actionz; + return res; } GameActions::Result ScriptEngine::DukToGameActionResult(const DukValue& d) @@ -1135,25 +1135,25 @@ GameActions::Result ScriptEngine::DukToGameActionResult(const DukValue& d) auto result = GameActions::Result(); if (d.type() == DUK_TYPE_OBJECT) { - result.Error = static_cast(AsOrDefault(d["error"])); - result.ErrorTitle = AsOrDefault(d["errorTitle"]); - result.ErrorMessage = AsOrDefault(d["errorMessage"]); - result.Cost = AsOrDefault(d["cost"]); + result.error = static_cast(AsOrDefault(d["error"])); + result.errorTitle = AsOrDefault(d["errorTitle"]); + result.errorMessage = AsOrDefault(d["errorMessage"]); + result.cost = AsOrDefault(d["cost"]); auto expenditureType = AsOrDefault(d["expenditureType"]); if (!expenditureType.empty()) { auto expenditure = StringToExpenditureType(expenditureType); if (expenditure != ExpenditureType::count) { - result.Expenditure = expenditure; + result.expenditure = expenditure; } } } else { - result.Error = GameActions::Status::unknown; - result.ErrorTitle = "Unknown"; - result.ErrorMessage = "Unknown"; + result.error = GameActions::Status::unknown; + result.errorTitle = "Unknown"; + result.errorMessage = "Unknown"; } return result; } @@ -1200,41 +1200,41 @@ DukValue ScriptEngine::GameActionResultToDuk(const GameActions::GameAction& acti DukStackFrame frame(_context); DukObject obj(_context); - obj.Set("error", static_cast(result.Error)); - if (result.Error != GameActions::Status::ok) + obj.Set("error", static_cast(result.error)); + if (result.error != GameActions::Status::ok) { - obj.Set("errorTitle", result.GetErrorTitle()); - obj.Set("errorMessage", result.GetErrorMessage()); + obj.Set("errorTitle", result.getErrorTitle()); + obj.Set("errorMessage", result.getErrorMessage()); } - if (result.Cost != kMoney64Undefined) + if (result.cost != kMoney64Undefined) { - obj.Set("cost", result.Cost); + obj.Set("cost", result.cost); } - if (!result.Position.IsNull()) + if (!result.position.IsNull()) { - obj.Set("position", ToDuk(_context, result.Position)); + obj.Set("position", ToDuk(_context, result.position)); } - if (result.Expenditure != ExpenditureType::count) + if (result.expenditure != ExpenditureType::count) { - obj.Set("expenditureType", ExpenditureTypeToString(result.Expenditure)); + obj.Set("expenditureType", ExpenditureTypeToString(result.expenditure)); } // RideCreateAction only if (action.GetType() == GameCommand::CreateRide) { - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { - const auto rideIndex = result.GetData(); + const auto rideIndex = result.getData(); obj.Set("ride", rideIndex.ToUnderlying()); } } // StaffHireNewAction only else if (action.GetType() == GameCommand::HireNewStaffMember) { - if (result.Error == GameActions::Status::ok) + if (result.error == GameActions::Status::ok) { - const auto actionResult = result.GetData(); + const auto actionResult = result.getData(); if (!actionResult.StaffEntityId.IsNull()) { obj.Set("peep", actionResult.StaffEntityId.ToUnderlying()); @@ -1246,13 +1246,13 @@ DukValue ScriptEngine::GameActionResultToDuk(const GameActions::GameAction& acti switch (action.GetType()) { case GameCommand::PlaceBanner: - bannerId = result.GetData().bannerId; + bannerId = result.getData().bannerId; break; case GameCommand::PlaceLargeScenery: - bannerId = result.GetData().bannerId; + bannerId = result.getData().bannerId; break; case GameCommand::PlaceWall: - bannerId = result.GetData().BannerId; + bannerId = result.getData().BannerId; break; default: break; @@ -1521,9 +1521,9 @@ void ScriptEngine::RunGameActionHooks(const GameActions::GameAction& action, Gam auto error = AsOrDefault(dukResult["error"]); if (error != 0) { - result.Error = static_cast(error); - result.ErrorTitle = AsOrDefault(dukResult["errorTitle"]); - result.ErrorMessage = AsOrDefault(dukResult["errorMessage"]); + result.error = static_cast(error); + result.errorTitle = AsOrDefault(dukResult["errorTitle"]); + result.errorMessage = AsOrDefault(dukResult["errorMessage"]); } } } diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index fd59904cb6fb..9f949363d14f 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -187,27 +187,27 @@ GameActions::Result MapCanConstructWithClearAt( auto res = GameActions::Result(); uint8_t groundFlags = ELEMENT_IS_ABOVE_GROUND; - res.SetData(ConstructClearResult{ groundFlags }); + res.setData(ConstructClearResult{ groundFlags }); bool canBuildCrossing = false; if (MapIsEdge(pos)) { - res.Error = GameActions::Status::invalidParameters; - res.ErrorMessage = STR_OFF_EDGE_OF_MAP; + res.error = GameActions::Status::invalidParameters; + res.errorMessage = STR_OFF_EDGE_OF_MAP; return res; } if (getGameState().cheats.disableClearanceChecks) { - res.SetData(ConstructClearResult{ groundFlags }); + res.setData(ConstructClearResult{ groundFlags }); return res; } TileElement* tileElement = MapGetFirstElementAt(pos); if (tileElement == nullptr) { - res.Error = GameActions::Status::unknown; - res.ErrorMessage = kStringIdNone; + res.error = GameActions::Status::unknown; + res.errorMessage = kStringIdNone; return res; } @@ -221,13 +221,13 @@ GameActions::Result MapCanConstructWithClearAt( if (tileElement->GetOccupiedQuadrants() & (quarterTile.GetBaseQuarterOccupied())) { if (MapLoc68BABCShouldContinue( - &tileElement, pos, clearFunc, flags, res.Cost, crossingMode, canBuildCrossing, slope)) + &tileElement, pos, clearFunc, flags, res.cost, crossingMode, canBuildCrossing, slope)) { continue; } MapGetObstructionErrorText(tileElement, res); - res.Error = GameActions::Status::noClearance; + res.error = GameActions::Status::noClearance; return res; } } @@ -240,10 +240,10 @@ GameActions::Result MapCanConstructWithClearAt( groundFlags |= ELEMENT_IS_UNDERWATER; if (waterHeight < pos.clearanceZ) { - if (!clearFunc(&tileElement, pos, flags, &res.Cost)) + if (!clearFunc(&tileElement, pos, flags, &res.cost)) { - res.Error = GameActions::Status::noClearance; - res.ErrorMessage = STR_CANNOT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_WATER; + res.error = GameActions::Status::noClearance; + res.errorMessage = STR_CANNOT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_WATER; return res; } } @@ -255,8 +255,8 @@ GameActions::Result MapCanConstructWithClearAt( if (heightFromGround > (18 * kCoordsZStep)) { - res.Error = GameActions::Status::disallowed; - res.ErrorMessage = STR_LOCAL_AUTHORITY_WONT_ALLOW_CONSTRUCTION_ABOVE_TREE_HEIGHT; + res.error = GameActions::Status::disallowed; + res.errorMessage = STR_LOCAL_AUTHORITY_WONT_ALLOW_CONSTRUCTION_ABOVE_TREE_HEIGHT; return res; } } @@ -292,19 +292,19 @@ GameActions::Result MapCanConstructWithClearAt( } if (MapLoc68BABCShouldContinue( - &tileElement, pos, clearFunc, flags, res.Cost, crossingMode, canBuildCrossing, slope)) + &tileElement, pos, clearFunc, flags, res.cost, crossingMode, canBuildCrossing, slope)) { continue; } MapGetObstructionErrorText(tileElement, res); - res.Error = GameActions::Status::noClearance; + res.error = GameActions::Status::noClearance; return res; } } } while (!(tileElement++)->IsLastForTile()); - res.SetData(ConstructClearResult{ groundFlags }); + res.setData(ConstructClearResult{ groundFlags }); return res; } @@ -329,30 +329,30 @@ void MapGetObstructionErrorText(TileElement* tileElement, GameActions::Result& r { Ride* ride; - res.ErrorMessage = STR_OBJECT_IN_THE_WAY; + res.errorMessage = STR_OBJECT_IN_THE_WAY; switch (tileElement->GetType()) { case TileElementType::Surface: - res.ErrorMessage = STR_RAISE_OR_LOWER_LAND_FIRST; + res.errorMessage = STR_RAISE_OR_LOWER_LAND_FIRST; break; case TileElementType::Path: - res.ErrorMessage = STR_FOOTPATH_IN_THE_WAY; + res.errorMessage = STR_FOOTPATH_IN_THE_WAY; break; case TileElementType::Track: ride = GetRide(tileElement->AsTrack()->GetRideIndex()); if (ride != nullptr) { - res.ErrorMessage = STR_X_IN_THE_WAY; + res.errorMessage = STR_X_IN_THE_WAY; - Formatter ft(res.ErrorMessageArgs.data()); + Formatter ft(res.errorMessageArgs.data()); ride->formatNameTo(ft); } break; case TileElementType::SmallScenery: { auto* sceneryEntry = tileElement->AsSmallScenery()->GetEntry(); - res.ErrorMessage = STR_X_IN_THE_WAY; - auto ft = Formatter(res.ErrorMessageArgs.data()); + res.errorMessage = STR_X_IN_THE_WAY; + auto ft = Formatter(res.errorMessageArgs.data()); StringId stringId = sceneryEntry != nullptr ? sceneryEntry->name : static_cast(kStringIdEmpty); ft.Add(stringId); break; @@ -361,21 +361,21 @@ void MapGetObstructionErrorText(TileElement* tileElement, GameActions::Result& r switch (tileElement->AsEntrance()->GetEntranceType()) { case ENTRANCE_TYPE_RIDE_ENTRANCE: - res.ErrorMessage = STR_RIDE_ENTRANCE_IN_THE_WAY; + res.errorMessage = STR_RIDE_ENTRANCE_IN_THE_WAY; break; case ENTRANCE_TYPE_RIDE_EXIT: - res.ErrorMessage = STR_RIDE_EXIT_IN_THE_WAY; + res.errorMessage = STR_RIDE_EXIT_IN_THE_WAY; break; case ENTRANCE_TYPE_PARK_ENTRANCE: - res.ErrorMessage = STR_PARK_ENTRANCE_IN_THE_WAY; + res.errorMessage = STR_PARK_ENTRANCE_IN_THE_WAY; break; } break; case TileElementType::Wall: { auto* wallEntry = tileElement->AsWall()->GetEntry(); - res.ErrorMessage = STR_X_IN_THE_WAY; - auto ft = Formatter(res.ErrorMessageArgs.data()); + res.errorMessage = STR_X_IN_THE_WAY; + auto ft = Formatter(res.errorMessageArgs.data()); StringId stringId = wallEntry != nullptr ? wallEntry->name : static_cast(kStringIdEmpty); ft.Add(stringId); break; @@ -383,8 +383,8 @@ void MapGetObstructionErrorText(TileElement* tileElement, GameActions::Result& r case TileElementType::LargeScenery: { auto* sceneryEntry = tileElement->AsLargeScenery()->GetEntry(); - res.ErrorMessage = STR_X_IN_THE_WAY; - auto ft = Formatter(res.ErrorMessageArgs.data()); + res.errorMessage = STR_X_IN_THE_WAY; + auto ft = Formatter(res.errorMessageArgs.data()); StringId stringId = sceneryEntry != nullptr ? sceneryEntry->name : static_cast(kStringIdEmpty); ft.Add(stringId); break; diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 45f5f156e7b6..5cbb9ef1c13f 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -50,7 +50,7 @@ static money64 RideEntranceExitPlaceGhost( rideEntranceExitPlaceAction.SetFlags({ CommandFlag::allowDuringPaused, CommandFlag::ghost }); auto res = GameActions::Execute(&rideEntranceExitPlaceAction, getGameState()); - return res.Error == GameActions::Status::ok ? res.Cost : kMoney64Undefined; + return res.error == GameActions::Status::ok ? res.cost : kMoney64Undefined; } /** diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 27f0ee30e890..0fa429d2c45d 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -1444,7 +1444,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) auto parkEntranceRemoveAction = GameActions::ParkEntranceRemoveAction(CoordsXYZ{ seqLoc, element->GetBaseZ() }); auto result = GameActions::ExecuteNested(&parkEntranceRemoveAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::ok) + if (result.error != GameActions::Status::ok) { TileElementRemove(element); } @@ -1456,7 +1456,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) auto wallRemoveAction = GameActions::WallRemoveAction(wallLocation); auto result = GameActions::ExecuteNested(&wallRemoveAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::ok) + if (result.error != GameActions::Status::ok) { TileElementRemove(element); } @@ -1468,7 +1468,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) { loc.x, loc.y, element->GetBaseZ(), element->GetDirection() }, element->AsLargeScenery()->GetSequenceIndex()); auto result = GameActions::ExecuteNested(&removeSceneryAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::ok) + if (result.error != GameActions::Status::ok) { TileElementRemove(element); } @@ -1480,7 +1480,7 @@ void ClearElementAt(const CoordsXY& loc, TileElement** elementPtr) { loc.x, loc.y, element->GetBaseZ(), element->AsBanner()->GetPosition() }); auto result = GameActions::ExecuteNested(&bannerRemoveAction, gameState); // If asking nicely did not work, forcibly remove this to avoid an infinite loop. - if (result.Error != GameActions::Status::ok) + if (result.error != GameActions::Status::ok) { TileElementRemove(element); } diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index da32aec7f7b3..7db639571354 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -187,7 +187,7 @@ namespace OpenRCT2::TileInspector if (isExecuting) { auto res = SwapTileElements(loc, first, second); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { return res; } @@ -400,7 +400,7 @@ namespace OpenRCT2::TileInspector && otherElement->ClearanceHeight > currentElement->ClearanceHeight))) { auto res = SwapTileElements(loc, currentId - 1, currentId); - if (res.Error != GameActions::Status::ok) + if (res.error != GameActions::Status::ok) { // don't return error here, we've already ran some actions // and moved things as far as we could, the only sensible @@ -455,7 +455,7 @@ namespace OpenRCT2::TileInspector GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); auto heightValidationResult = ValidateTileHeight(tileElement, heightOffset); - if (heightValidationResult.Error != GameActions::Status::ok) + if (heightValidationResult.error != GameActions::Status::ok) return heightValidationResult; if (isExecuting) From ee1794d6b6cee8dee51f84109091ed5cf48b087c Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 12:17:17 +0100 Subject: [PATCH 094/222] Remove unnecessary includes from Vehicle.h --- src/openrct2/ride/Vehicle.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 73f5fb9a76a5..8369013be9aa 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -16,13 +16,10 @@ #include "../world/Location.hpp" #include "Angles.h" #include "CarEntry.h" -#include "Station.h" #include "VehicleColour.h" #include "VehicleSubpositionData.h" -#include #include -#include struct Ride; struct RideObjectEntry; From 4d69f8f9443b48a2972463e765ffbc30d4e35b0d Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 12:21:29 +0100 Subject: [PATCH 095/222] Rename members of Vehicle::Status --- src/openrct2-ui/windows/Ride.cpp | 88 ++++---- src/openrct2/entity/Guest.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 6 +- src/openrct2/rct2/S6Importer.cpp | 6 +- src/openrct2/ride/CableLift.cpp | 26 +-- src/openrct2/ride/Ride.cpp | 18 +- src/openrct2/ride/Station.cpp | 6 +- src/openrct2/ride/Vehicle.cpp | 194 +++++++++--------- src/openrct2/ride/Vehicle.h | 62 +++--- .../scripting/bindings/entity/ScVehicle.cpp | 62 +++--- 10 files changed, 235 insertions(+), 235 deletions(-) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 9d9fa61385b4..6136d29caeab 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -542,48 +542,48 @@ namespace OpenRCT2::Ui::Windows static_assert(std::size(VehicleColourSchemeNames) == kNumVehicleColourSettings); static constexpr std::array VehicleStatusNames = { - STR_MOVING_TO_END_OF, // Vehicle::Status::MovingToEndOfStation - STR_WAITING_FOR_PASSENGERS_AT, // Vehicle::Status::WaitingForPassengers - STR_WAITING_TO_DEPART, // Vehicle::Status::WaitingToDepart - STR_DEPARTING, // Vehicle::Status::Departing - STR_TRAVELLING_AT_0, // Vehicle::Status::Travelling - STR_ARRIVING_AT, // Vehicle::Status::Arriving - STR_UNLOADING_PASSENGERS_AT, // Vehicle::Status::UnloadingPassengers - STR_TRAVELLING_AT_1, // Vehicle::Status::TravellingBoat - STR_CRASHING, // Vehicle::Status::Crashing - STR_CRASHED_0, // Vehicle::Status::Crashed - STR_TRAVELLING_AT_2, // Vehicle::Status::TravellingDodgems - STR_SWINGING, // Vehicle::Status::Swinging - STR_ROTATING_0, // Vehicle::Status::Rotating - STR_ROTATING_1, // Vehicle::Status::FerrisWheelRotating - STR_OPERATING_0, // Vehicle::Status::SimulatorOperating - STR_SHOWING_FILM, // Vehicle::Status::ShowingFilm - STR_ROTATING_2, // Vehicle::Status::SpaceRingsOperating - STR_OPERATING_1, // Vehicle::Status::TopSpinOperating - STR_OPERATING_2, // Vehicle::Status::HauntedHouseOperating - STR_DOING_CIRCUS_SHOW, // Vehicle::Status::DoingCircusShow - STR_OPERATING_3, // Vehicle::Status::CrookedHouseOperating - STR_WAITING_FOR_CABLE_LIFT, // Vehicle::Status::WaitingForCableLift - STR_TRAVELLING_AT_3, // Vehicle::Status::TravellingCableLift - STR_STOPPING_0, // Vehicle::Status::Stopping - STR_WAITING_FOR_PASSENGERS, // Vehicle::Status::WaitingForPassengers17 - STR_WAITING_TO_START, // Vehicle::Status::WaitingToStart - STR_STARTING, // Vehicle::Status::Starting - STR_OPERATING, // Vehicle::Status::Operating1A - STR_STOPPING_1, // Vehicle::Status::Stopping1B - STR_UNLOADING_PASSENGERS, // Vehicle::Status::UnloadingPassengers1C - STR_STOPPED_BY_BLOCK_BRAKES, // Vehicle::Status::StoppedByBlockBrakes + STR_MOVING_TO_END_OF, // Vehicle::Status::movingToEndOfStation + STR_WAITING_FOR_PASSENGERS_AT, // Vehicle::Status::waitingForPassengers + STR_WAITING_TO_DEPART, // Vehicle::Status::waitingToDepart + STR_DEPARTING, // Vehicle::Status::departing + STR_TRAVELLING_AT_0, // Vehicle::Status::travelling + STR_ARRIVING_AT, // Vehicle::Status::arriving + STR_UNLOADING_PASSENGERS_AT, // Vehicle::Status::unloadingPassengers + STR_TRAVELLING_AT_1, // Vehicle::Status::travellingBoat + STR_CRASHING, // Vehicle::Status::crashing + STR_CRASHED_0, // Vehicle::Status::crashed + STR_TRAVELLING_AT_2, // Vehicle::Status::travellingDodgems + STR_SWINGING, // Vehicle::Status::swinging + STR_ROTATING_0, // Vehicle::Status::rotating + STR_ROTATING_1, // Vehicle::Status::ferrisWheelRotating + STR_OPERATING_0, // Vehicle::Status::simulatorOperating + STR_SHOWING_FILM, // Vehicle::Status::showingFilm + STR_ROTATING_2, // Vehicle::Status::spaceRingsOperating + STR_OPERATING_1, // Vehicle::Status::topSpinOperating + STR_OPERATING_2, // Vehicle::Status::hauntedHouseOperating + STR_DOING_CIRCUS_SHOW, // Vehicle::Status::doingCircusShow + STR_OPERATING_3, // Vehicle::Status::crookedHouseOperating + STR_WAITING_FOR_CABLE_LIFT, // Vehicle::Status::waitingForCableLift + STR_TRAVELLING_AT_3, // Vehicle::Status::travellingCableLift + STR_STOPPING_0, // Vehicle::Status::stopping + STR_WAITING_FOR_PASSENGERS, // Vehicle::Status::waitingForPassengers17 + STR_WAITING_TO_START, // Vehicle::Status::waitingToStart + STR_STARTING, // Vehicle::Status::starting + STR_OPERATING, // Vehicle::Status::operating1A + STR_STOPPING_1, // Vehicle::Status::stopping1B + STR_UNLOADING_PASSENGERS, // Vehicle::Status::unloadingPassengers1C + STR_STOPPED_BY_BLOCK_BRAKES, // Vehicle::Status::stoppedByBlockBrakes }; static_assert(std::size(VehicleStatusNames) == 31); static constexpr std::array SingleSessionVehicleStatusNames = { - STR_STOPPING_0, // Vehicle::Status::MovingToEndOfStation - STR_WAITING_FOR_PASSENGERS, // Vehicle::Status::WaitingForPassengers - STR_WAITING_TO_START, // Vehicle::Status::WaitingToDepart - STR_STARTING, // Vehicle::Status::Departing - STR_OPERATING, // Vehicle::Status::Travelling - STR_STOPPING_1, // Vehicle::Status::Arriving - STR_UNLOADING_PASSENGERS, // Vehicle::Status::UnloadingPassengers + STR_STOPPING_0, // Vehicle::Status::movingToEndOfStation + STR_WAITING_FOR_PASSENGERS, // Vehicle::Status::waitingForPassengers + STR_WAITING_TO_START, // Vehicle::Status::waitingToDepart + STR_STARTING, // Vehicle::Status::departing + STR_OPERATING, // Vehicle::Status::travelling + STR_STOPPING_1, // Vehicle::Status::arriving + STR_UNLOADING_PASSENGERS, // Vehicle::Status::unloadingPassengers }; static_assert(std::size(SingleSessionVehicleStatusNames) == 7); @@ -2262,10 +2262,10 @@ namespace OpenRCT2::Ui::Windows { Vehicle* vehicle = getGameState().entities.GetEntity(ride->vehicles[_viewIndex - 1]); if (vehicle == nullptr - || (vehicle->status != Vehicle::Status::Travelling - && vehicle->status != Vehicle::Status::TravellingCableLift - && vehicle->status != Vehicle::Status::TravellingDodgems - && vehicle->status != Vehicle::Status::TravellingBoat)) + || (vehicle->status != Vehicle::Status::travelling + && vehicle->status != Vehicle::Status::travellingCableLift + && vehicle->status != Vehicle::Status::travellingDodgems + && vehicle->status != Vehicle::Status::travellingBoat)) { return; } @@ -2459,7 +2459,7 @@ namespace OpenRCT2::Ui::Windows return kStringIdEmpty; auto& rtd = ride->getRideTypeDescriptor(); - if (vehicle->status != Vehicle::Status::Crashing && vehicle->status != Vehicle::Status::Crashed) + if (vehicle->status != Vehicle::Status::crashing && vehicle->status != Vehicle::Status::crashed) { auto trackType = vehicle->GetTrackType(); if (trackType == TrackElemType::BlockBrakes || trackType == TrackElemType::CableLiftHill @@ -2480,7 +2480,7 @@ namespace OpenRCT2::Ui::Windows auto stringId = VehicleStatusNames[EnumValue(vehicle->status)]; if (ride->getRideTypeDescriptor().HasFlag(RtdFlag::singleSession) - && vehicle->status <= Vehicle::Status::UnloadingPassengers) + && vehicle->status <= Vehicle::Status::unloadingPassengers) { stringId = SingleSessionVehicleStatusNames[EnumValue(vehicle->status)]; } diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 848140a9a5e4..81036eddd929 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -2595,7 +2595,7 @@ static bool FindVehicleToEnter( if (vehicle->next_free_seat >= vehicle->num_seats) continue; - if (vehicle->status != Vehicle::Status::WaitingForPassengers) + if (vehicle->status != Vehicle::Status::waitingForPassengers) continue; chosen_train = i; break; diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index c0cdf0e9b36f..6b44148d5f55 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2876,8 +2876,8 @@ namespace OpenRCT2::RCT1 } } - ::Vehicle::Status statusSrc = ::Vehicle::Status::MovingToEndOfStation; - if (src->Status <= static_cast(::Vehicle::Status::StoppedByBlockBrakes)) + ::Vehicle::Status statusSrc = ::Vehicle::Status::movingToEndOfStation; + if (src->Status <= static_cast(::Vehicle::Status::stoppedByBlockBrakes)) { statusSrc = static_cast<::Vehicle::Status>(src->Status); } @@ -2885,7 +2885,7 @@ namespace OpenRCT2::RCT1 dst->TrackSubposition = VehicleTrackSubposition{ src->TrackSubposition }; dst->TrackLocation = { src->TrackX, src->TrackY, src->TrackZ }; dst->current_station = StationIndex::FromUnderlying(src->CurrentStation); - if (src->BoatLocation.IsNull() || ride->mode != RideMode::boatHire || statusSrc != ::Vehicle::Status::TravellingBoat) + if (src->BoatLocation.IsNull() || ride->mode != RideMode::boatHire || statusSrc != ::Vehicle::Status::travellingBoat) { dst->BoatLocation.SetNull(); dst->SetTrackDirection(src->GetTrackDirection()); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 6a9231ec8ee3..7cfaf2ae206f 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1965,7 +1965,7 @@ namespace OpenRCT2::RCT2 dst->track_progress = src->TrackProgress; dst->TrackLocation = { src->TrackX, src->TrackY, src->TrackZ }; if (src->BoatLocation.IsNull() || static_cast(ride.mode) != RideMode::boatHire - || src->Status != static_cast(::Vehicle::Status::TravellingBoat)) + || src->Status != static_cast(::Vehicle::Status::travellingBoat)) { dst->BoatLocation.SetNull(); dst->SetTrackDirection(src->GetTrackDirection()); @@ -2010,8 +2010,8 @@ namespace OpenRCT2::RCT2 dst->current_time = src->CurrentTime; dst->crash_z = src->CrashZ; - ::Vehicle::Status statusSrc = ::Vehicle::Status::MovingToEndOfStation; - if (src->Status <= static_cast(::Vehicle::Status::StoppedByBlockBrakes)) + ::Vehicle::Status statusSrc = ::Vehicle::Status::movingToEndOfStation; + if (src->Status <= static_cast(::Vehicle::Status::stoppedByBlockBrakes)) { statusSrc = static_cast<::Vehicle::Status>(src->Status); } diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index 44818b225935..d7037c04feba 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -79,7 +79,7 @@ Vehicle* CableLiftSegmentCreate( current->SetTrackDirection(current->Orientation >> 3); current->track_progress = 164; current->Flags = VehicleFlags::CollisionDisabled; - current->SetState(Vehicle::Status::MovingToEndOfStation, 0); + current->SetState(Vehicle::Status::movingToEndOfStation, 0); current->num_peeps = 0; current->next_free_seat = 0; current->BoatLocation.SetNull(); @@ -90,22 +90,22 @@ void Vehicle::CableLiftUpdate() { switch (status) { - case Vehicle::Status::MovingToEndOfStation: + case Vehicle::Status::movingToEndOfStation: CableLiftUpdateMovingToEndOfStation(); break; - case Vehicle::Status::WaitingForPassengers: + case Vehicle::Status::waitingForPassengers: // Stays in this state until a train puts it into next state break; - case Vehicle::Status::WaitingToDepart: + case Vehicle::Status::waitingToDepart: CableLiftUpdateWaitingToDepart(); break; - case Vehicle::Status::Departing: + case Vehicle::Status::departing: CableLiftUpdateDeparting(); break; - case Vehicle::Status::Travelling: + case Vehicle::Status::travelling: CableLiftUpdateTravelling(); break; - case Vehicle::Status::Arriving: + case Vehicle::Status::arriving: CableLiftUpdateArriving(); break; default: @@ -135,7 +135,7 @@ void Vehicle::CableLiftUpdateMovingToEndOfStation() velocity = 0; acceleration = 0; - SetState(Vehicle::Status::WaitingForPassengers, sub_state); + SetState(Vehicle::Status::waitingForPassengers, sub_state); } /** @@ -175,7 +175,7 @@ void Vehicle::CableLiftUpdateWaitingToDepart() velocity = 0; acceleration = 0; - SetState(Vehicle::Status::Departing, 0); + SetState(Vehicle::Status::departing, 0); } /** @@ -193,8 +193,8 @@ void Vehicle::CableLiftUpdateDeparting() { return; } - SetState(Vehicle::Status::Travelling, sub_state); - passengerVehicle->SetState(Vehicle::Status::TravellingCableLift, passengerVehicle->sub_state); + SetState(Vehicle::Status::travelling, sub_state); + passengerVehicle->SetState(Vehicle::Status::travellingCableLift, passengerVehicle->sub_state); } /** @@ -219,7 +219,7 @@ void Vehicle::CableLiftUpdateTravelling() velocity = 0; acceleration = 0; - SetState(Vehicle::Status::Arriving, 0); + SetState(Vehicle::Status::arriving, 0); } /** @@ -230,7 +230,7 @@ void Vehicle::CableLiftUpdateArriving() { sub_state++; if (sub_state >= 64) - SetState(Vehicle::Status::MovingToEndOfStation, sub_state); + SetState(Vehicle::Status::movingToEndOfStation, sub_state); } bool Vehicle::CableLiftUpdateTrackMotionForwards() diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 74fa94e5132c..e22279f90a79 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1944,7 +1944,7 @@ static bool RideMusicBreakdownEffect(Ride& ride) void CircusMusicUpdate(Ride& ride) { Vehicle* vehicle = getGameState().entities.GetEntity(ride.vehicles[0]); - if (vehicle == nullptr || vehicle->status != Vehicle::Status::DoingCircusShow) + if (vehicle == nullptr || vehicle->status != Vehicle::Status::doingCircusShow) { ride.musicPosition = 0; ride.musicTuneId = kTuneIDNull; @@ -2029,7 +2029,7 @@ static void RideMeasurementUpdate(Ride& ride, RideMeasurement& measurement) if (measurement.flags & RIDE_MEASUREMENT_FLAG_UNLOADING) { - if (vehicle->status != Vehicle::Status::Departing && vehicle->status != Vehicle::Status::TravellingCableLift) + if (vehicle->status != Vehicle::Status::departing && vehicle->status != Vehicle::Status::travellingCableLift) return; measurement.flags &= ~RIDE_MEASUREMENT_FLAG_UNLOADING; @@ -2037,7 +2037,7 @@ static void RideMeasurementUpdate(Ride& ride, RideMeasurement& measurement) measurement.current_item = 0; } - if (vehicle->status == Vehicle::Status::UnloadingPassengers) + if (vehicle->status == Vehicle::Status::unloadingPassengers) { measurement.flags |= RIDE_MEASUREMENT_FLAG_UNLOADING; return; @@ -2123,8 +2123,8 @@ void RideMeasurementsUpdate() auto vehicle = gameState.entities.GetEntity(vehicleSpriteIdx); if (vehicle != nullptr) { - if (vehicle->status == Vehicle::Status::Departing - || vehicle->status == Vehicle::Status::TravellingCableLift) + if (vehicle->status == Vehicle::Status::departing + || vehicle->status == Vehicle::Status::travellingCableLift) { measurement->vehicle_index = j; measurement->current_station = vehicle->current_station; @@ -3333,7 +3333,7 @@ static Vehicle* VehicleCreateCar( vehicle->SetTrackDirection(0); vehicle->SetTrackType(trackElement->GetTrackType()); vehicle->track_progress = 0; - vehicle->SetState(Vehicle::Status::MovingToEndOfStation); + vehicle->SetState(Vehicle::Status::movingToEndOfStation); vehicle->Flags = 0; CoordsXY chosenLoc; @@ -3441,7 +3441,7 @@ static Vehicle* VehicleCreateCar( vehicle->SetFlag(VehicleFlags::CarIsInverted); } } - vehicle->SetState(Vehicle::Status::MovingToEndOfStation); + vehicle->SetState(Vehicle::Status::movingToEndOfStation); if (ride.hasLifecycleFlag(RIDE_LIFECYCLE_REVERSED_TRAINS)) { @@ -3790,10 +3790,10 @@ void Ride::moveTrainsToBlockBrakes(const CoordsXYZ& firstBlockPosition, TrackEle for (Vehicle* car = train; car != nullptr; car = getGameState().entities.GetEntity(car->next_vehicle_on_train)) { car->ClearFlag(VehicleFlags::CollisionDisabled); - car->SetState(Vehicle::Status::Travelling, car->sub_state); + car->SetState(Vehicle::Status::travelling, car->sub_state); if ((car->GetTrackType()) == TrackElemType::EndStation) { - car->SetState(Vehicle::Status::MovingToEndOfStation, car->sub_state); + car->SetState(Vehicle::Status::movingToEndOfStation, car->sub_state); } } } diff --git a/src/openrct2/ride/Station.cpp b/src/openrct2/ride/Station.cpp index 512ca6a13be8..5b7016c42cb5 100644 --- a/src/openrct2/ride/Station.cpp +++ b/src/openrct2/ride/Station.cpp @@ -135,7 +135,7 @@ static void RideUpdateStationDodgems(Ride& ride, StationIndex stationIndex) if (vehicle == nullptr) continue; - if (vehicle->status != Vehicle::Status::WaitingToDepart) + if (vehicle->status != Vehicle::Status::waitingToDepart) { station.Depart &= ~kStationDepartFlag; return; @@ -212,7 +212,7 @@ static void RideUpdateStationRace(Ride& ride, StationIndex stationIndex) if (vehicle == nullptr) continue; - if (vehicle->status != Vehicle::Status::WaitingToDepart && vehicle->NumLaps >= numLaps) + if (vehicle->status != Vehicle::Status::waitingToDepart && vehicle->NumLaps >= numLaps) { // Found a winner if (vehicle->num_peeps != 0) @@ -248,7 +248,7 @@ static void RideUpdateStationRace(Ride& ride, StationIndex stationIndex) if (vehicle == nullptr) continue; - if (vehicle->status != Vehicle::Status::WaitingToDepart && vehicle->status != Vehicle::Status::Departing) + if (vehicle->status != Vehicle::Status::waitingToDepart && vehicle->status != Vehicle::Status::departing) { if (station.Depart & kStationDepartFlag) { diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 33c4123ebfc6..f54daf324fcc 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -533,7 +533,7 @@ void Vehicle::UpdateMeasurements() if (curRide == nullptr) return; - if (status == Vehicle::Status::TravellingBoat) + if (status == Vehicle::Status::travellingBoat) { curRide->lifecycleFlags |= RIDE_LIFECYCLE_TESTED; curRide->lifecycleFlags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -971,71 +971,71 @@ void Vehicle::Update() switch (status) { - case Vehicle::Status::MovingToEndOfStation: + case Vehicle::Status::movingToEndOfStation: UpdateMovingToEndOfStation(); break; - case Vehicle::Status::WaitingForPassengers: + case Vehicle::Status::waitingForPassengers: UpdateWaitingForPassengers(); break; - case Vehicle::Status::WaitingToDepart: + case Vehicle::Status::waitingToDepart: UpdateWaitingToDepart(); break; - case Vehicle::Status::Crashing: - case Vehicle::Status::Crashed: + case Vehicle::Status::crashing: + case Vehicle::Status::crashed: UpdateCrash(); break; - case Vehicle::Status::TravellingDodgems: + case Vehicle::Status::travellingDodgems: UpdateDodgemsMode(); break; - case Vehicle::Status::Swinging: + case Vehicle::Status::swinging: UpdateSwinging(); break; - case Vehicle::Status::SimulatorOperating: + case Vehicle::Status::simulatorOperating: UpdateSimulatorOperating(); break; - case Vehicle::Status::TopSpinOperating: + case Vehicle::Status::topSpinOperating: UpdateTopSpinOperating(); break; - case Vehicle::Status::FerrisWheelRotating: + case Vehicle::Status::ferrisWheelRotating: UpdateFerrisWheelRotating(); break; - case Vehicle::Status::SpaceRingsOperating: + case Vehicle::Status::spaceRingsOperating: UpdateSpaceRingsOperating(); break; - case Vehicle::Status::HauntedHouseOperating: + case Vehicle::Status::hauntedHouseOperating: UpdateHauntedHouseOperating(); break; - case Vehicle::Status::CrookedHouseOperating: + case Vehicle::Status::crookedHouseOperating: UpdateCrookedHouseOperating(); break; - case Vehicle::Status::Rotating: + case Vehicle::Status::rotating: UpdateRotating(); break; - case Vehicle::Status::Departing: + case Vehicle::Status::departing: UpdateDeparting(); break; - case Vehicle::Status::Travelling: + case Vehicle::Status::travelling: UpdateTravelling(); break; - case Vehicle::Status::TravellingCableLift: + case Vehicle::Status::travellingCableLift: UpdateTravellingCableLift(); break; - case Vehicle::Status::TravellingBoat: + case Vehicle::Status::travellingBoat: UpdateTravellingBoat(); break; - case Vehicle::Status::Arriving: + case Vehicle::Status::arriving: UpdateArriving(); break; - case Vehicle::Status::UnloadingPassengers: + case Vehicle::Status::unloadingPassengers: UpdateUnloadingPassengers(); break; - case Vehicle::Status::WaitingForCableLift: + case Vehicle::Status::waitingForCableLift: UpdateWaitingForCableLift(); break; - case Vehicle::Status::ShowingFilm: + case Vehicle::Status::showingFilm: UpdateShowingFilm(); break; - case Vehicle::Status::DoingCircusShow: + case Vehicle::Status::doingCircusShow: UpdateDoingCircusShow(); break; default: @@ -1097,7 +1097,7 @@ void Vehicle::UpdateMovingToEndOfStation() current_station = StationIndex::FromUnderlying(0); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::WaitingForPassengers); + SetState(Vehicle::Status::waitingForPassengers); break; default: { @@ -1132,7 +1132,7 @@ void Vehicle::UpdateMovingToEndOfStation() if (curRide->mode == RideMode::race && sub_state >= 40) { - SetState(Vehicle::Status::WaitingForPassengers); + SetState(Vehicle::Status::waitingForPassengers); break; } } @@ -1150,7 +1150,7 @@ void Vehicle::UpdateMovingToEndOfStation() current_station = StationIndex::FromUnderlying(station); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::WaitingForPassengers); + SetState(Vehicle::Status::waitingForPassengers); break; } } @@ -1194,7 +1194,7 @@ void Vehicle::TrainReadyToDepart(uint8_t num_peeps_on_train, uint8_t num_used_se if (!peep[seat].IsNull()) { curRide->getStation(current_station).TrainAtStation = RideStation::kNoTrain; - SetState(Vehicle::Status::UnloadingPassengers); + SetState(Vehicle::Status::unloadingPassengers); return; } @@ -1210,7 +1210,7 @@ void Vehicle::TrainReadyToDepart(uint8_t num_peeps_on_train, uint8_t num_used_se return; curRide->getStation(current_station).TrainAtStation = RideStation::kNoTrain; - SetState(Vehicle::Status::WaitingForPassengers); + SetState(Vehicle::Status::waitingForPassengers); } static std::optional ride_get_train_index_from_vehicle(const Ride& ride, EntityId spriteIndex) @@ -1344,8 +1344,8 @@ void Vehicle::UpdateWaitingForPassengers() if (train == nullptr) continue; - if (train->status == Vehicle::Status::UnloadingPassengers - || train->status == Vehicle::Status::MovingToEndOfStation) + if (train->status == Vehicle::Status::unloadingPassengers + || train->status == Vehicle::Status::movingToEndOfStation) { if (train->current_station == current_station) { @@ -1401,7 +1401,7 @@ void Vehicle::UpdateWaitingForPassengers() SetFlag(VehicleFlags::WaitingOnAdjacentStation); } - SetState(Vehicle::Status::WaitingToDepart); + SetState(Vehicle::Status::waitingToDepart); } /** @@ -1444,7 +1444,7 @@ void Vehicle::UpdateDodgemsMode() Invalidate(); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::UnloadingPassengers); + SetState(Vehicle::Status::unloadingPassengers); } /** @@ -1492,7 +1492,7 @@ void Vehicle::UpdateWaitingToDepart() { if (!currentStation.Exit.IsNull()) { - SetState(Vehicle::Status::UnloadingPassengers); + SetState(Vehicle::Status::unloadingPassengers); return; } } @@ -1506,7 +1506,7 @@ void Vehicle::UpdateWaitingToDepart() { if (!currentStation.Exit.IsNull()) { - SetState(Vehicle::Status::UnloadingPassengers); + SetState(Vehicle::Status::unloadingPassengers); return; } break; @@ -1535,7 +1535,7 @@ void Vehicle::UpdateWaitingToDepart() } } - SetState(Vehicle::Status::Departing); + SetState(Vehicle::Status::departing); if (curRide->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT) { @@ -1548,7 +1548,7 @@ void Vehicle::UpdateWaitingToDepart() { if (track.element->AsTrack()->HasCableLift()) { - SetState(Vehicle::Status::WaitingForCableLift, sub_state); + SetState(Vehicle::Status::waitingForCableLift, sub_state); } } } @@ -1558,36 +1558,36 @@ void Vehicle::UpdateWaitingToDepart() case RideMode::dodgems: // Dodgems mode uses sub_state and TimeActive to tell how long // the vehicle has been ridden. - SetState(Vehicle::Status::TravellingDodgems); + SetState(Vehicle::Status::travellingDodgems); TimeActive = 0; UpdateDodgemsMode(); break; case RideMode::swing: - SetState(Vehicle::Status::Swinging); + SetState(Vehicle::Status::swinging); NumSwings = 0; current_time = -1; UpdateSwinging(); break; case RideMode::rotation: - SetState(Vehicle::Status::Rotating); + SetState(Vehicle::Status::rotating); NumRotations = 0; current_time = -1; UpdateRotating(); break; case RideMode::filmAvengingAviators: - SetState(Vehicle::Status::SimulatorOperating); + SetState(Vehicle::Status::simulatorOperating); current_time = -1; UpdateSimulatorOperating(); break; case RideMode::filmThrillRiders: - SetState(Vehicle::Status::SimulatorOperating, 1); + SetState(Vehicle::Status::simulatorOperating, 1); current_time = -1; UpdateSimulatorOperating(); break; case RideMode::beginners: case RideMode::intense: case RideMode::berserk: - SetState(Vehicle::Status::TopSpinOperating, sub_state); + SetState(Vehicle::Status::topSpinOperating, sub_state); switch (curRide->mode) { case RideMode::beginners: @@ -1612,7 +1612,7 @@ void Vehicle::UpdateWaitingToDepart() break; case RideMode::forwardRotation: case RideMode::backwardRotation: - SetState(Vehicle::Status::FerrisWheelRotating, flatRideAnimationFrame); + SetState(Vehicle::Status::ferrisWheelRotating, flatRideAnimationFrame); NumRotations = 0; ferris_wheel_var_0 = 8; ferris_wheel_var_1 = 8; @@ -1621,7 +1621,7 @@ void Vehicle::UpdateWaitingToDepart() case RideMode::mouseTails3DFilm: case RideMode::stormChasers3DFilm: case RideMode::spaceRaiders3DFilm: - SetState(Vehicle::Status::ShowingFilm, sub_state); + SetState(Vehicle::Status::showingFilm, sub_state); switch (curRide->mode) { case RideMode::mouseTails3DFilm: @@ -1643,24 +1643,24 @@ void Vehicle::UpdateWaitingToDepart() UpdateShowingFilm(); break; case RideMode::circus: - SetState(Vehicle::Status::DoingCircusShow); + SetState(Vehicle::Status::doingCircusShow); current_time = -1; UpdateDoingCircusShow(); break; case RideMode::spaceRings: - SetState(Vehicle::Status::SpaceRingsOperating); + SetState(Vehicle::Status::spaceRingsOperating); flatRideAnimationFrame = 0; current_time = -1; UpdateSpaceRingsOperating(); break; case RideMode::hauntedHouse: - SetState(Vehicle::Status::HauntedHouseOperating); + SetState(Vehicle::Status::hauntedHouseOperating); flatRideAnimationFrame = 0; current_time = -1; UpdateHauntedHouseOperating(); break; case RideMode::crookedHouse: - SetState(Vehicle::Status::CrookedHouseOperating); + SetState(Vehicle::Status::crookedHouseOperating); flatRideAnimationFrame = 0; current_time = -1; UpdateCrookedHouseOperating(); @@ -1751,7 +1751,7 @@ static bool try_add_synchronised_station(const CoordsXYZ& coords) continue; } - if (vehicle->status != Vehicle::Status::WaitingToDepart) + if (vehicle->status != Vehicle::Status::waitingToDepart) { continue; } @@ -1888,7 +1888,7 @@ static bool ride_station_can_depart_synchronised(const Ride& ride, StationIndex { continue; } - if (v->status != Vehicle::Status::WaitingToDepart && v->velocity != 0) + if (v->status != Vehicle::Status::waitingToDepart && v->velocity != 0) { // Here at least one vehicle on the ride is moving. return false; @@ -1926,12 +1926,12 @@ static bool ride_station_can_depart_synchronised(const Ride& ride, StationIndex { continue; } - if (otherVehicle->status != Vehicle::Status::Travelling) + if (otherVehicle->status != Vehicle::Status::travelling) { if (currentStation == otherVehicle->current_station) { - if (otherVehicle->status == Vehicle::Status::WaitingToDepart - || otherVehicle->status == Vehicle::Status::MovingToEndOfStation) + if (otherVehicle->status == Vehicle::Status::waitingToDepart + || otherVehicle->status == Vehicle::Status::movingToEndOfStation) { numTrainsAtStation++; } @@ -2154,7 +2154,7 @@ void Vehicle::UpdateTravellingBoatHireSetup() // No longer on a track so reset to 0 for import/export SetTrackDirection(0); SetTrackType(TrackElemType::Flat); - SetState(Vehicle::Status::TravellingBoat); + SetState(Vehicle::Status::travellingBoat); remaining_distance += 27924; UpdateTravellingBoat(); @@ -2457,7 +2457,7 @@ void Vehicle::FinishDeparting() currentStation.Depart |= waitingTime; } lost_time_out = 0; - SetState(Vehicle::Status::Travelling, 1); + SetState(Vehicle::Status::travelling, 1); if (velocity < 0) sub_state = 0; } @@ -2538,7 +2538,7 @@ void Vehicle::UpdateCollisionSetup() return; } - SetState(Vehicle::Status::Crashed, sub_state); + SetState(Vehicle::Status::crashed, sub_state); if (!(curRide->lifecycleFlags & RIDE_LIFECYCLE_CRASHED)) { @@ -2626,7 +2626,7 @@ void Vehicle::UpdateCrashSetup() SimulateCrash(); return; } - SetState(Vehicle::Status::Crashing, sub_state); + SetState(Vehicle::Status::crashing, sub_state); if (NumPeepsUntilTrainTail() != 0) { @@ -2752,7 +2752,7 @@ void Vehicle::UpdateTravelling() { if (sub_state <= 1) { - SetState(Vehicle::Status::Arriving, 1); + SetState(Vehicle::Status::arriving, 1); var_C0 = 0; return; } @@ -2862,7 +2862,7 @@ void Vehicle::UpdateTravelling() if (curRide->mode == RideMode::poweredLaunchPasstrough && velocity < 0) return; - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); current_station = _vehicleStationIndex; var_C0 = 0; if (velocity < 0) @@ -2987,7 +2987,7 @@ void Vehicle::UpdateArriving() ClearFlag(VehicleFlags::ReverseInclineCompletedLap); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::UnloadingPassengers); + SetState(Vehicle::Status::unloadingPassengers); return; default: { @@ -3018,7 +3018,7 @@ void Vehicle::UpdateArriving() if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_STATION && !stationBrakesWork) { - SetState(Vehicle::Status::Departing, 1); + SetState(Vehicle::Status::departing, 1); return; } @@ -3051,20 +3051,20 @@ void Vehicle::UpdateArriving() { if (NumLaps < curRide->numCircuits) { - SetState(Vehicle::Status::Departing, 1); + SetState(Vehicle::Status::departing, 1); return; } if (NumLaps == curRide->numCircuits && HasFlag(VehicleFlags::ReverseInclineCompletedLap)) { - SetState(Vehicle::Status::Departing, 1); + SetState(Vehicle::Status::departing, 1); return; } } if (curRide->numCircuits != 1 && NumLaps < curRide->numCircuits) { - SetState(Vehicle::Status::Departing, 1); + SetState(Vehicle::Status::departing, 1); return; } @@ -3073,20 +3073,20 @@ void Vehicle::UpdateArriving() OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::rideLaunch2, GetLocation()); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::Departing, 1); + SetState(Vehicle::Status::departing, 1); return; } if (curRide->mode == RideMode::race && curRide->lifecycleFlags & RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING) { - SetState(Vehicle::Status::Departing, 1); + SetState(Vehicle::Status::departing, 1); return; } ClearFlag(VehicleFlags::ReverseInclineCompletedLap); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::UnloadingPassengers); + SetState(Vehicle::Status::unloadingPassengers); } /** @@ -3147,7 +3147,7 @@ void Vehicle::UpdateUnloadingPassengers() { UpdateTestFinish(); } - SetState(Vehicle::Status::MovingToEndOfStation); + SetState(Vehicle::Status::movingToEndOfStation); return; } @@ -3188,7 +3188,7 @@ void Vehicle::UpdateUnloadingPassengers() { UpdateTestFinish(); } - SetState(Vehicle::Status::MovingToEndOfStation); + SetState(Vehicle::Status::movingToEndOfStation); } /** @@ -3205,10 +3205,10 @@ void Vehicle::UpdateWaitingForCableLift() if (cableLift == nullptr) return; - if (cableLift->status != Vehicle::Status::WaitingForPassengers) + if (cableLift->status != Vehicle::Status::waitingForPassengers) return; - cableLift->SetState(Vehicle::Status::WaitingToDepart, sub_state); + cableLift->SetState(Vehicle::Status::waitingToDepart, sub_state); cableLift->cable_lift_target = Id; } @@ -3272,7 +3272,7 @@ void Vehicle::UpdateTravellingCableLift() if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_11) { - SetState(Vehicle::Status::Travelling, 1); + SetState(Vehicle::Status::travelling, 1); lost_time_out = 0; return; } @@ -3331,7 +3331,7 @@ void Vehicle::TryReconnectBoatToTrack(const CoordsXY& currentBoatLocation, const } track_progress = 0; - SetState(Vehicle::Status::Travelling, sub_state); + SetState(Vehicle::Status::travelling, sub_state); _vehicleCurPosition.x = currentBoatLocation.x; _vehicleCurPosition.y = currentBoatLocation.y; } @@ -3792,7 +3792,7 @@ void Vehicle::UpdateSwinging() // swing has to be in slowing down phase if (sub_state == 0) { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; return; } @@ -3889,7 +3889,7 @@ void Vehicle::UpdateFerrisWheelRotating() if (subState != flatRideAnimationFrame) return; - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; } @@ -3915,7 +3915,7 @@ void Vehicle::UpdateSimulatorOperating() return; } - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; } @@ -3929,7 +3929,7 @@ void UpdateRotatingEnterprise(Vehicle& vehicle) { if (vehicle.sub_state == 2) { - vehicle.SetState(Vehicle::Status::Arriving); + vehicle.SetState(Vehicle::Status::arriving); vehicle.var_C0 = 0; return; } @@ -4007,7 +4007,7 @@ void Vehicle::UpdateRotating() { if (sub_state == 2) { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; return; } @@ -4042,7 +4042,7 @@ void Vehicle::UpdateSpaceRingsOperating() } else { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; } } @@ -4070,7 +4070,7 @@ void Vehicle::UpdateHauntedHouseOperating() if (current_time + 1 > 1500) { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; return; } @@ -4113,7 +4113,7 @@ void Vehicle::UpdateCrookedHouseOperating() // Originally used an array of size 1 at 0x009A0AC4 and passed the sub state into it. if (static_cast(current_time + 1) > 600) { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; return; } @@ -4149,7 +4149,7 @@ void Vehicle::UpdateTopSpinOperating() return; } - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; } @@ -4172,7 +4172,7 @@ void Vehicle::UpdateShowingFilm() } else { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; } } @@ -4193,7 +4193,7 @@ void Vehicle::UpdateDoingCircusShow() } else { - SetState(Vehicle::Status::Arriving); + SetState(Vehicle::Status::arriving); var_C0 = 0; } } @@ -4325,7 +4325,7 @@ void Vehicle::CrashOnLand() SimulateCrash(); return; } - SetState(Vehicle::Status::Crashed, sub_state); + SetState(Vehicle::Status::crashed, sub_state); #ifdef ENABLE_SCRIPTING InvokeVehicleCrashHook(Id, "land"); @@ -4393,7 +4393,7 @@ void Vehicle::CrashOnWater() SimulateCrash(); return; } - SetState(Vehicle::Status::Crashed, sub_state); + SetState(Vehicle::Status::crashed, sub_state); #ifdef ENABLE_SCRIPTING InvokeVehicleCrashHook(Id, "water"); @@ -5203,7 +5203,7 @@ void Vehicle::ApplyStopBlockBrake() void Vehicle::ApplyCableLiftBlockBrake(bool brakeClosed) { // If we are already on the cable lift, ignore the brake - if (status == Vehicle::Status::TravellingCableLift) + if (status == Vehicle::Status::travellingCableLift) return; // Slow down if travelling faster than 4mph @@ -5224,7 +5224,7 @@ void Vehicle::ApplyCableLiftBlockBrake(bool brakeClosed) velocity = 0; acceleration = 0; if (!brakeClosed) - SetState(Vehicle::Status::WaitingForCableLift, sub_state); + SetState(Vehicle::Status::waitingForCableLift, sub_state); else _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_BLOCK_BRAKE; } @@ -5829,7 +5829,7 @@ static void AnimateSteamLocomotive(Vehicle& vehicle, const CarEntry& carEntry) if (curRide != nullptr) { if (!RideHasStationShelter(*curRide) - || (vehicle.status != Vehicle::Status::MovingToEndOfStation && vehicle.status != Vehicle::Status::Arriving)) + || (vehicle.status != Vehicle::Status::movingToEndOfStation && vehicle.status != Vehicle::Status::arriving)) { CoordsXYZ steamOffset = ComputeSteamOffset( carEntry.SteamEffect.Vertical, carEntry.SteamEffect.Longitudinal, vehicle.pitch, vehicle.Orientation); @@ -6405,7 +6405,7 @@ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, EntityId* oth return false; } - if (collideVehicle->status == Vehicle::Status::TravellingBoat && sub_state == BoatHireSubState::EnteringReturnPosition) + if (collideVehicle->status == Vehicle::Status::travellingBoat && sub_state == BoatHireSubState::EnteringReturnPosition) { return false; } @@ -6419,7 +6419,7 @@ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, EntityId* oth return true; } - if (status == Vehicle::Status::MovingToEndOfStation) + if (status == Vehicle::Status::movingToEndOfStation) { if (Orientation == 0) { @@ -6451,8 +6451,8 @@ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, EntityId* oth } } - if (collideVehicle->status == Vehicle::Status::TravellingBoat && status != Vehicle::Status::Arriving - && status != Vehicle::Status::Travelling) + if (collideVehicle->status == Vehicle::Status::travellingBoat && status != Vehicle::Status::arriving + && status != Vehicle::Status::travelling) { return false; } @@ -8481,7 +8481,7 @@ void Vehicle::UpdateCrossings() const MapGetTrackElementAtOfTypeSeq(frontVehicle->TrackLocation, frontVehicle->GetTrackType(), 0) }; int32_t curZ = frontVehicle->TrackLocation.z; - if (xyElement.element != nullptr && status != Vehicle::Status::Arriving) + if (xyElement.element != nullptr && status != Vehicle::Status::arriving) { int16_t autoReserveAhead = 4 + abs(velocity) / 150000; int16_t crossingBonus = 0; @@ -8539,7 +8539,7 @@ void Vehicle::UpdateCrossings() const // Ensure trains near a station don't block possible crossings after the stop, // except when they are departing - if (xyElement.element->AsTrack()->IsStation() && status != Vehicle::Status::Departing) + if (xyElement.element->AsTrack()->IsStation() && status != Vehicle::Status::departing) { break; } @@ -8554,7 +8554,7 @@ void Vehicle::UpdateCrossings() const } // Ensure departing trains don't clear blocked crossings behind them that might already be blocked by another incoming train - uint8_t freeCount = travellingForwards && status != Vehicle::Status::Departing ? 3 : 1; + uint8_t freeCount = travellingForwards && status != Vehicle::Status::departing ? 3 : 1; while (freeCount-- > 0) { if (travellingForwards) diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 8369013be9aa..6ba4528ce102 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -68,37 +68,37 @@ struct Vehicle : EntityBase enum class Status : uint8_t { - MovingToEndOfStation, - WaitingForPassengers, - WaitingToDepart, - Departing, - Travelling, - Arriving, - UnloadingPassengers, - TravellingBoat, - Crashing, - Crashed, - TravellingDodgems, - Swinging, - Rotating, - FerrisWheelRotating, - SimulatorOperating, - ShowingFilm, - SpaceRingsOperating, - TopSpinOperating, - HauntedHouseOperating, - DoingCircusShow, - CrookedHouseOperating, - WaitingForCableLift, - TravellingCableLift, - Stopping, - WaitingForPassengers17, - WaitingToStart, - Starting, - Operating1A, - Stopping1B, - UnloadingPassengers1C, - StoppedByBlockBrakes + movingToEndOfStation, + waitingForPassengers, + waitingToDepart, + departing, + travelling, + arriving, + unloadingPassengers, + travellingBoat, + crashing, + crashed, + travellingDodgems, + swinging, + rotating, + ferrisWheelRotating, + simulatorOperating, + showingFilm, + spaceRingsOperating, + topSpinOperating, + hauntedHouseOperating, + doingCircusShow, + crookedHouseOperating, + waitingForCableLift, + travellingCableLift, + stopping, + waitingForPassengers17, + waitingToStart, + starting, + operating1A, + stopping1B, + unloadingPassengers1C, + stoppedByBlockBrakes, }; Type SubType; diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp index 0bae5e793d5b..521a2a2267bb 100644 --- a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp @@ -23,37 +23,37 @@ namespace OpenRCT2::Scripting { static const DukEnumMap VehicleStatusMap( { - { "moving_to_end_of_station", Vehicle::Status::MovingToEndOfStation }, - { "waiting_for_passengers", Vehicle::Status::WaitingForPassengers }, - { "waiting_to_depart", Vehicle::Status::WaitingToDepart }, - { "departing", Vehicle::Status::Departing }, - { "travelling", Vehicle::Status::Travelling }, - { "arriving", Vehicle::Status::Arriving }, - { "unloading_passengers", Vehicle::Status::UnloadingPassengers }, - { "travelling_boat", Vehicle::Status::TravellingBoat }, - { "crashing", Vehicle::Status::Crashing }, - { "crashed", Vehicle::Status::Crashed }, - { "travelling_dodgems", Vehicle::Status::TravellingDodgems }, - { "swinging", Vehicle::Status::Swinging }, - { "rotating", Vehicle::Status::Rotating }, - { "ferris_wheel_rotating", Vehicle::Status::FerrisWheelRotating }, - { "simulator_operating", Vehicle::Status::SimulatorOperating }, - { "showing_film", Vehicle::Status::ShowingFilm }, - { "space_rings_operating", Vehicle::Status::SpaceRingsOperating }, - { "top_spin_operating", Vehicle::Status::TopSpinOperating }, - { "haunted_house_operating", Vehicle::Status::HauntedHouseOperating }, - { "doing_circus_show", Vehicle::Status::DoingCircusShow }, - { "crooked_house_operating", Vehicle::Status::CrookedHouseOperating }, - { "waiting_for_cable_lift", Vehicle::Status::WaitingForCableLift }, - { "travelling_cable_lift", Vehicle::Status::TravellingCableLift }, - { "stopping", Vehicle::Status::Stopping }, - { "waiting_for_passengers_17", Vehicle::Status::WaitingForPassengers17 }, - { "waiting_to_start", Vehicle::Status::WaitingToStart }, - { "starting", Vehicle::Status::Starting }, - { "operating_1a", Vehicle::Status::Operating1A }, - { "stopping_1b", Vehicle::Status::Stopping1B }, - { "unloading_passengers_1c", Vehicle::Status::UnloadingPassengers1C }, - { "stopped_by_block_brake", Vehicle::Status::StoppedByBlockBrakes }, + { "moving_to_end_of_station", Vehicle::Status::movingToEndOfStation }, + { "waiting_for_passengers", Vehicle::Status::waitingForPassengers }, + { "waiting_to_depart", Vehicle::Status::waitingToDepart }, + { "departing", Vehicle::Status::departing }, + { "travelling", Vehicle::Status::travelling }, + { "arriving", Vehicle::Status::arriving }, + { "unloading_passengers", Vehicle::Status::unloadingPassengers }, + { "travelling_boat", Vehicle::Status::travellingBoat }, + { "crashing", Vehicle::Status::crashing }, + { "crashed", Vehicle::Status::crashed }, + { "travelling_dodgems", Vehicle::Status::travellingDodgems }, + { "swinging", Vehicle::Status::swinging }, + { "rotating", Vehicle::Status::rotating }, + { "ferris_wheel_rotating", Vehicle::Status::ferrisWheelRotating }, + { "simulator_operating", Vehicle::Status::simulatorOperating }, + { "showing_film", Vehicle::Status::showingFilm }, + { "space_rings_operating", Vehicle::Status::spaceRingsOperating }, + { "top_spin_operating", Vehicle::Status::topSpinOperating }, + { "haunted_house_operating", Vehicle::Status::hauntedHouseOperating }, + { "doing_circus_show", Vehicle::Status::doingCircusShow }, + { "crooked_house_operating", Vehicle::Status::crookedHouseOperating }, + { "waiting_for_cable_lift", Vehicle::Status::waitingForCableLift }, + { "travelling_cable_lift", Vehicle::Status::travellingCableLift }, + { "stopping", Vehicle::Status::stopping }, + { "waiting_for_passengers_17", Vehicle::Status::waitingForPassengers17 }, + { "waiting_to_start", Vehicle::Status::waitingToStart }, + { "starting", Vehicle::Status::starting }, + { "operating_1a", Vehicle::Status::operating1A }, + { "stopping_1b", Vehicle::Status::stopping1B }, + { "unloading_passengers_1c", Vehicle::Status::unloadingPassengers1C }, + { "stopped_by_block_brake", Vehicle::Status::stoppedByBlockBrakes }, }); ScVehicle::ScVehicle(EntityId id) From 5f81eb88299bb49c4efafc300cc48940bda94ba9 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 13:11:19 +0100 Subject: [PATCH 096/222] Rename members of GForces --- src/openrct2/ride/Ride.cpp | 12 +++++----- src/openrct2/ride/Vehicle.cpp | 38 +++++++++++++++--------------- src/openrct2/ride/Vehicle.h | 4 ++-- src/openrct2/scripting/Duktape.hpp | 4 ++-- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index e22279f90a79..02b7c035f80d 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -2059,17 +2059,17 @@ static void RideMeasurementUpdate(Ride& ride, RideMeasurement& measurement) if (measurement.flags & RIDE_MEASUREMENT_FLAG_G_FORCES) { auto gForces = vehicle->GetGForces(); - gForces.VerticalG = std::clamp(gForces.VerticalG / 8, -127, 127); - gForces.LateralG = std::clamp(gForces.LateralG / 8, -127, 127); + gForces.verticalG = std::clamp(gForces.verticalG / 8, -127, 127); + gForces.lateralG = std::clamp(gForces.lateralG / 8, -127, 127); if (currentTicks & 1) { - gForces.VerticalG = (gForces.VerticalG + measurement.vertical[measurement.current_item]) / 2; - gForces.LateralG = (gForces.LateralG + measurement.lateral[measurement.current_item]) / 2; + gForces.verticalG = (gForces.verticalG + measurement.vertical[measurement.current_item]) / 2; + gForces.lateralG = (gForces.lateralG + measurement.lateral[measurement.current_item]) / 2; } - measurement.vertical[measurement.current_item] = gForces.VerticalG & 0xFF; - measurement.lateral[measurement.current_item] = gForces.LateralG & 0xFF; + measurement.vertical[measurement.current_item] = gForces.verticalG & 0xFF; + measurement.lateral[measurement.current_item] = gForces.lateralG & 0xFF; } auto velocity = std::min(std::abs((vehicle->velocity * 5) >> 16), 255); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index f54daf324fcc..58ec4478c00b 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -580,26 +580,26 @@ void Vehicle::UpdateMeasurements() if (curRide->getRideTypeDescriptor().HasFlag(RtdFlag::hasGForces)) { auto gForces = GetGForces(); - gForces.VerticalG += curRide->previousVerticalG; - gForces.LateralG += curRide->previousLateralG; - gForces.VerticalG /= 2; - gForces.LateralG /= 2; + gForces.verticalG += curRide->previousVerticalG; + gForces.lateralG += curRide->previousLateralG; + gForces.verticalG /= 2; + gForces.lateralG /= 2; - curRide->previousVerticalG = gForces.VerticalG; - curRide->previousLateralG = gForces.LateralG; - if (gForces.VerticalG <= 0) + curRide->previousVerticalG = gForces.verticalG; + curRide->previousLateralG = gForces.lateralG; + if (gForces.verticalG <= 0) { curRide->totalAirTime++; } - if (gForces.VerticalG > curRide->maxPositiveVerticalG) - curRide->maxPositiveVerticalG = gForces.VerticalG; + if (gForces.verticalG > curRide->maxPositiveVerticalG) + curRide->maxPositiveVerticalG = gForces.verticalG; - if (gForces.VerticalG < curRide->maxNegativeVerticalG) - curRide->maxNegativeVerticalG = gForces.VerticalG; + if (gForces.verticalG < curRide->maxNegativeVerticalG) + curRide->maxNegativeVerticalG = gForces.verticalG; - gForces.LateralG = std::abs(gForces.LateralG); - curRide->maxLateralG = std::max(curRide->maxLateralG, static_cast(gForces.LateralG)); + gForces.lateralG = std::abs(gForces.lateralG); + curRide->maxLateralG = std::max(curRide->maxLateralG, static_cast(gForces.lateralG)); } } @@ -5102,17 +5102,17 @@ void Vehicle::UpdateTrackMotionUpStopCheck() const if (!IsOnCoveredTrack()) { auto gForces = GetGForces(); - gForces.LateralG = std::abs(gForces.LateralG); - if (gForces.LateralG <= 150) + gForces.lateralG = std::abs(gForces.lateralG); + if (gForces.lateralG <= 150) { if (Geometry::getAccelerationFromPitch(pitch) < 0) { - if (gForces.VerticalG > -40) + if (gForces.verticalG > -40) { return; } } - else if (gForces.VerticalG > -80) + else if (gForces.verticalG > -80) { return; } @@ -5133,14 +5133,14 @@ void Vehicle::UpdateTrackMotionUpStopCheck() const if (Geometry::getAccelerationFromPitch(pitch) < 0) { - if (gForces.VerticalG > -45) + if (gForces.verticalG > -45) { return; } } else { - if (gForces.VerticalG > -80) + if (gForces.verticalG > -80) { return; } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 6ba4528ce102..6cc6e3bd3135 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -29,8 +29,8 @@ struct PaintSession; struct GForces { - int32_t VerticalG{}; - int32_t LateralG{}; + int32_t verticalG{}; + int32_t lateralG{}; }; // Size: 0x09 diff --git a/src/openrct2/scripting/Duktape.hpp b/src/openrct2/scripting/Duktape.hpp index ed3a8903d465..3dadf3eeba7e 100644 --- a/src/openrct2/scripting/Duktape.hpp +++ b/src/openrct2/scripting/Duktape.hpp @@ -442,8 +442,8 @@ namespace OpenRCT2::Scripting inline DukValue ToDuk(duk_context* ctx, const GForces& value) { DukObject dukGForces(ctx); - dukGForces.Set("lateralG", value.LateralG); - dukGForces.Set("verticalG", value.VerticalG); + dukGForces.Set("lateralG", value.lateralG); + dukGForces.Set("verticalG", value.verticalG); return dukGForces.Take(); } From d77057c2d5f3d8b3b314594d8c423010089090b0 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 13:19:53 +0100 Subject: [PATCH 097/222] Rename members of VehicleInfo --- src/openrct2/ride/CableLift.cpp | 4 ++-- src/openrct2/ride/Vehicle.cpp | 12 ++++++------ src/openrct2/ride/Vehicle.h | 6 +++--- .../scripting/bindings/ride/ScTrackSegment.h | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index d7037c04feba..c7b70d7d8e9a 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -281,7 +281,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() remaining_distance -= Geometry::getTranslationDistance(nextVehiclePosition - _vehicleCurPosition, false); _vehicleCurPosition = nextVehiclePosition; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; @@ -341,7 +341,7 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() remaining_distance += Geometry::getTranslationDistance(nextVehiclePosition - _vehicleCurPosition, false); _vehicleCurPosition = nextVehiclePosition; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 58ec4478c00b..c736f773cf99 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -281,12 +281,12 @@ void Vehicle::UpdateTrackChange() return; const auto moveInfo = GetMoveInfo(); - if (moveInfo == nullptr || moveInfo->IsInvalid()) + if (moveInfo == nullptr || moveInfo->isInvalid()) return; _vehicleCurPosition = TrackLocation + CoordsXYZ{ moveInfo->x, moveInfo->y, moveInfo->z + GetRideTypeDescriptor((*curRide).type).Heights.VehicleZOffset }; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; MoveTo(_vehicleCurPosition); @@ -6985,7 +6985,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu } _vehicleCurPosition = nextVehiclePosition; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; @@ -7283,7 +7283,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c remaining_distance += Geometry::getTranslationDistance(nextVehiclePosition - _vehicleCurPosition, false); _vehicleCurPosition = nextVehiclePosition; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; @@ -7713,7 +7713,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c } _vehicleCurPosition = trackPos; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; @@ -7803,7 +7803,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c } _vehicleCurPosition = trackPos; - Orientation = moveInfo->direction; + Orientation = moveInfo->yaw; roll = moveInfo->roll; pitch = moveInfo->pitch; diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 6cc6e3bd3135..ba55a273db79 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -39,13 +39,13 @@ struct VehicleInfo int16_t x; // 0x00 int16_t y; // 0x02 int16_t z; // 0x04 - uint8_t direction; // 0x06 + uint8_t yaw; // 0x06 VehiclePitch pitch; // 0x07 VehicleRoll roll; // 0x08 - bool IsInvalid() const + bool isInvalid() const { - return x == 0 && y == 0 && z == 0 && direction == 0 && pitch == VehiclePitch::flat && roll == VehicleRoll::unbanked; + return x == 0 && y == 0 && z == 0 && yaw == 0 && pitch == VehiclePitch::flat && roll == VehicleRoll::unbanked; } }; diff --git a/src/openrct2/scripting/bindings/ride/ScTrackSegment.h b/src/openrct2/scripting/bindings/ride/ScTrackSegment.h index a87e6317a356..17cac87efcaf 100644 --- a/src/openrct2/scripting/bindings/ride/ScTrackSegment.h +++ b/src/openrct2/scripting/bindings/ride/ScTrackSegment.h @@ -25,7 +25,7 @@ namespace OpenRCT2::Scripting dukSubposition.Set("x", value.x); dukSubposition.Set("y", value.y); dukSubposition.Set("z", value.z); - dukSubposition.Set("yaw", value.direction); + dukSubposition.Set("yaw", value.yaw); dukSubposition.Set("pitch", EnumValue(value.pitch)); dukSubposition.Set("roll", EnumValue(value.roll)); return dukSubposition.Take(); From 1e3471b5d9fb8a117615b26a283d0dd083cfc278 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 13:20:36 +0100 Subject: [PATCH 098/222] Rename VehicleTrackDirectionMask and VehicleTrackTypeMask --- src/openrct2/ride/Vehicle.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index ba55a273db79..f23ec271b5c5 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -51,8 +51,8 @@ struct VehicleInfo struct SoundIdVolume; -constexpr uint16_t VehicleTrackDirectionMask = 0b0000000000000011; -constexpr uint16_t VehicleTrackTypeMask = 0b1111111111111100; +static constexpr uint16_t kVehicleTrackDirectionMask = 0b0000000000000011; +static constexpr uint16_t kVehicleTrackTypeMask = 0b1111111111111100; enum class MiniGolfAnimation : uint8_t; @@ -253,19 +253,19 @@ struct Vehicle : EntityBase bool IsOnCoveredTrack() const; uint8_t GetTrackDirection() const { - return TrackTypeAndDirection & VehicleTrackDirectionMask; + return TrackTypeAndDirection & kVehicleTrackDirectionMask; } void SetTrackType(OpenRCT2::TrackElemType trackType) { // set the upper 14 bits to 0, then set track type - TrackTypeAndDirection &= ~VehicleTrackTypeMask; + TrackTypeAndDirection &= ~kVehicleTrackTypeMask; TrackTypeAndDirection |= EnumValue(trackType) << 2; } void SetTrackDirection(uint8_t trackDirection) { // set the lower 2 bits only - TrackTypeAndDirection &= ~VehicleTrackDirectionMask; - TrackTypeAndDirection |= trackDirection & VehicleTrackDirectionMask; + TrackTypeAndDirection &= ~kVehicleTrackDirectionMask; + TrackTypeAndDirection |= trackDirection & kVehicleTrackDirectionMask; } bool HasFlag(uint32_t flag) const { From 8f7833f1b9693d9a9d2e7075e31ead231e2a96a6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 13:22:33 +0100 Subject: [PATCH 099/222] Rename members of Vehicle::Type --- src/openrct2/ride/CableLift.cpp | 2 +- src/openrct2/ride/Ride.cpp | 4 ++-- src/openrct2/ride/Vehicle.h | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index c7b70d7d8e9a..b0fe1b0cdc79 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -36,7 +36,7 @@ Vehicle* CableLiftSegmentCreate( { ride.cableLift = current->Id; } - current->SubType = head ? Vehicle::Type::Head : Vehicle::Type::Tail; + current->SubType = head ? Vehicle::Type::head : Vehicle::Type::tail; current->var_44 = var_44; current->remaining_distance = remaining_distance; current->SpriteData.Width = 10; diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 02b7c035f80d..a231c74ec3e0 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -3273,7 +3273,7 @@ static Vehicle* VehicleCreateCar( vehicle->ride_subtype = ride.subtype; vehicle->vehicle_type = carEntryIndex; - vehicle->SubType = carIndex == 0 ? Vehicle::Type::Head : Vehicle::Type::Tail; + vehicle->SubType = carIndex == 0 ? Vehicle::Type::head : Vehicle::Type::tail; vehicle->var_44 = Numerics::ror32(carEntry.spacing, 10) & 0xFFFF; const auto halfSpacing = carEntry.spacing >> 1; @@ -3445,7 +3445,7 @@ static Vehicle* VehicleCreateCar( if (ride.hasLifecycleFlag(RIDE_LIFECYCLE_REVERSED_TRAINS)) { - vehicle->SubType = carIndex == (ride.numCarsPerTrain - 1) ? Vehicle::Type::Head : Vehicle::Type::Tail; + vehicle->SubType = carIndex == (ride.numCarsPerTrain - 1) ? Vehicle::Type::head : Vehicle::Type::tail; vehicle->SetFlag(VehicleFlags::CarIsReversed); } } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index f23ec271b5c5..9cad6626239a 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -62,8 +62,8 @@ struct Vehicle : EntityBase enum class Type : uint8_t { - Head, - Tail, + head, + tail, }; enum class Status : uint8_t @@ -219,7 +219,7 @@ struct Vehicle : EntityBase constexpr bool IsHead() const { - return SubType == Vehicle::Type::Head; + return SubType == Vehicle::Type::head; } void Update(); Vehicle* GetHead(); From 5449dd6f7de1996bbd91c470b3bdc63a26a18e1d Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:43:17 +0100 Subject: [PATCH 100/222] Add files created during testing to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 4117e0515026..401b32947035 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,8 @@ data/tracks.dat data/sequence data/object data/assetpack +test/tests/testdata/replays +test/tests/testdata/sprites/result.dat ################# ## Eclipse From 9daf2b5479b3835ca1f4c42efe1d1c3da63bc739 Mon Sep 17 00:00:00 2001 From: Robert Gooding Date: Fri, 12 Dec 2025 09:02:05 -0500 Subject: [PATCH 101/222] Categorise toilet income as shop sales instead of ride tickets Co-authored-by: Gymnasiast --- distribution/changelog.txt | 1 + src/openrct2/entity/Peep.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 035c98fd0dce..ebf90ca58e23 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -6,6 +6,7 @@ - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. - Improved: [#25621] Added the Polish Złoty (PLN) to the list of available currencies. - Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. +- Change: [#21912] Toilet income is now categorised as shop sales instead of ride tickets. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#22484] Lingering ghost entrance after placing park entrance. diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 787e7a63f972..bfbb1a121b2e 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -2292,7 +2292,7 @@ static bool PeepInteractWithShop(Peep* peep, const CoordsXYE& coords) { ride->totalProfit = AddClamp(ride->totalProfit, cost); ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; - guest->SpendMoney(cost, ExpenditureType::parkRideTickets); + guest->SpendMoney(cost, ExpenditureType::shopSales); } auto coordsCentre = coords.ToTileCentre(); From 96bc804fa811b62daecf8ef489d35a252d9b93c0 Mon Sep 17 00:00:00 2001 From: lizzie-a Date: Fri, 12 Dec 2025 10:00:21 -0500 Subject: [PATCH 102/222] Fix cramped MacOS default window settings --- distribution/changelog.txt | 1 + src/openrct2-ui/UiContext.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index ebf90ca58e23..08cad2544368 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -8,6 +8,7 @@ - Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. - Change: [#21912] Toilet income is now categorised as shop sales instead of ride tickets. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. +- Change: [#25544] The default game window size is now 1280×720px instead of 640×480px. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index 329845ae29a4..e187ae82efb1 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -800,10 +800,12 @@ class UiContext final : public IUiContext int32_t width = Config::Get().general.windowWidth; int32_t height = Config::Get().general.windowHeight; #endif + + // Set defaults if size is invalid if (width <= 0) - width = 640; + width = 1280; if (height <= 0) - height = 480; + height = 720; // Create window in window first rather than fullscreen so we have the display the window is on first uint32_t flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI; From 5a547fc2bba8f0851cb8fbd01c349f67bedd855a Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Fri, 12 Dec 2025 18:26:05 +0100 Subject: [PATCH 103/222] Fix return value of Widget::height() --- src/openrct2-ui/input/MouseInput.cpp | 8 +-- src/openrct2-ui/interface/LandTool.cpp | 6 +- src/openrct2-ui/interface/Widget.cpp | 17 ++--- src/openrct2-ui/interface/Window.cpp | 2 +- src/openrct2-ui/scripting/CustomWindow.cpp | 10 +-- src/openrct2-ui/scripting/ScWidget.hpp | 2 +- src/openrct2-ui/windows/AssetPacks.cpp | 4 +- src/openrct2-ui/windows/Banner.cpp | 4 +- src/openrct2-ui/windows/Cheats.cpp | 4 +- src/openrct2-ui/windows/CustomCurrency.cpp | 4 +- src/openrct2-ui/windows/Dropdown.cpp | 2 +- .../windows/EditorInventionsList.cpp | 2 +- .../windows/EditorObjectSelection.cpp | 4 +- .../windows/EditorScenarioOptions.cpp | 12 ++-- src/openrct2-ui/windows/Footpath.cpp | 8 +-- src/openrct2-ui/windows/Guest.cpp | 10 +-- src/openrct2-ui/windows/GuestList.cpp | 4 +- src/openrct2-ui/windows/LoadSave.cpp | 2 +- src/openrct2-ui/windows/Map.cpp | 4 +- src/openrct2-ui/windows/MapGen.cpp | 2 +- src/openrct2-ui/windows/Multiplayer.cpp | 4 +- src/openrct2-ui/windows/NewCampaign.cpp | 7 +- src/openrct2-ui/windows/News.cpp | 6 +- src/openrct2-ui/windows/Options.cpp | 8 +-- src/openrct2-ui/windows/Park.cpp | 4 +- src/openrct2-ui/windows/Player.cpp | 6 +- src/openrct2-ui/windows/Research.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 72 +++++++++---------- src/openrct2-ui/windows/RideConstruction.cpp | 6 +- src/openrct2-ui/windows/RideList.cpp | 6 +- src/openrct2-ui/windows/Scenery.cpp | 4 +- src/openrct2-ui/windows/Sign.cpp | 4 +- src/openrct2-ui/windows/Staff.cpp | 12 ++-- src/openrct2-ui/windows/Themes.cpp | 2 +- src/openrct2-ui/windows/TileInspector.cpp | 4 +- src/openrct2-ui/windows/TitleMenu.cpp | 4 +- src/openrct2-ui/windows/TopToolbar.cpp | 14 ++-- src/openrct2-ui/windows/Viewport.cpp | 2 +- src/openrct2/interface/Widget.h | 18 +++-- src/openrct2/interface/WindowBase.cpp | 4 +- 40 files changed, 155 insertions(+), 145 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 712c66d1b083..095108769d9f 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -220,7 +220,7 @@ namespace OpenRCT2 if (scroll.flags & VSCROLLBAR_VISIBLE) { - int16_t size = widget.height() - 1; + int16_t size = widget.height() - 2; if (scroll.flags & HSCROLLBAR_VISIBLE) size -= 11; size = std::max(0, scroll.contentHeight - size); @@ -834,7 +834,7 @@ namespace OpenRCT2 int32_t newTop; newTop = scroll.contentHeight; newTop *= y; - y = widget.height() - 21; + y = widget.height() - 22; if (scroll.flags & HSCROLLBAR_VISIBLE) y -= kScrollBarWidth + 1; newTop /= y; @@ -844,7 +844,7 @@ namespace OpenRCT2 newTop += y; if (newTop < 0) newTop = 0; - y = widget.height() - 1; + y = widget.height() - 2; if (scroll.flags & HSCROLLBAR_VISIBLE) y -= kScrollBarWidth + 1; y *= -1; @@ -937,7 +937,7 @@ namespace OpenRCT2 auto& scroll = w.scrolls[scroll_id]; scroll.flags |= VSCROLLBAR_DOWN_PRESSED; scroll.contentOffsetY += 3; - int32_t newTop = widget.height() - 1; + int32_t newTop = widget.height() - 2; if (scroll.flags & HSCROLLBAR_VISIBLE) newTop -= kScrollBarWidth + 1; newTop *= -1; diff --git a/src/openrct2-ui/interface/LandTool.cpp b/src/openrct2-ui/interface/LandTool.cpp index 4727a58015c1..4168449551ef 100644 --- a/src/openrct2-ui/interface/LandTool.cpp +++ b/src/openrct2-ui/interface/LandTool.cpp @@ -78,8 +78,8 @@ void LandTool::ShowSurfaceStyleDropdown(WindowBase* w, Widget* widget, ObjectEnt uint32_t surfaceCount = itemIndex; WindowDropdownShowImage( - w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height(), w->colours[2], 0, surfaceCount, 47, 36, - DropdownGetAppropriateImageDropdownItemsPerRow(surfaceCount)); + w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() - 1, w->colours[2], 0, surfaceCount, 47, + 36, DropdownGetAppropriateImageDropdownItemsPerRow(surfaceCount)); gDropdown.hasTooltips = true; gDropdown.defaultIndex = defaultIndex; @@ -129,7 +129,7 @@ void LandTool::ShowEdgeStyleDropdown(WindowBase* w, Widget* widget, ObjectEntryI auto itemsPerRow = DropdownGetAppropriateImageDropdownItemsPerRow(edgeCount); WindowDropdownShowImage( - w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height(), w->colours[2], 0, edgeCount, 47, 36, + w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() - 1, w->colours[2], 0, edgeCount, 47, 36, itemsPerRow); gDropdown.hasTooltips = true; diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index b434001f4b3a..919cb5ddde9e 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -622,12 +622,13 @@ namespace OpenRCT2::Ui if (widget.string == nullptr) return; - topLeft = w.windowPos + ScreenCoordsXY{ widget.midX() - 1, std::max(widget.top, widget.midY() - 5) }; + const auto closeButtonTextOffset = Config::Get().interface.enlargedUi ? 5 : 6; + auto crossMidPoint = w.windowPos + ScreenCoordsXY{ widget.midX() - 1, widget.midY() - closeButtonTextOffset }; if (widgetIsDisabled(w, widgetIndex)) colour.flags.set(ColourFlag::inset, true); - DrawText(rt, topLeft, { colour, TextAlignment::centre }, widget.string); + DrawText(rt, crossMidPoint, { colour, TextAlignment::centre }, widget.string); } /** @@ -709,7 +710,7 @@ namespace OpenRCT2::Ui bottomRight.y--; bool hScrollNeeded = scroll.contentWidth > (widget.width() - 1) && (scroll.flags & HSCROLLBAR_VISIBLE); - bool vScrollNeeded = scroll.contentHeight > widget.height() && (scroll.flags & VSCROLLBAR_VISIBLE); + bool vScrollNeeded = scroll.contentHeight > widget.height() - 1 && (scroll.flags & VSCROLLBAR_VISIBLE); // Horizontal scrollbar if (hScrollNeeded) @@ -1020,7 +1021,7 @@ namespace OpenRCT2::Ui } } else if ( - (scroll.flags & VSCROLLBAR_VISIBLE) && scroll.contentHeight > widget->height() + (scroll.flags & VSCROLLBAR_VISIBLE) && scroll.contentHeight > widget->height() - 1 && (screenCoords.x >= w.windowPos.x + widget->right - (kScrollBarWidth + 1))) { // vertical scrollbar @@ -1208,7 +1209,7 @@ namespace OpenRCT2::Ui if (OpenRCT2::Ui::Windows::TextBoxCaretIsFlashed()) { auto colour = ColourMapA[w.colours[1].colour].mid_light; - auto y = topLeft.y + 1 + widget.height() - 4; + auto y = topLeft.y + 1 + widget.height() - 5; Rectangle::fill(rt, { { curX, y }, { curX + width, y } }, colour + 5); } } @@ -1241,7 +1242,7 @@ namespace OpenRCT2::Ui if (fillSize > 0) { Rectangle::fillInset( - rt, { topLeft + ScreenCoordsXY{ 1, 1 }, topLeft + ScreenCoordsXY{ fillSize + 1, widget.height() - 1 } }, + rt, { topLeft + ScreenCoordsXY{ 1, 1 }, topLeft + ScreenCoordsXY{ fillSize + 1, widget.height() - 2 } }, { widget.colour }); } } @@ -1312,7 +1313,7 @@ namespace OpenRCT2::Ui if (scroll.flags & VSCROLLBAR_VISIBLE) { - int32_t view_size = widget.height() - 21; + int32_t view_size = widget.height() - 22; if (scroll.flags & HSCROLLBAR_VISIBLE) view_size -= 11; int32_t y = scroll.contentOffsetY * view_size; @@ -1320,7 +1321,7 @@ namespace OpenRCT2::Ui y /= scroll.contentHeight; scroll.vThumbTop = y + 11; - y = widget.height() - 2; + y = widget.height() - 3; if (scroll.flags & HSCROLLBAR_VISIBLE) y -= 11; y += scroll.contentOffsetY; diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index a7c1d773299f..2d98febf04a5 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -94,7 +94,7 @@ namespace OpenRCT2::Ui if (scroll.flags & VSCROLLBAR_VISIBLE) { - int32_t size = widget->height() - 1; + int32_t size = widget->height() - 2; if (scroll.flags & HSCROLLBAR_VISIBLE) size -= 11; size = std::max(0, scroll.contentHeight - size); diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index 7b48af5fc740..4b98178e8901 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -520,7 +520,7 @@ namespace OpenRCT2::Ui::Windows { auto& listView = _info.ListViews[scrollIndex]; auto wwidth = widget.width() - 2; - auto wheight = widget.height() + 1 - 2; + auto wheight = widget.height() - 2; if (listView.GetScrollbars() == ScrollbarType::Horizontal || listView.GetScrollbars() == ScrollbarType::Both) { @@ -562,7 +562,7 @@ namespace OpenRCT2::Ui::Windows RenderTarget widgetDpi; if (ClipDrawPixelInfo( widgetDpi, rt, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width() - 1, - widget.height())) + widget.height() - 1)) { auto ctx = onDraw.context(); auto dukWidget = ScWidget::ToDukValue(ctx, this, widgetIndex); @@ -653,8 +653,8 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[i] = Dropdown::MenuLabel(items[i].c_str()); } WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, - colours[widget->colour], 0, Dropdown::Flag::StayOpen, numItems, widget->width() - 4); + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[widget->colour], 0, + Dropdown::Flag::StayOpen, numItems, widget->width() - 4); if (selectedIndex >= 0 && selectedIndex < static_cast(numItems)) gDropdown.items[selectedIndex].setChecked(true); @@ -810,7 +810,7 @@ namespace OpenRCT2::Ui::Windows auto left = windowPos.x + viewportWidget->left + 1; auto top = windowPos.y + viewportWidget->top + 1; auto wwidth = viewportWidget->width() - 2; - auto wheight = viewportWidget->height() - 1; + auto wheight = viewportWidget->height() - 2; if (viewport == nullptr) { ViewportCreate(*this, { left, top }, wwidth, wheight, Focus(CoordsXYZ(0, 0, 0))); diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index 7f3ce90aa532..9023774701be 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -250,7 +250,7 @@ namespace OpenRCT2::Scripting auto widget = GetWidget(); if (widget != nullptr) { - return widget->height() + 1; + return widget->height(); } return 0; } diff --git a/src/openrct2-ui/windows/AssetPacks.cpp b/src/openrct2-ui/windows/AssetPacks.cpp index a56f342c5a28..c47ddef77949 100644 --- a/src/openrct2-ui/windows/AssetPacks.cpp +++ b/src/openrct2-ui/windows/AssetPacks.cpp @@ -155,7 +155,7 @@ namespace OpenRCT2::Ui::Windows { auto& list = widgets[WIDX_LIST]; list.left = 6; - list.top = widgets[WIDX_TITLE].height() + 8 + 11 + 3; + list.top = widgets[WIDX_TITLE].height() - 1 + 8 + 11 + 3; list.right = width - 2 - 24 - 1; list.bottom = height - 6 - 11 - 3; @@ -168,7 +168,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_LOW_LABEL].left = list.left; widgets[WIDX_LOW_LABEL].right = list.right; - auto toolstripY = widgets[WIDX_TITLE].height() + 8; + auto toolstripY = widgets[WIDX_TITLE].height() - 1 + 8; auto toolstripRight = width - 2; auto toolstripLeft = toolstripRight - 24; for (WidgetIndex i = WIDX_MOVE_UP; i <= WIDX_APPLY; i++) diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index 649a7e864719..0d826b6cb450 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -88,7 +88,7 @@ namespace OpenRCT2::Ui::Windows const auto& viewportWidget = widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget.left + 1, viewportWidget.top + 1 }, - viewportWidget.width() - 2, (viewportWidget.height()) - 1, Focus(_bannerViewPos)); + viewportWidget.width() - 2, viewportWidget.height() - 2, Focus(_bannerViewPos)); if (viewport != nullptr) viewport->flags = Config::Get().general.alwaysShowGridlines ? VIEWPORT_FLAG_GRIDLINES : VIEWPORT_FLAG_NONE; @@ -176,7 +176,7 @@ namespace OpenRCT2::Ui::Windows widget--; WindowDropdownShowTextCustomWidth( - { widget->left + windowPos.x, widget->top + windowPos.y }, widget->height() + 1, colours[1], 0, + { widget->left + windowPos.x, widget->top + windowPos.y }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, numItems, widget->width() - 1 + 3); gDropdown.items[EnumValue(banner->textColour) - 1].setChecked(true); diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index b99cbdecab7a..80ac97b98568 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -994,7 +994,7 @@ static StringId window_cheats_page_titles[] = { } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 3, dropdownWidget->width() - 4); gDropdown.items[EnumValue(gameState.cheats.selectedStaffSpeed)].setChecked(true); } @@ -1016,7 +1016,7 @@ static StringId window_cheats_page_titles[] = { gDropdown.items[i] = Dropdown::MenuLabel(WeatherTypes[i]); } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, std::size(WeatherTypes), dropdownWidget->width() - 4); auto currentWeather = gameState.weatherCurrent.weatherType; diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index e4e5e397b50a..8c7feb0e27fa 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -91,7 +91,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[1] = Dropdown::MenuLabel(STR_SUFFIX); WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 2, widget->width() - 4); if (CurrencyDescriptors[EnumValue(CurrencyType::custom)].affix_unicode == CurrencyAffix::prefix) @@ -194,7 +194,7 @@ namespace OpenRCT2::Ui::Windows drawWidgets(rt); - auto screenCoords = windowPos + ScreenCoordsXY{ 10, 18 + widgets[WIDX_TITLE].height() }; + auto screenCoords = windowPos + ScreenCoordsXY{ 10, 18 + widgets[WIDX_TITLE].height() - 1 }; DrawTextBasic(rt, screenCoords, STR_RATE, {}, { colours[1] }); diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index 2227a1d8182a..77eeaa9d4b1a 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -640,7 +640,7 @@ namespace OpenRCT2::Ui::Windows // Show dropdown auto squareSize = DropdownWindow::GetDefaultRowHeight(); WindowDropdownShowImage( - w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height() + 1, dropdownColour, + w->windowPos.x + widget->left, w->windowPos.y + widget->top, widget->height(), dropdownColour, Dropdown::Flag::StayOpen, numColours, squareSize, squareSize, DropdownGetAppropriateImageDropdownItemsPerRow(static_cast(numColours))); diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 4d7f8615bd55..cf53d75afde5 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -403,7 +403,7 @@ namespace OpenRCT2::Ui::Windows RenderTarget clipDPI; screenPos = windowPos + ScreenCoordsXY{ bkWidget.left + 1, bkWidget.top + 1 }; const auto clipWidth = bkWidget.width() - 2; - const auto clipHeight = bkWidget.height() - 1; + const auto clipHeight = bkWidget.height() - 2; if (ClipDrawPixelInfo(clipDPI, rt, screenPos, clipWidth, clipHeight)) { object->DrawPreview(clipDPI, clipWidth, clipHeight); diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 0a41de0b54a1..1818b1cb8a0f 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -533,7 +533,7 @@ namespace OpenRCT2::Ui::Windows auto& ddWidget = widgets[WIDX_FILTER_DROPDOWN]; WindowDropdownShowText( - { windowPos.x + ddWidget.left, windowPos.y + ddWidget.top }, ddWidget.height() + 1, + { windowPos.x + ddWidget.left, windowPos.y + ddWidget.top }, ddWidget.height(), colours[ddWidget.colour], Dropdown::Flag::StayOpen, _numSourceGameItems + numSelectionItems); for (int32_t i = 0; i < _numSourceGameItems; i++) @@ -1112,7 +1112,7 @@ namespace OpenRCT2::Ui::Windows RenderTarget clipDPI; auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 }; int32_t previewWidth = previewWidget.width() - 2; - int32_t previewHeight = previewWidget.height() - 1; + int32_t previewHeight = previewWidget.height() - 2; if (ClipDrawPixelInfo(clipDPI, rt, screenPos, previewWidth, previewHeight)) { _loadedObject->DrawPreview(clipDPI, previewWidth, previewHeight); diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index d4ef6a34a219..3605a31d2f57 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -766,8 +766,8 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = &widgets[WIDX_OBJECTIVE]; WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 4); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 4); } void ShowCategoryDropdown() @@ -779,8 +779,8 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = &widgets[WIDX_CATEGORY]; WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, 5, dropdownWidget->width() - 4); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, 5, dropdownWidget->width() - 4); gDropdown.items[EnumValue(getGameState().scenarioOptions.category)].setChecked(true); } @@ -1561,7 +1561,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[2] = Dropdown::MenuLabel(STR_PAID_ENTRY_PAID_RIDES); WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() - 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() - 2, colours[1], 0, Dropdown::Flag::StayOpen, 3, dropdownWidget->width() - 4); if (gameState.park.flags & PARK_FLAGS_UNLOCK_ALL_PRICES) @@ -1899,7 +1899,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[3] = Dropdown::MenuLabel(STR_GUESTS_PREFER_INTENSITY_MORE_INTENSE_RIDES); WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget.left, windowPos.y + dropdownWidget.top }, dropdownWidget.height() - 1, + { windowPos.x + dropdownWidget.left, windowPos.y + dropdownWidget.top }, dropdownWidget.height() - 2, colours[1], 0, Dropdown::Flag::StayOpen, 4, dropdownWidget.width() - 4); const auto preferLess = gameState.park.flags & PARK_FLAGS_PREF_LESS_INTENSE_RIDES; diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index ea9b2e20a0e9..30c087d756fa 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -805,8 +805,8 @@ namespace OpenRCT2::Ui::Windows auto itemsPerRow = DropdownGetAppropriateImageDropdownItemsPerRow(numPathTypes); WindowDropdownShowImage( - windowPos.x + widget->left, windowPos.y + widget->top, widget->height() + 1, colours[1], 0, numPathTypes, 47, - 36, itemsPerRow); + windowPos.x + widget->left, windowPos.y + widget->top, widget->height(), colours[1], 0, numPathTypes, 47, 36, + itemsPerRow); gDropdown.hasTooltips = true; @@ -841,8 +841,8 @@ namespace OpenRCT2::Ui::Windows auto itemsPerRow = DropdownGetAppropriateImageDropdownItemsPerRow(numRailingsTypes); WindowDropdownShowImage( - windowPos.x + widget->left, windowPos.y + widget->top, widget->height() + 1, colours[1], 0, numRailingsTypes, - 47, 36, itemsPerRow); + windowPos.x + widget->left, windowPos.y + widget->top, widget->height(), colours[1], 0, numRailingsTypes, 47, + 36, itemsPerRow); gDropdown.hasTooltips = true; diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 4639fa9788f8..759ad93113a0 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -550,7 +550,7 @@ namespace OpenRCT2::Ui::Windows const auto& widget = widgets[WIDX_TAB_1]; int32_t widgWidth = widget.width() - 2; - int32_t widgHeight = widget.height() - 1; + int32_t widgHeight = widget.height() - 2; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }; if (page == WINDOW_GUEST_OVERVIEW) widgHeight++; @@ -625,7 +625,7 @@ namespace OpenRCT2::Ui::Windows { const auto& widget = widgets[WIDX_VIEWPORT]; const auto reqViewportWidth = widget.width() - 2; - const auto reqViewportHeight = widget.height() - 1; + const auto reqViewportHeight = widget.height() - 2; viewport->pos = windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }; if (viewport->width != reqViewportWidth || viewport->height != reqViewportHeight) { @@ -728,7 +728,7 @@ namespace OpenRCT2::Ui::Windows }; WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[1], 0, dropdownItems); + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[1], 0, dropdownItems); gDropdown.defaultIndex = 0; } @@ -767,7 +767,7 @@ namespace OpenRCT2::Ui::Windows const auto& viewWidget = widgets[WIDX_VIEWPORT]; auto screenPos = ScreenCoordsXY{ viewWidget.left + 1 + windowPos.x, viewWidget.top + 1 + windowPos.y }; int32_t widgWidth = viewWidget.width() - 2; - int32_t widgHeight = viewWidget.height() - 1; + int32_t widgHeight = viewWidget.height() - 2; ViewportCreate(*this, screenPos, widgWidth, widgHeight, focus.value()); if (viewport != nullptr && reCreateViewport) @@ -823,7 +823,7 @@ namespace OpenRCT2::Ui::Windows auto marqWidth = marqueeWidget.width() - 4; int32_t left = marqueeWidget.left + 2 + windowPos.x; int32_t top = marqueeWidget.top + windowPos.y; - int32_t marqHeight = marqueeWidget.height(); + int32_t marqHeight = marqueeWidget.height() - 1; RenderTarget rtMarquee; if (!ClipDrawPixelInfo(rtMarquee, rt, { left, top }, marqWidth, marqHeight)) { diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 46879a4e35f2..869db8829a1b 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -335,7 +335,7 @@ namespace OpenRCT2::Ui::Windows auto* widget = &widgets[widgetIndex - 1]; WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, _numPages, widget->width() - 4); for (size_t i = 0; i < _numPages; i++) @@ -354,7 +354,7 @@ namespace OpenRCT2::Ui::Windows auto* widget = &widgets[widgetIndex - 1]; WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 2, widget->width() - 4); gDropdown.items[static_cast(_selectedView)].setChecked(true); diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 2e977c15d956..ecee501af49f 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -919,7 +919,7 @@ namespace OpenRCT2::Ui::Windows Widget* widget = &widgets[WIDX_SORT_CUSTOMISE]; WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left - 70, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left - 70, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 7, 90); auto& config = Config::Get().general; diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 3fd5b6cde7c4..d298d7745e89 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -533,7 +533,7 @@ namespace OpenRCT2::Ui::Windows auto& mapArea = widgets[WIDX_MAP]; if (size.width >= mapArea.width() - 1) size.width -= kScrollBarWidth; - if (size.height >= mapArea.height()) + if (size.height >= mapArea.height() - 1) size.height -= kScrollBarWidth; return size; @@ -737,7 +737,7 @@ namespace OpenRCT2::Ui::Windows // calculate width and height of minimap auto& widget = widgets[WIDX_MAP]; auto mapWidth = widget.width() - 1 - kScrollBarWidth - 1; - auto mapHeight = widget.height() - kScrollBarWidth - 1; + auto mapHeight = widget.height() - 1 - kScrollBarWidth - 1; centreX = std::max(centreX - (mapWidth >> 1), 0); centreY = std::max(centreY - (mapHeight >> 1), 0); diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 0b7e19181752..285bfcd40249 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -461,7 +461,7 @@ namespace OpenRCT2::Ui::Windows Widget* ddWidget = &widgets[widgetIndex - 1]; WindowDropdownShowTextCustomWidth( - { windowPos.x + ddWidget->left, windowPos.y + ddWidget->top }, ddWidget->height() + 1, colours[1], 0, + { windowPos.x + ddWidget->left, windowPos.y + ddWidget->top }, ddWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, std::size(items), ddWidget->width() - 3); gDropdown.items[EnumValue(_settings.algorithm)].setChecked(true); diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 3e849012b25c..8c8f2aad9ead 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -166,8 +166,8 @@ namespace OpenRCT2::Ui::Windows auto numItems = Network::GetNumGroups(); WindowDropdownShowTextCustomWidth( - windowPos + ScreenCoordsXY{ dropdownWidget->left, dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, 0, numItems, widget->right - dropdownWidget->left); + windowPos + ScreenCoordsXY{ dropdownWidget->left, dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, 0, numItems, widget->right - dropdownWidget->left); for (auto i = 0; i < Network::GetNumGroups(); i++) { diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index bc57fe954b10..70b6bfc7d032 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -220,7 +220,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowTextCustomWidth( { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, - dropdownWidget->height() + 1, colours[1], 0, Dropdown::Flag::StayOpen, numItems, + dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 4); } } @@ -240,9 +240,8 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, - dropdownWidget->height() + 1, colours[1], 0, Dropdown::Flag::StayOpen, numItems, - dropdownWidget->width() - 4); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), + colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 4); } break; // In RCT2, the maximum was 6 weeks diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 5bf08ec29c51..638ea6336b2e 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -128,7 +128,7 @@ namespace OpenRCT2::Ui::Windows auto& widget = widgets[WIDX_SCROLL]; ScreenSize scrollSize = onScrollGetSize(0); - scrolls[0].contentOffsetY = std::max(0, scrollSize.height - (widget.height() - 1)); + scrolls[0].contentOffsetY = std::max(0, scrollSize.height - (widget.height() - 2)); widgetScrollUpdateThumbs(*this, WIDX_SCROLL); } @@ -178,7 +178,7 @@ namespace OpenRCT2::Ui::Windows groupWidgetsToInsert.emplace_back(groupWidget); lastGroup = def.group; - y += groupWidget.height(); + y += groupWidget.height() - 1; } // Create checkbox widgets @@ -450,7 +450,7 @@ namespace OpenRCT2::Ui::Windows const auto backgroundPaletteIndex = ColourMapA[colours[3].colour].light; // Fill the scrollbar gap if no scrollbar is visible - const bool scrollbarVisible = scrolls[0].contentHeight > widgets[WIDX_SCROLL].height(); + const bool scrollbarVisible = scrolls[0].contentHeight > widgets[WIDX_SCROLL].height() - 1; const auto scrollbarFill = scrollbarVisible ? 0 : kScrollBarWidth; for (const auto& newsItem : getGameState().newsItems.GetArchived()) diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 607a5b0c9932..3b7c55c607d4 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1802,7 +1802,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, numItems, widget->width() - 4); gDropdown.items[static_cast(ThemeManagerGetAvailableThemeIndex())].setChecked(true); @@ -1916,7 +1916,7 @@ namespace OpenRCT2::Ui::Windows numItems++; WindowDropdownShowText( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], Dropdown::Flag::StayOpen, numItems); auto selectedIndex = Config::Get().interface.randomTitleSequence @@ -1933,7 +1933,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[1] = Dropdown::MenuLabel(STR_SCENARIO_PREVIEWS_SCREENSHOTS); WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, numItems, widget->width() - 4); gDropdown.items[Config::Get().interface.scenarioPreviewScreenshots].setChecked(true); @@ -2296,7 +2296,7 @@ namespace OpenRCT2::Ui::Windows { // helper function, all dropdown boxes have similar properties WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, num_items, widget->width() - 4); } diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index eecb8c5e3832..d205915c4d27 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -451,7 +451,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[0] = Dropdown::MenuLabel(STR_CLOSE_PARK); gDropdown.items[1] = Dropdown::MenuLabel(STR_OPEN_PARK); WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[1], 0, 2); + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[1], 0, 2); if (Park::IsOpen(getGameState().park)) { @@ -646,7 +646,7 @@ namespace OpenRCT2::Ui::Windows Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, - viewportWidget->width() - 2, viewportWidget->height() - 1, focus.value()); + viewportWidget->width() - 2, viewportWidget->height() - 2, focus.value()); flags |= WindowFlag::noScrolling; invalidate(); } diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index ad4600894749..4ab7638c58c2 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -404,7 +404,7 @@ namespace OpenRCT2::Ui::Windows viewport->pos = windowPos + ScreenCoordsXY{ viewportWidget->left, viewportWidget->top }; viewport->width = viewportWidget->width() - 1; - viewport->height = viewportWidget->height(); + viewport->height = viewportWidget->height() - 1; } // only enable kick button for other players @@ -557,8 +557,8 @@ namespace OpenRCT2::Ui::Windows numItems = Network::GetNumGroups(); WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, 0, numItems, widget->right - dropdownWidget->left); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, 0, numItems, widget->right - dropdownWidget->left); for (i = 0; i < Network::GetNumGroups(); i++) { diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index 8f7a8e860569..f579911d1c32 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -482,7 +482,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[i] = Dropdown::MenuLabel(kResearchFundingLevelNames[i]); } WindowDropdownShowTextCustomWidth( - { w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { w->windowPos.x + dropdownWidget->left, w->windowPos.y + dropdownWidget->top }, dropdownWidget->height(), w->colours[1], 0, Dropdown::Flag::StayOpen, 4, dropdownWidget->width() - 4); int32_t currentResearchLevel = gameState.researchFundingLevel; diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 6136d29caeab..83dcb5fb263a 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1584,7 +1584,7 @@ namespace OpenRCT2::Ui::Windows auto screenPos = windowPos + ScreenCoordsXY{ viewWidget.left + 1, viewWidget.top + 1 }; int32_t viewWidth = viewWidget.width() - 2; - int32_t viewHeight = viewWidget.height() - 1; + int32_t viewHeight = viewWidget.height() - 2; ViewportCreate(*this, screenPos, viewWidth, viewHeight, focus.value()); @@ -1761,8 +1761,8 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, 0, numItems, widget->right - dropdownWidget->left); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, 0, numItems, widget->right - dropdownWidget->left); // First item gDropdown.items[0] = Dropdown::MenuLabel(STR_OVERALL_VIEW); @@ -1868,7 +1868,7 @@ namespace OpenRCT2::Ui::Windows SetDropdown(info, RideStatus::testing, STR_TEST_RIDE); SetDropdown(info, RideStatus::open, STR_OPEN_RIDE); WindowDropdownShowText( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, info.NumItems); + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, info.NumItems); if (info.CheckedIndex != -1) { gDropdown.items[info.CheckedIndex].setChecked(true); @@ -1927,8 +1927,8 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = widget - 1; WindowDropdownShowText( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], Dropdown::Flag::StayOpen, RIDE_TYPE_COUNT); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + Dropdown::Flag::StayOpen, RIDE_TYPE_COUNT); // Find the current ride type in the ordered list. int32_t pos = 0; @@ -1956,7 +1956,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[1] = Dropdown::PlainMenuLabel(STR_FOLLOW_SUBJECT_TIP); WindowDropdownShowText( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, 2); + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, 2); gDropdown.defaultIndex = 0; if (!ride->getRideTypeDescriptor().HasFlag(RtdFlag::hasTrack) || _viewIndex == 0 || _viewIndex > ride->numTrains) { @@ -2074,8 +2074,8 @@ namespace OpenRCT2::Ui::Windows Widget* dropdownWidget = widget - 1; WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 1); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, numItems, dropdownWidget->width() - 1); // Find the current vehicle type in the ordered list. int32_t pos = 0; @@ -2135,8 +2135,8 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, _entranceDropdownData.size(), + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, _entranceDropdownData.size(), widgets[WIDX_ENTRANCE_STYLE_DROPDOWN].right - dropdownWidget->left); } @@ -2947,7 +2947,7 @@ namespace OpenRCT2::Ui::Windows Widget* widget = &widgets[WIDX_VEHICLE_TRAINS_PREVIEW]; int32_t startX = std::max(2, (widget->width() - 1 - ((ride->numTrains - 1) * 36)) / 2 - 25); - int32_t startY = widget->height() - 4; + int32_t startY = widget->height() - 5; bool isReversed = ride->hasLifecycleFlag(RIDE_LIFECYCLE_REVERSED_TRAINS); int32_t carIndex = (isReversed) ? ride->numCarsPerTrain - 1 : 0; @@ -3107,8 +3107,8 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, numAvailableModes, widget->right - dropdownWidget->left); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, numAvailableModes, widget->right - dropdownWidget->left); if (checkedIndex != -1) { @@ -3128,8 +3128,8 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[i] = Dropdown::MenuLabel(VehicleLoadNames[i]); } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, 5, widget->right - dropdownWidget->left); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, 5, widget->right - dropdownWidget->left); gDropdown.items[ride->departFlags & RIDE_DEPART_WAIT_FOR_LOAD_MASK].setChecked(true); } @@ -3782,7 +3782,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[i] = Dropdown::MenuLabel(kRideInspectionIntervalNames[i]); } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 7, widgets[widgetIndex].right - dropdownWidget->left); gDropdown.items[ride->inspectionInterval].setChecked(true); @@ -3817,8 +3817,8 @@ namespace OpenRCT2::Ui::Windows else { WindowDropdownShowText( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, - dropdownWidget->height() + 1, colours[1], Dropdown::Flag::StayOpen, numItems); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), + colours[1], Dropdown::Flag::StayOpen, numItems); numItems = 1; int32_t breakdownReason = ride->breakdownReasonPending; @@ -4315,7 +4315,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 4, widgets[widgetIndex].right - dropdownWidget->left); gDropdown.items[colourSchemeIndex].setChecked(true); @@ -4341,7 +4341,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 4, widgets[widgetIndex].right - dropdownWidget->left); gDropdown.items[ride->trackColours[colourSchemeIndex].supports].setChecked(true); @@ -4368,7 +4368,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, numDropdownItems, widgets[widgetIndex].right - dropdownWidget->left); @@ -4407,7 +4407,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, dropdownIndex, widgets[widgetIndex].right - dropdownWidget->left); @@ -4879,7 +4879,7 @@ namespace OpenRCT2::Ui::Windows if (ClipDrawPixelInfo( clippedDpi, rt, windowPos + ScreenCoordsXY{ entrancePreviewWidget.left + 1, entrancePreviewWidget.top + 1 }, - entrancePreviewWidget.width() - 1, entrancePreviewWidget.height())) + entrancePreviewWidget.width() - 1, entrancePreviewWidget.height() - 1)) { GfxClear(clippedDpi, PaletteIndex::pi12); @@ -4925,7 +4925,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill(rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, PaletteIndex::pi12); // ? - auto screenCoords = ScreenCoordsXY{ vehiclePreviewWidget->width() / 2, vehiclePreviewWidget->height() - 15 }; + auto screenCoords = ScreenCoordsXY{ vehiclePreviewWidget->width() / 2, vehiclePreviewWidget->height() - 16 }; // ? auto trainCarIndex = ride->vehicleColourSettings == VehicleColourSettings::perCar ? _vehicleIndex @@ -5077,8 +5077,8 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height() + 1, - colours[1], 0, Dropdown::Flag::StayOpen, numItems, widgets[widgetIndex].right - dropdownWidget->left); + { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], + 0, Dropdown::Flag::StayOpen, numItems, widgets[widgetIndex].right - dropdownWidget->left); // Set currently checked item for (size_t i = 0; i < numItems; i++) @@ -5125,7 +5125,7 @@ namespace OpenRCT2::Ui::Windows // Figure out minimum size ScreenSize size{}; - size.height = widgets[WIDX_MUSIC_DATA].height() - 2; + size.height = widgets[WIDX_MUSIC_DATA].height() - 3; size.width = widgets[WIDX_MUSIC_DATA].width() - 3; auto ride = GetRide(rideId); @@ -5241,7 +5241,7 @@ namespace OpenRCT2::Ui::Windows // Figure out where the image should go const auto& previewWidget = widgets[WIDX_MUSIC_IMAGE]; int32_t clipWidth = previewWidget.width() - 2; - int32_t clipHeight = previewWidget.height() - 1; + int32_t clipHeight = previewWidget.height() - 2; // Draw the preview image RenderTarget clipDPI; @@ -5459,7 +5459,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowText( { windowPos.x + widgets[widgetIndex].left, windowPos.y + widgets[widgetIndex].top }, - widgets[widgetIndex].height() + 1, colours[1], Dropdown::Flag::StayOpen, 2); + widgets[widgetIndex].height(), colours[1], Dropdown::Flag::StayOpen, 2); gDropdown.defaultIndex = 0; if (!ride->getRideTypeDescriptor().HasFlag(RtdFlag::hasTrack)) { @@ -6060,7 +6060,7 @@ namespace OpenRCT2::Ui::Windows if (measurement == nullptr) { // No measurement message - ScreenCoordsXY stringCoords(widget->width() / 2, widget->height() / 2 - 5); + ScreenCoordsXY stringCoords(widget->width() / 2, widget->height() - 1 / 2 - 5); int32_t txtWidth = widget->width() - 3; DrawTextWrapped(rt, stringCoords, txtWidth, message.str, message.args, { TextAlignment::centre }); return; @@ -6099,7 +6099,7 @@ namespace OpenRCT2::Ui::Windows yUnit -= kMapBaseZ * 3; } - for (int32_t y = widget->height() - 13; y >= 8; y -= yInterval, yUnit += yUnitInterval) + for (int32_t y = widget->height() - 14; y >= 8; y -= yInterval, yUnit += yUnitInterval) { // Minor / major line int32_t colour = yUnit == 0 ? lightColour : darkColour; @@ -6170,8 +6170,8 @@ namespace OpenRCT2::Ui::Windows } // Adjust line to match graph widget position. - firstPoint = widget->height() - firstPoint - 13; - secondPoint = widget->height() - secondPoint - 13; + firstPoint = widget->height() - firstPoint - 14; + secondPoint = widget->height() - secondPoint - 14; if (firstPoint > secondPoint) { std::swap(firstPoint, secondPoint); @@ -6180,8 +6180,8 @@ namespace OpenRCT2::Ui::Windows // Adjust threshold line position as well if (listType == GRAPH_VERTICAL || listType == GRAPH_LATERAL) { - intensityThresholdPositive = widget->height() - intensityThresholdPositive - 13; - intensityThresholdNegative = widget->height() - intensityThresholdNegative - 13; + intensityThresholdPositive = widget->height() - intensityThresholdPositive - 14; + intensityThresholdNegative = widget->height() - intensityThresholdNegative - 14; } const bool previousMeasurement = x > measurement->current_item; diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 98ef3d94a75e..c9cae930844f 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1707,7 +1707,7 @@ namespace OpenRCT2::Ui::Windows // Draw track piece auto screenCoords = ScreenCoordsXY{ windowPos.x + widget->left + 1, windowPos.y + widget->top + 1 }; widgetWidth = widget->width() - 2; - widgetHeight = widget->height() - 1; + widgetHeight = widget->height() - 2; if (ClipDrawPixelInfo(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) { DrawTrackPiece( @@ -2631,8 +2631,8 @@ namespace OpenRCT2::Ui::Windows ddWidth -= 30; WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, 0, - elements.size(), ddWidth, targetColumnSize); + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, 0, elements.size(), + ddWidth, targetColumnSize); for (size_t j = 0; j < elements.size(); j++) { diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index bd574be37c61..af451ce93083 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -311,7 +311,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[0] = Dropdown::PlainMenuLabel(STR_CLOSE_ALL); gDropdown.items[1] = Dropdown::PlainMenuLabel(STR_OPEN_ALL); WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[1], 0, 2); + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() - 1, colours[1], 0, 2); } else if (widgetIndex == WIDX_HEADER_CUSTOMISE) { @@ -346,8 +346,8 @@ namespace OpenRCT2::Ui::Windows auto totalWidth = headerWidget.width() - 1 + customWidget.width() - 1; WindowDropdownShowTextCustomWidth( - { windowPos.x + headerWidget.left, windowPos.y + headerWidget.top }, headerWidget.height(), colours[1], 0, - Dropdown::Flag::StayOpen, numItems, totalWidth); + { windowPos.x + headerWidget.left, windowPos.y + headerWidget.top }, headerWidget.height() - 1, colours[1], + 0, Dropdown::Flag::StayOpen, numItems, totalWidth); } } diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 55aee41e2377..54708747a7db 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -507,7 +507,7 @@ namespace OpenRCT2::Ui::Windows else { const auto& listWidget = widgets[WIDX_SCENERY_LIST]; - const auto nonListHeight = height - listWidget.height() + 2; + const auto nonListHeight = height - listWidget.height() - 1 + 2; const auto numRows = static_cast(CountRows()); const auto maxContentHeight = numRows * kSceneryButtonHeight; @@ -1077,7 +1077,7 @@ namespace OpenRCT2::Ui::Windows int32_t newMinHeight = getTitleBarTargetHeight() + kDescriptionHeight + 2 * kTabMargin; // Room for the search/filter widget - newMinHeight += widgets[WIDX_FILTER_TEXT_BOX].height() + 2 * kInputMargin; + newMinHeight += widgets[WIDX_FILTER_TEXT_BOX].height() - 1 + 2 * kInputMargin; // Fit *all* rows of tabs newMinHeight += static_cast(1 + (_tabEntries.size() / GetMaxTabCountInARow())) * kTabHeight; diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index f0f906318d51..72e1d5ef3f53 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -135,7 +135,7 @@ namespace OpenRCT2::Ui::Windows Widget& viewportWidget = widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget.left + 1, viewportWidget.top + 1 }, - viewportWidget.width() - 2, viewportWidget.height() - 1, Focus(CoordsXYZ{ signViewPosition, viewZ })); + viewportWidget.width() - 2, viewportWidget.height() - 2, Focus(CoordsXYZ{ signViewPosition, viewZ })); viewport->flags = Config::Get().general.alwaysShowGridlines ? VIEWPORT_FLAG_GRIDLINES : VIEWPORT_FLAG_NONE; invalidate(); @@ -318,7 +318,7 @@ namespace OpenRCT2::Ui::Windows Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; ViewportCreate( *this, windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }, - viewportWidget->width() - 2, viewportWidget->height() - 1, Focus(CoordsXYZ{ signViewPos })); + viewportWidget->width() - 2, viewportWidget->height() - 2, Focus(CoordsXYZ{ signViewPos })); if (viewport != nullptr) viewport->flags = Config::Get().general.alwaysShowGridlines ? VIEWPORT_FLAG_GRIDLINES : VIEWPORT_FLAG_NONE; invalidate(); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index e52e7b9b828a..3fd6ae7f9b2b 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -435,7 +435,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[1] = Dropdown::PlainMenuLabel(STR_CLEAR_PATROL_AREA); auto ddPos = ScreenCoordsXY{ widget->left + windowPos.x, widget->top + windowPos.y }; - int32_t extraHeight = widget->height() + 1; + int32_t extraHeight = widget->height(); WindowDropdownShowText(ddPos, extraHeight, colours[1], 0, 2); gDropdown.defaultIndex = 0; @@ -574,7 +574,7 @@ namespace OpenRCT2::Ui::Windows const auto& widget = widgets[WIDX_TAB_1]; int32_t widgetWidth = widget.width() - 2; - int32_t widgetHeight = widget.height() - 1; + int32_t widgetHeight = widget.height() - 2; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }; if (page == WINDOW_STAFF_OVERVIEW) widgetHeight++; @@ -616,7 +616,7 @@ namespace OpenRCT2::Ui::Windows { const Widget& viewportWidget = widgets[WIDX_VIEWPORT]; const auto reqViewportWidth = viewportWidget.width() - 2; - const auto reqViewportHeight = viewportWidget.height() - 1; + const auto reqViewportHeight = viewportWidget.height() - 2; viewport->pos = windowPos + ScreenCoordsXY{ viewportWidget.left + 1, viewportWidget.top + 1 }; if (viewport->width != reqViewportWidth || viewport->height != reqViewportHeight) @@ -799,7 +799,7 @@ namespace OpenRCT2::Ui::Windows } auto ddPos = ScreenCoordsXY{ ddWidget->left + windowPos.x, ddWidget->top + windowPos.y }; - int32_t ddHeight = ddWidget->height() + 1; + int32_t ddHeight = ddWidget->height(); int32_t ddWidth = ddWidget->width() - 4; WindowDropdownShowTextCustomWidth(ddPos, ddHeight, colours[1], 0, Dropdown::Flag::StayOpen, numCostumes, ddWidth); @@ -1156,7 +1156,7 @@ namespace OpenRCT2::Ui::Windows auto screenPos = ScreenCoordsXY{ viewWidget.left + 1 + windowPos.x, viewWidget.top + 1 + windowPos.y }; int32_t viewportWidth = viewWidget.width() - 2; - int32_t viewportHeight = viewWidget.height() - 1; + int32_t viewportHeight = viewWidget.height() - 2; ViewportCreate(*this, screenPos, viewportWidth, viewportHeight, focus.value()); flags |= WindowFlag::noScrolling; @@ -1175,7 +1175,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[1] = Dropdown::PlainMenuLabel(STR_FOLLOW_SUBJECT_TIP); WindowDropdownShowText( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, 2); + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, 2); gDropdown.defaultIndex = 0; } diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 42ab14757eb8..6a30ee48520e 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -453,7 +453,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, num_items, widget->width() - 4); gDropdown.items[static_cast(ThemeManagerGetAvailableThemeIndex())].setChecked(true); diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index e79042f0b804..3ac4b129bd38 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -904,7 +904,7 @@ static uint64_t PageDisabledWidgets[] = { gDropdown.items[1] = Dropdown::MenuLabel(STR_TILE_INSPECTOR_WALL_SLOPED_LEFT); gDropdown.items[2] = Dropdown::MenuLabel(STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT); WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height() + 1, colours[1], 0, + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 3, widget->width() - 4); // Set current value as checked @@ -1593,7 +1593,7 @@ static uint64_t PageDisabledWidgets[] = { { auto& listWidget = widgets[WIDX_LIST]; auto centrePos = ScreenCoordsXY{ listWidget.width() / 2, - (listWidget.height() - FontGetLineHeight(FontStyle::medium)) / 2 }; + (listWidget.height() - 1 - FontGetLineHeight(FontStyle::medium)) / 2 }; auto ft = Formatter{}; auto textPaint = TextPaint{ colours[1], TextAlignment::centre }; DrawTextWrapped(rt, centrePos, listWidth, STR_TILE_INSPECTOR_SELECT_TILE_HINT, ft, textPaint); diff --git a/src/openrct2-ui/windows/TitleMenu.cpp b/src/openrct2-ui/windows/TitleMenu.cpp index 62e6dac5ea08..4902a32e6d63 100644 --- a/src/openrct2-ui/windows/TitleMenu.cpp +++ b/src/openrct2-ui/windows/TitleMenu.cpp @@ -212,11 +212,11 @@ namespace OpenRCT2::Ui::Windows int32_t yOffset = 0; if (i > 5) { - yOffset = -(widget->height() + 5 + (i * 12)); + yOffset = -(widget->height() - 1 + 5 + (i * 12)); } WindowDropdownShowText( - windowPos + ScreenCoordsXY{ widget->left, widget->top + yOffset }, widget->height() + 1, + windowPos + ScreenCoordsXY{ widget->left, widget->top + yOffset }, widget->height(), colours[0].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, i); } } diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 09b5ab78ed0b..23e62f27b1a3 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -313,7 +313,7 @@ namespace OpenRCT2::Ui::Windows SetItems(items); WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[1].withFlag(ColourFlag::translucent, true), 0, TOP_TOOLBAR_VIEW_MENU_COUNT); auto mvpFlags = WindowGetMain()->viewport->flags; @@ -445,7 +445,7 @@ namespace OpenRCT2::Ui::Windows #endif WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[1].withFlag(ColourFlag::translucent, true), 0, i); gDropdown.defaultIndex = DDIDX_SHOW_MAP; } @@ -512,7 +512,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[0].withFlag(ColourFlag::translucent, true), 0, num_items); // Set checkmarks @@ -624,7 +624,7 @@ namespace OpenRCT2::Ui::Windows } WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[0].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, numItems); } @@ -648,7 +648,7 @@ namespace OpenRCT2::Ui::Windows SetItems(items); WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[0].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, TOP_TOOLBAR_CHEATS_COUNT); // Disable items that are not yet available in multiplayer @@ -724,7 +724,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[DDIDX_DEBUG_PAINT] = Dropdown::ToggleOption(STR_DEBUG_DROPDOWN_DEBUG_PAINT); WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[0].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, TOP_TOOLBAR_DEBUG_COUNT); auto* windowMgr = GetWindowManager(); @@ -768,7 +768,7 @@ namespace OpenRCT2::Ui::Windows gDropdown.items[DDIDX_MULTIPLAYER_RECONNECT] = Dropdown::PlainMenuLabel(STR_MULTIPLAYER_RECONNECT); WindowDropdownShowText( - { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, + { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), colours[0].withFlag(ColourFlag::translucent, true), 0, TOP_TOOLBAR_NETWORK_COUNT); gDropdown.items[DDIDX_MULTIPLAYER_RECONNECT].setDisabled(!Network::IsDesynchronised()); diff --git a/src/openrct2-ui/windows/Viewport.cpp b/src/openrct2-ui/windows/Viewport.cpp index 619b41656076..1fa877a4f342 100644 --- a/src/openrct2-ui/windows/Viewport.cpp +++ b/src/openrct2-ui/windows/Viewport.cpp @@ -200,7 +200,7 @@ namespace OpenRCT2::Ui::Windows Widget* viewportWidget = &widgets[WIDX_VIEWPORT]; viewport->pos = windowPos + ScreenCoordsXY{ viewportWidget->left + 1, viewportWidget->top + 1 }; viewport->width = widgets[WIDX_VIEWPORT].width() - 2; - viewport->height = widgets[WIDX_VIEWPORT].height() - 1; + viewport->height = widgets[WIDX_VIEWPORT].height() - 2; } } }; diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index f8fb57cab778..3602ef6e8d5c 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -105,9 +105,19 @@ namespace OpenRCT2 return right - left + 1; } + void setWidth(int16_t newWidth) + { + right = left + newWidth - 1; + } + int16_t height() const { - return bottom - top; + return bottom - top + 1; + } + + void setHeight(int16_t newHeight) + { + bottom = top + newHeight - 1; } int16_t midX() const @@ -117,13 +127,13 @@ namespace OpenRCT2 int16_t midY() const { - return (top + bottom) / 2; + return top + (height() / 2); } int16_t textTop() const { - if (height() >= 10) - return std::max(top, top + (height() / 2) - 5); + if (height() >= 11) + return std::max(top, top + (height() / 2) - 6); return top - 1; } diff --git a/src/openrct2/interface/WindowBase.cpp b/src/openrct2/interface/WindowBase.cpp index 473dfdbf4d4c..f7d9de7cd53b 100644 --- a/src/openrct2/interface/WindowBase.cpp +++ b/src/openrct2/interface/WindowBase.cpp @@ -110,7 +110,7 @@ namespace OpenRCT2 // Figure out if we need to push the other widgets down to accommodate a resized title/caption auto preferredHeight = getTitleBarTargetHeight(); - auto currentHeight = titleWidget.height(); + auto currentHeight = titleWidget.height() - 1; auto heightDifference = preferredHeight - currentHeight; if (!hasTitleWidget || heightDifference == 0) @@ -152,7 +152,7 @@ namespace OpenRCT2 int16_t WindowBase::getTitleBarCurrentHeight() const { if (!(flags.has(WindowFlag::noTitleBar)) && widgets.size() > 2) - return widgets[1].height(); + return widgets[1].height() - 1; else return 0; } From 2820bdc8e23c3cccdbfa58e63a970577a718bb13 Mon Sep 17 00:00:00 2001 From: Spacek531 Date: Mon, 10 Nov 2025 21:49:14 -0800 Subject: [PATCH 104/222] Rename sequence flags --- src/openrct2/ride/Track.h | 8 +- src/openrct2/ride/TrackData.cpp | 178 ++++++++++++++++---------------- src/openrct2/ride/TrackData.h | 1 + 3 files changed, 94 insertions(+), 93 deletions(-) diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 3f22a42e2150..bd789e37ed75 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -633,10 +633,10 @@ namespace OpenRCT2 enum { - TRACK_SEQUENCE_FLAG_DIRECTION_0 = (1 << 0), // Ride Entrances and path connect to front - TRACK_SEQUENCE_FLAG_DIRECTION_1 = (1 << 1), // connect to right - TRACK_SEQUENCE_FLAG_DIRECTION_2 = (1 << 2), // connect to back - TRACK_SEQUENCE_FLAG_DIRECTION_3 = (1 << 3), // connect to left + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE = (1 << 0), // Ride Entrances and path connect to front + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE = (1 << 1), // connect to right + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW = (1 << 2), // connect to back + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW = (1 << 3), // connect to left TRACK_SEQUENCE_FLAG_ORIGIN = (1 << 4), // 0x10 TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH = (1 << 5), // 0x20 TRACK_SEQUENCE_FLAG_DISALLOW_DOORS = (1 << 6), // 0x40 diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 16fc891c0c6e..111e005f4c30 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -4863,7 +4863,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kEndStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, @@ -4872,7 +4872,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBeginStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, @@ -4881,7 +4881,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMiddleStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, @@ -6395,49 +6395,49 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq4 = { .clearance = { 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -7512,84 +7512,84 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMazeSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kMazeSeq1 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq2 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq3 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq4 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq5 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq6 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq7 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq8 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq9 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq10 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq11 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq12 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq13 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq14 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kMazeSeq15 = { - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, }; static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeUpSeq0 = { @@ -11840,7 +11840,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11851,7 +11851,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11862,55 +11862,55 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack2x2Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq2 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq3 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq2 = { .clearance = { 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11926,13 +11926,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq8 = { .clearance = { 64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11948,85 +11948,85 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq11 = { .clearance = { 64, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq12 = { .clearance = { 96, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq13 = { .clearance = { 96, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq14 = { .clearance = { 96, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq15 = { .clearance = { 96, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq2 = { .clearance = { 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq5 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq6 = { .clearance = { 32, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12037,13 +12037,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x5Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12054,13 +12054,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12071,7 +12071,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4BSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12082,32 +12082,32 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 - | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW + | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq1 = { .clearance = { -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12119,49 +12119,49 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack3x3Seq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq4 = { .clearance = { 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_DIRECTION_2, + .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 6f497068acb9..099ccf87c09a 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -9,6 +9,7 @@ #pragma once +#include "../core/FlagHolder.hpp" #include "../paint/support/MetalSupports.h" #include "../paint/support/WoodenSupports.h" #include "../paint/tile_element/Segment.h" From fa124330fa9d514b420a57af37a923db7331fe51 Mon Sep 17 00:00:00 2001 From: Spacek531 Date: Mon, 10 Nov 2025 22:47:22 -0800 Subject: [PATCH 105/222] Convert flags field to FlagHolder --- src/openrct2-ui/ride/Construction.cpp | 5 +- src/openrct2-ui/windows/Ride.cpp | 2 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 5 +- src/openrct2/actions/TrackPlaceAction.cpp | 25 +- src/openrct2/actions/TrackRemoveAction.cpp | 10 +- src/openrct2/actions/WallPlaceAction.cpp | 2 +- src/openrct2/ride/Ride.cpp | 28 +- src/openrct2/ride/RideConstruction.cpp | 7 +- src/openrct2/ride/Track.h | 16 +- src/openrct2/ride/TrackData.cpp | 260 ++++++++++++------- src/openrct2/ride/TrackData.h | 9 +- src/openrct2/ride/Vehicle.cpp | 4 +- src/openrct2/world/Footpath.cpp | 16 +- 13 files changed, 235 insertions(+), 154 deletions(-) diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index cd89e8e3f136..e9e5e26a22b5 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -377,7 +377,7 @@ namespace OpenRCT2 if (trackElement->GetRideIndex() == gRideEntranceExitPlaceRideIndex) { const auto& ted = GetTrackElementDescriptor(trackElement->GetTrackType()); - if (ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) { if (trackElement->GetTrackType() == TrackElemType::Maze) { @@ -472,7 +472,8 @@ namespace OpenRCT2 // get the ride entrance's side relative to the TrackElement Direction direction = (DirectionReverse(entranceExitCoords.direction) - tileElement->GetDirection()) & 3; const auto& ted = GetTrackElementDescriptor(trackElement->GetTrackType()); - if (ted.sequences[trackElement->GetSequenceIndex()].flags & (1 << direction)) + auto connectionSides = ted.sequences[trackElement->GetSequenceIndex()].getEntranceConnectionSides(); + if (connectionSides & (1 << direction)) { // if that side of the TrackElement supports stations, the ride entrance is valid and faces away from // the station diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 83dcb5fb263a..1e4cfd87a5a1 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -7033,7 +7033,7 @@ namespace OpenRCT2::Ui::Windows auto trackElement = tileElement->AsTrack(); auto trackType = trackElement->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) { auto stationIndex = trackElement->GetStationIndex(); return WindowRideOpenStation(*ride, stationIndex); diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index e70175a3807a..54bc3b029f38 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -650,8 +650,9 @@ namespace OpenRCT2::Ui::Windows auto bits = trackBlock.quarterTile.Rotate(curTrackRotation & 3).GetBaseQuarterOccupied(); // Station track is a lighter colour - uint8_t colour = (ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN) ? kPaletteIndexColourStation - : kPaletteIndexColourTrack; + uint8_t colour = ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) + ? kPaletteIndexColourStation + : kPaletteIndexColourTrack; for (int32_t i = 0; i < 4; i++) { diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 44e2bf7303c4..a4e6af07911b 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -345,8 +345,7 @@ namespace OpenRCT2::GameActions } } - int32_t entranceDirections = ted.sequences[0].flags; - if ((entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN) && blockIndex == 0) + if ((ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) && blockIndex == 0) { const auto addElementResult = TrackAddStationElement( { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); @@ -540,16 +539,16 @@ namespace OpenRCT2::GameActions supportCosts += (supportHeight / (2 * kCoordsZStep)) * rtd.BuildCosts.SupportPrice; - int32_t entranceDirections = 0; + bool isOrigin = false; if (!ride->overallView.IsNull()) { if (!(GetFlags().has(CommandFlag::noSpend))) { - entranceDirections = ted.sequences[0].flags; + isOrigin = ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN); } } - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN || ride->overallView.IsNull()) + if (isOrigin || ride->overallView.IsNull()) { ride->overallView = mapLoc; } @@ -607,18 +606,17 @@ namespace OpenRCT2::GameActions } trackElement->SetColourScheme(static_cast(_colour)); - entranceDirections = ted.sequences[0].flags; - if (entranceDirections & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) { - uint32_t availableDirections = entranceDirections & 0x0F; - if (availableDirections != 0) + uint32_t connectionSides = ted.sequences[0].getEntranceConnectionSides(); + if (connectionSides != 0) { if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) { - for (int32_t chosenDirection = Numerics::bitScanForward(availableDirections); chosenDirection != -1; - chosenDirection = Numerics::bitScanForward(availableDirections)) + for (int32_t chosenDirection = Numerics::bitScanForward(connectionSides); chosenDirection != -1; + chosenDirection = Numerics::bitScanForward(connectionSides)) { - availableDirections &= ~(1 << chosenDirection); + connectionSides &= ~(1 << chosenDirection); CoordsXY tempLoc{ mapLoc.x, mapLoc.y }; int32_t tempDirection = (_origin.direction + chosenDirection) & 3; tempLoc.x += CoordsDirectionDelta[tempDirection].x; @@ -633,7 +631,8 @@ namespace OpenRCT2::GameActions // If the placed tile is a station modify station properties. // Don't do this if the tile is a ghost to prevent desyncs // However, ghost tiles from track designs need to modify station data to display properly - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) + && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) { if (blockIndex == 0) { diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index 62a5315c9e14..eee34da1afea 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -209,8 +209,8 @@ namespace OpenRCT2::GameActions return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } - int32_t entranceDirections = ted.sequences[0].flags; - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (tileElement->AsTrack()->GetSequenceIndex() == 0)) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) + && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) @@ -379,8 +379,8 @@ namespace OpenRCT2::GameActions return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } - int32_t entranceDirections = ted.sequences[0].flags; - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN && (tileElement->AsTrack()->GetSequenceIndex() == 0)) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) + && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) @@ -406,7 +406,7 @@ namespace OpenRCT2::GameActions // If the removed tile is a station modify station properties. // Don't do this if the ride is simulating and the tile is a ghost to prevent desyncs. - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) && (!(GetFlags().has(CommandFlag::ghost)) || (GetFlags().has(CommandFlag::trackDesign))) && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 431506a77012..93e64630c9c4 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -438,7 +438,7 @@ namespace OpenRCT2::GameActions int32_t z; if (sequence == 0) { - if (ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_DISALLOW_DOORS) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS)) { return false; } diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index a231c74ec3e0..e044f2c8e844 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -507,7 +507,7 @@ bool RideTryGetOriginElement(const Ride& ride, CoordsXYE* output) bool specialTrackPiece = (it.element->AsTrack()->GetTrackType() != TrackElemType::BeginStation && it.element->AsTrack()->GetTrackType() != TrackElemType::MiddleStation - && (ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)); + && (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN))); // Set result tile to this track piece if first found track or a ??? if (resultTileElement == nullptr || specialTrackPiece) @@ -2397,22 +2397,22 @@ static void RideShopConnected(const Ride& ride) return; const auto& ted = GetTrackElementDescriptor(track_type); - uint8_t entrance_directions = ted.sequences[0].flags & 0xF; + uint8_t connectionSides = ted.sequences[0].getEntranceConnectionSides(); uint8_t tile_direction = trackElement->GetDirection(); - entrance_directions = Numerics::rol4(entrance_directions, tile_direction); + connectionSides = Numerics::rol4(connectionSides, tile_direction); - // Now each bit in entrance_directions stands for an entrance direction to check - if (entrance_directions == 0) + // Now each bit in connectionSides stands for an entrance direction to check + if (connectionSides == 0) return; - for (auto count = 0; entrance_directions != 0; count++) + for (auto count = 0; connectionSides != 0; count++) { - if (!(entrance_directions & 1)) + if (!(connectionSides & 1)) { - entrance_directions >>= 1; + connectionSides >>= 1; continue; } - entrance_directions >>= 1; + connectionSides >>= 1; // Flip direction north<->south, east<->west uint8_t face_direction = DirectionReverse(count); @@ -2936,7 +2936,7 @@ static int32_t RideCheckStationLength(const CoordsXYE& input, CoordsXYE* output) do { const auto& ted = GetTrackElementDescriptor(output->element->AsTrack()->GetTrackType()); - if (ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN) + if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) { num_station_elements++; last_good_station = *output; @@ -2985,7 +2985,7 @@ static bool RideCheckStartAndEndIsStation(const CoordsXYE& input) TrackGetBack(input, &trackBack); auto trackType = trackBack.element->AsTrack()->GetTrackType(); const auto* ted = &GetTrackElementDescriptor(trackType); - if (!(ted->sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted->sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) { return false; } @@ -2995,7 +2995,7 @@ static bool RideCheckStartAndEndIsStation(const CoordsXYE& input) TrackGetFront(input, &trackFront); trackType = trackFront.element->AsTrack()->GetTrackType(); ted = &GetTrackElementDescriptor(trackType); - if (!(ted->sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted->sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) { return false; } @@ -4060,7 +4060,7 @@ TrackElement* Ride::getOriginElement(StationIndex stationIndex) const auto* trackElement = tileElement->AsTrack(); const auto& ted = GetTrackElementDescriptor(trackElement->GetTrackType()); - if (!(ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) continue; if (trackElement->GetRideIndex() == id) @@ -5055,7 +5055,7 @@ static int32_t RideGetTrackLength(const Ride& ride) trackType = tileElement->AsTrack()->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) continue; if (tileElement->GetBaseZ() != trackStart.z) diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 7defccdfa71b..649c894ed4f6 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -1225,7 +1225,7 @@ void Ride::validateStations() const auto& ted = GetTrackElementDescriptor(tileElement->AsTrack()->GetTrackType()); // keep searching for a station piece (coaster station, tower ride base, shops, and flat ride base) - if (!(ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) continue; trackFound = true; @@ -1275,7 +1275,7 @@ void Ride::validateStations() continue; const auto& ted2 = GetTrackElementDescriptor(tileElement->AsTrack()->GetTrackType()); - if (!(ted2.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted2.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) continue; trackFound = true; @@ -1382,7 +1382,8 @@ void Ride::validateStations() // if the ride entrance is not on a valid side, remove it const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags & (1 << direction))) + auto connectionSides = ted.sequences[trackSequence].getEntranceConnectionSides(); + if (!(connectionSides & (1 << direction))) { continue; } diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index bd789e37ed75..c146e01dadac 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -631,15 +631,15 @@ namespace OpenRCT2 }; } -enum +enum class SequenceFlag : uint8_t { - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE = (1 << 0), // Ride Entrances and path connect to front - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE = (1 << 1), // connect to right - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW = (1 << 2), // connect to back - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW = (1 << 3), // connect to left - TRACK_SEQUENCE_FLAG_ORIGIN = (1 << 4), // 0x10 - TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH = (1 << 5), // 0x20 - TRACK_SEQUENCE_FLAG_DISALLOW_DOORS = (1 << 6), // 0x40 + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, // Ride Entrances and path connect to front + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, // connect to right + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, // connect to back + TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, // connect to left + TRACK_SEQUENCE_FLAG_ORIGIN, // 0x10 + TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, // 0x20 + TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, // 0x40 }; enum diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 111e005f4c30..db74ee1609fe 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -4863,8 +4863,9 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kEndStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN - | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, + SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4872,8 +4873,9 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBeginStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN - | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, + SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4881,8 +4883,9 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMiddleStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN - | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, + SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -6389,55 +6392,59 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq4 = { .clearance = { 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -7512,84 +7519,116 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMazeSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kMazeSeq1 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq2 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq3 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq4 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq5 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq6 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq7 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq8 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq9 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq10 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq11 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq12 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq13 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq14 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kMazeSeq15 = { - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, }; static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeUpSeq0 = { @@ -9786,7 +9825,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSpinningTunnelSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, - .flags = TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -11840,7 +11879,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11851,7 +11891,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11862,55 +11903,61 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack2x2Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq2 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq3 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq2 = { .clearance = { 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11926,13 +11973,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq8 = { .clearance = { 64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11948,85 +11995,92 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq11 = { .clearance = { 64, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq12 = { .clearance = { 96, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq13 = { .clearance = { 96, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq14 = { .clearance = { 96, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq15 = { .clearance = { 96, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq2 = { .clearance = { 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq5 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq6 = { .clearance = { 32, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12037,13 +12091,15 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x5Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12054,13 +12110,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, + SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12071,7 +12128,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4BSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12082,86 +12139,99 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW - | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, + SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW | TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq1 = { .clearance = { -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq4 = { .clearance = { 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE | TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 099ccf87c09a..f292e867f23b 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -90,18 +90,25 @@ namespace OpenRCT2::TrackMetaData uint8_t alternates = false; }; + using SequenceFlags = FlagHolder; + struct SequenceDescriptor { SequenceClearance clearance{}; /** rct2: 0x00999A94 */ uint8_t allowedWallEdges{}; /** rct2: 0x0099BA64 */ - uint8_t flags{}; + SequenceFlags flags{}; SequenceWoodenSupport woodenSupports{}; SequenceMetalSupport metalSupports{}; int8_t extraSupportRotation = 0; bool invertSegmentBlocking = false; std::array blockedSegments{ kSegmentsNone, kSegmentsNone, kSegmentsNone }; + + const uint8_t getEntranceConnectionSides() const + { + return flags.holder & 0xF; + } }; using TrackComputeFunction = int32_t (*)(const int16_t); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index c736f773cf99..c2603efea599 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -6502,7 +6502,7 @@ void Vehicle::Sub6DBF3E() auto trackType = GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!(ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN))) { return; } @@ -7906,7 +7906,7 @@ void Vehicle::Loc6DCE02(const Ride& curRide) auto trackType = GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags & TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!(ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN))) { return; } diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index fa03190db0c3..468b8b9965d4 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -596,13 +596,13 @@ static void Loc6A6D7E( const auto trackType = tileElement->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) + if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH))) { return; } uint16_t dx = DirectionReverse((direction - tileElement->GetDirection()) & kTileElementDirectionMask); - - if (!(ted.sequences[trackSequence].flags & (1 << dx))) + auto connectionSides = ted.sequences[trackSequence].getEntranceConnectionSides(); + if (!(connectionSides & (1 << dx))) { return; } @@ -682,12 +682,13 @@ static void Loc6A6C85( const auto trackType = tileElementPos.element->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElementPos.element->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) + if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH))) { return; } uint16_t dx = (direction - tileElementPos.element->GetDirection()) & kTileElementDirectionMask; - if (!(ted.sequences[trackSequence].flags & (1 << dx))) + auto connectionSides = ted.sequences[trackSequence].getEntranceConnectionSides(); + if (!(connectionSides & (1 << dx))) { return; } @@ -1691,10 +1692,11 @@ bool TileElementWantsPathConnectionTowards(const TileCoordsXYZD& coords, const T const auto trackType = tileElement->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.sequences[trackSequence].flags & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH) + if (ted.sequences[trackSequence].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) { uint16_t dx = ((coords.direction - tileElement->GetDirection()) & kTileElementDirectionMask); - if (ted.sequences[trackSequence].flags & (1 << dx)) + auto connectionSides = ted.sequences[trackSequence].getEntranceConnectionSides(); + if (connectionSides & (1 << dx)) { // Track element has the flags required for the given direction return true; From c5cd9ac5de984aee1d6b92324b3c027527f37e33 Mon Sep 17 00:00:00 2001 From: Spacek531 Date: Mon, 10 Nov 2025 22:48:43 -0800 Subject: [PATCH 106/222] Rename SequenceFlag flags again --- src/openrct2-ui/ride/Construction.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 2 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 5 +- src/openrct2/actions/TrackPlaceAction.cpp | 8 +- src/openrct2/actions/TrackRemoveAction.cpp | 8 +- src/openrct2/actions/WallPlaceAction.cpp | 2 +- src/openrct2/ride/Ride.cpp | 12 +- src/openrct2/ride/RideConstruction.cpp | 4 +- src/openrct2/ride/Track.h | 14 +- src/openrct2/ride/TrackData.cpp | 260 +++++++------------ src/openrct2/ride/Vehicle.cpp | 4 +- src/openrct2/world/Footpath.cpp | 6 +- 12 files changed, 127 insertions(+), 200 deletions(-) diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index e9e5e26a22b5..a06c381bcd6d 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -377,7 +377,7 @@ namespace OpenRCT2 if (trackElement->GetRideIndex() == gRideEntranceExitPlaceRideIndex) { const auto& ted = GetTrackElementDescriptor(trackElement->GetTrackType()); - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) { if (trackElement->GetTrackType() == TrackElemType::Maze) { diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 1e4cfd87a5a1..da1cda5266d8 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -7033,7 +7033,7 @@ namespace OpenRCT2::Ui::Windows auto trackElement = tileElement->AsTrack(); auto trackType = trackElement->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) { auto stationIndex = trackElement->GetStationIndex(); return WindowRideOpenStation(*ride, stationIndex); diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 54bc3b029f38..d4ed7035d38b 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -650,9 +650,8 @@ namespace OpenRCT2::Ui::Windows auto bits = trackBlock.quarterTile.Rotate(curTrackRotation & 3).GetBaseQuarterOccupied(); // Station track is a lighter colour - uint8_t colour = ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) - ? kPaletteIndexColourStation - : kPaletteIndexColourTrack; + uint8_t colour = ted.sequences[0].flags.has(SequenceFlag::trackOrigin) ? kPaletteIndexColourStation + : kPaletteIndexColourTrack; for (int32_t i = 0; i < 4; i++) { diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index a4e6af07911b..d26cc162dec8 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -345,7 +345,7 @@ namespace OpenRCT2::GameActions } } - if ((ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) && blockIndex == 0) + if ((ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) && blockIndex == 0) { const auto addElementResult = TrackAddStationElement( { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); @@ -544,7 +544,7 @@ namespace OpenRCT2::GameActions { if (!(GetFlags().has(CommandFlag::noSpend))) { - isOrigin = ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN); + isOrigin = ted.sequences[0].flags.has(SequenceFlag::trackOrigin); } } @@ -606,7 +606,7 @@ namespace OpenRCT2::GameActions } trackElement->SetColourScheme(static_cast(_colour)); - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) + if (ted.sequences[0].flags.has(SequenceFlag::connectsToPath)) { uint32_t connectionSides = ted.sequences[0].getEntranceConnectionSides(); if (connectionSides != 0) @@ -631,7 +631,7 @@ namespace OpenRCT2::GameActions // If the placed tile is a station modify station properties. // Don't do this if the tile is a ghost to prevent desyncs // However, ghost tiles from track designs need to modify station data to display properly - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) { if (blockIndex == 0) diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index eee34da1afea..ddba7bbfe2bf 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -209,8 +209,7 @@ namespace OpenRCT2::GameActions return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) - && (tileElement->AsTrack()->GetSequenceIndex() == 0)) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) @@ -379,8 +378,7 @@ namespace OpenRCT2::GameActions return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_REMOVE_THIS, STR_ERR_TRACK_ELEMENT_NOT_FOUND); } - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) - && (tileElement->AsTrack()->GetSequenceIndex() == 0)) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { const auto removeElementResult = TrackRemoveStationElement({ mapLoc, _origin.direction }, rideIndex, {}); if (!removeElementResult.Successful) @@ -406,7 +404,7 @@ namespace OpenRCT2::GameActions // If the removed tile is a station modify station properties. // Don't do this if the ride is simulating and the tile is a ghost to prevent desyncs. - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) && (!(GetFlags().has(CommandFlag::ghost)) || (GetFlags().has(CommandFlag::trackDesign))) && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 93e64630c9c4..a48c75550549 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -438,7 +438,7 @@ namespace OpenRCT2::GameActions int32_t z; if (sequence == 0) { - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS)) + if (ted.sequences[0].flags.has(SequenceFlag::disallowDoors)) { return false; } diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index e044f2c8e844..fcb422d5216f 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -507,7 +507,7 @@ bool RideTryGetOriginElement(const Ride& ride, CoordsXYE* output) bool specialTrackPiece = (it.element->AsTrack()->GetTrackType() != TrackElemType::BeginStation && it.element->AsTrack()->GetTrackType() != TrackElemType::MiddleStation - && (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN))); + && (ted.sequences[0].flags.has(SequenceFlag::trackOrigin))); // Set result tile to this track piece if first found track or a ??? if (resultTileElement == nullptr || specialTrackPiece) @@ -2936,7 +2936,7 @@ static int32_t RideCheckStationLength(const CoordsXYE& input, CoordsXYE* output) do { const auto& ted = GetTrackElementDescriptor(output->element->AsTrack()->GetTrackType()); - if (ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) { num_station_elements++; last_good_station = *output; @@ -2985,7 +2985,7 @@ static bool RideCheckStartAndEndIsStation(const CoordsXYE& input) TrackGetBack(input, &trackBack); auto trackType = trackBack.element->AsTrack()->GetTrackType(); const auto* ted = &GetTrackElementDescriptor(trackType); - if (!ted->sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted->sequences[0].flags.has(SequenceFlag::trackOrigin)) { return false; } @@ -2995,7 +2995,7 @@ static bool RideCheckStartAndEndIsStation(const CoordsXYE& input) TrackGetFront(input, &trackFront); trackType = trackFront.element->AsTrack()->GetTrackType(); ted = &GetTrackElementDescriptor(trackType); - if (!ted->sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted->sequences[0].flags.has(SequenceFlag::trackOrigin)) { return false; } @@ -4060,7 +4060,7 @@ TrackElement* Ride::getOriginElement(StationIndex stationIndex) const auto* trackElement = tileElement->AsTrack(); const auto& ted = GetTrackElementDescriptor(trackElement->GetTrackType()); - if (!ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) continue; if (trackElement->GetRideIndex() == id) @@ -5055,7 +5055,7 @@ static int32_t RideGetTrackLength(const Ride& ride) trackType = tileElement->AsTrack()->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) continue; if (tileElement->GetBaseZ() != trackStart.z) diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 649c894ed4f6..b2cf3d09a9ca 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -1225,7 +1225,7 @@ void Ride::validateStations() const auto& ted = GetTrackElementDescriptor(tileElement->AsTrack()->GetTrackType()); // keep searching for a station piece (coaster station, tower ride base, shops, and flat ride base) - if (!ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) continue; trackFound = true; @@ -1275,7 +1275,7 @@ void Ride::validateStations() continue; const auto& ted2 = GetTrackElementDescriptor(tileElement->AsTrack()->GetTrackType()); - if (!ted2.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN)) + if (!ted2.sequences[0].flags.has(SequenceFlag::trackOrigin)) continue; trackFound = true; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index c146e01dadac..e9474329b1dd 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -633,13 +633,13 @@ namespace OpenRCT2 enum class SequenceFlag : uint8_t { - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, // Ride Entrances and path connect to front - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, // connect to right - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, // connect to back - TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, // connect to left - TRACK_SEQUENCE_FLAG_ORIGIN, // 0x10 - TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, // 0x20 - TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, // 0x40 + entranceConnectionNE, // Ride Entrances and path connect to front + entranceConnectionSE, // connect to right + entranceConnectionSW, // connect to back + entranceConnectionNW, // connect to left + trackOrigin, // 0x10 + connectsToPath, // 0x20 + disallowDoors, // 0x40 }; enum diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index db74ee1609fe..c2d982c7f36f 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -4863,9 +4863,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kEndStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, - SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::disallowDoors }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4873,9 +4872,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBeginStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, - SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::disallowDoors }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4883,9 +4881,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMiddleStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, - SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::disallowDoors }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -6392,59 +6389,55 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, + .flags = SequenceFlag::trackOrigin, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, + .flags = { SequenceFlag::entranceConnectionNE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq4 = { .clearance = { 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = SequenceFlag::entranceConnectionSE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, + .flags = SequenceFlag::entranceConnectionSW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -7519,116 +7512,84 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMazeSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kMazeSeq1 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq2 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq3 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq4 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq5 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq6 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq7 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq8 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq9 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq10 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq11 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq12 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq13 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq14 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kMazeSeq15 = { - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, }; static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeUpSeq0 = { @@ -9825,7 +9786,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSpinningTunnelSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_DISALLOW_DOORS }, + .flags = { SequenceFlag::disallowDoors }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -11879,8 +11840,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11891,8 +11851,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11903,61 +11862,55 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack2x2Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq2 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq3 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, + .flags = { SequenceFlag::entranceConnectionNE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq2 = { .clearance = { 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, + .flags = { SequenceFlag::entranceConnectionNE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11973,13 +11926,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, + .flags = SequenceFlag::entranceConnectionSE, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq8 = { .clearance = { 64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, + .flags = SequenceFlag::entranceConnectionNW, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11995,92 +11948,85 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq11 = { .clearance = { 64, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq12 = { .clearance = { 96, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq13 = { .clearance = { 96, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq14 = { .clearance = { 96, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq15 = { .clearance = { 96, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, + .flags = { SequenceFlag::entranceConnectionNE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq2 = { .clearance = { 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, + .flags = { SequenceFlag::entranceConnectionNE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq5 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq6 = { .clearance = { 32, 64, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12091,15 +12037,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x5Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12110,14 +12054,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, - SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::trackOrigin, SequenceFlag::connectsToPath }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12128,7 +12071,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4BSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12139,99 +12082,86 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN, - SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, SequenceFlag::connectsToPath }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW, SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq1 = { .clearance = { -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4CSeq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN }, + .flags = { SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE }, + .flags = { SequenceFlag::entranceConnectionNE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq4 = { .clearance = { 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE }, + .flags = { SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_NW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SE, - SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = { SequenceFlag::TRACK_SEQUENCE_FLAG_ENTRANCE_CONNECTS_SW }, + .flags = { SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index c2603efea599..b131d19ac13d 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -6502,7 +6502,7 @@ void Vehicle::Sub6DBF3E() auto trackType = GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN))) + if (!(ted.sequences[0].flags.has(SequenceFlag::trackOrigin))) { return; } @@ -7906,7 +7906,7 @@ void Vehicle::Loc6DCE02(const Ride& curRide) auto trackType = GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_ORIGIN))) + if (!(ted.sequences[0].flags.has(SequenceFlag::trackOrigin))) { return; } diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 468b8b9965d4..ea7fd6837662 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -596,7 +596,7 @@ static void Loc6A6D7E( const auto trackType = tileElement->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH))) + if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath))) { return; } @@ -682,7 +682,7 @@ static void Loc6A6C85( const auto trackType = tileElementPos.element->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElementPos.element->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH))) + if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath))) { return; } @@ -1692,7 +1692,7 @@ bool TileElementWantsPathConnectionTowards(const TileCoordsXYZD& coords, const T const auto trackType = tileElement->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.sequences[trackSequence].flags.has(SequenceFlag::TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH)) + if (ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath)) { uint16_t dx = ((coords.direction - tileElement->GetDirection()) & kTileElementDirectionMask); auto connectionSides = ted.sequences[trackSequence].getEntranceConnectionSides(); From 0e39be2f58e41e7e65e4e2734bf9ccebadfb6600 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 18:37:50 +0100 Subject: [PATCH 107/222] Fix missed occurrences --- src/openrct2/ride/TrackData.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index c2d982c7f36f..d733b98fba7b 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -6389,7 +6389,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::trackOrigin, + .flags = { SequenceFlag::trackOrigin }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -6419,7 +6419,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq5 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::entranceConnectionSE, + .flags = { SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -6437,7 +6437,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq8 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = SequenceFlag::entranceConnectionSW, + .flags = { SequenceFlag::entranceConnectionSW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11926,13 +11926,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::entranceConnectionSE, + .flags = { SequenceFlag::entranceConnectionSE }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq8 = { .clearance = { 64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = SequenceFlag::entranceConnectionNW, + .flags = { SequenceFlag::entranceConnectionNW }, .woodenSupports = { WoodenSupportSubType::neSw }, }; From a90e071e89c19c1d70f9ec3b4741f64fe78804cc Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 18:43:31 +0100 Subject: [PATCH 108/222] Make getEntranceConnectionSides() constexpr --- src/openrct2/ride/TrackData.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index f292e867f23b..344847834d68 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -105,7 +105,7 @@ namespace OpenRCT2::TrackMetaData bool invertSegmentBlocking = false; std::array blockedSegments{ kSegmentsNone, kSegmentsNone, kSegmentsNone }; - const uint8_t getEntranceConnectionSides() const + constexpr uint8_t getEntranceConnectionSides() const { return flags.holder & 0xF; } From cc0f83081bb107aaaa8facf3291249db90c15434 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:56:14 -0300 Subject: [PATCH 109/222] =?UTF-8?q?Do=20not=20allow=20guests=20to=20slide?= =?UTF-8?q?=20down=20the=20Spiral=20Slide=20if=20it=E2=80=99s=20broken=20(?= =?UTF-8?q?#25403)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- distribution/changelog.txt | 1 + src/openrct2/entity/Guest.cpp | 2 +- src/openrct2/network/NetworkBase.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 08cad2544368..6b490a94e10a 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -7,6 +7,7 @@ - Improved: [#25621] Added the Polish Złoty (PLN) to the list of available currencies. - Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. - Change: [#21912] Toilet income is now categorised as shop sales instead of ride tickets. +- Change: [#25403] Guests will not slide down the Spiral Slide if it's broken, even if they have already entered the ride structure. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Change: [#25544] The default game window size is now 1280×720px instead of 640×480px. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 81036eddd929..a6879a3e90f3 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -4804,7 +4804,7 @@ void Guest::UpdateRideOnSpiralSlide() return; case PeepSpiralSlideSubState::prepareToSlide: - if (ride->slideInUse) + if (ride->slideInUse || ride->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN) return; ride->slideInUse = 1; diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index d362f28eb998..fea97e716c82 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 4; +constexpr uint8_t kStreamVersion = 5; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From fbcf37ca538471ff3d729f37f14c3ca228c18a1c Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Sat, 13 Dec 2025 04:05:30 +0000 Subject: [PATCH 110/222] Merge Localisation/master into OpenRCT2/develop --- data/language/ko-KR.txt | 4 +++ data/language/nl-NL.txt | 4 +++ data/language/pl-PL.txt | 72 ++++++++++++++++++++++++++++++++++++++++- data/language/ru-RU.txt | 4 +++ 4 files changed, 83 insertions(+), 1 deletion(-) diff --git a/data/language/ko-KR.txt b/data/language/ko-KR.txt index b935769a7cf0..69dfc1368f32 100644 --- a/data/language/ko-KR.txt +++ b/data/language/ko-KR.txt @@ -3838,3 +3838,7 @@ STR_7005 :드래그로 보도 건설 STR_7006 :버튼 주위에 경계선 표시 STR_7007 :놀이기구 종류 STR_7008 :알 수 없는 놀이기구 종류 ({INT32}) +STR_7009 :스크립트 받는 중… +STR_7010 :리플레이를 시작할 수 없습니다, ‘{STRING}’ 파일이 존재하지 않거나 유효하지 않습니다 +STR_7011 :리플레이를 시작할 수 없습니다 +STR_7012 :폴란드 즐로티 (PLN) diff --git a/data/language/nl-NL.txt b/data/language/nl-NL.txt index 9643050f41b7..6ced245c626b 100644 --- a/data/language/nl-NL.txt +++ b/data/language/nl-NL.txt @@ -3834,3 +3834,7 @@ STR_7005 :Voetpaden aanleggen door te slepen STR_7006 :Rand tekenen om knoppen met alleen een plaatje STR_7007 :Attractietype STR_7008 :Onbekend attractietype ({INT32}) +STR_7009 :Scripts ophalen… +STR_7010 :Kon de replay niet starten, bestand ‘{STRING}’ bestaat niet of is ongeldig. +STR_7011 :Kon de replay niet starten. +STR_7012 :Poolse Złoty (PLN) diff --git a/data/language/pl-PL.txt b/data/language/pl-PL.txt index 681d7e946648..6477d7b413a1 100644 --- a/data/language/pl-PL.txt +++ b/data/language/pl-PL.txt @@ -3081,7 +3081,7 @@ STR_5998 :Dodaj pieniądze STR_5999 :Ustaw pieniądze STR_6000 :Wprowadź nową wartość: STR_6001 :Włącz efekty świetlne (eksperymentalne) -STR_6002 :Lampy i atrakcje będą świeciły w nocy.{NEWLINE}Wymaga włączenia silnika sprzętowego. +STR_6002 :Lampy i atrakcje będą świeciły w nocy.{NEWLINE}Wymaga włączenia renderowania sprzętowego. STR_6003 :Widok przekroju STR_6004 :Widok przekroju STR_6005 :Włącz widok przekroju @@ -3769,3 +3769,73 @@ STR_6739 :{WINDOW_COLOUR_2}Data: {BLACK}{STRINGID} STR_6740 :{WINDOW_COLOUR_2}Gotówka: {BLACK}{CURRENCY2DP} STR_6741 :{WINDOW_COLOUR_2}Liczba atrakcji: {BLACK}{UINT16} STR_6742 :{WINDOW_COLOUR_2}Liczba gości: {BLACK}{UINT16} +STR_6743 :Klimat +STR_6744 :{WINDOW_COLOUR_2}{UINT16}% +STR_6745 :{WINDOW_COLOUR_2}Preferencje intensywności gości: +STR_6746 :Brak preferencji +STR_6747 :Różne preferencje (domyślne) +STR_6748 :Tylko mniej intensywne przejażdżki +STR_6749 :Tylko bardziej intensywne przejażdżki +STR_6750 :Wybierz preferencje nowych gości dot. intensywności przejażdżek. +STR_6751 :Zakolejkowane ścieżki nie mogą być na przejeździe kolejowym! +STR_6752 :Opcje scenariusza - Cele +STR_6753 :Opcje scenariusza - Szczegóły scenariusza +STR_6754 :Opcje scenariusza - Ograniczenia terenu +STR_6755 :Pokaż opcje celów +STR_6756 :Pokaż opcje szczegółów scenariusza +STR_6757 :Pokaż opcje ograniczenia terenu +STR_6758 :Opcje pożyczki +STR_6759 :Model biznesowy +STR_6760 :Zarobki: +STR_6761 :Szczegóły scenariusza +STR_6762 :Interfejs +STR_6763 :RollerCoaster Tycoon 1 +STR_6764 :Zapisywanie i auto. zapisy +STR_6765 :Zaawansowane +STR_6766 :Wyczyść +STR_6767 :Okno +STR_6768 :Renderowanie +STR_6769 :Zachowanie +STR_6770 :Limit klatek/sek.: +STR_6771 :Prędkość wewnętrzna (domyślne) +STR_6772 :Synchronizacja pionowa +STR_6773 :Nielimitowane +STR_6774 :Czas od ostatniej inspekcji +STR_6775 :{COMMA16} minuta +STR_6776 :{COMMA16} minuty +STR_6777 :więcej niż 4 godziny +STR_6778 :Podgląd scenariuszy poprzez: +STR_6779 :Wybierz rodzaj obrazka podglądowego, który będzie używany na ekranie wyboru scenariusza. +STR_6780 :Miniatury map +STR_6781 :Zrzuty ekranu +STR_6782 :Powiadomienia parku +STR_6783 :Powiadomienia przejażdżki +STR_6784 :Powiadomienia gości +STR_6785 :Kontroler +STR_6786 :Martwa strefa: +STR_6787 :Martwa strefa gałki analogowej (minimalny wymagany ruch gałką) +STR_6788 :Czułość: +STR_6789 :Mnożnik czułości gałki analogowej +STR_6790 :Martwa strefa: {COMMA32}% +STR_6791 :Czułość: {COMMA32}% +STR_6792 :Budynki wejściowe +STR_6793 :Goście i pracownicy +STR_6794 :Scenerie i style +STR_6795 :{MOVE_X}{10}{STRINGID} +STR_6796 :•{MOVE_X}{10}{STRINGID} +STR_6797 :Brak podglądu +STR_6798 :Zrzut ekranu +STR_6799 :Miniatura mapy +STR_7000 :lub +STR_7001 :Nazwa przejażdżki +STR_7002 :{STRINGID} {STRINGID} +STR_7003 :Plik audio ‘{STRING}’ jest wybrakowany. Oczekiwano próbki {INT32}, ale jedynie {INT32} jest dostępna. Rozważ przeinstalowanie RCT2. +STR_7004 :Wymuś przerysowanie +STR_7005 :Przeciągnij obszar chodnika +STR_7006 :Rysuj ramkę wokół przycisków +STR_7007 :Rodzaj przejażdżki +STR_7008 :Nieznany rodzaj przejażdżki ({INT32}) +STR_7009 :Otrzymywanie skryptów… +STR_7010 :Nie udało się uruchomić powtórki, plik ‘{STRING}’ nie istnieje lub jest nieprawidłowy +STR_7011 :Nie udało się uruchomić powtórki +STR_7012 :Polski Złoty (zł) diff --git a/data/language/ru-RU.txt b/data/language/ru-RU.txt index b5ecffae102d..f0fc80cf5223 100644 --- a/data/language/ru-RU.txt +++ b/data/language/ru-RU.txt @@ -3822,3 +3822,7 @@ STR_7004 :Полная перерисовка STR_7006 :Бордюр на кнопках с изображениями STR_7007 :Тип аттр. STR_7008 :Неизвестный аттракцион ({INT32}) +STR_7009 :Скачиваются скрипты… +STR_7010 :Не могу запустить демо - файл «{STRING}» не существует или повреждён +STR_7011 :Не могу запустить демо +STR_7012 :Польские злотые (PLN) From 2f7a1bf651af24580b1e1e709824e916a6adf9fa Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sat, 13 Dec 2025 09:06:50 +0000 Subject: [PATCH 111/222] Fix land purchase selection grid colour not being white (#25642) --- distribution/changelog.txt | 1 + src/openrct2/paint/tile_element/Paint.Surface.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 6b490a94e10a..de24f0db4674 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -21,6 +21,7 @@ - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. +- Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index bf132c8cf918..c5edeb085cca 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -1136,7 +1136,7 @@ void PaintSurface(PaintSession& session, uint8_t direction, uint16_t height, con { auto [waterHeight, waterSurfaceShape] = SurfaceGetHeightAboveWater(tileElement, height, surfaceShape); - const auto fpId = FilterPaletteID::paletteGlassLightPurple; + const auto fpId = FilterPaletteID::paletteSceneryGroundMarker; const auto imageId1 = ImageId(SPR_TERRAIN_SELECTION_CORNER + Byte97B444[surfaceShape], fpId); PaintAttachToPreviousPS(session, imageId1, 0, 0); From 955ce1e3263ad6068420fe63a9cf76d07b33fdc2 Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 14 Dec 2025 02:44:20 +0000 Subject: [PATCH 112/222] Fix patrol area tool allowing right click removal of paths and scenery --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/LandRights.cpp | 1 - src/openrct2-ui/windows/PatrolArea.cpp | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index de24f0db4674..3b0df0f51575 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -22,6 +22,7 @@ - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. +- Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index 13ec9fd40010..134320c47a03 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -109,7 +109,6 @@ namespace OpenRCT2::Ui::Windows _landRightsMode = mode; ToolSet(*this, widgetIndex, Tool::upArrow); - gInputFlags.set(InputFlag::unk6); if (kLandRightsVisibleByMode[EnumValue(mode)]) ShowLandRights(); diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index 8c8f88ae6131..e05be57ae3c9 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -249,7 +249,6 @@ namespace OpenRCT2::Ui::Windows if (!ToolSet(*this, 0, Tool::walkDown)) { ShowGridlines(); - gInputFlags.set(InputFlag::unk6); SetPatrolAreaToRender(_staffId); GfxInvalidateScreen(); } From 6414cf26a34d622fc669cc4ee511d1dab394215a Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 14 Dec 2025 02:51:38 +0000 Subject: [PATCH 113/222] Rename InputFlag::unk6 to allowRightMouseRemoval --- src/openrct2-ui/interface/ViewportInteraction.cpp | 2 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- src/openrct2-ui/windows/EditorParkEntrance.cpp | 2 +- src/openrct2-ui/windows/Footpath.cpp | 8 ++++---- src/openrct2-ui/windows/Land.cpp | 2 +- src/openrct2-ui/windows/MazeConstruction.cpp | 2 +- src/openrct2-ui/windows/RideConstruction.cpp | 6 +++--- src/openrct2-ui/windows/Scenery.cpp | 4 ++-- src/openrct2-ui/windows/TrackDesignPlace.cpp | 2 +- src/openrct2-ui/windows/Water.cpp | 2 +- src/openrct2/Input.h | 4 +--- src/openrct2/interface/Window.cpp | 2 +- src/openrct2/ride/RideConstruction.cpp | 4 ++-- 13 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index 8a7d92cb94fb..a49ff97d735d 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -467,7 +467,7 @@ namespace OpenRCT2::Ui break; } - if (!gInputFlags.has(InputFlag::unk6) || !gInputFlags.has(InputFlag::toolActive)) + if (!gInputFlags.has(InputFlag::allowRightMouseRemoval) || !gInputFlags.has(InputFlag::toolActive)) { auto* windowMgr = GetWindowManager(); if (windowMgr->FindByClass(WindowClass::rideConstruction) == nullptr diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index e80a3f9a9b4b..201f1f42b204 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -384,7 +384,7 @@ namespace OpenRCT2::Ui::Windows ShowGridlines(); auto* toolWindow = ContextOpenWindow(WindowClass::clearScenery); ToolSet(*toolWindow, WIDX_BACKGROUND, Tool::bulldozer); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); } } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 6226bd5a05ae..4bc14ab6d7b3 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -272,7 +272,7 @@ namespace OpenRCT2::Ui::Windows pressedWidgets |= 1LL << WIDX_TAB; ToolSet(*this, WIDX_LIST, Tool::entranceDown); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); } void onMouseUp(WidgetIndex widgetIndex) override diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 30c087d756fa..7f89c3854052 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -241,7 +241,7 @@ namespace OpenRCT2::Ui::Windows ToolCancel(); _footpathConstructionMode = PathConstructionMode::onLand; ToolSet(*this, WIDX_CONSTRUCT_ON_LAND, Tool::pathDown); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); @@ -348,7 +348,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::enableConstruct); _footpathConstructionMode = PathConstructionMode::dragArea; ToolSet(*this, WIDX_CONSTRUCT_DRAG_AREA, Tool::pathDown); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); } @@ -372,7 +372,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::enableConstruct); _footpathConstructionMode = PathConstructionMode::onLand; ToolSet(*this, WIDX_CONSTRUCT_ON_LAND, Tool::pathDown); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); break; @@ -396,7 +396,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::enableConstruct); _footpathConstructionMode = PathConstructionMode::bridgeOrTunnelPick; ToolSet(*this, WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL, Tool::crosshair); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); break; diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index 84e4aa0a1bae..2aa570bd0146 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -895,7 +895,7 @@ namespace OpenRCT2::Ui::Windows ShowGridlines(); auto* toolWindow = ContextOpenWindow(WindowClass::land); ToolSet(*toolWindow, WIDX_BACKGROUND, Tool::digDown); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); } } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index d3ec79be040a..94aa0c51a151 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -319,7 +319,7 @@ namespace OpenRCT2::Ui::Windows : ENTRANCE_TYPE_RIDE_EXIT; gRideEntranceExitPlaceRideIndex = rideId; gRideEntranceExitPlaceStationIndex = StationIndex::FromUnderlying(0); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); RideConstructionInvalidateCurrentTrack(); diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index c9cae930844f..a4cfc2273889 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2508,7 +2508,7 @@ namespace OpenRCT2::Ui::Windows gRideEntranceExitPlaceType = ENTRANCE_TYPE_RIDE_ENTRANCE; gRideEntranceExitPlaceRideIndex = _currentRideIndex; gRideEntranceExitPlaceStationIndex = StationIndex::FromUnderlying(0); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); RideConstructionInvalidateCurrentTrack(); if (_rideConstructionState != RideConstructionState::EntranceExit) { @@ -2534,7 +2534,7 @@ namespace OpenRCT2::Ui::Windows gRideEntranceExitPlaceType = ENTRANCE_TYPE_RIDE_EXIT; gRideEntranceExitPlaceRideIndex = _currentRideIndex; gRideEntranceExitPlaceStationIndex = StationIndex::FromUnderlying(0); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); RideConstructionInvalidateCurrentTrack(); if (_rideConstructionState != RideConstructionState::EntranceExit) { @@ -3728,7 +3728,7 @@ namespace OpenRCT2::Ui::Windows if (w != nullptr) { ToolSet(*w, WIDX_CONSTRUCT, Tool::crosshair); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); _trackPlaceCtrlState = false; _trackPlaceShiftState = false; } diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 54708747a7db..417a22fb4eab 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -561,7 +561,7 @@ namespace OpenRCT2::Ui::Windows _inDragMode = false; ToolSet(*this, WIDX_SCENERY_BACKGROUND, Tool::arrow); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); } else { @@ -3506,7 +3506,7 @@ namespace OpenRCT2::Ui::Windows { auto* toolWindow = ContextOpenWindow(WindowClass::scenery); ToolSet(*toolWindow, WIDX_SCENERY_BACKGROUND, Tool::arrow); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); } } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index d4ed7035d38b..97d689e63dde 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -110,7 +110,7 @@ namespace OpenRCT2::Ui::Windows setWidgets(_trackPlaceWidgets); WindowInitScrollWidgets(*this); ToolSet(*this, WIDX_PRICE, Tool::crosshair); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); WindowPushOthersRight(*this); ShowGridlines(); _miniPreview.resize(kTrackMiniPreviewSize.width * kTrackMiniPreviewSize.height); diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index 0f534b51dffb..c427f593b97f 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -443,7 +443,7 @@ namespace OpenRCT2::Ui::Windows ShowGridlines(); auto* toolWindow = ContextOpenWindow(WindowClass::water); ToolSet(*toolWindow, WIDX_BACKGROUND, Tool::waterDown); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); } } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2/Input.h b/src/openrct2/Input.h index 04efdf88b421..7411b8cc34aa 100644 --- a/src/openrct2/Input.h +++ b/src/openrct2/Input.h @@ -33,9 +33,7 @@ namespace OpenRCT2 rightMousePressed, - // Some of the map tools (clear, footpath, scenery) - // never read as far as I know. - unk6, + allowRightMouseRemoval, viewportScrolling, }; diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 907f4b40e54b..01bb4699c6d1 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -678,7 +678,7 @@ static constexpr float kWindowScrollLocations[][2] = { gInputFlags.set(InputFlag::toolActive); gInputFlags.unset(InputFlag::leftMousePressed); - gInputFlags.unset(InputFlag::unk6); + gInputFlags.unset(InputFlag::allowRightMouseRemoval); gCurrentToolId = tool; gCurrentToolWidget.windowClassification = w.classification; gCurrentToolWidget.windowNumber = w.number; diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index b2cf3d09a9ca..de473eba302a 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -889,7 +889,7 @@ static bool ride_modify_entrance_or_exit(const CoordsXYE& tileElement) gRideEntranceExitPlaceType = entranceType; gRideEntranceExitPlaceRideIndex = rideIndex; gRideEntranceExitPlaceStationIndex = stationIndex; - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); if (_rideConstructionState != RideConstructionState::EntranceExit) { gRideEntranceExitPlacePreviousRideConstructionState = _rideConstructionState; @@ -1080,7 +1080,7 @@ int32_t RideInitialiseConstructionWindow(Ride& ride) w = ride_create_or_find_construction_window(ride.id); ToolSet(*w, WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT, Tool::crosshair); - gInputFlags.set(InputFlag::unk6); + gInputFlags.set(InputFlag::allowRightMouseRemoval); _currentlySelectedTrack = ride.getRideTypeDescriptor().StartTrackPiece; _currentTrackPitchEnd = TrackPitch::None; From 1517c9d9bf208ae40dc3bf1b7ef6e45fd7b99ca5 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Sun, 14 Dec 2025 04:14:19 +0000 Subject: [PATCH 114/222] Merge Localisation/master into OpenRCT2/develop --- data/language/nl-NL.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/language/nl-NL.txt b/data/language/nl-NL.txt index 6ced245c626b..551b0ea45f59 100644 --- a/data/language/nl-NL.txt +++ b/data/language/nl-NL.txt @@ -3426,7 +3426,7 @@ STR_6396 :Schermbeveiliging en -energiebesparing uitschakelen STR_6397 :Als dit is ingeschakeld, zal (zolang OpenRCT2 loopt) de schermbeveiliging niet worden ingeschakeld en gaat het scherm ook niet na verloop van tijd op zwart. STR_6398 :Bestand bevat niet-ondersteunde attractietypes. Update naar een nieuwere versie van OpenRCT2 om dit bestand te openen. STR_6399 :OpenRCT2 heeft bestanden van een RollerCoaster Tycoon 2-installatie nodig. Voer het pad naar de map waar de bestanden van RollerCoaster Tycoon 2 zich bevinden in bij de variabele “game_path” in config.ini. Start daarna OpenRCT2 opnieuw op. -STR_6400 :Ik heb offline GOG-installer voor RollerCoaster Tycoon 2 gedownload, maar nog niet geïnstalleerd +STR_6400 :Ik heb de offline GOG-installer voor RollerCoaster Tycoon 2 gedownload, maar nog niet geïnstalleerd STR_6401 :Ik heb RollerCoaster Tycoon 2 al geïnstalleerd STR_6402 :OpenRCT2-data instellen STR_6403 :Selecteer de optie die op je situatie van toepassing is: From 3c2c6c491ecab307c4f83c315fd5260decc3268b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Sun, 14 Dec 2025 23:29:41 +0200 Subject: [PATCH 115/222] Only log top level game actions and filter ghost ones --- src/openrct2/actions/GameAction.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index 3932532d1f0d..fc04e890d425 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -350,7 +350,10 @@ namespace OpenRCT2::GameActions } ActionLogContext logContext; - LogActionBegin(logContext, action); + if (topLevel && !flags.has(CommandFlag::ghost)) + { + LogActionBegin(logContext, action); + } // Execute the action, changing the game state result = action->Execute(gameState); @@ -362,8 +365,10 @@ namespace OpenRCT2::GameActions // Script hooks may now have changed the game action result... } #endif - - LogActionFinish(logContext, action, result); + if (topLevel && !flags.has(CommandFlag::ghost)) + { + LogActionFinish(logContext, action, result); + } // If not top level just give away the result. if (!topLevel) From d6d90775ff34c71548ccf94e9489409e2617f6d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Sun, 14 Dec 2025 23:32:39 +0200 Subject: [PATCH 116/222] Update changelog.txt --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index de24f0db4674..7d256fe68ef0 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -13,6 +13,7 @@ - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. +- Fix: [#25229] Excessive logging of game actions, reduced to top-level game actions and filters ghost related ones. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. - Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. From 572984472b1aee54be4d0057114a1560f77939a6 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Mon, 15 Dec 2025 04:16:13 +0000 Subject: [PATCH 117/222] Merge Localisation/master into OpenRCT2/develop --- data/language/hu-HU.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/language/hu-HU.txt b/data/language/hu-HU.txt index b6dfdef848f3..291399acfa5d 100644 --- a/data/language/hu-HU.txt +++ b/data/language/hu-HU.txt @@ -3835,3 +3835,7 @@ STR_7005 :Útterület építése húzással STR_7006 :Keret rajzolása a képgombok köré STR_7007 :Játéktípus STR_7008 :Ismeretlen játéktípus ({INT32}) +STR_7009 :Szkriptek fogadása… +STR_7010 :Nem sikerült elindítani a visszajátszást, „{STRING}” fájl nem létezik vagy érvénytelen +STR_7011 :Nem sikerült elindítani a visszajátszást +STR_7012 :Lengyel złoty (PLN) From 8399f140496536901a365ef5da722ec2da6f0ad3 Mon Sep 17 00:00:00 2001 From: Matti <25400788+MathiasDevelopes@users.noreply.github.com> Date: Mon, 15 Dec 2025 14:08:28 +0100 Subject: [PATCH 118/222] Remove now defunct OpenBSD ports link in README (#25653) Removed OpenBSD package link from readme.md --- readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.md b/readme.md index 66382241e2f5..22d9802cabba 100644 --- a/readme.md +++ b/readme.md @@ -85,7 +85,6 @@ Some Linux distributions offer native packages: Some \*BSD operating systems offer native packages: * FreeBSD: [games/openrct2](https://www.freshports.org/games/openrct2) -* OpenBSD: [games/openrct2](https://openports.se/games/openrct2) --- From a58d63ca905b62412266aaab886d7283694801ac Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Tue, 16 Dec 2025 04:12:10 +0000 Subject: [PATCH 119/222] Merge Localisation/master into OpenRCT2/develop --- data/language/pt-BR.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/language/pt-BR.txt b/data/language/pt-BR.txt index 14778594e478..9001150040cf 100644 --- a/data/language/pt-BR.txt +++ b/data/language/pt-BR.txt @@ -3835,3 +3835,7 @@ STR_7005 :Arrastar uma área de calçada STR_7006 :Desenhar borda ao redor dos botões com imagens STR_7007 :Tipo de Atração STR_7008 :Tipo de atração desconhecido ({INT32}) +STR_7009 :Recebendo scripts… +STR_7010 :Não foi possível iniciar o replay, o arquivo ‘{STRING}’ não existe ou é inválido +STR_7011 :Não foi possível iniciar o replay +STR_7012 :Złoty polonês (PLN) From d167605b39f2a6d532c7e161d9163c983d96bdf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Wed, 17 Dec 2025 16:50:44 +0200 Subject: [PATCH 120/222] Update contributors.md --- contributors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributors.md b/contributors.md index 53cd7ea96590..e4149d51e3d9 100644 --- a/contributors.md +++ b/contributors.md @@ -7,7 +7,6 @@ Includes all git commit authors. Aliases are GitHub usernames or community nickn * Michał Janiszewski (janisozaur) - Programming * Hielke Morsink (Broxzier) - Programming * Tulio Paschoalin Leao (tupaschoal) - Programming -* Matthias Moninger (ZehMatt) - Programming * Karst van Galen Last (AuraSpecs) - Lead OpenSoundEffects & OpenMusic * Michael Bernardi (mrmbernardi) - Programming * Michael Steenbeek (Gymnasiast) - Lead Localisation - Programming @@ -25,6 +24,7 @@ Includes all git commit authors. Aliases are GitHub usernames or community nickn * Richard Jenkins (rwjuk) * Rik Smeets (rik-smeets) * Olivier Wervers (Oli414) +* Matthias Moninger (ZehMatt) ## Long term contributors Appreciation for long term contributors to the project having provided substantial work. From 70c7a223d2180edfeed137fad5687417adb0be24 Mon Sep 17 00:00:00 2001 From: mix Date: Wed, 17 Dec 2025 21:48:02 +0000 Subject: [PATCH 121/222] Move import out of cli SpriteImageImport and return image file instead --- src/openrct2/command_line/sprite/SpriteAppend.cpp | 8 +++++--- src/openrct2/command_line/sprite/SpriteBuild.cpp | 11 +++++++---- src/openrct2/command_line/sprite/SpriteCommands.cpp | 8 ++------ src/openrct2/command_line/sprite/SpriteCommands.h | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/openrct2/command_line/sprite/SpriteAppend.cpp b/src/openrct2/command_line/sprite/SpriteAppend.cpp index a3a581da52f9..90e635d9c7e8 100644 --- a/src/openrct2/command_line/sprite/SpriteAppend.cpp +++ b/src/openrct2/command_line/sprite/SpriteAppend.cpp @@ -52,9 +52,11 @@ namespace OpenRCT2::CommandLine::Sprite constexpr uint8_t importFlags = EnumToFlag(ImportFlags::RLE); ImageImportMeta meta = { { xOffset, yOffset }, Palette::OpenRCT2, importFlags, spriteMode }; - auto importResult = SpriteImageImport(imagePath, meta); - if (!importResult.has_value()) + const auto image = SpriteImageLoad(imagePath, meta); + if (!image.has_value()) return -1; + ImageImporter importer; + auto importResult = importer.Import(image.value(), meta); auto spriteFile = SpriteFile::Open(spriteFilePath); if (!spriteFile.has_value()) @@ -63,7 +65,7 @@ namespace OpenRCT2::CommandLine::Sprite return -1; } - spriteFile->AddImage(importResult.value()); + spriteFile->AddImage(importResult); if (!spriteFile->Save(spriteFilePath)) return -1; diff --git a/src/openrct2/command_line/sprite/SpriteBuild.cpp b/src/openrct2/command_line/sprite/SpriteBuild.cpp index d3bf7428ea7d..13c85af74ccb 100644 --- a/src/openrct2/command_line/sprite/SpriteBuild.cpp +++ b/src/openrct2/command_line/sprite/SpriteBuild.cpp @@ -84,14 +84,17 @@ namespace OpenRCT2::CommandLine::Sprite auto imagePath = Path::GetAbsolute(Path::Combine(directoryPath, strPath)); - auto importResult = SpriteImageImport(imagePath, meta); - if (importResult == std::nullopt) + const auto image = SpriteImageLoad(imagePath, meta); + if (image == std::nullopt) { - fprintf(stderr, "Could not import image file: %s\nCanceling\n", imagePath.c_str()); + fprintf(stderr, "Could not read image file: %s\nCanceling\n", imagePath.c_str()); return -1; } - spriteFile.AddImage(importResult.value()); + ImageImporter importer; + auto importResult = importer.Import(image.value(), meta); + + spriteFile.AddImage(importResult); if (!silent) fprintf(stdout, "Added: %s\n", imagePath.c_str()); diff --git a/src/openrct2/command_line/sprite/SpriteCommands.cpp b/src/openrct2/command_line/sprite/SpriteCommands.cpp index 018261b725bc..ea28f4e67e66 100644 --- a/src/openrct2/command_line/sprite/SpriteCommands.cpp +++ b/src/openrct2/command_line/sprite/SpriteCommands.cpp @@ -162,7 +162,7 @@ namespace OpenRCT2::CommandLine::Sprite } } - std::optional SpriteImageImport(u8string_view path, ImageImportMeta meta) + std::optional SpriteImageLoad(u8string_view path, ImageImportMeta meta) { try { @@ -171,11 +171,7 @@ namespace OpenRCT2::CommandLine::Sprite { format = ImageFormat::png; } - - ImageImporter importer; - auto image = Imaging::ReadFromFile(path, format); - - return importer.Import(image, meta); + return Imaging::ReadFromFile(path, format); } catch (const std::exception& e) { diff --git a/src/openrct2/command_line/sprite/SpriteCommands.h b/src/openrct2/command_line/sprite/SpriteCommands.h index 0a24147e6b18..b80ea1deafcd 100644 --- a/src/openrct2/command_line/sprite/SpriteCommands.h +++ b/src/openrct2/command_line/sprite/SpriteCommands.h @@ -23,7 +23,7 @@ namespace OpenRCT2::CommandLine::Sprite { using namespace OpenRCT2::Drawing; bool SpriteImageExport(const G1Element& spriteElement, u8string_view outPath); - std::optional SpriteImageImport(u8string_view path, ImageImportMeta meta); + std::optional SpriteImageLoad(u8string_view path, ImageImportMeta meta); std::string PopStr(std::ostringstream& oss); int32_t append(const char** argv, int32_t argc, ImportMode spriteMode); From 3e7880f260915d02ce90cc80077702192cd50ad2 Mon Sep 17 00:00:00 2001 From: mix Date: Wed, 17 Dec 2025 23:28:47 +0000 Subject: [PATCH 122/222] Use hash map of images in cli sprite build command instead of reload --- .../command_line/sprite/SpriteBuild.cpp | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/openrct2/command_line/sprite/SpriteBuild.cpp b/src/openrct2/command_line/sprite/SpriteBuild.cpp index 13c85af74ccb..951313ab7861 100644 --- a/src/openrct2/command_line/sprite/SpriteBuild.cpp +++ b/src/openrct2/command_line/sprite/SpriteBuild.cpp @@ -62,6 +62,8 @@ namespace OpenRCT2::CommandLine::Sprite uint32_t numSuccessful = 0; + std::unordered_map images{}; + // Note: jsonSprite is deliberately left non-const: json_t behaviour changes when const for (auto& [jsonKey, jsonSprite] : jsonSprites.items()) { @@ -84,17 +86,28 @@ namespace OpenRCT2::CommandLine::Sprite auto imagePath = Path::GetAbsolute(Path::Combine(directoryPath, strPath)); - const auto image = SpriteImageLoad(imagePath, meta); - if (image == std::nullopt) + const auto image_iter = images.find(imagePath); + if (image_iter != images.end()) { - fprintf(stderr, "Could not read image file: %s\nCanceling\n", imagePath.c_str()); - return -1; + ImageImporter importer; + auto importResult = importer.Import(image_iter->second, meta); + spriteFile.AddImage(importResult); + } + else + { + const auto image = SpriteImageLoad(imagePath, meta); + if (image == std::nullopt) + { + fprintf(stderr, "Could not read image file: %s\nCanceling\n", imagePath.c_str()); + return -1; + } + images[imagePath] = image.value(); + + ImageImporter importer; + auto importResult = importer.Import(image.value(), meta); + + spriteFile.AddImage(importResult); } - - ImageImporter importer; - auto importResult = importer.Import(image.value(), meta); - - spriteFile.AddImage(importResult); if (!silent) fprintf(stdout, "Added: %s\n", imagePath.c_str()); From dbd14741a16447788e27f9a27c0ca9ecacd47768 Mon Sep 17 00:00:00 2001 From: mix Date: Wed, 17 Dec 2025 23:35:04 +0000 Subject: [PATCH 123/222] Add changelog entry for improved sprite build performance --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 59c3d3d38a7c..6b1b2c054f3c 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -6,6 +6,7 @@ - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. - Improved: [#25621] Added the Polish Złoty (PLN) to the list of available currencies. - Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. +- Improved: [#25662] The sprite build command is faster when building sprites from the same image file. - Change: [#21912] Toilet income is now categorised as shop sales instead of ride tickets. - Change: [#25403] Guests will not slide down the Spiral Slide if it's broken, even if they have already entered the ride structure. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. From d61682db1a16d7b9671555b380fbc72d6e4d71d7 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Thu, 18 Dec 2025 04:10:08 +0000 Subject: [PATCH 124/222] Merge Localisation/master into OpenRCT2/develop --- data/language/fr-FR.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data/language/fr-FR.txt b/data/language/fr-FR.txt index 88a01d4a5858..c889b511c9a7 100644 --- a/data/language/fr-FR.txt +++ b/data/language/fr-FR.txt @@ -3839,3 +3839,9 @@ STR_7003 :Le fichier audio « {STRING} » est tronqué. L’échantillon {I STR_7004 :Forcer le rendu STR_7005 :Remplir de chemin une zone STR_7006 :Dessiner une bordure autour des boutons-images +STR_7007 :Type d’attraction +STR_7008 :Type d’attraction inconnu ({INT32}) +STR_7012 :Złoty polonais (PLN) +STR_7009 :Réception des scripts… +STR_7010 :Impossible de jouer l’enregistrement, le fichier {SMALLFONT}{STRING}{MEDIUMFONT} n’existe pas ou est invalide +STR_7011 :Impossible de jouer l’enregistrement From a8e701695269f739bada214bed0fae84bd0ef824 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Fri, 19 Dec 2025 04:11:19 +0000 Subject: [PATCH 125/222] Merge Localisation/master into OpenRCT2/develop --- data/language/ca-ES.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data/language/ca-ES.txt b/data/language/ca-ES.txt index aff7bbf8c55a..ad23410ca79b 100644 --- a/data/language/ca-ES.txt +++ b/data/language/ca-ES.txt @@ -3839,3 +3839,8 @@ STR_7004 :Força que es torni a dibuixar STR_7005 :Dibuixa una àrea de camí STR_7006 :Dibuixa una vora al voltant de les imatges dels botons STR_7007 :Tipus d’atracció +STR_7008 :Tipus d’atracció desconegut ({INT32}) +STR_7009 :Es reben scripts nous… +STR_7010 :No s’ha pogut iniciar la repetició. El fitxer «{STRING}» no existeix o no és vàlid. +STR_7011 :No s’ha pogut iniciar la repetició. +STR_7012 :Złoty polonès (PLN) From 95c22476c9464be3f4d8d6b524986b4bd1aa5a34 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 16 Dec 2025 21:09:14 +0100 Subject: [PATCH 126/222] Moving scrolling text handling into its own namespace, fix usage of colour_t --- src/openrct2-ui/windows/Options.cpp | 3 +- src/openrct2/SpriteIds.h | 4 +- src/openrct2/actions/BannerPlaceAction.cpp | 2 +- src/openrct2/actions/BannerSetNameAction.cpp | 4 +- src/openrct2/actions/BannerSetStyleAction.cpp | 5 +- .../actions/LargeSceneryPlaceAction.cpp | 2 +- src/openrct2/actions/ParkSetNameAction.cpp | 2 +- src/openrct2/actions/RideDemolishAction.cpp | 4 +- src/openrct2/actions/RideSetNameAction.cpp | 4 +- src/openrct2/actions/SignSetNameAction.cpp | 4 +- src/openrct2/actions/WallPlaceAction.cpp | 2 +- src/openrct2/drawing/Drawing.Sprite.cpp | 2 +- src/openrct2/drawing/Drawing.String.cpp | 21 +- src/openrct2/drawing/Drawing.h | 10 - src/openrct2/drawing/Font.cpp | 3 +- src/openrct2/drawing/ScrollingText.cpp | 506 +++++++++--------- src/openrct2/drawing/ScrollingText.h | 33 +- src/openrct2/drawing/TextColour.cpp | 85 +++ src/openrct2/drawing/TextColour.h | 13 +- src/openrct2/interface/Colour.h | 25 +- src/openrct2/libopenrct2.vcxproj | 1 + src/openrct2/localisation/FormatCodes.cpp | 10 +- src/openrct2/localisation/FormatCodes.h | 4 +- src/openrct2/localisation/Language.cpp | 3 +- .../paint/tile_element/Paint.Banner.cpp | 4 +- .../paint/tile_element/Paint.Entrance.cpp | 7 +- .../paint/tile_element/Paint.LargeScenery.cpp | 2 +- .../paint/tile_element/Paint.Path.cpp | 3 +- .../paint/tile_element/Paint.Wall.cpp | 4 +- src/openrct2/rct12/RCT12.h | 12 +- .../bindings/world/ScTileElement.cpp | 4 +- src/openrct2/world/Banner.cpp | 2 +- src/openrct2/world/Banner.h | 2 +- 33 files changed, 457 insertions(+), 335 deletions(-) create mode 100644 src/openrct2/drawing/TextColour.cpp diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 3b7c55c607d4..95a0413f7d53 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -1072,7 +1073,7 @@ namespace OpenRCT2::Ui::Windows Config::Get().general.upperCaseBanners ^= 1; Config::Save(); invalidate(); - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); break; case WIDX_DISABLE_LIGHTNING_EFFECT_CHECKBOX: Config::Get().general.disableLightningEffect ^= 1; diff --git a/src/openrct2/SpriteIds.h b/src/openrct2/SpriteIds.h index 02c5c98864f0..f53b4f79f55d 100644 --- a/src/openrct2/SpriteIds.h +++ b/src/openrct2/SpriteIds.h @@ -23,7 +23,7 @@ enum : ImageIndex SPR_DEFAULT_PALETTE = 1532, SPR_SCROLLING_TEXT_LEGACY_START = 1542, - SPR_SCROLLING_TEXT_LEGACY_END = SPR_SCROLLING_TEXT_LEGACY_START + OpenRCT2::kMaxScrollingTextLegacyEntries, + SPR_SCROLLING_TEXT_LEGACY_END = SPR_SCROLLING_TEXT_LEGACY_START + OpenRCT2::Drawing::ScrollingText::kMaxLegacyEntries, SPR_SCROLLING_TEXT_DEFAULT = 1574, SPR_EDGE_ROCK_BASE = 1579, @@ -1807,7 +1807,7 @@ enum : ImageIndex SPR_CSG_END = SPR_CSG_BEGIN + OpenRCT2::RCT1::Limits::kNumLLCsgEntries, SPR_SCROLLING_TEXT_START = SPR_CSG_END, - SPR_SCROLLING_TEXT_END = SPR_SCROLLING_TEXT_START + OpenRCT2::kMaxScrollingTextEntries, + SPR_SCROLLING_TEXT_END = SPR_SCROLLING_TEXT_START + OpenRCT2::Drawing::ScrollingText::kMaxEntries, SPR_IMAGE_LIST_LENGTH = 1000000, SPR_IMAGE_LIST_BEGIN = SPR_SCROLLING_TEXT_END, diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index a47eb9bdfc07..a101a2d4d1d8 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -138,7 +138,7 @@ namespace OpenRCT2::GameActions } banner->flags = {}; banner->text = {}; - banner->textColour = TextColour::white; + banner->textColour = Drawing::TextColour::white; banner->type = _bannerType; // Banner must be deleted after this point in an early return banner->colour = _primaryColour; banner->position = TileCoordsXY(_loc); diff --git a/src/openrct2/actions/BannerSetNameAction.cpp b/src/openrct2/actions/BannerSetNameAction.cpp index ea0f33b072b6..af0c879c7af5 100644 --- a/src/openrct2/actions/BannerSetNameAction.cpp +++ b/src/openrct2/actions/BannerSetNameAction.cpp @@ -12,7 +12,7 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../core/String.hpp" -#include "../drawing/Drawing.h" +#include "../drawing/ScrollingText.h" #include "../localisation/StringIds.h" #include "../windows/Intent.h" #include "../world/Banner.h" @@ -92,7 +92,7 @@ namespace OpenRCT2::GameActions intent.PutExtra(INTENT_EXTRA_BANNER_INDEX, _bannerIndex); ContextBroadcastIntent(&intent); - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); GfxInvalidateScreen(); return Result(); diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index f1649a3ff3ac..2048edbcd416 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -11,6 +11,7 @@ #include "../Context.h" #include "../Diagnostic.h" +#include "../drawing/ScrollingText.h" #include "../localisation/StringIdType.h" #include "../management/Finance.h" #include "../windows/Intent.h" @@ -148,7 +149,7 @@ namespace OpenRCT2::GameActions banner->colour = _parameter; break; case BannerSetStyleType::TextColour: - banner->textColour = static_cast(_parameter); + banner->textColour = static_cast(_parameter); break; case BannerSetStyleType::NoEntry: { @@ -177,7 +178,7 @@ namespace OpenRCT2::GameActions intent.PutExtra(INTENT_EXTRA_BANNER_INDEX, _bannerIndex); ContextBroadcastIntent(&intent); - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); GfxInvalidateScreen(); return res; diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 42e7a7905902..2c8803544085 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -242,7 +242,7 @@ namespace OpenRCT2::GameActions banner->text = {}; banner->colour = 2; - banner->textColour = TextColour::white; + banner->textColour = Drawing::TextColour::white; banner->flags = { BannerFlag::isLargeScenery }; banner->type = 0; banner->position = TileCoordsXY(_loc); diff --git a/src/openrct2/actions/ParkSetNameAction.cpp b/src/openrct2/actions/ParkSetNameAction.cpp index a6efd25cc899..95b4ea1a3f4f 100644 --- a/src/openrct2/actions/ParkSetNameAction.cpp +++ b/src/openrct2/actions/ParkSetNameAction.cpp @@ -60,7 +60,7 @@ namespace OpenRCT2::GameActions if (_name != park.name) { park.name = _name; - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); GfxInvalidateScreen(); } return Result(); diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index ed83567e8f27..e8237b1c4fc3 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -14,7 +14,7 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../core/MemoryStream.h" -#include "../drawing/Drawing.h" +#include "../drawing/ScrollingText.h" #include "../entity/EntityList.h" #include "../management/NewsItem.h" #include "../peep/RideUseSystem.h" @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions windowMgr->BroadcastIntent(Intent(INTENT_ACTION_REFRESH_RIDE_LIST)); windowMgr->BroadcastIntent(Intent(INTENT_ACTION_REFRESH_GUEST_LIST)); - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); GfxInvalidateScreen(); return res; diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index bd6540c26bd9..1d6427d99bf0 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -13,7 +13,7 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../core/MemoryStream.h" -#include "../drawing/Drawing.h" +#include "../drawing/ScrollingText.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" #include "../ui/WindowManager.h" @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions ride->customName = _name; } - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); GfxInvalidateScreen(); // Refresh windows that display ride name diff --git a/src/openrct2/actions/SignSetNameAction.cpp b/src/openrct2/actions/SignSetNameAction.cpp index 8c0aaa68bd91..687d691d0f47 100644 --- a/src/openrct2/actions/SignSetNameAction.cpp +++ b/src/openrct2/actions/SignSetNameAction.cpp @@ -11,7 +11,7 @@ #include "../Context.h" #include "../Diagnostic.h" -#include "../drawing/Drawing.h" +#include "../drawing/ScrollingText.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" #include "../world/Banner.h" @@ -108,7 +108,7 @@ namespace OpenRCT2::GameActions } } - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); GfxInvalidateScreen(); return Result(); } diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index a48c75550549..128141886aea 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -347,7 +347,7 @@ namespace OpenRCT2::GameActions banner->text = {}; banner->colour = COLOUR_WHITE; - banner->textColour = TextColour::white; + banner->textColour = Drawing::TextColour::white; banner->flags = { BannerFlag::isWall }; banner->type = 0; // Banner must be deleted after this point in an early return banner->position = TileCoordsXY(_loc); diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 5bd630f0fb6d..64fa0b3833e7 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -437,7 +437,7 @@ static Gx _g2 = {}; static Gx _fonts = {}; static Gx _tracks = {}; static Gx _csg = {}; -static G1Element _scrollingText[kMaxScrollingTextEntries]{}; +static G1Element _scrollingText[Drawing::ScrollingText::kMaxEntries]{}; static bool _csgLoaded = false; static G1Element _g1Temp = {}; diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 0c151260f52e..7b9a634bc974 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -274,25 +274,20 @@ void GfxDrawStringLeftCentred( /** * Changes the palette so that the next character changes colour */ -static void ColourCharacter(TextColour colour, bool withOutline, uint8_t* palette_pointer) +static void ColourCharacter(Drawing::TextColour colour, bool withOutline, uint8_t* palette_pointer) { - int32_t colour32 = 0; - const G1Element* g1 = GfxGetG1Element(SPR_TEXT_PALETTE); - if (g1 != nullptr) - { - uint32_t idx = EnumValue(colour) * 4; - std::memcpy(&colour32, &g1->offset[idx], sizeof(colour32)); - } + auto mapping = Drawing::getTextColourMapping(colour); if (!withOutline) { - colour32 = colour32 & 0x0FF0000FF; + mapping.sunnyOutline = PaletteIndex::pi0; + mapping.shadowOutline = PaletteIndex::pi0; } // Adjust text palette. Store current colour? - palette_pointer[1] = colour32 & 0xFF; - palette_pointer[2] = (colour32 >> 8) & 0xFF; - palette_pointer[3] = (colour32 >> 16) & 0xFF; - palette_pointer[4] = (colour32 >> 24) & 0xFF; + palette_pointer[1] = mapping.fill; + palette_pointer[2] = mapping.sunnyOutline; + palette_pointer[3] = mapping.shadowOutline; + palette_pointer[4] = PaletteIndex::pi0; } /** diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index ca70996546b4..7d8f84e80af8 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -454,8 +454,6 @@ void FASTCALL BlitPixels(const uint8_t* src, uint8_t* dst, const PaletteMap& pal constexpr uint8_t kPaletteTotalOffsets = 192; -constexpr int8_t kMaxScrollingTextModes = 38; - extern OpenRCT2::Drawing::GamePalette gPalette; extern OpenRCT2::Drawing::GamePalette gGamePalette; extern uint32_t gPaletteEffectFrame; @@ -537,19 +535,11 @@ void TTFDrawString( RenderTarget& rt, const_utf8string text, ColourWithFlags colour, const ScreenCoordsXY& coords, bool noFormatting, FontStyle fontStyle, TextDarkness darkness); -// scrolling text -void ScrollingTextInitialiseBitmaps(); -void ScrollingTextInvalidate(); - namespace OpenRCT2 { class Formatter; } -ImageId ScrollingTextSetup( - struct PaintSession& session, StringId stringId, OpenRCT2::Formatter& ft, uint16_t scroll, uint16_t scrollingMode, - colour_t colour); - size_t G1CalculateDataSize(const G1Element* g1); void MaskScalar( diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp index 41744bd777ae..5ddfdc0218de 100644 --- a/src/openrct2/drawing/Font.cpp +++ b/src/openrct2/drawing/Font.cpp @@ -17,6 +17,7 @@ #include "../localisation/LocalisationService.h" #include "../rct12/CSChar.h" #include "Drawing.h" +#include "ScrollingText.h" #include "TTF.h" #include @@ -279,7 +280,7 @@ void FontSpriteInitialiseCharacters() } } - ScrollingTextInitialiseBitmaps(); + Drawing::ScrollingText::initialiseBitmaps(); } int32_t FontSpriteGetCodepointOffset(int32_t codepoint) diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index 1f1f463b152e..64c37defc4b1 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -27,140 +27,142 @@ using namespace OpenRCT2; -struct DrawScrollText +namespace OpenRCT2::Drawing::ScrollingText { - StringId string_id; - uint8_t string_args[32]; - colour_t colour; - uint16_t position; - uint16_t mode; - uint32_t id; - uint8_t bitmap[64 * 40]; -}; - -static DrawScrollText _drawScrollTextList[OpenRCT2::kMaxScrollingTextEntries]; -static uint8_t _characterBitmaps[SPR_FONTS_GLYPH_COUNT][8]; -static uint32_t _drawSCrollNextIndex = 0; -static std::mutex _scrollingTextMutex; + struct DrawScrollText + { + StringId string_id; + uint8_t string_args[32]; + PaletteIndex colour; + uint16_t position; + uint16_t mode; + uint32_t id; + uint8_t bitmap[64 * 40]; + }; -static void ScrollingTextSetBitmapForSprite( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, colour_t colour); -static void ScrollingTextSetBitmapForTTF( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, colour_t colour); + static DrawScrollText _drawScrollTextList[kMaxEntries]; + static uint8_t _characterBitmaps[SPR_FONTS_GLYPH_COUNT][8]; + static uint32_t _drawSCrollNextIndex = 0; + static std::mutex _mutex; -static void ScrollingTextInitialiseCharacterBitmaps(uint32_t glyphStart, uint16_t count) -{ - uint8_t drawingSurface[64]; - RenderTarget rt; - rt.bits = reinterpret_cast(&drawingSurface); - rt.width = 8; - rt.height = 8; + static void setBitmapForSprite( + std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour); + static void setBitmapForTTF( + std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour); - for (int32_t i = 0; i < count; i++) + static void initialiseCharacterBitmaps(uint32_t glyphStart, uint16_t count) { - std::fill_n(drawingSurface, sizeof(drawingSurface), 0x00); - GfxDrawSpriteSoftware(rt, ImageId(glyphStart + (EnumValue(FontStyle::tiny) * count) + i), { -1, 0 }); + uint8_t drawingSurface[64]; + RenderTarget rt; + rt.bits = reinterpret_cast(&drawingSurface); + rt.width = 8; + rt.height = 8; - for (int32_t x = 0; x < 8; x++) + for (int32_t i = 0; i < count; i++) { - uint8_t val = 0; - for (int32_t y = 0; y < 8; y++) + std::fill_n(drawingSurface, sizeof(drawingSurface), 0x00); + GfxDrawSpriteSoftware(rt, ImageId(glyphStart + (EnumValue(FontStyle::tiny) * count) + i), { -1, 0 }); + + for (int32_t x = 0; x < 8; x++) { - val >>= 1; - uint8_t pixel = rt.bits[x + y * 8]; - if (pixel == 1) + uint8_t val = 0; + for (int32_t y = 0; y < 8; y++) { - val |= 0x80; + val >>= 1; + uint8_t pixel = rt.bits[x + y * 8]; + if (pixel == 1) + { + val |= 0x80; + } } + _characterBitmaps[i][x] = val; } - _characterBitmaps[i][x] = val; } - } -}; + }; -static void ScrollingTextInitialiseScrollingText() -{ - for (int32_t i = 0; i < OpenRCT2::kMaxScrollingTextEntries; i++) + static void initialiseScrollingText() { - const int32_t imageId = SPR_SCROLLING_TEXT_START + i; + for (int32_t i = 0; i < kMaxEntries; i++) + { + const int32_t imageId = SPR_SCROLLING_TEXT_START + i; - // Initialize the scrolling text sprite. - G1Element g1{}; - g1.offset = _drawScrollTextList[i].bitmap; - g1.x_offset = -32; - g1.y_offset = 0; - g1.flags = G1_FLAG_HAS_TRANSPARENCY; - g1.width = 64; - g1.height = 40; - g1.offset[0] = 0xFF; - g1.offset[1] = 0xFF; - g1.offset[14] = 0; - g1.offset[15] = 0; - g1.offset[16] = 0; - g1.offset[17] = 0; + // Initialize the scrolling text sprite. + G1Element g1{}; + g1.offset = _drawScrollTextList[i].bitmap; + g1.x_offset = -32; + g1.y_offset = 0; + g1.flags = G1_FLAG_HAS_TRANSPARENCY; + g1.width = 64; + g1.height = 40; + g1.offset[0] = 0xFF; + g1.offset[1] = 0xFF; + g1.offset[14] = 0; + g1.offset[15] = 0; + g1.offset[16] = 0; + g1.offset[17] = 0; - GfxSetG1Element(imageId, &g1); + GfxSetG1Element(imageId, &g1); + } } -} -void ScrollingTextInitialiseBitmaps() -{ - ScrollingTextInitialiseCharacterBitmaps(SPR_FONTS_BEGIN, SPR_FONTS_GLYPH_COUNT); - ScrollingTextInitialiseScrollingText(); -} + void initialiseBitmaps() + { + initialiseCharacterBitmaps(SPR_FONTS_BEGIN, SPR_FONTS_GLYPH_COUNT); + initialiseScrollingText(); + } -static uint8_t* FontSpriteGetCodepointBitmap(int32_t codepoint) -{ - auto offset = FontSpriteGetCodepointOffset(codepoint); - return _characterBitmaps[offset]; -} + static uint8_t* FontSpriteGetCodepointBitmap(int32_t codepoint) + { + auto offset = FontSpriteGetCodepointOffset(codepoint); + return _characterBitmaps[offset]; + } -static int32_t ScrollingTextGetMatchingOrOldest( - StringId stringId, Formatter& ft, uint16_t scroll, uint16_t scrollingMode, colour_t colour) -{ - uint32_t oldestId = 0xFFFFFFFF; - int32_t scrollIndex = -1; - for (size_t i = 0; i < std::size(_drawScrollTextList); i++) + static int32_t getMatchingOrOldest( + StringId stringId, Formatter& ft, uint16_t scroll, uint16_t scrollingMode, PaletteIndex colour) { - DrawScrollText* scrollText = &_drawScrollTextList[i]; - if (oldestId >= scrollText->id) + uint32_t oldestId = 0xFFFFFFFF; + int32_t scrollIndex = -1; + for (size_t i = 0; i < std::size(_drawScrollTextList); i++) { - oldestId = scrollText->id; - scrollIndex = static_cast(i); - } + DrawScrollText* scrollText = &_drawScrollTextList[i]; + if (oldestId >= scrollText->id) + { + oldestId = scrollText->id; + scrollIndex = static_cast(i); + } - // If exact match return the matching index - if (scrollText->string_id == stringId - && std::memcmp(scrollText->string_args, ft.Buf(), sizeof(scrollText->string_args)) == 0 - && scrollText->colour == colour && scrollText->position == scroll && scrollText->mode == scrollingMode) - { - scrollText->id = _drawSCrollNextIndex; - return static_cast(i + SPR_SCROLLING_TEXT_START); + // If exact match return the matching index + if (scrollText->string_id == stringId + && std::memcmp(scrollText->string_args, ft.Buf(), sizeof(scrollText->string_args)) == 0 + && scrollText->colour == colour && scrollText->position == scroll && scrollText->mode == scrollingMode) + { + scrollText->id = _drawSCrollNextIndex; + return static_cast(i + SPR_SCROLLING_TEXT_START); + } } + return scrollIndex; } - return scrollIndex; -} -static void ScrollingTextFormat(utf8* dst, size_t size, DrawScrollText* scrollText) -{ - if (Config::Get().general.upperCaseBanners) + static void format(utf8* dst, size_t size, DrawScrollText* scrollText) { - FormatStringToUpper(dst, size, scrollText->string_id, scrollText->string_args); - } - else - { - FormatStringLegacy(dst, size, scrollText->string_id, scrollText->string_args); + if (Config::Get().general.upperCaseBanners) + { + FormatStringToUpper(dst, size, scrollText->string_id, scrollText->string_args); + } + else + { + FormatStringLegacy(dst, size, scrollText->string_id, scrollText->string_args); + } } -} -extern bool TempForScrollText; + extern bool TempForScrollText; -consteval int16_t ScrollPos(const int16_t x, const int16_t y) -{ - return y * 64 + x; -} + consteval int16_t ScrollPos(const int16_t x, const int16_t y) + { + return y * 64 + x; + } -// clang-format off + // clang-format off static constexpr int16_t kScrollPos0[] = { ScrollPos( 35, 12 ), ScrollPos( 36, 12 ), @@ -1380,7 +1382,7 @@ static constexpr int16_t kScrollPos37[] = { -1, }; -static constexpr const int16_t* kScrollPositions[kMaxScrollingTextModes] = { +static constexpr const int16_t* kScrollPositions[kMaxModes] = { kScrollPos0, kScrollPos1, kScrollPos2, @@ -1420,213 +1422,207 @@ static constexpr const int16_t* kScrollPositions[kMaxScrollingTextModes] = { kScrollPos36, kScrollPos37, }; -// clang-format on + // clang-format on -void ScrollingTextInvalidate() -{ - for (auto& scrollText : _drawScrollTextList) + void invalidate() { - scrollText.string_id = 0; - std::memset(scrollText.string_args, 0, sizeof(scrollText.string_args)); + for (auto& scrollText : _drawScrollTextList) + { + scrollText.string_id = 0; + std::memset(scrollText.string_args, 0, sizeof(scrollText.string_args)); + } } -} -ImageId ScrollingTextSetup( - PaintSession& session, StringId stringId, Formatter& ft, uint16_t scroll, uint16_t scrollingMode, colour_t colour) -{ - std::scoped_lock lock(_scrollingTextMutex); - - assert(scrollingMode < kMaxScrollingTextModes); + ImageId setup( + PaintSession& session, StringId stringId, Formatter& ft, uint16_t scroll, uint16_t scrollingMode, PaletteIndex colour) + { + std::scoped_lock lock(_mutex); - if (session.DPI.zoom_level > ZoomLevel{ 0 }) - return ImageId(SPR_SCROLLING_TEXT_DEFAULT); + assert(scrollingMode < kMaxModes); - _drawSCrollNextIndex++; - ft.Rewind(); - uint32_t scrollIndex = ScrollingTextGetMatchingOrOldest(stringId, ft, scroll, scrollingMode, colour); - if (scrollIndex >= SPR_SCROLLING_TEXT_START) - return ImageId(scrollIndex); + if (session.DPI.zoom_level > ZoomLevel{ 0 }) + return ImageId(SPR_SCROLLING_TEXT_DEFAULT); - // Setup scrolling text - auto scrollText = &_drawScrollTextList[scrollIndex]; - scrollText->string_id = stringId; - std::memcpy(scrollText->string_args, ft.Buf(), sizeof(scrollText->string_args)); - scrollText->colour = colour; - scrollText->position = scroll; - scrollText->mode = scrollingMode; - scrollText->id = _drawSCrollNextIndex; + _drawSCrollNextIndex++; + ft.Rewind(); + uint32_t scrollIndex = getMatchingOrOldest(stringId, ft, scroll, scrollingMode, colour); + if (scrollIndex >= SPR_SCROLLING_TEXT_START) + return ImageId(scrollIndex); - // Create the string to draw - utf8 scrollString[256]; - ScrollingTextFormat(scrollString, 256, scrollText); + // Setup scrolling text + auto scrollText = &_drawScrollTextList[scrollIndex]; + scrollText->string_id = stringId; + std::memcpy(scrollText->string_args, ft.Buf(), sizeof(scrollText->string_args)); + scrollText->colour = colour; + scrollText->position = scroll; + scrollText->mode = scrollingMode; + scrollText->id = _drawSCrollNextIndex; - const int16_t* scrollingModePositions = kScrollPositions[scrollingMode]; + // Create the string to draw + utf8 scrollString[256]; + format(scrollString, 256, scrollText); - std::fill_n(scrollText->bitmap, 320 * 8, 0x00); - if (LocalisationService_UseTrueTypeFont()) - { - ScrollingTextSetBitmapForTTF(scrollString, scroll, scrollText->bitmap, scrollingModePositions, colour); - } - else - { - ScrollingTextSetBitmapForSprite(scrollString, scroll, scrollText->bitmap, scrollingModePositions, colour); - } + const int16_t* scrollingModePositions = kScrollPositions[scrollingMode]; - uint32_t imageId = SPR_SCROLLING_TEXT_START + scrollIndex; - DrawingEngineInvalidateImage(imageId); - return ImageId(imageId); -} + std::fill_n(scrollText->bitmap, 320 * 8, 0x00); + if (LocalisationService_UseTrueTypeFont()) + { + setBitmapForTTF(scrollString, scroll, scrollText->bitmap, scrollingModePositions, colour); + } + else + { + setBitmapForSprite(scrollString, scroll, scrollText->bitmap, scrollingModePositions, colour); + } -static void ScrollingTextSetBitmapForSprite( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, colour_t colour) -{ - auto characterColour = colour; - auto fmt = FmtString(text); + uint32_t imageId = SPR_SCROLLING_TEXT_START + scrollIndex; + DrawingEngineInvalidateImage(imageId); + return ImageId(imageId); + } - // Repeat string a maximum of four times (eliminates possibility of infinite loop) - for (auto i = 0; i < 4; i++) + static void setBitmapForSprite( + std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour) { - for (const auto& token : fmt) + auto characterColour = colour; + auto fmt = FmtString(text); + + // Repeat string a maximum of four times (eliminates possibility of infinite loop) + for (auto i = 0; i < 4; i++) { - if (token.IsLiteral()) + for (const auto& token : fmt) { - CodepointView codepoints(token.text); - for (auto codepoint : codepoints) + if (token.IsLiteral()) { - auto characterWidth = FontSpriteGetCodepointWidth(FontStyle::tiny, codepoint); - auto characterBitmap = FontSpriteGetCodepointBitmap(codepoint); - for (; characterWidth != 0; characterWidth--, characterBitmap++) + CodepointView codepoints(token.text); + for (auto codepoint : codepoints) { - // Skip any non-displayed columns - if (scroll != 0) + auto characterWidth = FontSpriteGetCodepointWidth(FontStyle::tiny, codepoint); + auto characterBitmap = FontSpriteGetCodepointBitmap(codepoint); + for (; characterWidth != 0; characterWidth--, characterBitmap++) { - scroll--; - continue; - } + // Skip any non-displayed columns + if (scroll != 0) + { + scroll--; + continue; + } - int16_t scrollPosition = *scrollPositionOffsets; - if (scrollPosition == -1) - return; + int16_t scrollPosition = *scrollPositionOffsets; + if (scrollPosition == -1) + return; - if (scrollPosition > -1) - { - auto dst = &bitmap[scrollPosition]; - for (uint8_t char_bitmap = *characterBitmap; char_bitmap != 0; char_bitmap >>= 1) + if (scrollPosition > -1) { - if (char_bitmap & 1) - *dst = characterColour; + auto dst = &bitmap[scrollPosition]; + for (uint8_t char_bitmap = *characterBitmap; char_bitmap != 0; char_bitmap >>= 1) + { + if (char_bitmap & 1) + *dst = characterColour; - // Jump to next row - dst += 64; + // Jump to next row + dst += 64; + } } + scrollPositionOffsets++; } - scrollPositionOffsets++; } } - } - else if (FormatTokenIsColour(token.kind)) - { - auto g1 = GfxGetG1Element(SPR_TEXT_PALETTE); - if (g1 != nullptr) + else if (FormatTokenIsColour(token.kind)) { auto colourIndex = FormatTokenToTextColour(token.kind); - characterColour = g1->offset[EnumValue(colourIndex) * 4]; + characterColour = getTextColourMapping(colourIndex).fill; } } } } -} -static void ScrollingTextSetBitmapForTTF( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, colour_t colour) -{ -#ifndef DISABLE_TTF - auto fontDesc = TTFGetFontFromSpriteBase(FontStyle::tiny); - if (fontDesc->font == nullptr) - { - ScrollingTextSetBitmapForSprite(text, scroll, bitmap, scrollPositionOffsets, colour); - return; - } - - thread_local std::string ttfBuffer; - ttfBuffer.clear(); - - auto fmt = FmtString(text); - for (const auto& token : fmt) + static void setBitmapForTTF( + std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour) { - if (token.IsLiteral()) +#ifndef DISABLE_TTF + auto fontDesc = TTFGetFontFromSpriteBase(FontStyle::tiny); + if (fontDesc->font == nullptr) { - ttfBuffer.append(token.text); + setBitmapForSprite(text, scroll, bitmap, scrollPositionOffsets, colour); + return; } - else if (FormatTokenIsColour(token.kind)) + + thread_local std::string ttfBuffer; + ttfBuffer.clear(); + + auto fmt = FmtString(text); + for (const auto& token : fmt) { - auto g1 = GfxGetG1Element(SPR_TEXT_PALETTE); - if (g1 != nullptr) + if (token.IsLiteral()) + { + ttfBuffer.append(token.text); + } + else if (FormatTokenIsColour(token.kind)) { auto colourIndex = FormatTokenToTextColour(token.kind); - colour = g1->offset[EnumValue(colourIndex) * 4]; + colour = getTextColourMapping(colourIndex).fill; } } - } - auto surface = TTFSurfaceCacheGetOrAdd(fontDesc->font, ttfBuffer.c_str()); - if (surface == nullptr) - { - return; - } + auto surface = TTFSurfaceCacheGetOrAdd(fontDesc->font, ttfBuffer.c_str()); + if (surface == nullptr) + { + return; + } - int32_t width = surface->w; - auto src = static_cast(surface->pixels); + int32_t width = surface->w; + auto src = static_cast(surface->pixels); - // Pitch offset - src += 2 * width; + // Pitch offset + src += 2 * width; - // Line height offset - int32_t min_vpos = -fontDesc->offset_y; - int32_t max_vpos = std::min(surface->h - 2, min_vpos + 7); + // Line height offset + int32_t min_vpos = -fontDesc->offset_y; + int32_t max_vpos = std::min(surface->h - 2, min_vpos + 7); - bool use_hinting = Config::Get().fonts.enableHinting && fontDesc->hinting_threshold > 0; + bool use_hinting = Config::Get().fonts.enableHinting && fontDesc->hinting_threshold > 0; - for (int32_t x = 0;; x++) - { - if (x >= width) - x = 0; - - // Skip any non-displayed columns - if (scroll == 0) + for (int32_t x = 0;; x++) { - int16_t scrollPosition = *scrollPositionOffsets; - if (scrollPosition == -1) - return; + if (x >= width) + x = 0; - if (scrollPosition > -1) + // Skip any non-displayed columns + if (scroll == 0) { - uint8_t* dst = &bitmap[scrollPosition]; + int16_t scrollPosition = *scrollPositionOffsets; + if (scrollPosition == -1) + return; - for (int32_t y = min_vpos; y < max_vpos; y++) + if (scrollPosition > -1) { - uint8_t src_pixel = src[y * width + x]; - if ((!use_hinting && src_pixel != 0) || src_pixel > 140) - { - // Centre of the glyph: use full colour. - *dst = colour; - } - else if (use_hinting && src_pixel > fontDesc->hinting_threshold) + uint8_t* dst = &bitmap[scrollPosition]; + + for (int32_t y = min_vpos; y < max_vpos; y++) { - // Simulate font hinting by shading the background colour instead. - *dst = BlendColours(colour, *dst); - } + uint8_t src_pixel = src[y * width + x]; + if ((!use_hinting && src_pixel != 0) || src_pixel > 140) + { + // Centre of the glyph: use full colour. + *dst = colour; + } + else if (use_hinting && src_pixel > fontDesc->hinting_threshold) + { + // Simulate font hinting by shading the background colour instead. + *dst = BlendColours(colour, *dst); + } - // Jump to next row - dst += 64; + // Jump to next row + dst += 64; + } } + scrollPositionOffsets++; + } + else + { + scroll--; } - scrollPositionOffsets++; - } - else - { - scroll--; } - } #endif // DISABLE_TTF -} + } + +} // namespace OpenRCT2::Drawing::ScrollingText diff --git a/src/openrct2/drawing/ScrollingText.h b/src/openrct2/drawing/ScrollingText.h index 014003c41165..2c5f5fe46e63 100644 --- a/src/openrct2/drawing/ScrollingText.h +++ b/src/openrct2/drawing/ScrollingText.h @@ -1,8 +1,35 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + #pragma once +#include + +enum PaletteIndex : uint8_t; +struct ImageId; +struct PaintSession; +using StringId = uint16_t; + namespace OpenRCT2 { - static auto constexpr kMaxScrollingTextLegacyEntries = 32; - static auto constexpr kMaxScrollingTextEntries = 256; + class Formatter; +} + +namespace OpenRCT2::Drawing::ScrollingText +{ + static auto constexpr kMaxLegacyEntries = 32; + static auto constexpr kMaxEntries = 256; + constexpr int8_t kMaxModes = 38; -} // namespace OpenRCT2 + void initialiseBitmaps(); + void invalidate(); + ImageId setup( + PaintSession& session, StringId stringId, OpenRCT2::Formatter& ft, uint16_t scroll, uint16_t scrollingMode, + PaletteIndex colour); +} // namespace OpenRCT2::Drawing::ScrollingText diff --git a/src/openrct2/drawing/TextColour.cpp b/src/openrct2/drawing/TextColour.cpp new file mode 100644 index 000000000000..99d02dffd968 --- /dev/null +++ b/src/openrct2/drawing/TextColour.cpp @@ -0,0 +1,85 @@ + +#include "TextColour.h" + +#include + +namespace OpenRCT2::Drawing +{ + static std::array kTextColourToPaletteIndex = { { + { + PaletteIndex::pi10, + PaletteIndex::pi0, + PaletteIndex::pi0, + }, + { + PaletteIndex::pi18, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi21, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi173, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi102, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi55, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi187, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi152, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi139, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi164, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi43, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi69, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi199, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + { + PaletteIndex::pi223, + PaletteIndex::pi10, + PaletteIndex::pi10, + }, + } }; + + TextColours getTextColourMapping(TextColour textColour) + { + return kTextColourToPaletteIndex[static_cast(textColour)]; + } +} // namespace OpenRCT2::Drawing diff --git a/src/openrct2/drawing/TextColour.h b/src/openrct2/drawing/TextColour.h index cd216b81f4d6..d55814cc9ade 100644 --- a/src/openrct2/drawing/TextColour.h +++ b/src/openrct2/drawing/TextColour.h @@ -4,7 +4,7 @@ #include -namespace OpenRCT2 +namespace OpenRCT2::Drawing { enum class TextColour : uint8_t { @@ -24,4 +24,13 @@ namespace OpenRCT2 paleSilver = 13, }; constexpr size_t kNumTextColours = 14; -} // namespace OpenRCT2 + + struct TextColours + { + PaletteIndex fill; + PaletteIndex sunnyOutline; + PaletteIndex shadowOutline; + }; + + TextColours getTextColourMapping(TextColour textColour); +} // namespace OpenRCT2::Drawing diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index 9d1523964b6c..dcdf341e456e 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -98,18 +98,20 @@ enum enum PaletteIndex : uint8_t { - pi0 = 0, // Transparent - pi10 = 10, // Black (0-dark), Dark grey (0) - pi11 = 11, // Black (middark) - pi12 = 12, // Black (midlight), Dark grey (1-darkest) - pi14 = 14, // Black (lighter), Dark grey (dark) - pi13 = 13, // - pi16 = 16, // - pi17 = 17, // Black (11), Dark grey (light), White (dark) + pi0 = 0, // Transparent + pi10 = 10, // Black (0-dark), Dark grey (0) + pi11 = 11, // Black (middark) + pi12 = 12, // Black (midlight), Dark grey (1-darkest) + pi14 = 14, // Black (lighter), Dark grey (dark) + pi13 = 13, // + pi16 = 16, // + pi17 = 17, // Black (11), Dark grey (light), White (dark) + pi18 = 18, pi20 = 20, // Dark grey (10), White (light) pi21 = 21, // Dark grey (11), White (lighter-11) pi40 = 40, // pi42 = 42, // Light Brown (lighter), Saturated brown (11) + pi43 = 43, // pi44 = 44, // Construction marker pi46 = 46, // Tertiary remap 0 / Yellow (darkest) pi47 = 47, // Tertiary remap 1 / Yellow @@ -126,6 +128,7 @@ enum PaletteIndex : uint8_t pi61 = 61, // Bordeaux Red (darker) pi62 = 62, // pi68 = 68, // + pi69 = 69, // pi73 = 73, // pi99 = 99, // pi102 = 102, // Bright green (lighter) @@ -135,17 +138,22 @@ enum PaletteIndex : uint8_t pi135 = 135, // pi136 = 136, // Dark Blue (10-11), Light Blue (midlight), Icy Blue (darker) pi138 = 138, // Light Blue (lighter), Icy Blue (middark) + pi139 = 139, pi141 = 141, // pi144 = 144, // Dark Green (1-darkest, + pi152 = 152, pi161 = 161, // Bright Purple (light) pi162 = 162, // + pi164 = 164, // pi171 = 171, // Saturated Red (lightest) Bright Red (middark) pi172 = 172, // Saturated Red (10-11), Bright Red (midlight) pi173 = 173, // Used to draw intense lines in the Ride Graphs window pi183 = 183, // Used to draw rides in the Map window pi186 = 186, // + pi187 = 187, // pi194 = 194, // pi195 = 195, // + pi199 = 199, // pi202 = 202, // Secondary remap 0 / Pink (darkest) pi203 = 203, // Secondary remap 1 / Pink pi204 = 204, // Secondary remap 2 / Pink @@ -159,6 +167,7 @@ enum PaletteIndex : uint8_t pi212 = 212, // Secondary remap 10 / Pink pi213 = 213, // Secondary remap 11 / Pink (lightest) pi222 = 222, // + pi223 = 223, // pi230 = 230, // Water (waves) pi231 = 231, // Water (waves) pi232 = 232, // Water (waves) diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index cdc55f28bd65..2e2503d32c80 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -839,6 +839,7 @@ + diff --git a/src/openrct2/localisation/FormatCodes.cpp b/src/openrct2/localisation/FormatCodes.cpp index 4c6efe1b7aca..209a00441d36 100644 --- a/src/openrct2/localisation/FormatCodes.cpp +++ b/src/openrct2/localisation/FormatCodes.cpp @@ -140,16 +140,16 @@ namespace OpenRCT2 } } - TextColour FormatTokenToTextColour(FormatToken token) + Drawing::TextColour FormatTokenToTextColour(FormatToken token) { uint8_t value = EnumValue(token) - EnumValue(FormatToken::colourBlack); - if (value >= kNumTextColours) - return TextColour::black; + if (value >= Drawing::kNumTextColours) + return Drawing::TextColour::black; - return static_cast(value); + return static_cast(value); } - FormatToken FormatTokenFromTextColour(TextColour textColour) + FormatToken FormatTokenFromTextColour(Drawing::TextColour textColour) { static constexpr FormatToken tokens[] = { FormatToken::colourBlack, // TextColour::black diff --git a/src/openrct2/localisation/FormatCodes.h b/src/openrct2/localisation/FormatCodes.h index 1c6f8a5e53e9..f5a69cfcb0ab 100644 --- a/src/openrct2/localisation/FormatCodes.h +++ b/src/openrct2/localisation/FormatCodes.h @@ -86,6 +86,6 @@ namespace OpenRCT2 std::string FormatTokenToStringWithBraces(FormatToken token); bool FormatTokenTakesArgument(FormatToken token); bool FormatTokenIsColour(FormatToken token); - TextColour FormatTokenToTextColour(FormatToken token); - FormatToken FormatTokenFromTextColour(TextColour textColour); + Drawing::TextColour FormatTokenToTextColour(FormatToken token); + FormatToken FormatTokenFromTextColour(Drawing::TextColour textColour); } // namespace OpenRCT2 diff --git a/src/openrct2/localisation/Language.cpp b/src/openrct2/localisation/Language.cpp index 09ca3e7fd809..8d4ecc399377 100644 --- a/src/openrct2/localisation/Language.cpp +++ b/src/openrct2/localisation/Language.cpp @@ -9,6 +9,7 @@ #include "../Context.h" #include "../core/String.hpp" +#include "../drawing/ScrollingText.h" #include "../interface/FontFamilies.h" #include "../interface/Window.h" #include "../object/ObjectManager.h" @@ -81,7 +82,7 @@ namespace OpenRCT2 localisationService.OpenLanguage(id); // Objects and their localised strings need to be refreshed objectManager.ResetObjects(); - ScrollingTextInvalidate(); + Drawing::ScrollingText::invalidate(); WindowNotifyLanguageChange(); return true; } diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index 91550fa518a9..741d69d23b1c 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -49,7 +49,7 @@ static void PaintBannerScrollingText( return; auto scrollingMode = bannerEntry.scrolling_mode + (direction & 3); - if (scrollingMode >= kMaxScrollingTextModes) + if (scrollingMode >= Drawing::ScrollingText::kMaxModes) { return; } @@ -69,7 +69,7 @@ static void PaintBannerScrollingText( auto stringWidth = GfxGetStringWidth(text, FontStyle::tiny); auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; - auto imageId = ScrollingTextSetup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, COLOUR_BLACK); + auto imageId = Drawing::ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, PaletteIndex::pi0); PaintAddImageAsChild(session, imageId, { 0, 0, height + 22 }, { bbOffset, { 1, 1, 21 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index ca40e9621249..7095b44aafc6 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -79,7 +79,8 @@ static void PaintRideEntranceExitScrollingText( auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; PaintAddImageAsChild( - session, ScrollingTextSetup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, stationObj.ScrollingMode, COLOUR_BLACK), + session, + Drawing::ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, stationObj.ScrollingMode, PaletteIndex::pi0), { 0, 0, height + stationObj.Height }, { { 2, 2, height + stationObj.Height }, { 28, 28, 51 } }); } @@ -259,8 +260,8 @@ static void PaintParkEntranceScrollingText( auto stringWidth = GfxGetStringWidth(text, FontStyle::tiny); auto scroll = stringWidth > 0 ? (gameState.currentTicks / 2) % stringWidth : 0; - auto imageIndex = ScrollingTextSetup( - session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode + direction / 2, COLOUR_BLACK); + auto imageIndex = Drawing::ScrollingText::setup( + session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode + direction / 2, PaletteIndex::pi0); auto textHeight = height + entrance.GetTextHeight(); PaintAddImageAsChild(session, imageIndex, { 0, 0, textHeight }, { { 2, 2, textHeight }, { 28, 28, 47 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index 42b535f6d5de..9973ffcdd90f 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -329,7 +329,7 @@ static void PaintLargeSceneryScrollingText( auto scrollMode = sceneryEntry.scrolling_mode + ((direction + 1) & 3); auto stringWidth = GfxGetStringWidth(text, FontStyle::tiny); auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; - auto imageId = ScrollingTextSetup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollMode, textPaletteIndex); + auto imageId = Drawing::ScrollingText::setup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollMode, textPaletteIndex); PaintAddImageAsChild(session, imageId, { 0, 0, height + 25 }, { bbOffset, { 1, 1, 21 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index d217b9815355..682e605eaf4d 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -179,7 +179,8 @@ static void PathPaintQueueBanner( uint16_t scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; PaintAddImageAsChild( - session, ScrollingTextSetup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, COLOUR_BLACK), + session, + Drawing::ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, PaletteIndex::pi0), { 0, 0, height + 7 }, { boundBoxOffsets, { 1, 1, 21 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index c9d96ddaad05..ae9cf396b6f6 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -162,7 +162,7 @@ static void PaintWallScrollingText( return; scrollingMode = wallEntry.scrolling_mode + ((direction + 1) & 3); - if (scrollingMode >= kMaxScrollingTextModes) + if (scrollingMode >= Drawing::ScrollingText::kMaxModes) return; auto banner = wallElement.GetBanner(); @@ -186,7 +186,7 @@ static void PaintWallScrollingText( auto stringWidth = GfxGetStringWidth(signString, FontStyle::tiny); auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; - auto imageId = ScrollingTextSetup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollingMode, textPaletteIndex); + auto imageId = Drawing::ScrollingText::setup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollingMode, textPaletteIndex); PaintAddImageAsChild(session, imageId, { 0, 0, height + 8 }, { boundsOffset, { 1, 1, 13 } }); } diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index be5cd889ab60..8fbe67ef82a5 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -31,9 +31,13 @@ namespace OpenRCT2 { class ObjectList; enum class TrackElemType : uint16_t; - enum class TextColour : uint8_t; } // namespace OpenRCT2 +namespace OpenRCT2::Drawing +{ + enum class TextColour : uint8_t; +} + namespace OpenRCT2::RCT12 { enum class ClimateType : uint8_t @@ -1150,9 +1154,9 @@ struct RCT12Banner uint8_t Colour; // 0x04 uint8_t RideIndex; // 0x04 }; - OpenRCT2::TextColour textColour; // 0x05 - uint8_t x; // 0x06 - uint8_t y; // 0x07 + OpenRCT2::Drawing::TextColour textColour; // 0x05 + uint8_t x; // 0x06 + uint8_t y; // 0x07 }; static_assert(sizeof(RCT12Banner) == 8); diff --git a/src/openrct2/scripting/bindings/world/ScTileElement.cpp b/src/openrct2/scripting/bindings/world/ScTileElement.cpp index 7c88a296a5f1..8adb728bf836 100644 --- a/src/openrct2/scripting/bindings/world/ScTileElement.cpp +++ b/src/openrct2/scripting/bindings/world/ScTileElement.cpp @@ -1462,7 +1462,7 @@ namespace OpenRCT2::Scripting case TileElementType::Banner: { auto* el = _element->AsBanner(); - el->GetBanner()->textColour = static_cast(value); + el->GetBanner()->textColour = static_cast(value); Invalidate(); break; } @@ -2245,7 +2245,7 @@ namespace OpenRCT2::Scripting { banner->text = {}; banner->colour = 0; - banner->textColour = TextColour::black; + banner->textColour = Drawing::TextColour::black; banner->flags = {}; if (_element->GetType() == TileElementType::Wall) banner->flags.set(BannerFlag::isWall); diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index 8975b23c236b..05bde03032c5 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -442,7 +442,7 @@ Banner* CreateBanner() banner->type = 0; banner->text = {}; banner->colour = COLOUR_WHITE; - banner->textColour = TextColour::white; + banner->textColour = Drawing::TextColour::white; } return banner; } diff --git a/src/openrct2/world/Banner.h b/src/openrct2/world/Banner.h index 6cc15423928f..bf9e0c02fc68 100644 --- a/src/openrct2/world/Banner.h +++ b/src/openrct2/world/Banner.h @@ -48,7 +48,7 @@ struct Banner mutable std::string formattedTextBuffer; uint8_t colour{}; RideId rideIndex{}; - OpenRCT2::TextColour textColour{}; + OpenRCT2::Drawing::TextColour textColour{}; TileCoordsXY position; bool isNull() const From 05c9e0f7dc0645bf72d7be3616f90b596dc0304c Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 16 Dec 2025 22:18:51 +0100 Subject: [PATCH 127/222] Use TextColours in the text drawing structs --- .../engines/opengl/OpenGLDrawingEngine.cpp | 6 +- src/openrct2/drawing/Drawing.String.cpp | 69 +++++++++---------- src/openrct2/drawing/Drawing.String.h | 3 +- src/openrct2/drawing/Drawing.cpp | 6 +- src/openrct2/drawing/Drawing.h | 3 +- src/openrct2/drawing/Text.cpp | 6 +- src/openrct2/drawing/TextColour.h | 6 +- src/openrct2/drawing/X8DrawingEngine.cpp | 4 +- 8 files changed, 51 insertions(+), 52 deletions(-) diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index d26f5b456c3b..7ee79cbd4043 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -1229,7 +1229,7 @@ void OpenGLDrawingContext::DrawTTFBitmap( command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_TTF_TEXT; - command.colour = info->palette[3]; + command.colour = info->palette.shadowOutline; command.bounds = b; command.depth = _drawCount++; command.zoom = 1.0f; @@ -1245,7 +1245,7 @@ void OpenGLDrawingContext::DrawTTFBitmap( command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_TTF_TEXT; - command.colour = info->palette[3]; + command.colour = info->palette.shadowOutline; command.bounds = { left + 1, top + 1, right + 1, bottom + 1 }; command.depth = _drawCount++; command.zoom = 1.0f; @@ -1259,7 +1259,7 @@ void OpenGLDrawingContext::DrawTTFBitmap( command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_TTF_TEXT | (hintingThreshold << 8); - command.colour = info->palette[1]; + command.colour = info->palette.fill; command.bounds = { left, top, right, bottom }; command.depth = _drawCount++; command.zoom = 1.0f; diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 7b9a634bc974..8156abb4fc8b 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -274,7 +274,7 @@ void GfxDrawStringLeftCentred( /** * Changes the palette so that the next character changes colour */ -static void ColourCharacter(Drawing::TextColour colour, bool withOutline, uint8_t* palette_pointer) +static void ColourCharacter(Drawing::TextColour colour, bool withOutline, Drawing::TextColours& textPalette) { auto mapping = Drawing::getTextColourMapping(colour); @@ -283,31 +283,29 @@ static void ColourCharacter(Drawing::TextColour colour, bool withOutline, uint8_ mapping.sunnyOutline = PaletteIndex::pi0; mapping.shadowOutline = PaletteIndex::pi0; } - // Adjust text palette. Store current colour? - palette_pointer[1] = mapping.fill; - palette_pointer[2] = mapping.sunnyOutline; - palette_pointer[3] = mapping.shadowOutline; - palette_pointer[4] = PaletteIndex::pi0; + + textPalette = mapping; } /** * Changes the palette so that the next character changes colour * This is specific to changing to a predefined window related colour */ -static void ColourCharacterWindow(colour_t colour, bool withOutline, uint8_t* palette_pointer) +static void ColourCharacterWindow(colour_t colour, bool withOutline, Drawing::TextColours& textPalette) { - int32_t eax; + Drawing::TextColours mapping = { + ColourMapA[colour].colour_11, + PaletteIndex::pi0, + PaletteIndex::pi0, + }; - eax = ColourMapA[colour].colour_11; if (withOutline) { - eax |= 0x0A0A00; + mapping.sunnyOutline = PaletteIndex::pi10; + mapping.shadowOutline = PaletteIndex::pi10; } - // Adjust text palette. Store current colour? - palette_pointer[1] = eax & 0xFF; - palette_pointer[2] = (eax >> 8) & 0xFF; - palette_pointer[3] = (eax >> 16) & 0xFF; - palette_pointer[4] = (eax >> 24) & 0xFF; + + textPalette = mapping; } /** @@ -486,7 +484,12 @@ static void TTFDrawCharacterSprite(RenderTarget& rt, int32_t codepoint, TextDraw screenCoords.y += *info->yOffset++; } - PaletteMap paletteMap(info->palette); + uint8_t palette[8]{}; + palette[1] = info->palette.fill; + palette[2] = info->palette.sunnyOutline; + palette[3] = info->palette.shadowOutline; + + PaletteMap paletteMap(palette); GfxDrawGlyph(rt, sprite, screenCoords, paletteMap); } @@ -748,38 +751,30 @@ static void TTFProcessInitialColour(ColourWithFlags colour, TextDrawInfo* info) info->colourFlags = colour.flags; if (!colour.flags.has(ColourFlag::inset)) { - ColourCharacterWindow( - colour.colour, info->colourFlags.has(ColourFlag::withOutline), reinterpret_cast(&info->palette)); + ColourCharacterWindow(colour.colour, info->colourFlags.has(ColourFlag::withOutline), info->palette); } else { - uint32_t eax = 0; + Drawing::TextColours newPalette = {}; switch (info->darkness) { case TextDarkness::extraDark: - eax = ColourMapA[colour.colour].mid_light; - eax = eax << 16; - eax = eax | ColourMapA[colour.colour].dark; + newPalette.fill = ColourMapA[colour.colour].dark; + newPalette.shadowOutline = ColourMapA[colour.colour].mid_light; break; case TextDarkness::dark: - eax = ColourMapA[colour.colour].light; - eax = eax << 16; - eax = eax | ColourMapA[colour.colour].mid_dark; + newPalette.fill = ColourMapA[colour.colour].mid_dark; + newPalette.shadowOutline = ColourMapA[colour.colour].light; break; case TextDarkness::regular: - eax = ColourMapA[colour.colour].lighter; - eax = eax << 16; - eax = eax | ColourMapA[colour.colour].mid_light; + newPalette.fill = ColourMapA[colour.colour].mid_light; + newPalette.shadowOutline = ColourMapA[colour.colour].lighter; break; } - // Adjust text palette. Store current colour? ; - info->palette[1] = eax & 0xFF; - info->palette[2] = (eax >> 8) & 0xFF; - info->palette[3] = (eax >> 16) & 0xFF; - info->palette[4] = (eax >> 24) & 0xFF; + info->palette = newPalette; } } } @@ -809,10 +804,10 @@ void TTFDrawString( info.textDrawFlags.set(TextDrawFlag::noFormatting); } - std::memcpy(info.palette, gTextPalette, sizeof(info.palette)); + info.palette = gTextPalette; TTFProcessInitialColour(colour, &info); TTFProcessString(rt, text, &info); - std::memcpy(gTextPalette, info.palette, sizeof(info.palette)); + gTextPalette = info.palette; rt.lastStringPos = { info.x, info.y }; } @@ -868,10 +863,10 @@ void GfxDrawStringWithYOffsets( info.textDrawFlags.set(TextDrawFlag::ttf); } - std::memcpy(info.palette, gTextPalette, sizeof(info.palette)); + info.palette = gTextPalette; TTFProcessInitialColour(colour, &info); TTFProcessString(rt, text, &info); - std::memcpy(gTextPalette, info.palette, sizeof(info.palette)); + gTextPalette = info.palette; rt.lastStringPos = { info.x, info.y }; } diff --git a/src/openrct2/drawing/Drawing.String.h b/src/openrct2/drawing/Drawing.String.h index 8ef8e1432c65..c8552582c09b 100644 --- a/src/openrct2/drawing/Drawing.String.h +++ b/src/openrct2/drawing/Drawing.String.h @@ -12,6 +12,7 @@ #include "../core/FlagHolder.hpp" #include "../interface/Colour.h" #include "../interface/ColourWithFlags.h" +#include "TextColour.h" #include @@ -38,7 +39,7 @@ struct TextDrawInfo TextDrawFlags textDrawFlags{}; OpenRCT2::ColourFlags colourFlags{}; TextDarkness darkness{}; - uint8_t palette[8]{}; + OpenRCT2::Drawing::TextColours palette{}; FontStyle fontStyle{}; const int8_t* yOffset{}; }; diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index c32f59fdac30..070e1adba5fe 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -84,8 +84,10 @@ int32_t gPickupPeepX; int32_t gPickupPeepY; // Originally 0x9ABE04 -uint8_t gTextPalette[0x8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +OpenRCT2::Drawing::TextColours gTextPalette = { + PaletteIndex::pi0, + PaletteIndex::pi0, + PaletteIndex::pi0, }; bool gPaintForceRedraw{ false }; diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 7d8f84e80af8..de329e7d4168 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -18,6 +18,7 @@ #include "Font.h" #include "ImageId.hpp" #include "Text.h" +#include "TextColour.h" #include #include @@ -458,7 +459,7 @@ extern OpenRCT2::Drawing::GamePalette gPalette; extern OpenRCT2::Drawing::GamePalette gGamePalette; extern uint32_t gPaletteEffectFrame; -extern uint8_t gTextPalette[]; +extern OpenRCT2::Drawing::TextColours gTextPalette; extern const TranslucentWindowPalette kTranslucentWindowPalettes[COLOUR_COUNT]; extern ImageId gPickupPeepImage; diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index 5f377b537343..67657253c3c4 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -102,12 +102,12 @@ void DrawText(RenderTarget& rt, const ScreenCoordsXY& coords, const TextPaint& p { Rectangle::fill( rt, { { alignedCoords + ScreenCoordsXY{ 0, 11 } }, { alignedCoords + ScreenCoordsXY{ width, 11 } } }, - gTextPalette[1]); - if (gTextPalette[2] != 0) + gTextPalette.fill); + if (gTextPalette.sunnyOutline != 0) { Rectangle::fill( rt, { { alignedCoords + ScreenCoordsXY{ 1, 12 } }, { alignedCoords + ScreenCoordsXY{ width + 1, 12 } } }, - gTextPalette[2]); + gTextPalette.sunnyOutline); } } } diff --git a/src/openrct2/drawing/TextColour.h b/src/openrct2/drawing/TextColour.h index d55814cc9ade..e1841000927f 100644 --- a/src/openrct2/drawing/TextColour.h +++ b/src/openrct2/drawing/TextColour.h @@ -27,9 +27,9 @@ namespace OpenRCT2::Drawing struct TextColours { - PaletteIndex fill; - PaletteIndex sunnyOutline; - PaletteIndex shadowOutline; + PaletteIndex fill{}; + PaletteIndex sunnyOutline{}; + PaletteIndex shadowOutline{}; }; TextColours getTextColourMapping(TextColour textColour); diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index d3aa7e21f438..f4f02aa56bf9 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -744,8 +744,8 @@ void X8DrawingContext::DrawTTFBitmap( RenderTarget& rt, TextDrawInfo* info, TTFSurface* surface, int32_t x, int32_t y, uint8_t hintingThreshold) { #ifndef DISABLE_TTF - const uint8_t fgColor = info->palette[1]; - const uint8_t bgColor = info->palette[3]; + const uint8_t fgColor = info->palette.fill; + const uint8_t bgColor = info->palette.shadowOutline; if (info->colourFlags.has(ColourFlag::withOutline)) { From d7ec490eccb2b2b64199de85eee4a394a0ccfa3a Mon Sep 17 00:00:00 2001 From: spacek531 Date: Sat, 20 Dec 2025 02:55:38 -0800 Subject: [PATCH 128/222] Convert height markers field to sequence flag (#25501) --- distribution/changelog.txt | 2 + src/openrct2/ride/Track.h | 17 +- src/openrct2/ride/TrackData.cpp | 1160 +++++++++++++++++------------- src/openrct2/ride/TrackData.h | 4 +- src/openrct2/ride/TrackPaint.cpp | 3 +- 5 files changed, 668 insertions(+), 518 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 6b1b2c054f3c..0b14623a8760 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -32,6 +32,7 @@ - Improved: [#25028] Stalls now support colour presets, just like regular rides. - Improved: [#25426] Building the track designs index is now quicker. - Improved: [#25490] The ‘New Ride’ window can now be resized. +- Improved: [#25502] Track height markers on flat rides now more sensible. - Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). - Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. - Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. @@ -42,6 +43,7 @@ - Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. - Fix: [#25488] Crash in headless mode. - Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. +- Fix: [#25503] Height markers missing from some maze tiles. - Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. - Fix: [#25519] Crackling audio when sampling frequencies do not match. - Fix: [objects#401] Round tunnels on down slopes glitch. diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index e9474329b1dd..047b950bfbc6 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -196,7 +196,15 @@ struct SequenceClearance uint8_t flags{}; }; -/* size 0x0A */ +/** TrackCoordinates + * rotationBegin: Start direction of the track piece; 0 (cardinal) or 4 (45 degrees clockwise) + * rotationEnd: End direction of the track peice, measured clockwise + * zBegin: how high above the base level of the lowest track block the spline starts + * zEnd: how high above the base level of the lowest track block the spline ends + * x: tile offset to the end track block; negative is along the original direction of travel + * Next track piece is found by moving one tile after end of the track piece, so vertical track has an x value of 32 + * y: tile offset to the end track block; negative is to the left of the original direction of travel + */ struct TrackCoordinates { int8_t rotationBegin; // 0x00 @@ -637,9 +645,10 @@ enum class SequenceFlag : uint8_t entranceConnectionSE, // connect to right entranceConnectionSW, // connect to back entranceConnectionNW, // connect to left - trackOrigin, // 0x10 - connectsToPath, // 0x20 - disallowDoors, // 0x40 + trackOrigin, + connectsToPath, // The sides of this sequence block flagged with entrance connections can connect directly to paths + disallowDoors, // Doors cannot be built on any side of this track element (only valid on first sequence of track element) + hasHeightMarker, // Displays a height marker on this sequence block }; enum diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index d733b98fba7b..a34c27eab51c 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -322,14 +322,14 @@ namespace OpenRCT2::TrackMetaData { 0, 2, 0, -280, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown { 0, 2, 0, 152, -32, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp { 0, 2, 0, -152, 32, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthToDiagUp25 - { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthToDiagUp25 - { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthToDiagDown25 - { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthToDiagDown25 - { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalUp25 - { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalDown25 + { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthToDiagUp25 + { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthToDiagUp25 + { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthToDiagDown25 + { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthToDiagDown25 + { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalUp25 + { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalDown25 { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToLeftBankedUp25 { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToRightBankedUp25 { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToUp25 @@ -355,7 +355,7 @@ namespace OpenRCT2::TrackMetaData { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToFlat { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToFlat { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25LeftBanked - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25RightBanked + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25RightBanked { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25LeftBanked { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25RightBanked { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagUp25 @@ -363,9 +363,9 @@ namespace OpenRCT2::TrackMetaData { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagDown25 { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthBankToDiagDown25 { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalUp25 { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalDown25 { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBrakes { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBlockBrakes { 0, 0, 16, 0, 0, 0 }, // TrackElemType::Down25Brakes @@ -376,12 +376,12 @@ namespace OpenRCT2::TrackMetaData { 4, 4, 88, 0, -96, 96 }, // TrackElemType::DiagDown60ToFlatLongBase, { 4, 0, 0,152, -96, 32 }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal { 4, 1, 0,152, -32, 96 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - { 0, 7,152, 0, -96, -32 }, // TrackElemType::LeftEighthDiveLoopDownToDiag + { 0, 7,152, 0, -96, -32 }, // TrackElemType::LeftEighthDiveLoopDownToDiag { 0, 4,152, 0, -96, 32 }, // TrackElemType::RightEighthDiveLoopDownToDiag { 4, 4, 16, 0, -32, 32 } // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackCoordinates) == EnumValue(TrackElemType::Count)); - + static constexpr uint8_t kTrackPieceLengths[] = { 32, // TrackElemType::Flat 32, // TrackElemType::EndStation @@ -676,14 +676,14 @@ namespace OpenRCT2::TrackMetaData 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown 64, // TrackElemType::FlyerHalfLoopInvertedUp 64, // TrackElemType::FlyerHalfLoopUninvertedDown - 92, // TrackElemType::LeftEighthToDiagUp25 - 92, // TrackElemType::RightEighthToDiagUp25 - 92, // TrackElemType::LeftEighthToDiagDown25 - 92, // TrackElemType::RightEighthToDiagDown25 - 92, // TrackElemType::LeftEighthToOrthogonalUp25 - 92, // TrackElemType::RightEighthToOrthogonalUp25 - 92, // TrackElemType::LeftEighthToOrthogonalDown25 - 92, // TrackElemType::RightEighthToOrthogonalDown25 + 92, // TrackElemType::LeftEighthToDiagUp25 + 92, // TrackElemType::RightEighthToDiagUp25 + 92, // TrackElemType::LeftEighthToDiagDown25 + 92, // TrackElemType::RightEighthToDiagDown25 + 92, // TrackElemType::LeftEighthToOrthogonalUp25 + 92, // TrackElemType::RightEighthToOrthogonalUp25 + 92, // TrackElemType::LeftEighthToOrthogonalDown25 + 92, // TrackElemType::RightEighthToOrthogonalDown25 45, // TrackElemType::DiagUp25ToLeftBankedUp25 45, // TrackElemType::DiagUp25ToRightBankedUp25 45, // TrackElemType::DiagLeftBankedUp25ToUp25 @@ -709,7 +709,7 @@ namespace OpenRCT2::TrackMetaData 45, // TrackElemType::DiagLeftBankedDown25ToFlat 45, // TrackElemType::DiagRightBankedDown25ToFlat 45, // TrackElemType::DiagUp25LeftBanked - 45, // TrackElemType::DiagUp25RightBanked + 45, // TrackElemType::DiagUp25RightBanked 45, // TrackElemType::DiagDown25LeftBanked 45, // TrackElemType::DiagDown25RightBanked 92, // TrackElemType::LeftEighthBankToDiagUp25 @@ -717,7 +717,7 @@ namespace OpenRCT2::TrackMetaData 92, // TrackElemType::LeftEighthBankToDiagDown25 92, // TrackElemType::RightEighthBankToDiagDown25 92, // TrackElemType::LeftEighthBankToOrthogonalUp25 - 92, // TrackElemType::RightEighthBankToOrthogonalUp25 + 92, // TrackElemType::RightEighthBankToOrthogonalUp25 92, // TrackElemType::LeftEighthBankToOrthogonalDown25 92, // TrackElemType::RightEighthBankToOrthogonalDown25 45, // TrackElemType::DiagBrakes @@ -728,15 +728,15 @@ namespace OpenRCT2::TrackMetaData 165, // TrackElemType::DiagUp60ToFlatLongBase, 165, // TrackElemType::DiagFlatToDown60LongBase, 165, // TrackElemType::DiagDown60ToFlatLongBase, - 165, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - 165, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - 165, // TrackElemType::LeftEighthDiveLoopDownToDiag - 165, // TrackElemType::RightEighthDiveLoopDownToDiag + 165, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal + 165, // TrackElemType::RightEighthDiveLoopUpToOrthogonal + 165, // TrackElemType::LeftEighthDiveLoopDownToDiag + 165, // TrackElemType::RightEighthDiveLoopDownToDiag 45, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackPieceLengths) == EnumValue(TrackElemType::Count)); - + // rct2: 0x00998C95 static constexpr TrackCurveChain kTrackCurveChain[] = { { TrackCurve::None, TrackCurve::None }, @@ -1032,13 +1032,13 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackElemType::LeftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown { TrackCurve::None, TrackCurve::None }, // FlyerHalfLoopInvertedUp { TrackCurve::None, TrackCurve::None }, // FlyerHalfLoopUninvertedUp - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToDiagUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToDiagUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToDiagDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToDiagDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToOrthogonalUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToOrthogonalUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToOrthogonalDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToDiagUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToDiagUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToDiagDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToDiagDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToOrthogonalUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToOrthogonalUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToOrthogonalDown25 { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToOrthogonalDown25 { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagUp25ToLeftBankedUp25 { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagUp25ToRightBankedUp25 @@ -1065,7 +1065,7 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagLeftBankedDown25ToFlat { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagRightBankedDown25ToFlat { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagUp25LeftBanked - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagUp25RightBanked + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagUp25RightBanked { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagDown25LeftBanked { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagDown25RightBanked { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToDiagUp25 @@ -1073,9 +1073,9 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToDiagDown25 { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToDiagDown25 { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToOrthogonalUp25 { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToOrthogonalDown25 { TrackElemType::DiagBrakes, TrackElemType::DiagBrakes }, // TrackElemType::DiagBrakes { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagBlockBrakes { TrackElemType::Down25Brakes, TrackElemType::Down25Brakes }, // TrackElemType::Down25Brakes @@ -1084,14 +1084,14 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagUp60ToFlatLongBase, { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagFlatToDown60LongBase, { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagDown60ToFlatLongBase, - { TrackElemType::RightEighthDiveLoopDownToDiag , TrackCurve::None }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - { TrackElemType::LeftEighthDiveLoopDownToDiag, TrackCurve::None }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - { TrackCurve::None, TrackElemType::RightEighthDiveLoopUpToOrthogonal }, // TrackElemType::LeftEighthDiveLoopDownToDiag - { TrackCurve::None, TrackElemType::LeftEighthDiveLoopUpToOrthogonal }, // TrackElemType::RightEighthDiveLoopDownToDiag + { TrackElemType::RightEighthDiveLoopDownToDiag , TrackCurve::None }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal + { TrackElemType::LeftEighthDiveLoopDownToDiag, TrackCurve::None }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal + { TrackCurve::None, TrackElemType::RightEighthDiveLoopUpToOrthogonal }, // TrackElemType::LeftEighthDiveLoopDownToDiag + { TrackCurve::None, TrackElemType::LeftEighthDiveLoopUpToOrthogonal }, // TrackElemType::RightEighthDiveLoopDownToDiag { TrackElemType::DiagDown25Brakes, TrackElemType::DiagDown25Brakes }, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::Count)); - + const TrackDescriptor gTrackDescriptors[186] = { { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown60 }, { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown60ToDown25 }, @@ -1280,7 +1280,7 @@ namespace OpenRCT2::TrackMetaData { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalDown25 }, { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalDown25 }, }; - + /** rct2: 0x00993D1C */ static constexpr OpenRCT2::TrackElemType kAlternativeTrackTypes[] = { TrackElemType::FlatCovered, // TrackElemType::Flat @@ -1576,14 +1576,14 @@ namespace OpenRCT2::TrackMetaData TrackElemType::None, // RightFlyerLargeHalfLoopInvertedDown TrackElemType::None, // FlyerHalfLoopInvertedUp TrackElemType::None, // FlyerHalfLoopUninvertedDown - TrackElemType::None, // TrackElemType::LeftEighthToDiagUp25 - TrackElemType::None, // TrackElemType::RightEighthToDiagUp25 - TrackElemType::None, // TrackElemType::LeftEighthToDiagDown25 - TrackElemType::None, // TrackElemType::RightEighthToDiagDown25 - TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackElemType::None, // TrackElemType::RightEighthToOrthogonalUp25 - TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalDown25 - TrackElemType::None, // TrackElemType::RightEighthToOrthogonalDown25 + TrackElemType::None, // TrackElemType::LeftEighthToDiagUp25 + TrackElemType::None, // TrackElemType::RightEighthToDiagUp25 + TrackElemType::None, // TrackElemType::LeftEighthToDiagDown25 + TrackElemType::None, // TrackElemType::RightEighthToDiagDown25 + TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalUp25 + TrackElemType::None, // TrackElemType::RightEighthToOrthogonalUp25 + TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalDown25 + TrackElemType::None, // TrackElemType::RightEighthToOrthogonalDown25 TrackElemType::None, // TrackElemType::DiagUp25ToLeftBankedUp25 TrackElemType::None, // TrackElemType::DiagUp25ToRightBankedUp25 TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToUp25 @@ -1609,7 +1609,7 @@ namespace OpenRCT2::TrackMetaData TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToFlat TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToFlat TrackElemType::None, // TrackElemType::DiagUp25LeftBanked - TrackElemType::None, // TrackElemType::DiagUp25RightBanked + TrackElemType::None, // TrackElemType::DiagUp25RightBanked TrackElemType::None, // TrackElemType::DiagDown25LeftBanked TrackElemType::None, // TrackElemType::DiagDown25RightBanked TrackElemType::None, // TrackElemType::LeftEighthBankToDiagUp25 @@ -1617,7 +1617,7 @@ namespace OpenRCT2::TrackMetaData TrackElemType::None, // TrackElemType::LeftEighthBankToDiagDown25 TrackElemType::None, // TrackElemType::RightEighthBankToDiagDown25 TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalUp25 - TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalUp25 + TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalUp25 TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalDown25 TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalDown25 TrackElemType::None, // TrackElemType::DiagBrakes @@ -1628,14 +1628,14 @@ namespace OpenRCT2::TrackMetaData TrackElemType::None, // TrackElemType::DiagUp60ToFlatLongBase, TrackElemType::None, // TrackElemType::DiagFlatToDown60LongBase, TrackElemType::None, // TrackElemType::DiagDown60ToFlatLongBase, - TrackElemType::None, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - TrackElemType::None, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - TrackElemType::None, // TrackElemType::LeftEighthDiveLoopDownToDiag + TrackElemType::None, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal + TrackElemType::None, // TrackElemType::RightEighthDiveLoopUpToOrthogonal + TrackElemType::None, // TrackElemType::LeftEighthDiveLoopDownToDiag TrackElemType::None, // TrackElemType::RightEighthDiveLoopDownToDiag TrackElemType::None, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kAlternativeTrackTypes) == EnumValue(TrackElemType::Count)); - + /** rct2: 0x0099DA34 */ static constexpr money64 kTrackPricing[] = { 65536, // TrackElemType::Flat @@ -1964,7 +1964,7 @@ namespace OpenRCT2::TrackMetaData 108800, // TrackElemType::DiagLeftBankedDown25ToFlat 108800, // TrackElemType::DiagRightBankedDown25ToFlat 118809, // TrackElemType::DiagUp25LeftBanked - 118809, // TrackElemType::DiagUp25RightBanked + 118809, // TrackElemType::DiagUp25RightBanked 118809, // TrackElemType::DiagDown25LeftBanked 118809, // TrackElemType::DiagDown25RightBanked 233281, // TrackElemType::LeftEighthBankToDiagUp25 @@ -1972,7 +1972,7 @@ namespace OpenRCT2::TrackMetaData 233281, // TrackElemType::LeftEighthBankToDiagDown25 233281, // TrackElemType::RightEighthBankToDiagDown25 233281, // TrackElemType::LeftEighthBankToOrthogonalUp25 - 233281, // TrackElemType::RightEighthBankToOrthogonalUp25 + 233281, // TrackElemType::RightEighthBankToOrthogonalUp25 233281, // TrackElemType::LeftEighthBankToOrthogonalDown25 233281, // TrackElemType::RightEighthBankToOrthogonalDown25 123456, // TrackElemType::DiagBrakes @@ -1983,14 +1983,14 @@ namespace OpenRCT2::TrackMetaData 399690, // TrackElemType::DiagUp60ToFlatLongBase, 399690, // TrackElemType::DiagFlatToDown60LongBase, 399690, // TrackElemType::DiagDown60ToFlatLongBase, - 458752, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - 458752, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - 458752, // TrackElemType::LeftEighthDiveLoopDownToDiag + 458752, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal + 458752, // TrackElemType::RightEighthDiveLoopUpToOrthogonal + 458752, // TrackElemType::LeftEighthDiveLoopDownToDiag 458752, // TrackElemType::RightEighthDiveLoopDownToDiag 109824, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackPricing) == EnumValue(TrackElemType::Count)); - + /** rct2: 0x0099EA1C */ static constexpr OpenRCT2::TrackElemType kTrackElementMirrorMap[] = { TrackElemType::Flat, @@ -2286,12 +2286,12 @@ namespace OpenRCT2::TrackMetaData TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown TrackElemType::FlyerHalfLoopInvertedUp, TrackElemType::FlyerHalfLoopUninvertedDown, - TrackElemType::RightEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 - TrackElemType::LeftEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 - TrackElemType::RightEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 - TrackElemType::LeftEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 - TrackElemType::RightEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackElemType::LeftEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 + TrackElemType::RightEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 + TrackElemType::LeftEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 + TrackElemType::RightEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 + TrackElemType::LeftEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 + TrackElemType::RightEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 + TrackElemType::LeftEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 TrackElemType::RightEighthToOrthogonalDown25, // TrackElemType::LeftEighthToOrthogonalDown25 TrackElemType::LeftEighthToOrthogonalDown25, // TrackElemType::RightEighthToOrthogonalDown25 TrackElemType::DiagUp25ToRightBankedUp25, // TrackElemType::DiagUp25ToRightBankedUp25 @@ -2319,7 +2319,7 @@ namespace OpenRCT2::TrackMetaData TrackElemType::DiagRightBankedDown25ToFlat, // TrackElemType::DiagRightBankedDown25ToFlat TrackElemType::DiagLeftBankedDown25ToFlat, // TrackElemType::DiagLeftBankedDown25ToFlat TrackElemType::DiagUp25RightBanked, // TrackElemType::DiagUp25RightBanked - TrackElemType::DiagUp25LeftBanked, // TrackElemType::DiagUp25LeftBanked + TrackElemType::DiagUp25LeftBanked, // TrackElemType::DiagUp25LeftBanked TrackElemType::DiagDown25RightBanked, // TrackElemType::DiagDown25RightBanked TrackElemType::DiagDown25LeftBanked, // TrackElemType::DiagDown25LeftBanked TrackElemType::RightEighthBankToDiagUp25, // TrackElemType::RightEighthBankToDiagUp25 @@ -2327,7 +2327,7 @@ namespace OpenRCT2::TrackMetaData TrackElemType::RightEighthBankToDiagDown25, // TrackElemType::RightEighthBankToDiagDown25 TrackElemType::LeftEighthBankToDiagDown25, // TrackElemType::LeftEighthBankToDiagDown25 TrackElemType::RightEighthBankToOrthogonalUp25, // TrackElemType::RightEighthBankToOrthogonalUp25 - TrackElemType::LeftEighthBankToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 + TrackElemType::LeftEighthBankToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 TrackElemType::RightEighthBankToOrthogonalDown25, // TrackElemType::RightEighthBankToOrthogonalDown25 TrackElemType::LeftEighthBankToOrthogonalDown25, // TrackElemType::LeftEighthBankToOrthogonalDown25 TrackElemType::DiagBrakes, @@ -2338,372 +2338,14 @@ namespace OpenRCT2::TrackMetaData TrackElemType::DiagUp60ToFlatLongBase, // TrackElemType::DiagUp60ToFlatLongBase, TrackElemType::DiagFlatToDown60LongBase, // TrackElemType::DiagFlatToDown60LongBase, TrackElemType::DiagDown60ToFlatLongBase, // TrackElemType::DiagDown60ToFlatLongBase, - TrackElemType::RightEighthDiveLoopUpToOrthogonal, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - TrackElemType::LeftEighthDiveLoopUpToOrthogonal, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - TrackElemType::RightEighthDiveLoopDownToDiag, // TrackElemType::LeftEighthDiveLoopDownToDiag + TrackElemType::RightEighthDiveLoopUpToOrthogonal, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal + TrackElemType::LeftEighthDiveLoopUpToOrthogonal, // TrackElemType::RightEighthDiveLoopUpToOrthogonal + TrackElemType::RightEighthDiveLoopDownToDiag, // TrackElemType::LeftEighthDiveLoopDownToDiag TrackElemType::LeftEighthDiveLoopDownToDiag, // TrackElemType::RightEighthDiveLoopDownToDiag TrackElemType::DiagDown25Brakes, }; static_assert(std::size(kTrackElementMirrorMap) == EnumValue(TrackElemType::Count)); - - /** rct2: 0x00999694 */ - static constexpr uint32_t kTrackHeightMarkerPositions[] = { - (1 << 0), // TrackElemType::Flat - (1 << 0), // TrackElemType::EndStation - (1 << 0), // TrackElemType::BeginStation - (1 << 0), // TrackElemType::MiddleStation - (1 << 0), // TrackElemType::Up25 - (1 << 0), // TrackElemType::Up60 - (1 << 0), // TrackElemType::FlatToUp25 - (1 << 0), // TrackElemType::Up25ToUp60 - (1 << 0), // TrackElemType::Up60ToUp25 - (1 << 0), // TrackElemType::Up25ToFlat - (1 << 0), // TrackElemType::Down25 - (1 << 0), // TrackElemType::Down60 - (1 << 0), // TrackElemType::FlatToDown25 - (1 << 0), // TrackElemType::Down25ToDown60 - (1 << 0), // TrackElemType::Down60ToDown25 - (1 << 0), // TrackElemType::Down25ToFlat - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5Tiles - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5Tiles - (1 << 0), // TrackElemType::FlatToLeftBank - (1 << 0), // TrackElemType::FlatToRightBank - (1 << 0), // TrackElemType::LeftBankToFlat - (1 << 0), // TrackElemType::RightBankToFlat - (1 << 0) | (1 << 6), // TrackElemType::BankedLeftQuarterTurn5Tiles - (1 << 0) | (1 << 6), // TrackElemType::BankedRightQuarterTurn5Tiles - (1 << 0), // TrackElemType::LeftBankToUp25 - (1 << 0), // TrackElemType::RightBankToUp25 - (1 << 0), // TrackElemType::Up25ToLeftBank - (1 << 0), // TrackElemType::Up25ToRightBank - (1 << 0), // TrackElemType::LeftBankToDown25 - (1 << 0), // TrackElemType::RightBankToDown25 - (1 << 0), // TrackElemType::Down25ToLeftBank - (1 << 0), // TrackElemType::Down25ToRightBank - (1 << 0), // TrackElemType::LeftBank - (1 << 0), // TrackElemType::RightBank - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesUp25 - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesUp25 - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesDown25 - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesDown25 - (1 << 0) | (1 << 3), // TrackElemType::SBendLeft - (1 << 0) | (1 << 3), // TrackElemType::SBendRight - (1 << 0) | (1 << 9), // TrackElemType::LeftVerticalLoop - (1 << 0) | (1 << 9), // TrackElemType::RightVerticalLoop - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25 - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25 - (1 << 0), // TrackElemType::LeftQuarterTurn1Tile - (1 << 0), // TrackElemType::RightQuarterTurn1Tile - (1 << 0) | (1 << 2), // TrackElemType::LeftTwistDownToUp - (1 << 0) | (1 << 2), // TrackElemType::RightTwistDownToUp - (1 << 0) | (1 << 2), // TrackElemType::LeftTwistUpToDown - (1 << 0) | (1 << 2), // TrackElemType::RightTwistUpToDown - (1 << 0) | (1 << 3), // TrackElemType::HalfLoopUp - (1 << 0) | (1 << 3), // TrackElemType::HalfLoopDown - (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewDown - (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewDown - (1 << 0), // TrackElemType::FlatToUp60 - (1 << 0), // TrackElemType::Up60ToFlat - (1 << 0), // TrackElemType::FlatToDown60 - (1 << 0), // TrackElemType::Down60ToFlat - (1 << 1) | (1 << 3) | (1 << 6) | (1 << 7), // TrackElemType::TowerBase - (1 << 0), // TrackElemType::TowerSection - (1 << 0), // TrackElemType::FlatCovered - (1 << 0), // TrackElemType::Up25Covered - (1 << 0), // TrackElemType::Up60Covered - (1 << 0), // TrackElemType::FlatToUp25Covered - (1 << 0), // TrackElemType::Up25ToUp60Covered - (1 << 0), // TrackElemType::Up60ToUp25Covered - (1 << 0), // TrackElemType::Up25ToFlatCovered - (1 << 0), // TrackElemType::Down25Covered - (1 << 0), // TrackElemType::Down60Covered - (1 << 0), // TrackElemType::FlatToDown25Covered - (1 << 0), // TrackElemType::Down25ToDown60Covered - (1 << 0), // TrackElemType::Down60ToDown25Covered - (1 << 0), // TrackElemType::Down25ToFlatCovered - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesCovered - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesCovered - (1 << 0) | (1 << 3), // TrackElemType::SBendLeftCovered - (1 << 0) | (1 << 3), // TrackElemType::SBendRightCovered - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesCovered - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesCovered - (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixUpSmall - (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixUpSmall - (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixDownSmall - (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixDownSmall - (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixUpLarge - (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixUpLarge - (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixDownLarge - (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixDownLarge - (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp60 - (1 << 0), // TrackElemType::RightQuarterTurn1TileUp60 - (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown60 - (1 << 0), // TrackElemType::RightQuarterTurn1TileDown60 - (1 << 0), // TrackElemType::Brakes - (1 << 0), // TrackElemType::Booster - (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14) | (1 << 15), // Maze - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeDown - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeDown - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeDown - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeDown - (1 << 0), // TrackElemType::Up25LeftBanked - (1 << 0) | (1 << 3) | (1 << 12) | (1 << 15), // TrackElemType::Up25RightBanked - (1 << 0), // TrackElemType::Waterfall - (1 << 0), // TrackElemType::Rapids - (1 << 0), // TrackElemType::OnRidePhoto - (1 << 0) | (1 << 7), // TrackElemType::Down25LeftBanked - (1 << 0), // TrackElemType::Down25RightBanked - (1 << 0) | (1 << 4), // TrackElemType::Watersplash - (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase - (1 << 0) | (1 << 3), // TrackElemType::Up60ToFlatLongBase - (1 << 0), // TrackElemType::Whirlpool - (1 << 0) | (1 << 3), // TrackElemType::Down60ToFlatLongBase - (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase - (1 << 0) | (1 << 3), // TrackElemType::CableLiftHill - (1 << 0) | (1 << 5), // TrackElemType::ReverseFreefallSlope - (1 << 0), // TrackElemType::ReverseFreefallVertical - (1 << 0), // TrackElemType::Up90 - (1 << 0), // TrackElemType::Down90 - (1 << 0), // TrackElemType::Up60ToUp90 - (1 << 0), // TrackElemType::Down90ToDown60 - (1 << 0), // TrackElemType::Up90ToUp60 - (1 << 0), // TrackElemType::Down60ToDown90 - (1 << 0), // TrackElemType::BrakeForDrop - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiag - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiag - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonal - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonal - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiag - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiag - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonal - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonal - (1 << 0), // TrackElemType::DiagFlat - (1 << 0), // TrackElemType::DiagUp25 - (1 << 0), // TrackElemType::DiagUp60 - (1 << 0), // TrackElemType::DiagFlatToUp25 - (1 << 0), // TrackElemType::DiagUp25ToUp60 - (1 << 0), // TrackElemType::DiagUp60ToUp25 - (1 << 0), // TrackElemType::DiagUp25ToFlat - (1 << 3), // TrackElemType::DiagDown25 - (1 << 3), // TrackElemType::DiagDown60 - (1 << 3), // TrackElemType::DiagFlatToDown25 - (1 << 3), // TrackElemType::DiagDown25ToDown60 - (1 << 3), // TrackElemType::DiagDown60ToDown25 - (1 << 3), // TrackElemType::DiagDown25ToFlat - (1 << 0), // TrackElemType::DiagFlatToUp60 - (1 << 0), // TrackElemType::DiagUp60ToFlat - (1 << 3), // TrackElemType::DiagFlatToDown60 - (1 << 3), // TrackElemType::DiagDown60ToFlat - (1 << 0), // TrackElemType::DiagFlatToLeftBank - (1 << 0), // TrackElemType::DiagFlatToRightBank - (1 << 0), // TrackElemType::DiagLeftBankToFlat - (1 << 0), // TrackElemType::DiagRightBankToFlat - (1 << 0), // TrackElemType::DiagLeftBankToUp25 - (1 << 0), // TrackElemType::DiagRightBankToUp25 - (1 << 0), // TrackElemType::DiagUp25ToLeftBank - (1 << 0), // TrackElemType::DiagUp25ToRightBank - (1 << 3), // TrackElemType::DiagLeftBankToDown25 - (1 << 3), // TrackElemType::DiagRightBankToDown25 - (1 << 3), // TrackElemType::DiagDown25ToLeftBank - (1 << 3), // TrackElemType::DiagDown25ToRightBank - (1 << 0), // TrackElemType::DiagLeftBank - (1 << 0), // TrackElemType::DiagRightBank - (1 << 0), // TrackElemType::LogFlumeReverser - (1 << 0), // TrackElemType::SpinningTunnel - (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollUpToDown - (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollUpToDown - (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollDownToUp - (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollDownToUp - (1 << 0) | (1 << 3), // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - (1 << 0), // TrackElemType::PoweredLift - (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopUp - (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopUp - (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopDown - (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopDown - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistUp - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistUp - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistDown - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistDown - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedUp - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedDown - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewDown - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewDown - (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferUp - (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferDown - (1 << 0) | (1 << 5), // TrackElemType::LeftHeartLineRoll - (1 << 0) | (1 << 5), // TrackElemType::RightHeartLineRoll - (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleA - (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleB - (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleC - (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleD - (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleE - (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::Up90ToInvertedFlatQuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::InvertedFlatToDown90QuarterLoop - (1 << 0) | (1 << 3), // TrackElemType::LeftCurvedLiftHill - (1 << 0) | (1 << 3), // TrackElemType::RightCurvedLiftHill - (1 << 0) | (1 << 5), // TrackElemType::LeftReverser - (1 << 0) | (1 << 5), // TrackElemType::RightReverser - (1 << 0) | (1 << 3), // TrackElemType::AirThrustTopCap - (1 << 0), // TrackElemType::AirThrustVerticalDown - (1 << 0) | (1 << 5), // TrackElemType::AirThrustVerticalDownToLevel - (1 << 0), // TrackElemType::BlockBrakes - (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileUp25 - (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileUp25 - (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileDown25 - (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileDown25 - (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileUp25 - (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileUp25 - (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileDown25 - (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileDown25 - (1 << 0), // TrackElemType::Up25ToLeftBankedUp25 - (1 << 0), // TrackElemType::Up25ToRightBankedUp25 - (1 << 0), // TrackElemType::LeftBankedUp25ToUp25 - (1 << 0), // TrackElemType::RightBankedUp25ToUp25 - (1 << 0), // TrackElemType::Down25ToLeftBankedDown25 - (1 << 0), // TrackElemType::Down25ToRightBankedDown25 - (1 << 0), // TrackElemType::LeftBankedDown25ToDown25 - (1 << 0), // TrackElemType::RightBankedDown25ToDown25 - (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedUp25 - (1 << 0), // TrackElemType::RightBankedFlatToRightBankedUp25 - (1 << 0), // TrackElemType::LeftBankedUp25ToLeftBankedFlat - (1 << 0), // TrackElemType::RightBankedUp25ToRightBankedFlat - (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedDown25 - (1 << 0), // TrackElemType::RightBankedFlatToRightBankedDown25 - (1 << 0), // TrackElemType::LeftBankedDown25ToLeftBankedFlat - (1 << 0), // TrackElemType::RightBankedDown25ToRightBankedFlat - (1 << 0), // TrackElemType::FlatToLeftBankedUp25 - (1 << 0), // TrackElemType::FlatToRightBankedUp25 - (1 << 0), // TrackElemType::LeftBankedUp25ToFlat - (1 << 0), // TrackElemType::RightBankedUp25ToFlat - (1 << 0), // TrackElemType::FlatToLeftBankedDown25 - (1 << 0), // TrackElemType::FlatToRightBankedDown25 - (1 << 0), // TrackElemType::LeftBankedDown25ToFlat - (1 << 0), // TrackElemType::RightBankedDown25ToFlat - (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp90 - (1 << 0), // TrackElemType::RightQuarterTurn1TileUp90 - (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown90 - (1 << 0), // TrackElemType::RightQuarterTurn1TileDown90 - (1 << 0) | (1 << 2), // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::MultiDimFlatToDown90QuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - (1 << 0), // TrackElemType::RotationControlToggle - (1 << 0), // TrackElemType::FlatTrack1x4A - (1 << 0), // TrackElemType::FlatTrack2x2 - (1 << 0), // TrackElemType::FlatTrack4x4 - (1 << 0), // TrackElemType::FlatTrack2x4 - (1 << 0), // TrackElemType::FlatTrack1x5 - (1 << 0), // TrackElemType::FlatTrack1x1A - (1 << 0), // TrackElemType::FlatTrack1x4B - (1 << 0), // TrackElemType::FlatTrack1x1B - (1 << 0), // TrackElemType::FlatTrack1x4C - (1 << 0), // TrackElemType::FlatTrack3x3 - (1 << 0) | (1 << 5), // TrackElemType::LeftLargeCorkscrewUp - (1 << 0) | (1 << 5), // TrackElemType::RightLargeCorkscrewUp - (1 << 0) | (1 << 5), // TrackElemType::LeftLargeCorkscrewDown - (1 << 0) | (1 << 5), // TrackElemType::RightLargeCorkscrewDown - (1 << 0) | (1 << 4), // TrackElemType::LeftMediumHalfLoopUp - (1 << 0) | (1 << 4), // TrackElemType::RightMediumHalfLoopUp - (1 << 0) | (1 << 4), // TrackElemType::LeftMediumHalfLoopDown - (1 << 0) | (1 << 4), // TrackElemType::RightMediumHalfLoopDown - (1 << 0) | (1 << 2), // TrackElemType::LeftZeroGRollUp - (1 << 0) | (1 << 2), // TrackElemType::RightZeroGRollUp - (1 << 0) | (1 << 2), // TrackElemType::LeftZeroGRollDown - (1 << 0) | (1 << 2), // TrackElemType::RightZeroGRollDown - (1 << 0) | (1 << 3), // TrackElemType::LeftLargeZeroGRollUp - (1 << 0) | (1 << 3), // TrackElemType::RightLargeZeroGRollUp - (1 << 0) | (1 << 3), // TrackElemType::LeftLargeZeroGRollDown - (1 << 0) | (1 << 3), // TrackElemType::RightLargeZeroGRollDown - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedUp - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedDown - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalDown25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalDown25 - (1 << 0), // TrackElemType::DiagUp25ToRightBankedUp25 - (1 << 0), // TrackElemType::DiagUp25ToLeftBankedUp25 - (1 << 0), // TrackElemType::DiagRightBankedUp25ToUp25 - (1 << 0), // TrackElemType::DiagLeftBankedUp25ToUp25 - (1 << 0), // TrackElemType::DiagDown25ToRightBankedDown25 - (1 << 0), // TrackElemType::DiagDown25ToLeftBankedDown25 - (1 << 0), // TrackElemType::DiagRightBankedDown25ToDown25 - (1 << 0), // TrackElemType::DiagLeftBankedDown25ToDown25 - (1 << 0), // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - (1 << 0), // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - (1 << 0), // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - (1 << 0), // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - (1 << 0), // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - (1 << 0), // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - (1 << 0), // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - (1 << 0), // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - (1 << 0), // TrackElemType::DiagFlatToRightBankedUp25 - (1 << 0), // TrackElemType::DiagFlatToLeftBankedUp25 - (1 << 0), // TrackElemType::DiagRightBankedUp25ToFlat - (1 << 0), // TrackElemType::DiagLeftBankedUp25ToFlat - (1 << 0), // TrackElemType::DiagFlatToRightBankedDown25 - (1 << 0), // TrackElemType::DiagFlatToLeftBankedDown25 - (1 << 0), // TrackElemType::DiagRightBankedDown25ToFlat - (1 << 0), // TrackElemType::DiagLeftBankedDown25ToFlat - (1 << 0), // TrackElemType::DiagUp25RightBanked - (1 << 0), // TrackElemType::DiagUp25LeftBanked - (1 << 0), // TrackElemType::DiagDown25RightBanked - (1 << 0), // TrackElemType::DiagDown25LeftBanked - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalDown25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalDown25 - (1 << 0), // TrackElemType::DiagBrakes - (1 << 0), // TrackElemType::DiagBlockBrakes - (1 << 0), // TrackElemType::Down25Brakes - (1 << 0), // TrackElemType::DiagBooster - (1 << 0), // TrackElemType::DiagFlatToUp60LongBase, - (1 << 0), // TrackElemType::DiagUp60ToFlatLongBase, - (1 << 9), // TrackElemType::DiagFlatToDown60LongBase, - (1 << 9), // TrackElemType::DiagDown60ToFlatLongBase, - (1 << 0) | (1 << 5), // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - (1 << 0) | (1 << 5), // TrackElemType::RightEighthDiveLoopUpToOrthogonal - (1 << 0) | (1 << 5), // TrackElemType::LeftEighthDiveLoopDownToDiag - (1 << 0) | (1 << 5), // TrackElemType::RightEighthDiveLoopDownToDiag - (1 << 3), // TrackElemType::DiagDown25Brakes - }; - static_assert(std::size(kTrackHeightMarkerPositions) == EnumValue(TrackElemType::Count)); - - - - + /** rct2: 0x0099423C */ static constexpr uint32_t kTrackFlags[] = { /* TrackElemType::Flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, @@ -3007,42 +2649,42 @@ namespace OpenRCT2::TrackMetaData /* TrackElemType::RightEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, /* TrackElemType::LeftEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, /* TrackElemType::RightEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::DiagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::DiagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, /* TrackElemType::DiagBrakes */ 0, /* TrackElemType::DiagBlockBrakes */ 0, /* TrackElemType::Down25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, @@ -3050,7 +2692,7 @@ namespace OpenRCT2::TrackMetaData /* TrackElemType::DiagFlatToUp60LongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP, /* TrackElemType::DiagUp60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP, /* TrackElemType::DiagFlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::DiagDown60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, /* TrackElemType::LeftEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TrackElemType::RightEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TrackElemType::LeftEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, @@ -3391,7 +3033,7 @@ namespace OpenRCT2::TrackMetaData { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Up25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Down25LeftBanked { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Down25RightBanked { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToDiagUp25 @@ -3399,7 +3041,7 @@ namespace OpenRCT2::TrackMetaData { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToDiagDown25 { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToDiagDown25 { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25 { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBrakes @@ -3410,9 +3052,9 @@ namespace OpenRCT2::TrackMetaData { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 48 }, // TrackElemType::DiagUp60ToFlatLongBase, { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, -32 }, // TrackElemType::DiagFlatToDown60LongBase, { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, -24 }, // TrackElemType::DiagDown60ToFlatLongBase, - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::LeftEighthDiveLoopDownToDiag + { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::LeftEighthDiveLoopDownToDiag { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::RightEighthDiveLoopDownToDiag { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown25 }; @@ -4852,6 +4494,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = { { @@ -4864,7 +4507,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kEndStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, - SequenceFlag::disallowDoors }, + SequenceFlag::disallowDoors, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4873,7 +4516,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBeginStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, - SequenceFlag::disallowDoors }, + SequenceFlag::disallowDoors, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4882,7 +4525,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMiddleStationSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, - SequenceFlag::disallowDoors }, + SequenceFlag::disallowDoors, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -4891,6 +4534,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -4899,6 +4543,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -4907,6 +4552,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -4915,6 +4561,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToUp60Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToUp60Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -4923,6 +4570,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60ToUp25Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -4931,6 +4579,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -4939,6 +4588,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -4948,6 +4598,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -4957,6 +4608,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -4966,6 +4618,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToDown60Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -4975,6 +4628,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60ToDown25Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToUp60Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -4984,6 +4638,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -4993,6 +4648,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -5057,6 +4713,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesSeq6 = { .clearance = { -64, -64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5070,6 +4727,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn5TilesSeq0.blockedSegments), @@ -5114,6 +4772,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesSeq6 = { .clearance = { -64, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -5123,6 +4782,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToLeftBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = { { @@ -5135,6 +4795,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToRightBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsFlipXAxis(kFlatToLeftBankSeq0.blockedSegments), @@ -5143,6 +4804,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankToFlatSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = { { @@ -5155,6 +4817,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankToFlatSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankToFlatSeq0.blockedSegments), @@ -5163,6 +4826,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBankedLeftQuarterTurn5TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn5TilesSeq0.blockedSegments, @@ -5207,6 +4871,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBankedLeftQuarterTurn5TilesSeq6 = { .clearance = { -64, -64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5216,6 +4881,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBankedRightQuarterTurn5TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn5TilesSeq0.blockedSegments, @@ -5260,6 +4926,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBankedRightQuarterTurn5TilesSeq6 = { .clearance = { -64, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -5269,6 +4936,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankToUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = { { @@ -5281,6 +4949,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankToUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankToUp25Seq0.blockedSegments), @@ -5289,6 +4958,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToLeftBankSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = { { @@ -5301,6 +4971,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToRightBankSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsFlipXAxis(kUp25ToLeftBankSeq0.blockedSegments), @@ -5309,6 +4980,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankToDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -5322,6 +4994,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankToDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -5331,6 +5004,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToLeftBankSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -5344,6 +5018,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToRightBankSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -5353,6 +5028,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = { { @@ -5365,6 +5041,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankSeq0.blockedSegments), @@ -5373,6 +5050,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn5TilesSeq0.blockedSegments, @@ -5415,6 +5093,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesUp25Seq6 = { .clearance = { -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5424,6 +5103,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn5TilesSeq0.blockedSegments, @@ -5466,6 +5146,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesUp25Seq6 = { .clearance = { -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -5475,6 +5156,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesDown25Seq0 = { .clearance = { 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 2, @@ -5518,6 +5200,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesDown25Seq6 = { .clearance = { -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5527,6 +5210,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesDown25Seq0 = { .clearance = { 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 2, @@ -5570,6 +5254,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesDown25Seq6 = { .clearance = { -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -5579,6 +5264,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendLeftSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -5606,6 +5292,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendLeftSeq3 = { .clearance = { -64, -32, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -5617,6 +5304,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendRightSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kSBendLeftSeq0.blockedSegments), }; @@ -5638,6 +5326,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendRightSeq3 = { .clearance = { -64, 32, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kSBendLeftSeq3.blockedSegments), }; @@ -5645,6 +5334,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftVerticalLoopSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow @@ -5734,6 +5424,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftVerticalLoopSeq9 = { .clearance = { -32, -32, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { EnumsToFlags(PS::right, PS::bottom, PS::centre, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow @@ -5747,6 +5438,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightVerticalLoopSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftVerticalLoopSeq0.blockedSegments), }; @@ -5798,6 +5490,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightVerticalLoopSeq9 = { .clearance = { -32, 32, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftVerticalLoopSeq9.blockedSegments), }; @@ -5805,6 +5498,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -5828,6 +5522,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesSeq3 = { .clearance = { -32, -32, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner0 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5841,6 +5536,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn3TilesSeq0.blockedSegments), @@ -5861,6 +5557,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner1 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -5870,6 +5567,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn3TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -5893,6 +5591,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn3TilesSeq3 = { .clearance = { -32, -32, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner0 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5906,6 +5605,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn3TilesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn3TilesSeq0.blockedSegments), @@ -5926,6 +5626,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn3TilesSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner1 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -5935,6 +5636,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -5962,6 +5664,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesUp25Seq3 = { .clearance = { -32, -32, 16, 16, { 0b0111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner0 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -5975,6 +5678,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn3TilesUp25Seq0.blockedSegments), @@ -5995,6 +5699,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesUp25Seq3 = { .clearance = { -32, 32, 16, 16, { 0b1011, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -6004,6 +5709,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesDown25Seq0 = { .clearance = { 0, 0, 16, 16, { 0b0111, 0b0011 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn3TilesUp25Seq0.blockedSegments, @@ -6024,6 +5730,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesDown25Seq3 = { .clearance = { -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner0 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, @@ -6033,6 +5740,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesDown25Seq0 = { .clearance = { 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn3TilesUp25Seq0.blockedSegments, @@ -6053,6 +5761,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, @@ -6062,6 +5771,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn1TileSeq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0011, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -6074,6 +5784,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn1TileSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn1TileSeq0.blockedSegments), @@ -6082,6 +5793,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftTwistDownToUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow @@ -6103,6 +5815,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftTwistDownToUpSeq2 = { .clearance = { -64, 0, 16, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow @@ -6114,6 +5827,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightTwistDownToUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftTwistDownToUpSeq0.blockedSegments), }; @@ -6127,6 +5841,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightTwistDownToUpSeq2 = { .clearance = { -64, 0, 16, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftTwistDownToUpSeq2.blockedSegments), }; @@ -6134,6 +5849,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftTwistUpToDownSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftTwistDownToUpSeq2.blockedSegments, 2), }; @@ -6147,6 +5863,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftTwistUpToDownSeq2 = { .clearance = { -64, 0, -16, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsRotate(kLeftTwistDownToUpSeq0.blockedSegments, 2), }; @@ -6154,6 +5871,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightTwistUpToDownSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftTwistUpToDownSeq0.blockedSegments), }; @@ -6167,6 +5885,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightTwistUpToDownSeq2 = { .clearance = { -64, 0, -16, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftTwistUpToDownSeq2.blockedSegments), }; @@ -6174,6 +5893,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHalfLoopUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -6205,6 +5925,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHalfLoopUpSeq3 = { .clearance = { -32, 0, 120, 16, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -6214,6 +5935,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHalfLoopDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -6245,6 +5967,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHalfLoopDownSeq3 = { .clearance = { 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -6256,6 +5979,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftCorkscrewUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow @@ -6277,6 +6001,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftCorkscrewUpSeq2 = { .clearance = { -32, -32, 48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .invertSegmentBlocking = true, .blockedSegments = { { @@ -6289,6 +6014,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightCorkscrewUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftCorkscrewUpSeq0.blockedSegments), }; @@ -6302,6 +6028,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightCorkscrewUpSeq2 = { .clearance = { -32, 32, 48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .invertSegmentBlocking = true, .blockedSegments = { { @@ -6314,6 +6041,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftCorkscrewDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kRightCorkscrewUpSeq2.blockedSegments, 1), @@ -6328,6 +6056,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftCorkscrewDownSeq2 = { .clearance = { -32, -32, -80, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsRotate(kRightCorkscrewUpSeq0.blockedSegments, 1), }; @@ -6335,6 +6064,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightCorkscrewDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftCorkscrewUpSeq2.blockedSegments, 3), @@ -6349,6 +6079,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightCorkscrewDownSeq2 = { .clearance = { -32, 32, -80, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsRotate(kLeftCorkscrewUpSeq0.blockedSegments, 3), }; @@ -6356,6 +6087,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToUp60Seq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp60Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -6364,6 +6096,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60ToFlatSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -6372,6 +6105,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToDown60Seq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToFlat }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = -2, @@ -6381,6 +6115,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60ToFlatSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp60Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -6395,7 +6130,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -6407,7 +6142,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -6425,13 +6160,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerBaseSeq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kTowerBaseSeq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -6443,6 +6178,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kTowerSectionSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, }; static constexpr SequenceDescriptor kTowerSectionSeq1 = { @@ -6452,6 +6188,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -6459,6 +6196,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25CoveredSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kUp25Seq0.blockedSegments, }; @@ -6466,6 +6204,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60CoveredSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kUp60Seq0.blockedSegments, }; @@ -6473,6 +6212,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToUp25CoveredSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatToUp25Seq0.blockedSegments, }; @@ -6480,6 +6220,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToUp60CoveredSeq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kUp25ToUp60Seq0.blockedSegments, }; @@ -6487,6 +6228,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60ToUp25CoveredSeq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kUp60ToUp25Seq0.blockedSegments, }; @@ -6494,6 +6236,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToFlatCoveredSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kUp25ToFlatSeq0.blockedSegments, }; @@ -6501,6 +6244,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25CoveredSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kDown25Seq0.blockedSegments, }; @@ -6508,6 +6252,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60CoveredSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kDown60Seq0.blockedSegments, }; @@ -6515,6 +6260,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToDown25CoveredSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatToDown25Seq0.blockedSegments, }; @@ -6522,6 +6268,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToDown60CoveredSeq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kDown25ToDown60Seq0.blockedSegments, }; @@ -6529,6 +6276,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60ToDown25CoveredSeq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kDown60ToDown25Seq0.blockedSegments, }; @@ -6536,6 +6284,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToFlatCoveredSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kDown25ToFlatSeq0.blockedSegments, }; @@ -6543,6 +6292,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn5TilesSeq0.blockedSegments, }; @@ -6579,6 +6329,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn5TilesCoveredSeq6 = { .clearance = { -64, -64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, .blockedSegments = kLeftQuarterTurn5TilesSeq6.blockedSegments, @@ -6587,6 +6338,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn5TilesSeq0.blockedSegments, }; @@ -6623,6 +6375,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn5TilesCoveredSeq6 = { .clearance = { -64, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, .blockedSegments = kRightQuarterTurn5TilesSeq6.blockedSegments, @@ -6631,6 +6384,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendLeftCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kSBendLeftSeq0.blockedSegments, }; @@ -6649,12 +6403,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendLeftCoveredSeq3 = { .clearance = { -64, -32, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kSBendLeftSeq3.blockedSegments, }; static constexpr SequenceDescriptor kSBendRightCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kSBendRightSeq0.blockedSegments, }; @@ -6673,12 +6429,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSBendRightCoveredSeq3 = { .clearance = { -64, 32, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kSBendRightSeq3.blockedSegments, }; static constexpr SequenceDescriptor kLeftQuarterTurn3TilesCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn3TilesSeq0.blockedSegments, }; @@ -6698,6 +6456,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesCoveredSeq3 = { .clearance = { -32, -32, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, .blockedSegments = kLeftQuarterTurn3TilesSeq3.blockedSegments, @@ -6706,6 +6465,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesCoveredSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn3TilesSeq0.blockedSegments, }; @@ -6725,6 +6485,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesCoveredSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, .blockedSegments = kRightQuarterTurn3TilesSeq3.blockedSegments, @@ -6733,6 +6494,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixUpSmallSeq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -6813,6 +6575,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixUpSmallSeq7 = { .clearance = { 0, -96, 8, 4, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -2, @@ -6826,6 +6589,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixUpSmallSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftHalfBankedHelixUpSmallSeq0.blockedSegments), @@ -6878,6 +6642,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixUpSmallSeq7 = { .clearance = { 0, 96, 8, 4, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 2, @@ -6887,6 +6652,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixDownSmallSeq0 = { .clearance = { 0, 0, 8, 4, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftHalfBankedHelixUpSmallSeq0.blockedSegments, @@ -6939,6 +6705,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixDownSmallSeq7 = { .clearance = { 0, -96, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -2, @@ -6948,6 +6715,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixDownSmallSeq0 = { .clearance = { 0, 0, 8, 4, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightHalfBankedHelixUpSmallSeq0.blockedSegments, @@ -7000,6 +6768,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixDownSmallSeq7 = { .clearance = { 0, 96, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 2, @@ -7009,6 +6778,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixUpLargeSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -7155,6 +6925,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixUpLargeSeq13 = { .clearance = { 0, -160, 8, 4, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -2, @@ -7168,6 +6939,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixUpLargeSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftHalfBankedHelixUpLargeSeq0.blockedSegments), @@ -7258,6 +7030,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixUpLargeSeq13 = { .clearance = { 0, 160, 8, 4, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 2, @@ -7267,6 +7040,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixDownLargeSeq0 = { .clearance = { 0, 0, 8, 4, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftHalfBankedHelixUpLargeSeq0.blockedSegments, @@ -7357,6 +7131,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHalfBankedHelixDownLargeSeq13 = { .clearance = { 0, -160, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -2, @@ -7366,6 +7141,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixDownLargeSeq0 = { .clearance = { 0, 0, 8, 4, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightHalfBankedHelixUpLargeSeq0.blockedSegments, @@ -7456,6 +7232,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHalfBankedHelixDownLargeSeq13 = { .clearance = { 0, 160, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 2, @@ -7465,6 +7242,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn1TileUp60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0011, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -7473,6 +7251,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn1TileUp60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -7481,6 +7260,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn1TileDown60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0011, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -7489,6 +7269,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn1TileDown60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), @@ -7497,6 +7278,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBrakesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -7505,11 +7287,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBoosterSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, }; + // Maze sequence blocks do not have the height marker flag set because they are handled differently static constexpr SequenceDescriptor kMazeSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, @@ -7595,6 +7379,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kBankedLeftQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7631,6 +7416,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeUpSeq6 = { .clearance = { -64, -64, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, .blockedSegments = kBankedLeftQuarterTurn5TilesSeq6.blockedSegments, @@ -7639,6 +7425,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterBankedHelixLargeUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kBankedRightQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7675,6 +7462,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterBankedHelixLargeUpSeq6 = { .clearance = { -64, 64, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, .blockedSegments = kBankedRightQuarterTurn5TilesSeq6.blockedSegments, @@ -7683,6 +7471,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeDownSeq0 = { .clearance = { 0, 0, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kBankedLeftQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7719,6 +7508,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterBankedHelixLargeDownSeq6 = { .clearance = { -64, -64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, .blockedSegments = kBankedLeftQuarterTurn5TilesSeq6.blockedSegments, @@ -7727,6 +7517,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterBankedHelixLargeDownSeq0 = { .clearance = { 0, 0, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kBankedRightQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7763,6 +7554,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterBankedHelixLargeDownSeq6 = { .clearance = { -64, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, .blockedSegments = kBankedRightQuarterTurn5TilesSeq6.blockedSegments, @@ -7771,6 +7563,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterHelixLargeUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7807,6 +7600,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterHelixLargeUpSeq6 = { .clearance = { -64, -64, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, .blockedSegments = kLeftQuarterTurn5TilesSeq6.blockedSegments, @@ -7815,6 +7609,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterHelixLargeUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7851,6 +7646,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterHelixLargeUpSeq6 = { .clearance = { -64, 64, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, .blockedSegments = kRightQuarterTurn5TilesSeq6.blockedSegments, @@ -7859,6 +7655,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterHelixLargeDownSeq0 = { .clearance = { 0, 0, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kLeftQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7895,6 +7692,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterHelixLargeDownSeq6 = { .clearance = { -64, -64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = -1, .blockedSegments = kLeftQuarterTurn5TilesSeq6.blockedSegments, @@ -7903,6 +7701,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterHelixLargeDownSeq0 = { .clearance = { 0, 0, 0, 12, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kRightQuarterTurn5TilesSeq0.blockedSegments, }; @@ -7939,6 +7738,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterHelixLargeDownSeq6 = { .clearance = { -64, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre }, .extraSupportRotation = 1, .blockedSegments = kRightQuarterTurn5TilesSeq6.blockedSegments, @@ -7947,6 +7747,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25LeftBankedSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -7955,6 +7756,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25RightBankedSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -7963,6 +7765,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kWaterfallSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -7974,6 +7777,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRapidsSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -7981,6 +7785,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kOnRidePhotoSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsAllTypes(kSegmentsAll), }; @@ -7988,6 +7793,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25LeftBankedSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -7997,6 +7803,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25RightBankedSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -8006,6 +7813,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kWatersplashSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -8050,6 +7858,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kWatersplashSeq4 = { .clearance = { -128, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -8061,6 +7870,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToUp60LongBaseSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp60DegLongBaseSeq0 }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -8085,6 +7895,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToUp60LongBaseSeq3 = { .clearance = { -96, 0, 40, 48, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp60DegLongBaseSeq3 }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -8093,6 +7904,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60ToFlatLongBaseSeq0 = { .clearance = { 0, 0, 0, 48, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToFlatLongBaseSeq0 }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -8117,6 +7929,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60ToFlatLongBaseSeq3 = { .clearance = { -96, 0, 80, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToFlatLongBaseSeq3 }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -8125,6 +7938,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kWhirlpoolSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -8136,6 +7950,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60ToFlatLongBaseSeq0 = { .clearance = { 0, 0, 40, 48, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp60DegLongBaseSeq3 }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -8163,6 +7978,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60ToFlatLongBaseSeq3 = { .clearance = { -96, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp60DegLongBaseSeq0 }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -8172,6 +7988,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToDown60LongBaseSeq0 = { .clearance = { 0, 0, 80, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToFlatLongBaseSeq3 }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -8199,6 +8016,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToDown60LongBaseSeq3 = { .clearance = { -96, 0, 0, 48, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up60DegToFlatLongBaseSeq0 }, .metalSupports = { MetalSupportPlace::centre, true }, .extraSupportRotation = 2, @@ -8208,6 +8026,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kCableLiftHillSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8229,6 +8048,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kCableLiftHillSeq3 = { .clearance = { -96, 0, -96, 64, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::centre, true }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8236,6 +8056,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kReverseFreefallSlopeSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8271,6 +8092,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kReverseFreefallSlopeSeq5 = { .clearance = { -192, 0, 0, 208, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1011, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8283,6 +8105,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kReverseFreefallVerticalSeq0 = { .clearance = { 0, 0, 0, 48, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8294,6 +8117,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp90Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1111, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8304,6 +8128,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown90Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1111, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8314,6 +8139,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp60ToUp90Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b1100 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1011, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8325,6 +8151,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown90ToDown60Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0b0011 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1110, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8332,6 +8159,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp90ToUp60Seq0 = { .clearance = { 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1011, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8339,6 +8167,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown60ToDown90Seq0 = { .clearance = { 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1110, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -8350,6 +8179,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBrakeForDropSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = kFlatSeq0.blockedSegments, @@ -8358,6 +8188,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToDiagSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = { { @@ -8402,6 +8233,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToDiagSeq4 = { .clearance = { -64, -32, 0, 0, { 0b0001, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::bottomCorner }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow @@ -8413,6 +8245,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToDiagSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .metalSupports = { MetalSupportPlace::centre }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthToDiagSeq0.blockedSegments), @@ -8441,12 +8274,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToDiagSeq4 = { .clearance = { -64, 32, 0, 0, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .metalSupports = { MetalSupportPlace::leftCorner }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthToDiagSeq4.blockedSegments), }; static constexpr SequenceDescriptor kLeftEighthToOrthogonalSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kRightEighthToDiagSeq4.blockedSegments, 2), }; @@ -8475,11 +8310,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToOrthogonalSeq4 = { .clearance = { -64, 32, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kRightEighthToDiagSeq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kRightEighthToOrthogonalSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kLeftEighthToDiagSeq4.blockedSegments, 3), }; @@ -8508,12 +8345,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToOrthogonalSeq4 = { .clearance = { -32, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kLeftEighthToDiagSeq0.blockedSegments, 3), }; static constexpr SequenceDescriptor kLeftEighthBankToDiagSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -8557,6 +8396,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthBankToDiagSeq4 = { .clearance = { -64, -32, 0, 0, { 0b0001, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow EnumsToFlags( @@ -8569,6 +8409,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToDiagSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthBankToDiagSeq0.blockedSegments), }; @@ -8596,11 +8437,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToDiagSeq4 = { .clearance = { -64, 32, 0, 0, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthBankToDiagSeq4.blockedSegments), }; static constexpr SequenceDescriptor kLeftEighthBankToOrthogonalSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kRightEighthBankToDiagSeq4.blockedSegments, 2), }; @@ -8629,11 +8472,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthBankToOrthogonalSeq4 = { .clearance = { -64, 32, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kRightEighthBankToDiagSeq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kRightEighthBankToOrthogonalSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kLeftEighthBankToDiagSeq4.blockedSegments, 3), }; @@ -8662,11 +8507,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToOrthogonalSeq4 = { .clearance = { -32, 64, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kLeftEighthBankToDiagSeq0.blockedSegments, 3), }; static constexpr SequenceDescriptor kDiagFlatSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8707,6 +8554,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8747,6 +8595,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp60Seq0 = { .clearance = { 0, 0, 0, 64, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8787,6 +8636,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8827,6 +8677,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25ToUp60Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8867,6 +8718,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp60ToUp25Seq0 = { .clearance = { 0, 0, 0, 32, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8907,6 +8759,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -8966,6 +8819,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp25Seq0.blockedSegments, 2), }; @@ -8990,6 +8844,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown60Seq3 = { .clearance = { -32, 32, 0, 64, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp60Seq0.blockedSegments, 2), }; @@ -9014,6 +8869,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToDown25Seq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp25ToFlatSeq0.blockedSegments, 2), }; @@ -9038,6 +8894,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25ToDown60Seq3 = { .clearance = { -32, 32, 0, 32, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp60ToUp25Seq0.blockedSegments, 2), }; @@ -9062,6 +8919,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown60ToDown25Seq3 = { .clearance = { -32, 32, 0, 32, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp25ToUp60Seq0.blockedSegments, 2), }; @@ -9086,11 +8944,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25ToFlatSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagFlatToUp25Seq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kDiagFlatToUp60Seq0 = { .clearance = { 0, 0, 0, 24, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow kSegmentsUnimplemented, // inverted @@ -9131,6 +8991,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp60ToFlatSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow kSegmentsUnimplemented, // inverted @@ -9190,6 +9051,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToDown60Seq3 = { .clearance = { -32, 32, 0, 24, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp60ToFlatSeq0.blockedSegments, 2), }; @@ -9214,11 +9076,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown60ToFlatSeq3 = { .clearance = { -32, 32, 0, 24, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagFlatToUp60Seq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kDiagFlatToLeftBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9259,6 +9123,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToRightBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9299,6 +9164,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankToFlatSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9339,6 +9205,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankToFlatSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9379,6 +9246,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankToUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9419,6 +9287,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankToUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9459,6 +9328,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25ToLeftBankSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9499,6 +9369,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25ToRightBankSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9570,6 +9441,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankToDown25Seq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // narrow EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // inverted @@ -9610,6 +9482,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankToDown25Seq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // narrow EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // inverted @@ -9650,6 +9523,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25ToLeftBankSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // narrow EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // inverted @@ -9690,6 +9564,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25ToRightBankSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // narrow EnumsToFlags(PS::left, PS::centre, PS::topLeft, PS::bottomLeft), // inverted @@ -9699,6 +9574,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9739,6 +9615,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // inverted @@ -9779,6 +9656,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLogFlumeReverserSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -9786,7 +9664,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kSpinningTunnelSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, - .flags = { SequenceFlag::disallowDoors }, + .flags = { SequenceFlag::disallowDoors, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -9798,6 +9676,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBarrelRollUpToDownSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow @@ -9820,6 +9699,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBarrelRollUpToDownSeq2 = { .clearance = { -64, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = { { @@ -9832,6 +9712,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBarrelRollUpToDownSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBarrelRollUpToDownSeq0.blockedSegments), }; @@ -9846,6 +9727,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBarrelRollUpToDownSeq2 = { .clearance = { -64, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBarrelRollUpToDownSeq2.blockedSegments), @@ -9854,6 +9736,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBarrelRollDownToUpSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftBarrelRollUpToDownSeq2.blockedSegments, 2), @@ -9869,6 +9752,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBarrelRollDownToUpSeq2 = { .clearance = { -64, 0, -32, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kLeftBarrelRollUpToDownSeq0.blockedSegments, 2), }; @@ -9876,6 +9760,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBarrelRollDownToUpSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBarrelRollDownToUpSeq0.blockedSegments), @@ -9891,6 +9776,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBarrelRollDownToUpSeq2 = { .clearance = { -64, 0, -32, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBarrelRollDownToUpSeq2.blockedSegments), }; @@ -9898,6 +9784,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankToLeftQuarterTurn3TilesUp25Seq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0b0100 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -9929,6 +9816,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankToLeftQuarterTurn3TilesUp25Seq3 = { .clearance = { -32, -32, 16, 16, { 0b0111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topLeft, PS::bottomRight), // narrow @@ -9940,6 +9828,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankToRightQuarterTurn3TilesUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankToLeftQuarterTurn3TilesUp25Seq0.blockedSegments), }; @@ -9959,6 +9848,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankToRightQuarterTurn3TilesUp25Seq3 = { .clearance = { -32, 32, 16, 16, { 0b1011, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankToLeftQuarterTurn3TilesUp25Seq3.blockedSegments), }; @@ -9966,6 +9856,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesDown25ToLeftBankSeq0 = { .clearance = { 0, 0, 16, 16, { 0b0111, 0b0011 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsRotate(kRightBankToRightQuarterTurn3TilesUp25Seq3.blockedSegments, 1), }; @@ -9985,6 +9876,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn3TilesDown25ToLeftBankSeq3 = { .clearance = { -32, -32, 0, 0, { 0b0111, 0b0001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsRotate(kRightBankToRightQuarterTurn3TilesUp25Seq0.blockedSegments, 1), }; @@ -9992,6 +9884,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesDown25ToRightBankSeq0 = { .clearance = { 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn3TilesDown25ToLeftBankSeq0.blockedSegments), }; @@ -10011,6 +9904,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn3TilesDown25ToRightBankSeq3 = { .clearance = { -32, 32, 0, 0, { 0b1011, 0b0010 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn3TilesDown25ToLeftBankSeq3.blockedSegments), }; @@ -10018,6 +9912,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kPoweredLiftSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -10025,6 +9920,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeHalfLoopUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -10085,6 +9981,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeHalfLoopUpSeq6 = { .clearance = { -64, -32, 248, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::right, PS::bottom, PS::centre, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow @@ -10096,6 +9993,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeHalfLoopUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeHalfLoopUpSeq0.blockedSegments), }; @@ -10132,6 +10030,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeHalfLoopUpSeq6 = { .clearance = { -64, 32, 248, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeHalfLoopUpSeq6.blockedSegments), }; @@ -10139,6 +10038,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeHalfLoopDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = kRightLargeHalfLoopUpSeq6.blockedSegments, }; @@ -10176,12 +10076,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeHalfLoopDownSeq6 = { .clearance = { 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightLargeHalfLoopUpSeq0.blockedSegments, }; static constexpr SequenceDescriptor kRightLargeHalfLoopDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = kLeftLargeHalfLoopUpSeq6.blockedSegments, }; @@ -10219,12 +10121,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeHalfLoopDownSeq6 = { .clearance = { 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kLeftLargeHalfLoopUpSeq0.blockedSegments, }; static constexpr SequenceDescriptor kLeftFlyerTwistUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // inverted @@ -10245,6 +10149,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerTwistUpSeq2 = { .clearance = { -64, 0, -16, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow @@ -10256,6 +10161,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerTwistUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerTwistUpSeq0.blockedSegments), }; @@ -10268,6 +10174,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerTwistUpSeq2 = { .clearance = { -64, 0, -16, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerTwistUpSeq2.blockedSegments), }; @@ -10275,6 +10182,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerTwistDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kLeftFlyerTwistUpSeq2.blockedSegments, 2), }; @@ -10287,6 +10195,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerTwistDownSeq2 = { .clearance = { -64, 0, 16, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftFlyerTwistUpSeq0.blockedSegments, 2), }; @@ -10294,6 +10203,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerTwistDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerTwistDownSeq0.blockedSegments), }; @@ -10306,6 +10216,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerTwistDownSeq2 = { .clearance = { -64, 0, 16, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerTwistDownSeq2.blockedSegments), }; @@ -10313,6 +10224,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopUninvertedUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -10343,6 +10255,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopUninvertedUpSeq3 = { .clearance = { -32, 0, 120, 16, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -10353,6 +10266,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopInvertedDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlyerHalfLoopUninvertedUpSeq3.blockedSegments, }; @@ -10372,6 +10286,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopInvertedDownSeq3 = { .clearance = { 32, 0, -120, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = kFlyerHalfLoopUninvertedUpSeq0.blockedSegments, }; @@ -10379,6 +10294,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerCorkscrewUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kLeftCorkscrewUpSeq0.blockedSegments, }; @@ -10391,6 +10307,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerCorkscrewUpSeq2 = { .clearance = { -32, -32, 48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = kLeftCorkscrewUpSeq2.blockedSegments, }; @@ -10398,6 +10315,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerCorkscrewUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightCorkscrewUpSeq0.blockedSegments, }; @@ -10410,6 +10328,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerCorkscrewUpSeq2 = { .clearance = { -32, 32, 48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = kRightCorkscrewUpSeq2.blockedSegments, }; @@ -10417,6 +10336,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerCorkscrewDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow EnumsToFlags(PS::top, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // inverted @@ -10437,6 +10357,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerCorkscrewDownSeq2 = { .clearance = { -32, -32, -48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -10448,6 +10369,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerCorkscrewDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow EnumsToFlags(PS::bottom, PS::centre, PS::topRight, PS::bottomLeft, PS::bottomRight), // inverted @@ -10464,6 +10386,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerCorkscrewDownSeq2 = { .clearance = { -32, 32, -48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerCorkscrewDownSeq2.blockedSegments), }; @@ -10471,6 +10394,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHeartLineTransferUpSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -10504,6 +10428,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHeartLineTransferUpSeq3 = { .clearance = { 0, 0, 32, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow kSegmentsUnimplemented, // inverted @@ -10514,6 +10439,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHeartLineTransferDownSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kHeartLineTransferUpSeq3.blockedSegments, }; @@ -10534,6 +10460,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kHeartLineTransferDownSeq3 = { .clearance = { 0, 0, -32, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .blockedSegments = kHeartLineTransferUpSeq0.blockedSegments, }; @@ -10541,6 +10468,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHeartLineRollSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -10596,6 +10524,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftHeartLineRollSeq5 = { .clearance = { -160, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -10607,6 +10536,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHeartLineRollSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftHeartLineRollSeq0.blockedSegments), }; @@ -10642,12 +10572,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightHeartLineRollSeq5 = { .clearance = { -160, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftHeartLineRollSeq5.blockedSegments), }; static constexpr SequenceDescriptor kMinigolfHoleASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10658,6 +10590,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleASeq1 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10668,6 +10601,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleBSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10678,6 +10612,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleBSeq1 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10688,6 +10623,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleCSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10698,6 +10634,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleCSeq1 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10708,6 +10645,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleDSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10728,6 +10666,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleDSeq2 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::nwSe }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10738,6 +10677,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleESeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10758,6 +10698,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMinigolfHoleESeq2 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::nwSe }, .blockedSegments = { { kSegmentsAll, // narrow @@ -10769,6 +10710,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimInvertedFlatToDown90QuarterLoopSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -10781,6 +10723,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimInvertedFlatToDown90QuarterLoopSeq2 = { .clearance = { -64, 0, -96, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -10791,6 +10734,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp90ToInvertedFlatQuarterLoopSeq0 = { .clearance = { 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -10812,6 +10756,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp90ToInvertedFlatQuarterLoopSeq2 = { .clearance = { 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -10823,6 +10768,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kInvertedFlatToDown90QuarterLoopSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -10844,6 +10790,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kInvertedFlatToDown90QuarterLoopSeq2 = { .clearance = { -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -10864,6 +10811,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftCurvedLiftHillSeq0 = { .clearance = { 0, 0, 0, 0, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -10895,6 +10843,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftCurvedLiftHillSeq3 = { .clearance = { -32, -32, 0, 8, { 0b0111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topLeft, PS::bottomRight), // narrow @@ -10906,6 +10855,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightCurvedLiftHillSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftCurvedLiftHillSeq0.blockedSegments), }; @@ -10925,12 +10875,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightCurvedLiftHillSeq3 = { .clearance = { -32, 32, 0, 8, { 0b1011, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftCurvedLiftHillSeq3.blockedSegments), }; static constexpr SequenceDescriptor kLeftReverserSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -10981,6 +10933,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftReverserSeq5 = { .clearance = { -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -10991,6 +10944,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightReverserSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftReverserSeq0.blockedSegments), }; @@ -11021,12 +10975,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightReverserSeq5 = { .clearance = { -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftReverserSeq5.blockedSegments), }; static constexpr SequenceDescriptor kAirThrustTopCapSeq0 = { .clearance = { 0, 0, 0, 32, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow kSegmentsUnimplemented, // inverted @@ -11054,6 +11010,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kAirThrustTopCapSeq3 = { .clearance = { -32, 0, 0, 32, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow kSegmentsUnimplemented, // inverted @@ -11063,6 +11020,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kAirThrustVerticalDownSeq0 = { .clearance = { 0, 0, 0, 48, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow kSegmentsUnimplemented, // inverted @@ -11082,6 +11040,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kAirThrustVerticalDownToLevelSeq0 = { .clearance = { 0, 0, 0, 208, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -11137,6 +11096,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kAirThrustVerticalDownToLevelSeq5 = { .clearance = { -128, 0, 0, 32, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -11158,6 +11118,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kBlockBrakesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -11165,6 +11126,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn3TileUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11191,6 +11153,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn3TileUp25Seq3 = { .clearance = { -32, -32, 16, 16, { 0b0111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topLeft, PS::bottomRight), // narrow @@ -11202,6 +11165,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn3TileUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn3TileUp25Seq0.blockedSegments), }; @@ -11221,6 +11185,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn3TileUp25Seq3 = { .clearance = { -32, 32, 16, 16, { 0b1011, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn3TileUp25Seq3.blockedSegments), }; @@ -11228,6 +11193,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn3TileDown25Seq0 = { .clearance = { 0, 0, 16, 16, { 0b0111, 0b0011 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsRotate(kRightBankedQuarterTurn3TileUp25Seq3.blockedSegments, 1), }; @@ -11247,6 +11213,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn3TileDown25Seq3 = { .clearance = { -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsRotate(kRightBankedQuarterTurn3TileUp25Seq0.blockedSegments, 1), }; @@ -11254,6 +11221,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn3TileDown25Seq0 = { .clearance = { 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn3TileDown25Seq0.blockedSegments), }; @@ -11273,6 +11241,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn3TileDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn3TileDown25Seq3.blockedSegments), }; @@ -11280,6 +11249,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn5TileUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11338,6 +11308,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn5TileUp25Seq6 = { .clearance = { -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = { { EnumsToFlags(PS::bottom, PS::centre, PS::topLeft, PS::bottomRight), // narrow @@ -11353,6 +11324,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn5TileUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn5TileUp25Seq0.blockedSegments), }; @@ -11391,6 +11363,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn5TileUp25Seq6 = { .clearance = { -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn5TileUp25Seq6.blockedSegments), }; @@ -11402,6 +11375,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn5TileDown25Seq0 = { .clearance = { 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kRightBankedQuarterTurn5TileUp25Seq6.blockedSegments, 1), }; @@ -11440,6 +11414,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedQuarterTurn5TileDown25Seq6 = { .clearance = { -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner2 }, .blockedSegments = blockedSegmentsRotate(kRightBankedQuarterTurn5TileUp25Seq0.blockedSegments, 1), }; @@ -11451,6 +11426,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn5TileDown25Seq0 = { .clearance = { 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn5TileDown25Seq0.blockedSegments), }; @@ -11489,6 +11465,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedQuarterTurn5TileDown25Seq6 = { .clearance = { -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::corner3 }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedQuarterTurn5TileDown25Seq6.blockedSegments), }; @@ -11500,6 +11477,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToLeftBankedUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11511,6 +11489,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kUp25ToRightBankedUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = blockedSegmentsFlipXAxis(kUp25ToLeftBankedUp25Seq0.blockedSegments), }; @@ -11518,6 +11497,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedUp25ToUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11529,6 +11509,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedUp25ToUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedUp25ToUp25Seq0.blockedSegments), }; @@ -11536,6 +11517,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToLeftBankedDown25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = { { @@ -11548,6 +11530,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDown25ToRightBankedDown25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kDown25ToLeftBankedDown25Seq0.blockedSegments), @@ -11556,6 +11539,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedDown25ToDown25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = { { @@ -11568,6 +11552,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedDown25ToDown25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedDown25ToDown25Seq0.blockedSegments), @@ -11576,6 +11561,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedFlatToLeftBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11587,6 +11573,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedFlatToRightBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedFlatToLeftBankedUp25Seq0.blockedSegments), }; @@ -11594,6 +11581,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedUp25ToLeftBankedFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11605,6 +11593,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedUp25ToRightBankedFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedUp25ToLeftBankedFlatSeq0.blockedSegments), }; @@ -11612,6 +11601,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedFlatToLeftBankedDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .extraSupportRotation = 2, .blockedSegments = { { @@ -11624,6 +11614,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedFlatToRightBankedDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedFlatToLeftBankedDown25Seq0.blockedSegments), @@ -11632,6 +11623,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedDown25ToLeftBankedFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .extraSupportRotation = 2, .blockedSegments = { { @@ -11644,6 +11636,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedDown25ToRightBankedFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedDown25ToLeftBankedFlatSeq0.blockedSegments), @@ -11652,6 +11645,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToLeftBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11663,6 +11657,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToRightBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .blockedSegments = blockedSegmentsFlipXAxis(kFlatToLeftBankedUp25Seq0.blockedSegments), }; @@ -11670,6 +11665,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedUp25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -11681,6 +11677,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedUp25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedUp25ToFlatSeq0.blockedSegments), }; @@ -11688,6 +11685,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToLeftBankedDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .extraSupportRotation = 2, .blockedSegments = { { @@ -11700,6 +11698,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatToRightBankedDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25DegToFlat }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kFlatToLeftBankedDown25Seq0.blockedSegments), @@ -11708,6 +11707,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftBankedDown25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .extraSupportRotation = 2, .blockedSegments = { { @@ -11720,6 +11720,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightBankedDown25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::flatToUp25Deg }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kLeftBankedDown25ToFlatSeq0.blockedSegments), @@ -11728,6 +11729,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn1TileUp90Seq0 = { .clearance = { 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1111, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -11742,6 +11744,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn1TileUp90Seq0 = { .clearance = { 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1111, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn1TileUp90Seq0.blockedSegments), }; @@ -11752,6 +11755,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftQuarterTurn1TileDown90Seq0 = { .clearance = { 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1111, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topLeft, PS::bottomRight), // narrow EnumsToFlags(PS::centre, PS::topLeft, PS::bottomRight), // inverted @@ -11766,6 +11770,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightQuarterTurn1TileDown90Seq0 = { .clearance = { 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1111, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftQuarterTurn1TileDown90Seq0.blockedSegments), }; @@ -11776,6 +11781,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimUp90ToInvertedFlatQuarterLoopSeq0 = { .clearance = { 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -11788,12 +11794,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimUp90ToInvertedFlatQuarterLoopSeq2 = { .clearance = { 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; static constexpr SequenceDescriptor kMultiDimFlatToDown90QuarterLoopSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -11806,6 +11814,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimFlatToDown90QuarterLoopSeq2 = { .clearance = { -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -11816,6 +11825,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimInvertedUp90ToFlatQuarterLoopSeq0 = { .clearance = { 0, 0, 32, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; @@ -11828,19 +11838,22 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kMultiDimInvertedUp90ToFlatQuarterLoopSeq2 = { .clearance = { 64, 0, 128, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kFlatSeq0.blockedSegments, }; static constexpr SequenceDescriptor kRotationControlToggleSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = kFlatSeq0.blockedSegments, }; static constexpr SequenceDescriptor kFlatTrack1x4ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11851,7 +11864,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4ASeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11862,31 +11875,33 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack2x2Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq1 = { .clearance = { 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq2 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x2Seq3 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack4x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11904,7 +11919,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11954,7 +11969,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq12 = { .clearance = { 96, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11972,13 +11987,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack4x4Seq15 = { .clearance = { 96, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -11996,13 +12012,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack2x4Seq3 = { .clearance = { 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack2x4Seq4 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12020,7 +12036,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack2x4Seq7 = { .clearance = { 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12037,13 +12053,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x5Seq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x5Seq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12054,13 +12070,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1ASeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::trackOrigin, SequenceFlag::connectsToPath }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::trackOrigin, SequenceFlag::connectsToPath, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack1x4BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::trackOrigin }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::trackOrigin, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12071,7 +12088,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4BSeq2 = { .clearance = { -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12083,7 +12100,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x1BSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1111, 0 }, 0 }, .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, - SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, SequenceFlag::connectsToPath }, + SequenceFlag::entranceConnectionNW, SequenceFlag::trackOrigin, SequenceFlag::connectsToPath, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12095,7 +12113,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4CSeq1 = { .clearance = { -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionNW, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12107,7 +12126,8 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack1x4CSeq3 = { .clearance = { 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW, + SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12119,7 +12139,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack3x3Seq1 = { .clearance = { -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12131,7 +12151,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack3x3Seq3 = { .clearance = { -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE }, + .flags = { SequenceFlag::entranceConnectionNE, SequenceFlag::entranceConnectionSE, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12149,13 +12169,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlatTrack3x3Seq6 = { .clearance = { 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW }, + .flags = { SequenceFlag::entranceConnectionSW, SequenceFlag::entranceConnectionNW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; static constexpr SequenceDescriptor kFlatTrack3x3Seq7 = { .clearance = { 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW }, + .flags = { SequenceFlag::entranceConnectionSE, SequenceFlag::entranceConnectionSW, SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, }; @@ -12168,6 +12188,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeCorkscrewUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::top, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -12219,6 +12240,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeCorkscrewUpSeq5 = { .clearance = { -64, -64, 72, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::left, PS::bottom, PS::centre, PS::topLeft, PS::bottomLeft, PS::bottomRight), // narrow @@ -12230,6 +12252,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeCorkscrewUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeCorkscrewUpSeq0.blockedSegments), }; @@ -12261,6 +12284,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeCorkscrewUpSeq5 = { .clearance = { -64, 64, 72, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeCorkscrewUpSeq5.blockedSegments), }; @@ -12268,6 +12292,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeCorkscrewDownSeq0 = { .clearance = { 0, 0, -40, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kRightLargeCorkscrewUpSeq5.blockedSegments, 1), }; @@ -12300,12 +12325,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeCorkscrewDownSeq5 = { .clearance = { -64, -64, -112, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kRightLargeCorkscrewUpSeq0.blockedSegments, 1), }; static constexpr SequenceDescriptor kRightLargeCorkscrewDownSeq0 = { .clearance = { 0, 0, -40, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeCorkscrewDownSeq0.blockedSegments), }; @@ -12338,12 +12365,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeCorkscrewDownSeq5 = { .clearance = { -64, 64, -112, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeCorkscrewDownSeq5.blockedSegments), }; static constexpr SequenceDescriptor kLeftMediumHalfLoopUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -12384,6 +12413,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftMediumHalfLoopUpSeq4 = { .clearance = { -32, -32, 168, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::bottom, PS::centre, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow kSegmentsUnimplemented, // inverted @@ -12394,6 +12424,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightMediumHalfLoopUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftMediumHalfLoopUpSeq0.blockedSegments), }; @@ -12418,12 +12449,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightMediumHalfLoopUpSeq4 = { .clearance = { -32, 32, 168, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftMediumHalfLoopUpSeq4.blockedSegments), }; static constexpr SequenceDescriptor kLeftMediumHalfLoopDownSeq0 = { .clearance = { 0, 0, -48, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightMediumHalfLoopUpSeq4.blockedSegments, }; @@ -12448,12 +12481,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftMediumHalfLoopDownSeq4 = { .clearance = { 32, -32, -216, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightMediumHalfLoopUpSeq0.blockedSegments, }; static constexpr SequenceDescriptor kRightMediumHalfLoopDownSeq0 = { .clearance = { 0, 0, -48, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftMediumHalfLoopDownSeq0.blockedSegments), }; @@ -12478,12 +12513,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightMediumHalfLoopDownSeq4 = { .clearance = { 32, 32, -216, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftMediumHalfLoopDownSeq4.blockedSegments), }; static constexpr SequenceDescriptor kLeftZeroGRollUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -12506,6 +12543,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftZeroGRollUpSeq2 = { .clearance = { -64, 0, 24, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = { { @@ -12518,6 +12556,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightZeroGRollUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftZeroGRollUpSeq0.blockedSegments), }; @@ -12532,6 +12571,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightZeroGRollUpSeq2 = { .clearance = { -64, 0, 24, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftZeroGRollUpSeq2.blockedSegments), @@ -12540,6 +12580,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftZeroGRollDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftZeroGRollUpSeq2.blockedSegments, 2), @@ -12555,6 +12596,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftZeroGRollDownSeq2 = { .clearance = { -64, 0, -56, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kLeftZeroGRollUpSeq0.blockedSegments, 2), }; @@ -12562,6 +12604,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightZeroGRollDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftZeroGRollDownSeq0.blockedSegments), @@ -12577,6 +12620,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightZeroGRollDownSeq2 = { .clearance = { -64, 0, -56, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftZeroGRollDownSeq2.blockedSegments), }; @@ -12584,6 +12628,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeZeroGRollUpSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -12617,6 +12662,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeZeroGRollUpSeq3 = { .clearance = { -96, 0, 120, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = { { @@ -12629,6 +12675,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeZeroGRollUpSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeZeroGRollUpSeq0.blockedSegments), }; @@ -12650,6 +12697,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeZeroGRollUpSeq3 = { .clearance = { -96, 0, 120, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeZeroGRollUpSeq3.blockedSegments), @@ -12658,6 +12706,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeZeroGRollDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftLargeZeroGRollUpSeq3.blockedSegments, 2), @@ -12680,6 +12729,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftLargeZeroGRollDownSeq3 = { .clearance = { -96, 0, -152, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kLeftLargeZeroGRollUpSeq0.blockedSegments, 2), }; @@ -12687,6 +12737,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeZeroGRollDownSeq0 = { .clearance = { 0, 0, -32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeZeroGRollDownSeq0.blockedSegments), @@ -12709,6 +12760,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightLargeZeroGRollDownSeq3 = { .clearance = { -96, 0, -152, 64, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftLargeZeroGRollDownSeq3.blockedSegments), }; @@ -12716,6 +12768,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopUninvertedUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -12776,6 +12829,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopUninvertedUpSeq6 = { .clearance = { -64, -32, 248, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::right, PS::bottom, PS::centre, PS::topRight, PS::bottomLeft, PS::bottomRight), // narrow @@ -12787,6 +12841,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopUninvertedUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopUninvertedUpSeq0.blockedSegments), }; @@ -12823,6 +12878,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopUninvertedUpSeq6 = { .clearance = { -64, 32, 248, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopUninvertedUpSeq6.blockedSegments), }; @@ -12830,6 +12886,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopInvertedDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // inverted @@ -12893,6 +12950,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopInvertedDownSeq6 = { .clearance = { 64, -32, -248, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -12904,6 +12962,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopInvertedDownSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopInvertedDownSeq0.blockedSegments), }; @@ -12943,6 +13002,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopInvertedDownSeq6 = { .clearance = { 64, 32, -248, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopInvertedDownSeq6.blockedSegments), }; @@ -12950,6 +13010,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopInvertedUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -13010,6 +13071,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopInvertedUpSeq6 = { .clearance = { -64, -32, 248, 32, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -13021,6 +13083,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopInvertedUpSeq0 = { .clearance = { 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopInvertedUpSeq0.blockedSegments), }; @@ -13057,6 +13120,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopInvertedUpSeq6 = { .clearance = { -64, 32, 248, 32, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopInvertedUpSeq6.blockedSegments), }; @@ -13064,6 +13128,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopUninvertedDownSeq0 = { .clearance = { 0, 0, -32, 32, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -13124,6 +13189,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftFlyerLargeHalfLoopUninvertedDownSeq6 = { .clearance = { 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -13135,6 +13201,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopUninvertedDownSeq0 = { .clearance = { 0, 0, -32, 32, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopUninvertedDownSeq0.blockedSegments), }; @@ -13171,6 +13238,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightFlyerLargeHalfLoopUninvertedDownSeq6 = { .clearance = { 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsFlipXAxis(kLeftFlyerLargeHalfLoopUninvertedDownSeq6.blockedSegments), }; @@ -13178,6 +13246,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopInvertedUpSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { kSegmentsUnimplemented, // narrow EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // inverted @@ -13209,6 +13278,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopInvertedUpSeq3 = { .clearance = { -32, 0, 120, 32, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { kSegmentsUnimplemented, // narrow @@ -13219,6 +13289,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopUninvertedDownSeq0 = { .clearance = { 0, 0, -32, 32, { 0b1111, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow kSegmentsUnimplemented, // inverted @@ -13249,6 +13320,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kFlyerHalfLoopUninvertedDownSeq3 = { .clearance = { 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -13260,6 +13332,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToDiagUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = { { EnumsToFlags(PS::centre, PS::topRight, PS::bottomLeft), // narrow @@ -13313,6 +13386,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToDiagUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthToDiagUp25Seq0.blockedSegments), }; @@ -13346,6 +13420,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToDiagDown25Seq0 = { .clearance = { 0, 0, -16, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = kLeftEighthToDiagUp25Seq0.blockedSegments, @@ -13374,12 +13449,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToDiagDown25Seq4 = { .clearance = { -64, -32, -48, 16, { 0b0001, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kLeftEighthToDiagUp25Seq4.blockedSegments, }; static constexpr SequenceDescriptor kRightEighthToDiagDown25Seq0 = { .clearance = { 0, 0, -16, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthToDiagDown25Seq0.blockedSegments), @@ -13408,11 +13485,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToDiagDown25Seq4 = { .clearance = { -64, 32, -48, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthToDiagDown25Seq4.blockedSegments), }; static constexpr SequenceDescriptor kLeftEighthToOrthogonalUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kRightEighthToDiagUp25Seq4.blockedSegments, 2), }; @@ -13446,6 +13525,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToOrthogonalUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kLeftEighthToDiagUp25Seq4.blockedSegments, 3), }; @@ -13473,6 +13553,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToOrthogonalUp25Seq4 = { .clearance = { -32, 64, 32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::nwSe }, .blockedSegments = blockedSegmentsRotate(kLeftEighthToDiagUp25Seq0.blockedSegments, 3), }; @@ -13508,6 +13589,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthToOrthogonalDown25Seq4 = { .clearance = { -64, 32, -48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kLeftEighthToOrthogonalUp25Seq4.blockedSegments, }; @@ -13542,11 +13624,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthToOrthogonalDown25Seq4 = { .clearance = { -32, 64, -48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightEighthToOrthogonalUp25Seq4.blockedSegments, }; static constexpr SequenceDescriptor kDiagUp25ToLeftBankedUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13571,6 +13655,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25ToRightBankedUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13595,6 +13680,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedUp25ToUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13619,6 +13705,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedUp25ToUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13662,6 +13749,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25ToLeftBankedDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -13686,6 +13774,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25ToRightBankedDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -13710,6 +13799,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedDown25ToDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -13734,11 +13824,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedDown25ToDown25Seq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; static constexpr SequenceDescriptor kDiagLeftBankedFlatToLeftBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13763,6 +13855,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedFlatToRightBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13787,6 +13880,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedUp25ToLeftBankedFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13811,6 +13905,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedUp25ToRightBankedFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13854,6 +13949,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedFlatToLeftBankedDown25Seq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -13878,6 +13974,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedFlatToRightBankedDown25Seq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -13902,6 +13999,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedDown25ToLeftBankedFlatSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -13926,11 +14024,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedDown25ToRightBankedFlatSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; static constexpr SequenceDescriptor kDiagFlatToLeftBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13955,6 +14055,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToRightBankedUp25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -13979,6 +14080,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedUp25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14003,6 +14105,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedUp25ToFlatSeq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14027,6 +14130,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToLeftBankedDown25Seq0 = { .clearance = { 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14070,6 +14174,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToRightBankedDown25Seq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -14094,6 +14199,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagLeftBankedDown25ToFlatSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -14118,11 +14224,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagRightBankedDown25ToFlatSeq3 = { .clearance = { -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; static constexpr SequenceDescriptor kDiagUp25LeftBankedSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14147,6 +14255,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp25RightBankedSeq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14190,6 +14299,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25LeftBankedSeq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; @@ -14214,12 +14324,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown25RightBankedSeq3 = { .clearance = { -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq3.blockedSegments, }; static constexpr SequenceDescriptor kLeftEighthBankToDiagUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = kLeftEighthToDiagUp25Seq0.blockedSegments, }; @@ -14253,6 +14365,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToDiagUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .blockedSegments = blockedSegmentsFlipXAxis(kLeftEighthBankToDiagUp25Seq0.blockedSegments), }; @@ -14286,6 +14399,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthBankToDiagDown25Seq0 = { .clearance = { 0, 0, -16, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = kLeftEighthBankToDiagUp25Seq0.blockedSegments, @@ -14314,12 +14428,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthBankToDiagDown25Seq4 = { .clearance = { -64, -32, -48, 16, { 0b0001, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kLeftEighthBankToDiagUp25Seq4.blockedSegments, }; static constexpr SequenceDescriptor kRightEighthBankToDiagDown25Seq0 = { .clearance = { 0, 0, -16, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1000, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = kRightEighthBankToDiagUp25Seq0.blockedSegments, @@ -14348,11 +14464,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToDiagDown25Seq4 = { .clearance = { -64, 32, -48, 16, { 0b0010, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightEighthBankToDiagUp25Seq4.blockedSegments, }; static constexpr SequenceDescriptor kLeftEighthBankToOrthogonalUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kRightEighthBankToDiagUp25Seq4.blockedSegments, 2), }; @@ -14380,12 +14498,14 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthBankToOrthogonalUp25Seq4 = { .clearance = { -64, 32, 32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw }, .blockedSegments = blockedSegmentsRotate(kRightEighthBankToDiagUp25Seq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kRightEighthBankToOrthogonalUp25Seq0 = { .clearance = { 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kLeftEighthBankToDiagUp25Seq4.blockedSegments, 3), }; @@ -14413,6 +14533,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToOrthogonalUp25Seq4 = { .clearance = { -32, 64, 32, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::nwSe }, .blockedSegments = blockedSegmentsRotate(kLeftEighthBankToDiagUp25Seq0.blockedSegments, 3), }; @@ -14448,11 +14569,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthBankToOrthogonalDown25Seq4 = { .clearance = { -64, 32, -48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0010, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kLeftEighthBankToOrthogonalUp25Seq4.blockedSegments, }; static constexpr SequenceDescriptor kRightEighthBankToOrthogonalDown25Seq0 = { .clearance = { 0, 0, -16, 24, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .woodenSupports = { WoodenSupportSubType::neSw, WoodenSupportTransitionType::up25Deg }, .extraSupportRotation = 2, .blockedSegments = kRightEighthBankToOrthogonalUp25Seq0.blockedSegments, @@ -14482,11 +14605,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthBankToOrthogonalDown25Seq4 = { .clearance = { -32, 64, -48, 16, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0001, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kRightEighthBankToOrthogonalUp25Seq4.blockedSegments, }; static constexpr SequenceDescriptor kDiagBrakesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14511,6 +14636,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagBlockBrakesSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = kDiagFlatSeq0.blockedSegments, }; @@ -14536,6 +14662,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToUp60LongBaseSeq0 = { .clearance = { 0, 0, 0, 0, { 0b1101, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow kSegmentsUnimplemented, // inverted @@ -14626,6 +14753,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagUp60ToFlatLongBaseSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1101, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow kSegmentsUnimplemented, // inverted @@ -14761,6 +14889,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagFlatToDown60LongBaseSeq9 = { .clearance = { -96, 96, 0, 64, { 0b0010, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagUp60ToFlatLongBaseSeq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kDiagDown60ToFlatLongBaseSeq0 = { @@ -14811,11 +14940,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kDiagDown60ToFlatLongBaseSeq9 = { .clearance = { -96, 96, 0, 0, { 0b0010, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kDiagFlatToUp60LongBaseSeq0.blockedSegments, 2), }; static constexpr SequenceDescriptor kLeftEighthDiveLoopUpToOrthogonalSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1101, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = { { EnumsToFlags(PS::right, PS::centre, PS::topRight, PS::bottomRight), // narrow kSegmentsUnimplemented, // inverted @@ -14862,6 +14993,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthDiveLoopUpToOrthogonalSeq5 = { .clearance = { -96, 32, 112, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = { { EnumsToFlags(PS::top, PS::left, PS::centre, PS::topLeft, PS::topRight, PS::bottomLeft), // narrow @@ -14872,6 +15004,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthDiveLoopUpToOrthogonalSeq0 = { .clearance = { 0, 0, 0, 64, { 0b1101, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate( blockedSegmentsFlipXAxis(kLeftEighthDiveLoopUpToOrthogonalSeq0.blockedSegments), 1), }; @@ -14903,6 +15036,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthDiveLoopUpToOrthogonalSeq5 = { .clearance = { -32, 96, 112, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b0101, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate( blockedSegmentsFlipXAxis(kLeftEighthDiveLoopUpToOrthogonalSeq5.blockedSegments), 1), @@ -14910,6 +15044,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthDiveLoopDownToDiagSeq0 = { .clearance = { 0, 0, 112, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kRightEighthDiveLoopUpToOrthogonalSeq5.blockedSegments, 1), }; @@ -14937,11 +15072,13 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kLeftEighthDiveLoopDownToDiagSeq5 = { .clearance = { -96, -32, 0, 64, { 0b0001, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kRightEighthDiveLoopUpToOrthogonalSeq0.blockedSegments, 1), }; static constexpr SequenceDescriptor kRightEighthDiveLoopDownToDiagSeq0 = { .clearance = { 0, 0, 112, 24, { 0b1111, 0 }, 0 }, .allowedWallEdges = 0b1010, + .flags = { SequenceFlag::hasHeightMarker }, .invertSegmentBlocking = true, .blockedSegments = blockedSegmentsRotate(kLeftEighthDiveLoopUpToOrthogonalSeq5.blockedSegments, 2), }; @@ -14969,6 +15106,7 @@ namespace OpenRCT2::TrackMetaData static constexpr SequenceDescriptor kRightEighthDiveLoopDownToDiagSeq5 = { .clearance = { -96, 32, 0, 64, { 0b0010, 0 }, 0 }, .allowedWallEdges = 0b0000, + .flags = { SequenceFlag::hasHeightMarker }, .blockedSegments = blockedSegmentsRotate(kLeftEighthDiveLoopUpToOrthogonalSeq0.blockedSegments, 2), }; @@ -15925,7 +16063,6 @@ namespace OpenRCT2::TrackMetaData desc.coordinates = kTrackCoordinates[i]; desc.curveChain = kTrackCurveChain[i]; desc.flags = kTrackFlags[i]; - desc.heightMarkerPositions = kTrackHeightMarkerPositions[i]; desc.mirrorElement = kTrackElementMirrorMap[i]; desc.pieceLength = kTrackPieceLengths[i]; desc.priceModifier = kTrackPricing[i]; @@ -15940,7 +16077,6 @@ namespace OpenRCT2::TrackMetaData desc.sequences[sequenceIndex] = kSequenceDescriptorsByElement[i].sequences[sequenceIndex]; } } - return res; } diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 344847834d68..41aee8e13c68 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -117,14 +117,16 @@ namespace OpenRCT2::TrackMetaData StringId description; TrackCoordinates coordinates; + // Used to estimate the ride length for number of powered vehicle trains uint8_t pieceLength; + // Piece the ride construction window automatically selects next TrackCurveChain curveChain; + // Track element to build when building "covered"/"splashdown" track OpenRCT2::TrackElemType alternativeType; // Price Modifier should be used as in the following calculation: // (RideTrackPrice * TED::PriceModifier) / 65536 uint32_t priceModifier; OpenRCT2::TrackElemType mirrorElement; - uint32_t heightMarkerPositions; uint32_t flags; uint8_t numSequences{}; diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index 3ffcf818a853..b4df1ce96799 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -1978,7 +1978,8 @@ void PaintTrack(PaintSession& session, Direction direction, int32_t height, cons { session.InteractionType = ViewportInteractionItem::none; const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.heightMarkerPositions & (1 << trackSequence)) + if ((trackType == TrackElemType::Maze) + || (trackSequence < ted.numSequences && ted.sequences[trackSequence].flags.has(SequenceFlag::hasHeightMarker))) { uint16_t ax = ride->getRideTypeDescriptor().Heights.VehicleZOffset; // 0x1689 represents 0 height there are -127 to 128 heights above and below it From 7bdd1a48232e894f9c8bc54ff390a012d6aa8749 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 21 Dec 2025 00:08:05 +0100 Subject: [PATCH 129/222] Fix #25639: Scenery window crashes when a no longer present object is still selected --- distribution/changelog.txt | 3 +- src/openrct2-ui/windows/Scenery.cpp | 80 ++++++++++++++++++++--------- 2 files changed, 59 insertions(+), 24 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 0b14623a8760..c6e6879ea5ff 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -22,7 +22,8 @@ - Fix: [#25571] Potential crash due to drawing a Crooked House ride. - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. -- Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. +- Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. +- Fix: [#25639] Scenery window crashes when a no longer present object is still selected. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. - Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 417a22fb4eab..93cc17076692 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -590,23 +590,39 @@ namespace OpenRCT2::Ui::Windows } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_LARGE) { - gCurrentToolId = static_cast( - ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex)->tool_id); + const auto* sceneryEntry = ObjectManager::GetObjectEntry( + tabSelectedScenery.EntryIndex); + if (sceneryEntry != nullptr) + { + gCurrentToolId = static_cast(sceneryEntry->tool_id); + } } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_WALL) { - gCurrentToolId = static_cast( - ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex)->tool_id); + const auto* sceneryEntry = ObjectManager::GetObjectEntry( + tabSelectedScenery.EntryIndex); + if (sceneryEntry != nullptr) + { + gCurrentToolId = static_cast(sceneryEntry->tool_id); + } } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_PATH_ITEM) { - gCurrentToolId = static_cast( - ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex)->tool_id); + const auto* sceneryEntry = ObjectManager::GetObjectEntry( + tabSelectedScenery.EntryIndex); + if (sceneryEntry != nullptr) + { + gCurrentToolId = static_cast(sceneryEntry->tool_id); + } } - else - { // small scenery - gCurrentToolId = static_cast( - ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex)->tool_id); + else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_SMALL) + { + const auto* sceneryEntry = ObjectManager::GetObjectEntry( + tabSelectedScenery.EntryIndex); + if (sceneryEntry != nullptr) + { + gCurrentToolId = static_cast(sceneryEntry->tool_id); + } } } else @@ -712,7 +728,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_SCENERY_BUILD_CLUSTER_BUTTON].type = WidgetType::flatBtn; auto* sceneryEntry = ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex); - if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_ROTATABLE)) + if (sceneryEntry != nullptr && sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_ROTATABLE)) { widgets[WIDX_SCENERY_ROTATE_OBJECTS_BUTTON].type = WidgetType::flatBtn; } @@ -751,7 +767,7 @@ namespace OpenRCT2::Ui::Windows if (tabSelectedScenery.SceneryType == SCENERY_TYPE_BANNER) { auto* bannerEntry = ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex); - if (bannerEntry->flags & BANNER_ENTRY_FLAG_HAS_PRIMARY_COLOUR) + if (bannerEntry != nullptr && bannerEntry->flags & BANNER_ENTRY_FLAG_HAS_PRIMARY_COLOUR) { widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WidgetType::colourBtn; } @@ -759,20 +775,22 @@ namespace OpenRCT2::Ui::Windows else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_LARGE) { auto* sceneryEntry = ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex); - - if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_PRIMARY_COLOUR - && !(sceneryEntry->flags & LARGE_SCENERY_FLAG_HIDE_PRIMARY_REMAP_BUTTON)) - widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WidgetType::colourBtn; - if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_SECONDARY_COLOUR - && !(sceneryEntry->flags & LARGE_SCENERY_FLAG_HIDE_SECONDARY_REMAP_BUTTON)) - widgets[WIDX_SCENERY_SECONDARY_COLOUR_BUTTON].type = WidgetType::colourBtn; - if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_TERTIARY_COLOUR) - widgets[WIDX_SCENERY_TERTIARY_COLOUR_BUTTON].type = WidgetType::colourBtn; + if (sceneryEntry != nullptr) + { + if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_PRIMARY_COLOUR + && !(sceneryEntry->flags & LARGE_SCENERY_FLAG_HIDE_PRIMARY_REMAP_BUTTON)) + widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WidgetType::colourBtn; + if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_SECONDARY_COLOUR + && !(sceneryEntry->flags & LARGE_SCENERY_FLAG_HIDE_SECONDARY_REMAP_BUTTON)) + widgets[WIDX_SCENERY_SECONDARY_COLOUR_BUTTON].type = WidgetType::colourBtn; + if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_TERTIARY_COLOUR) + widgets[WIDX_SCENERY_TERTIARY_COLOUR_BUTTON].type = WidgetType::colourBtn; + } } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_WALL) { auto* wallEntry = ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex); - if (wallEntry->flags & (WALL_SCENERY_HAS_PRIMARY_COLOUR | WALL_SCENERY_HAS_GLASS)) + if (wallEntry != nullptr && wallEntry->flags & (WALL_SCENERY_HAS_PRIMARY_COLOUR | WALL_SCENERY_HAS_GLASS)) { widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WidgetType::colourBtn; @@ -791,7 +809,8 @@ namespace OpenRCT2::Ui::Windows { auto* sceneryEntry = ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex); - if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR | SMALL_SCENERY_FLAG_HAS_GLASS)) + if (sceneryEntry != nullptr + && sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR | SMALL_SCENERY_FLAG_HAS_GLASS)) { widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WidgetType::colourBtn; @@ -1573,6 +1592,9 @@ namespace OpenRCT2::Ui::Windows if (scenerySelection.SceneryType == SCENERY_TYPE_BANNER) { auto bannerEntry = ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); + if (bannerEntry == nullptr) + return; + auto imageId = ImageId(bannerEntry->image + gWindowSceneryRotation * 2, _sceneryPrimaryColour); GfxDrawSprite(rt, imageId, { 33, 40 }); GfxDrawSprite(rt, imageId.WithIndexOffset(1), { 33, 40 }); @@ -1580,6 +1602,9 @@ namespace OpenRCT2::Ui::Windows else if (scenerySelection.SceneryType == SCENERY_TYPE_LARGE) { auto sceneryEntry = ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); + if (sceneryEntry == nullptr) + return; + auto imageId = ImageId(sceneryEntry->image + gWindowSceneryRotation); if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_PRIMARY_COLOUR) imageId = imageId.WithPrimary(_sceneryPrimaryColour); @@ -1592,6 +1617,9 @@ namespace OpenRCT2::Ui::Windows else if (scenerySelection.SceneryType == SCENERY_TYPE_WALL) { auto wallEntry = ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); + if (wallEntry == nullptr) + return; + auto imageId = ImageId(wallEntry->image); auto spriteTop = (wallEntry->height * 2) + 0x32; if (wallEntry->flags & WALL_SCENERY_HAS_GLASS) @@ -1628,12 +1656,18 @@ namespace OpenRCT2::Ui::Windows else if (scenerySelection.SceneryType == SCENERY_TYPE_PATH_ITEM) { auto* pathAdditionEntry = ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); + if (pathAdditionEntry == nullptr) + return; + auto imageId = ImageId(pathAdditionEntry->image); GfxDrawSprite(rt, imageId, { 11, 16 }); } else { auto sceneryEntry = ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); + if (sceneryEntry == nullptr) + return; + auto imageId = ImageId(sceneryEntry->image + gWindowSceneryRotation); if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR)) { From 0639189766f1833f61d5ee14d308d5f1dd74d38a Mon Sep 17 00:00:00 2001 From: Stephan Spengler Date: Sun, 21 Dec 2025 00:10:40 +0100 Subject: [PATCH 130/222] Send "scenery changed" intent after unloading an object from a script --- src/openrct2/scripting/bindings/object/ScObjectManager.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/openrct2/scripting/bindings/object/ScObjectManager.cpp b/src/openrct2/scripting/bindings/object/ScObjectManager.cpp index bab6a27f9bc2..b02a6bce6208 100644 --- a/src/openrct2/scripting/bindings/object/ScObjectManager.cpp +++ b/src/openrct2/scripting/bindings/object/ScObjectManager.cpp @@ -11,8 +11,10 @@ #include "ScObjectManager.h" + #include "../../../Context.h" #include "../../../object/ObjectList.h" #include "../../../ride/RideData.h" + #include "../../../windows/Intent.h" #include "../../Duktape.hpp" #include "../../ScriptEngine.h" @@ -191,6 +193,8 @@ void ScObjectManager::unload(const DukValue& p1, const DukValue& p2) } objectManager.UnloadObjects(descriptors); } + auto intent = Intent(INTENT_ACTION_REFRESH_SCENERY); + ContextBroadcastIntent(&intent); } DukValue ScObjectManager::getObject(const std::string& typez, int32_t index) const From 7b5ab2b007651b7546971129ee6e234997b8e432 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Tue, 25 Nov 2025 19:07:48 -0300 Subject: [PATCH 131/222] Refactor shop item handling with switch statement --- src/openrct2/entity/Guest.cpp | 58 +++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index a6879a3e90f3..e6282410ca81 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1669,32 +1669,38 @@ static bool GuestDecideAndBuyItem(Guest& guest, Ride& ride, const ShopItem shopI guest.GiveItem(shopItem); const auto hasRandomShopColour = ride.hasLifecycleFlag(RIDE_LIFECYCLE_RANDOM_SHOP_COLOURS); - if (shopItem == ShopItem::tShirt) - guest.TshirtColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::hat) - guest.HatColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::balloon) - guest.BalloonColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::umbrella) - guest.UmbrellaColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::map) - guest.ResetPathfindGoal(); - - if (shopItem == ShopItem::photo) - guest.Photo1RideRef = ride.id; - - if (shopItem == ShopItem::photo2) - guest.Photo2RideRef = ride.id; - - if (shopItem == ShopItem::photo3) - guest.Photo3RideRef = ride.id; - - if (shopItem == ShopItem::photo4) - guest.Photo4RideRef = ride.id; + switch (shopItem) + { + case ShopItem::tShirt: + guest.TshirtColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::hat: + guest.HatColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::balloon: + guest.BalloonColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::umbrella: + guest.UmbrellaColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::map: + guest.ResetPathfindGoal(); + break; + case ShopItem::photo: + guest.Photo1RideRef = ride.id; + break; + case ShopItem::photo2: + guest.Photo2RideRef = ride.id; + break; + case ShopItem::photo3: + guest.Photo3RideRef = ride.id; + break; + case ShopItem::photo4: + guest.Photo4RideRef = ride.id; + break; + default: + break; + } guest.WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; guest.UpdateAnimationGroup(); From 8492d408de7d98f93ca4cf09d69ab256eeda9110 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 21 Dec 2025 12:34:29 +0100 Subject: [PATCH 132/222] =?UTF-8?q?Fix=20#25660:=20Ride=20entrances=20are?= =?UTF-8?q?=20sometimes=20visible=20in=20=E2=80=98Highlight=20path=20issue?= =?UTF-8?q?s=E2=80=99=20mode=20(#25679)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- distribution/changelog.txt | 1 + src/openrct2/paint/tile_element/Paint.Entrance.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 0b14623a8760..597204f61c1b 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -25,6 +25,7 @@ - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. - Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. +- Fix: [#25660] After saving a track design with scenery, that ride’s entrances and exits are visible in ‘Highlight path issues’ mode. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 7095b44aafc6..ade9930b58e4 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -118,8 +118,8 @@ static void PaintRideEntranceExit(PaintSession& session, uint8_t direction, int3 PROFILED_FUNCTION(); auto rideIndex = entranceEl.GetRideIndex(); - if ((gTrackDesignSaveMode || (session.ViewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES)) - && (rideIndex != gTrackDesignSaveRideIndex)) + if ((session.ViewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES) + || (gTrackDesignSaveMode && rideIndex != gTrackDesignSaveRideIndex)) { return; } From fcd16cb00a2be128a1a809a6a0dc485e043c01d6 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 21 Dec 2025 12:49:17 +0100 Subject: [PATCH 133/222] Close #25515: create a specific permission for the path drag tool (#25675) --- data/language/en-GB.txt | 3 ++- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Footpath.cpp | 13 +++++++++++++ src/openrct2/localisation/StringIds.h | 2 ++ src/openrct2/network/NetworkAction.cpp | 5 +++++ src/openrct2/network/NetworkAction.h | 1 + 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 391cbca69751..ce4f078c693b 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3841,4 +3841,5 @@ STR_7008 :Unknown ride type ({INT32}) STR_7009 :Receiving scripts… STR_7010 :Could not start replay, file ‘{STRING}’ doesn’t exist or isn’t valid STR_7011 :Could not start replay -STR_7012 :Polish Złoty (PLN) \ No newline at end of file +STR_7012 :Polish Złoty (PLN) +STR_7013 :Drag areas of path diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 597204f61c1b..9781c7bfc0b0 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,6 +1,7 @@ 0.4.30 (in development) ------------------------------------------------------------------------ - Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings. +- Improved: [#25515] Path dragging can now be disabled via multiplayer group permissions. - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 7f89c3854052..8d7546ab0f45 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -532,6 +533,18 @@ namespace OpenRCT2::Ui::Windows ? WidgetType::imgBtn : WidgetType::empty; +#ifndef DISABLE_NETWORK + bool canDrag = true; + if (Network::GetMode() == Network::Mode::client) + { + canDrag = Network::CanPerformAction(Network::GetCurrentPlayerGroupIndex(), Network::Permission::dragPathArea); + } + if (canDrag) + disabledWidgets &= ~(1uLL << WIDX_CONSTRUCT_DRAG_AREA); + else + disabledWidgets |= (1uLL << WIDX_CONSTRUCT_DRAG_AREA); +#endif + if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull) { widgets[WIDX_RAILINGS_TYPE].type = WidgetType::flatBtn; diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 07ddcc1a9639..397ec2d7da7c 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1762,6 +1762,8 @@ enum : StringId STR_REPLAY_FILE_NOT_FOUND = 7010, STR_REPLAY_NOT_STARTED = 7011, + STR_ACTION_PATH_DRAG_AREA = 7013, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working /* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings }; diff --git a/src/openrct2/network/NetworkAction.cpp b/src/openrct2/network/NetworkAction.cpp index a9bb710edcef..f6d66ba75d9d 100644 --- a/src/openrct2/network/NetworkAction.cpp +++ b/src/openrct2/network/NetworkAction.cpp @@ -266,6 +266,11 @@ namespace OpenRCT2::Network GameCommand::EditScenarioOptions, }, }, + NetworkAction{ + STR_ACTION_PATH_DRAG_AREA, + "PERMISSION_DRAG_PATH_AREA", + {}, + }, }; } // namespace OpenRCT2::Network diff --git a/src/openrct2/network/NetworkAction.h b/src/openrct2/network/NetworkAction.h index d82feac9be1a..37b6b47baf54 100644 --- a/src/openrct2/network/NetworkAction.h +++ b/src/openrct2/network/NetworkAction.h @@ -43,6 +43,7 @@ namespace OpenRCT2::Network passwordlessLogin, modifyTile, editScenarioOptions, + dragPathArea, count, }; From 6db4ac56f2be68e1abc7a680da28d21c8a5c6fe6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 13 Dec 2025 13:50:55 +0100 Subject: [PATCH 134/222] Refactor Steam path handling --- src/openrct2/config/Config.cpp | 55 ++++++++++----- src/openrct2/platform/Platform.Android.cpp | 17 +---- src/openrct2/platform/Platform.Common.cpp | 11 +++ src/openrct2/platform/Platform.Emscripten.cpp | 17 +---- src/openrct2/platform/Platform.Linux.cpp | 67 ++++++++----------- src/openrct2/platform/Platform.Win32.cpp | 29 +++----- src/openrct2/platform/Platform.h | 49 ++++++++++++-- src/openrct2/platform/Platform.macOS.mm | 27 +++----- 8 files changed, 143 insertions(+), 129 deletions(-) diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index a2fa8d867f42..956a408de646 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -716,13 +716,24 @@ namespace OpenRCT2::Config } } - auto steamPath = Platform::GetSteamPath(); - if (!steamPath.empty()) + auto steamPaths = Platform::GetSteamPaths(); + if (steamPaths.isSteamPresent()) { - std::string location = Path::Combine(steamPath, Platform::GetRCT1SteamDir()); - if (RCT1DataPresentAtLocation(location)) + for (const auto& root : steamPaths.roots) { - return location; + auto nativePath = Path::Combine(root, steamPaths.nativeFolder, Platform::kSteamRCT1Data.nativeFolder); + if (RCT1DataPresentAtLocation(nativePath)) + { + return nativePath; + } + if (!steamPaths.downloadDepotFolder.empty()) + { + auto downloadDepotPath = steamPaths.getDownloadDepotFolder(root, Platform::kSteamRCT1Data); + if (RCT1DataPresentAtLocation(downloadDepotPath)) + { + return downloadDepotPath; + } + } } } @@ -753,19 +764,31 @@ namespace OpenRCT2::Config } } - auto steamPath = Platform::GetSteamPath(); - if (!steamPath.empty()) + auto steamPaths = Platform::GetSteamPaths(); + if (steamPaths.isSteamPresent()) { - std::string location = Path::Combine(steamPath, Platform::GetRCT2SteamDir()); - if (Platform::OriginalGameDataExists(location)) + const std::array gamesToCheck = { + Platform::kSteamRCT2Data, + Platform::kSteamRCTCData, + }; + for (const auto& root : steamPaths.roots) { - return location; - } - - std::string location2 = Path::Combine(steamPath, Platform::GetRCTClassicSteamDir()); - if (Platform::OriginalGameDataExists(location2)) - { - return location2; + for (const auto& game : gamesToCheck) + { + auto nativePath = Path::Combine(root, steamPaths.nativeFolder, game.nativeFolder); + if (Platform::OriginalGameDataExists(nativePath)) + { + return nativePath; + } + if (!steamPaths.downloadDepotFolder.empty()) + { + auto downloadDepotPath = steamPaths.getDownloadDepotFolder(root, game); + if (Platform::OriginalGameDataExists(downloadDepotPath)) + { + return downloadDepotPath; + } + } + } } } diff --git a/src/openrct2/platform/Platform.Android.cpp b/src/openrct2/platform/Platform.Android.cpp index 1ae2dbcaa4f1..dc0c0e4d6abc 100644 --- a/src/openrct2/platform/Platform.Android.cpp +++ b/src/openrct2/platform/Platform.Android.cpp @@ -148,22 +148,7 @@ namespace OpenRCT2::Platform return isImperial == JNI_TRUE ? MeasurementFormat::Imperial : MeasurementFormat::Metric; } - std::string GetSteamPath() - { - return {}; - } - - u8string GetRCT1SteamDir() - { - return {}; - } - - u8string GetRCT2SteamDir() - { - return {}; - } - - u8string GetRCTClassicSteamDir() + SteamPaths GetSteamPaths() { return {}; } diff --git a/src/openrct2/platform/Platform.Common.cpp b/src/openrct2/platform/Platform.Common.cpp index e33cc7b7e32e..f50c946328c6 100644 --- a/src/openrct2/platform/Platform.Common.cpp +++ b/src/openrct2/platform/Platform.Common.cpp @@ -213,4 +213,15 @@ namespace OpenRCT2::Platform return false; } + bool SteamPaths::isSteamPresent() const + { + return !roots.empty(); + } + + u8string SteamPaths::getDownloadDepotFolder(u8string_view steamroot, const SteamGameData& data) const + { + return Path::Combine( + steamroot, downloadDepotFolder, "app_" + std::to_string(data.appId), "depot_" + std::to_string(data.depotId)); + } + } // namespace OpenRCT2::Platform diff --git a/src/openrct2/platform/Platform.Emscripten.cpp b/src/openrct2/platform/Platform.Emscripten.cpp index 5eb5453bddb1..24f73120de57 100644 --- a/src/openrct2/platform/Platform.Emscripten.cpp +++ b/src/openrct2/platform/Platform.Emscripten.cpp @@ -97,22 +97,7 @@ namespace OpenRCT2::Platform return isImperial == 1 ? MeasurementFormat::Imperial : MeasurementFormat::Metric; } - std::string GetSteamPath() - { - return {}; - } - - u8string GetRCT1SteamDir() - { - return {}; - } - - u8string GetRCT2SteamDir() - { - return {}; - } - - u8string GetRCTClassicSteamDir() + SteamPaths GetSteamPaths() { return {}; } diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp index 28ab83344ff5..5bcb8f9d5e91 100644 --- a/src/openrct2/platform/Platform.Linux.cpp +++ b/src/openrct2/platform/Platform.Linux.cpp @@ -320,65 +320,52 @@ namespace OpenRCT2::Platform return MeasurementFormat::Metric; } - std::string GetSteamPath() + SteamPaths GetSteamPaths() { + SteamPaths ret = {}; + ret.nativeFolder = "steamapps/common"; + ret.downloadDepotFolder = "ubuntu12_32/steamapps/content"; + ret.manifests = "steamapps"; + const char* steamRoot = getenv("STEAMROOT"); if (steamRoot != nullptr) { - return Path::Combine(steamRoot, u8"ubuntu12_32/steamapps/content"); + ret.roots.emplace_back(steamRoot); } const char* localSharePath = getenv("XDG_DATA_HOME"); if (localSharePath != nullptr) { - auto steamPath = Path::Combine(localSharePath, u8"Steam/ubuntu12_32/steamapps/content"); - if (Path::DirectoryExists(steamPath)) + auto xdgDataHomeSteamPath = Path::Combine(localSharePath, u8"Steam"); + if (Path::DirectoryExists(xdgDataHomeSteamPath)) { - return steamPath; + ret.roots.emplace_back(xdgDataHomeSteamPath); } } const char* homeDir = getpwuid(getuid())->pw_dir; - if (homeDir == nullptr) - { - return {}; - } - - // Prefer new path for Steam, which is the default when using with Proton - auto steamPath = Path::Combine(homeDir, u8".local/share/Steam/steamapps/common"); - if (Path::DirectoryExists(steamPath)) + if (homeDir != nullptr) { - return steamPath; - } + auto localShareSteamPath = Path::Combine(homeDir, u8".local/share/Steam"); + if (Path::DirectoryExists(localShareSteamPath)) + { + ret.roots.emplace_back(localShareSteamPath); + } - // Fallback paths - steamPath = Path::Combine(homeDir, u8".local/share/Steam/ubuntu12_32/steamapps/content"); - if (Path::DirectoryExists(steamPath)) - { - return steamPath; - } + auto oldSteamPath = Path::Combine(homeDir, u8".steam/steam"); + if (Path::DirectoryExists(oldSteamPath)) + { + ret.roots.emplace_back(oldSteamPath); + } - steamPath = Path::Combine(homeDir, u8".steam/steam/ubuntu12_32/steamapps/content"); - if (Path::DirectoryExists(steamPath)) - { - return steamPath; + auto snapLocalShareSteamPath = Path::Combine(homeDir, u8"snap/steam/common/.local/share/Steam"); + if (Path::DirectoryExists(snapLocalShareSteamPath)) + { + ret.roots.emplace_back(snapLocalShareSteamPath); + } } - return {}; - } - u8string GetRCT1SteamDir() - { - return u8"Rollercoaster Tycoon Deluxe"; - } - - u8string GetRCT2SteamDir() - { - return u8"Rollercoaster Tycoon 2"; - } - - u8string GetRCTClassicSteamDir() - { - return u8"RollerCoaster Tycoon Classic"; + return ret; } std::vector GetSearchablePathsRCT1() diff --git a/src/openrct2/platform/Platform.Win32.cpp b/src/openrct2/platform/Platform.Win32.cpp index 23605cc3ca3a..1dd206642a64 100644 --- a/src/openrct2/platform/Platform.Win32.cpp +++ b/src/openrct2/platform/Platform.Win32.cpp @@ -737,7 +737,7 @@ namespace OpenRCT2::Platform return isElevated; } - std::string GetSteamPath() + SteamPaths GetSteamPaths() { wchar_t* wSteamPath; HKEY hKey; @@ -759,12 +759,18 @@ namespace OpenRCT2::Platform result = RegQueryValueExW(hKey, L"SteamPath", nullptr, &type, reinterpret_cast(wSteamPath), &size); if (result == ERROR_SUCCESS) { - auto utf8SteamPath = String::toUtf8(wSteamPath); - outPath = Path::Combine(utf8SteamPath, u8"steamapps", u8"common"); + outPath = String::toUtf8(wSteamPath); } free(wSteamPath); RegCloseKey(hKey); - return outPath; + + SteamPaths ret = {}; + ret.roots.emplace_back(outPath); + ret.nativeFolder = "steamapps/common"; + ret.downloadDepotFolder = "steamapps/content"; + ret.manifests = "steamapps"; + + return ret; } std::string GetFontPath(const TTFFontDescriptor& font) @@ -796,21 +802,6 @@ namespace OpenRCT2::Platform return GetLogicalDrives(); } - u8string GetRCT1SteamDir() - { - return u8"Rollercoaster Tycoon Deluxe"; - } - - u8string GetRCT2SteamDir() - { - return u8"Rollercoaster Tycoon 2"; - } - - u8string GetRCTClassicSteamDir() - { - return u8"RollerCoaster Tycoon Classic"; - } - time_t FileGetModifiedTime(u8string_view path) { WIN32_FILE_ATTRIBUTE_DATA data{}; diff --git a/src/openrct2/platform/Platform.h b/src/openrct2/platform/Platform.h index 00603ad07652..76037a58f2ef 100644 --- a/src/openrct2/platform/Platform.h +++ b/src/openrct2/platform/Platform.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #ifdef _WIN32 @@ -60,6 +61,49 @@ struct TTFFontDescriptor; namespace OpenRCT2::Platform { + struct SteamGameData + { + u8string nativeFolder; + uint32_t appId; + uint32_t depotId; + }; + const SteamGameData kSteamRCT1Data = { + .nativeFolder = u8"Rollercoaster Tycoon Deluxe", + .appId = 285310, + .depotId = 285311, + }; + const SteamGameData kSteamRCT2Data = { + .nativeFolder = u8"Rollercoaster Tycoon 2", + .appId = 285330, + .depotId = 285331, + }; + const SteamGameData kSteamRCTCData = { + .nativeFolder = u8"RollerCoaster Tycoon Classic", + .appId = 683900, + .depotId = 683901, + }; + + struct SteamPaths + { + sfl::static_vector roots{}; + /** + * Used by native applications and applications installed through Steam Play. + */ + u8string nativeFolder{}; + /** + * Used by applications downloaded through download_depot. Most likely used on macOS and Linux, + * though technically possible on Windows too. + */ + u8string downloadDepotFolder{}; + /** + * Directory that contains the manifests to trigger a download. + */ + u8string manifests{}; + + bool isSteamPresent() const; + u8string getDownloadDepotFolder(u8string_view steamroot, const SteamGameData& data) const; + }; + constexpr u8string_view kRCTClassicWindowsDataFolder = u8"Assets"; // clang-format off constexpr u8string_view kRCTClassicMacOSDataFolder = @@ -101,7 +145,7 @@ namespace OpenRCT2::Platform std::string GetUsername(); - std::string GetSteamPath(); + SteamPaths GetSteamPaths(); #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) std::string GetEnvironmentPath(const char* name); std::string GetHomePath(); @@ -138,9 +182,6 @@ namespace OpenRCT2::Platform bool LockSingleInstance(); - u8string GetRCT1SteamDir(); - u8string GetRCT2SteamDir(); - u8string GetRCTClassicSteamDir(); datetime64 GetDatetimeNowUTC(); uint32_t GetTicks(); diff --git a/src/openrct2/platform/Platform.macOS.mm b/src/openrct2/platform/Platform.macOS.mm index e4d280cf1f06..cdc1b6812cfa 100644 --- a/src/openrct2/platform/Platform.macOS.mm +++ b/src/openrct2/platform/Platform.macOS.mm @@ -235,7 +235,7 @@ MeasurementFormat GetLocaleMeasurementFormat() } } - std::string GetSteamPath() + SteamPaths GetSteamPaths() { const char* homeDir = getpwuid(getuid())->pw_dir; if (homeDir == nullptr) @@ -244,27 +244,18 @@ MeasurementFormat GetLocaleMeasurementFormat() } auto steamPath = Path::Combine(homeDir, "Library/Application Support/Steam"); - if (Path::DirectoryExists(steamPath)) + if (!Path::DirectoryExists(steamPath)) { - return steamPath; + return {}; } - return {}; - } - - u8string GetRCT1SteamDir() - { - return u8"Steam.AppBundle/Steam/Contents/MacOS/steamapps/content/app_285310/depot_285311"; - } - - u8string GetRCT2SteamDir() - { - return u8"Steam.AppBundle/Steam/Contents/MacOS/steamapps/content/app_285330/depot_285331"; - } + SteamPaths ret = {}; + ret.roots.emplace_back(steamPath); + ret.nativeFolder = "steamapps/common"; + ret.downloadDepotFolder = "Steam.AppBundle/Steam/Contents/MacOS/steamapps/content"; + ret.manifests = "steamapps"; - u8string GetRCTClassicSteamDir() - { - return u8"steamapps/common/RollerCoaster Tycoon Classic"; + return ret; } std::string GetFontPath(const TTFFontDescriptor& font) From b7608126a7bacbc9d54f1bb19fe45d94eaa34f72 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 13 Dec 2025 14:55:21 +0100 Subject: [PATCH 135/222] Move RCT2 Steam path retrieval to its own function --- src/openrct2/config/Config.cpp | 48 +++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index 956a408de646..5bbb005f2646 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -745,25 +745,8 @@ namespace OpenRCT2::Config return {}; } - /** - * Attempts to find the RCT2 installation directory. - * This should be created from some other resource when OpenRCT2 grows. - * @returns Path to RCT2, if found. Empty string otherwise. - */ - static u8string FindRCT2Path() + static u8string FindRCT2SteamPath() { - LOG_VERBOSE("config_find_rct2_path(...)"); - - static std::vector searchLocations = Platform::GetSearchablePathsRCT2(); - - for (const auto& location : searchLocations) - { - if (Platform::OriginalGameDataExists(location)) - { - return u8string(location); - } - } - auto steamPaths = Platform::GetSteamPaths(); if (steamPaths.isSteamPresent()) { @@ -792,6 +775,35 @@ namespace OpenRCT2::Config } } + return {}; + } + + /** + * Attempts to find the RCT2 installation directory. + * This should be created from some other resource when OpenRCT2 grows. + * @returns Path to RCT2, if found. Empty string otherwise. + */ + static u8string FindRCT2Path() + { + LOG_VERBOSE("config_find_rct2_path(...)"); + + static std::vector searchLocations = Platform::GetSearchablePathsRCT2(); + + for (const auto& location : searchLocations) + { + if (Platform::OriginalGameDataExists(location)) + { + return u8string(location); + } + } + + // Will only return a path if the RCT2 data is present, so no need to check twice. + auto steamPath = FindRCT2SteamPath(); + if (!steamPath.empty()) + { + return steamPath; + } + auto discordPath = Platform::GetFolderPath(SpecialFolder::rct2Discord); if (!discordPath.empty() && Platform::OriginalGameDataExists(discordPath)) { From 3c318a82ccf5c94bb3d60bf4a4a5ab8b4c2704b1 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 13 Dec 2025 14:55:53 +0100 Subject: [PATCH 136/222] Create function to trigger Steam download --- data/language/en-GB.txt | 3 +++ src/openrct2/config/Config.cpp | 17 ++++++++++++++ src/openrct2/localisation/StringIds.h | 3 +++ src/openrct2/platform/Platform.Common.cpp | 28 +++++++++++++++++++++++ src/openrct2/platform/Platform.h | 1 + 5 files changed, 52 insertions(+) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index ce4f078c693b..b10b65b66897 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3843,3 +3843,6 @@ STR_7010 :Could not start replay, file ‘{STRING}’ doesn’t exist or isn STR_7011 :Could not start replay STR_7012 :Polish Złoty (PLN) STR_7013 :Drag areas of path +STR_7014 :I own the game on Steam, but I haven’t installed it yet. +STR_7015 :Please close Steam if it’s running, then click ‘OK’. +STR_7016 :OpenRCT2 has tried to trigger a download in Steam. Please open Steam and let it download the game. When Steam is finished, click ‘OK’. diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index 5bbb005f2646..60d46e952367 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -909,6 +909,7 @@ namespace OpenRCT2::Config { uiContext.ShowMessageBox(LanguageGetString(STR_NEEDS_RCT2_FILES)); std::string gog = LanguageGetString(STR_OWN_ON_GOG); + std::string steam = LanguageGetString(STR_OWN_ON_STEAM); std::string hdd = LanguageGetString(STR_INSTALLED_ON_HDD); std::vector options; @@ -918,6 +919,7 @@ namespace OpenRCT2::Config { options.push_back(hdd); options.push_back(gog); + options.push_back(steam); int optionIndex = uiContext.ShowMenuDialog( options, LanguageGetString(STR_OPENRCT2_SETUP), LanguageGetString(STR_WHICH_APPLIES_BEST)); if (optionIndex < 0 || static_cast(optionIndex) >= options.size()) @@ -975,6 +977,21 @@ namespace OpenRCT2::Config possibleInstallPaths.emplace_back(dest); possibleInstallPaths.emplace_back(Path::Combine(dest, u8"app")); } + else if (chosenOption == steam) + { + uiContext.ShowMessageBox(LanguageGetString(STR_PLEASE_CLOSE_STEAM)); + + Platform::triggerSteamDownload(); + + uiContext.ShowMessageBox(LanguageGetString(STR_WAIT_FOR_STEAM_DOWNLOAD)); + + auto steamPath = FindRCT2SteamPath(); + if (!steamPath.empty()) + { + Get().general.rct2Path = steamPath; + return true; + } + } if (possibleInstallPaths.empty()) { return false; diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 397ec2d7da7c..89bf3294f8ba 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1602,6 +1602,9 @@ enum : StringId STR_THIS_WILL_TAKE_A_FEW_MINUTES = 6407, STR_INSTALL_INNOEXTRACT = 6408, STR_NOT_THE_GOG_INSTALLER = 6409, + STR_OWN_ON_STEAM = 7014, + STR_PLEASE_CLOSE_STEAM = 7015, + STR_WAIT_FOR_STEAM_DOWNLOAD = 7016, STR_TILE_INSPECTOR_TOGGLE_INVISIBILITY_TIP = 6436, diff --git a/src/openrct2/platform/Platform.Common.cpp b/src/openrct2/platform/Platform.Common.cpp index f50c946328c6..fbe440fd2b08 100644 --- a/src/openrct2/platform/Platform.Common.cpp +++ b/src/openrct2/platform/Platform.Common.cpp @@ -224,4 +224,32 @@ namespace OpenRCT2::Platform steamroot, downloadDepotFolder, "app_" + std::to_string(data.appId), "depot_" + std::to_string(data.depotId)); } + bool triggerSteamDownload() + { + const auto steamPaths = GetSteamPaths(); + if (!steamPaths.isSteamPresent() || steamPaths.manifests.empty()) + return false; + + const auto manifestsDir = Path::Combine(steamPaths.roots[0], steamPaths.manifests); + const std::array gamesToTrigger = { kSteamRCT2Data, kSteamRCTCData, kSteamRCT1Data }; + for (const auto& game : gamesToTrigger) + { + auto fullFilename = Path::Combine(manifestsDir, "appmanifest_" + std::to_string(game.appId) + ".acf"); + // If the file exists, we assume a download has been triggered already. + if (File::Exists(fullFilename)) + continue; + + // clang-format off + auto buffer = u8string("\"AppState\"\r\n") + u8string("{\r\n") + + u8string(" \"AppID\" \"" + std::to_string(game.appId) + "\"\r\n") + + u8string(" \"Universe\" \"1\"\r\n") + + u8string(" \"installdir\" \"" + game.nativeFolder + "\"\r\n") + + u8string(" \"StateFlags\" \"1026\"\r\n") + u8string("}\r\n"); + // clang-format on + File::WriteAllBytes(fullFilename, buffer.data(), buffer.size()); + } + + return true; + } + } // namespace OpenRCT2::Platform diff --git a/src/openrct2/platform/Platform.h b/src/openrct2/platform/Platform.h index 76037a58f2ef..6d477c7cf919 100644 --- a/src/openrct2/platform/Platform.h +++ b/src/openrct2/platform/Platform.h @@ -146,6 +146,7 @@ namespace OpenRCT2::Platform std::string GetUsername(); SteamPaths GetSteamPaths(); + bool triggerSteamDownload(); #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) std::string GetEnvironmentPath(const char* name); std::string GetHomePath(); From 1e0db0d6bb32ef896698ea935c746660bba5a891 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 14 Dec 2025 15:13:53 +0100 Subject: [PATCH 137/222] Create CLI command to trigger Steam download --- src/openrct2/command_line/CommandLine.hpp | 1 + src/openrct2/command_line/RootCommands.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/openrct2/command_line/CommandLine.hpp b/src/openrct2/command_line/CommandLine.hpp index 9d5dcdfd029a..86dedc02330a 100644 --- a/src/openrct2/command_line/CommandLine.hpp +++ b/src/openrct2/command_line/CommandLine.hpp @@ -125,5 +125,6 @@ namespace OpenRCT2 exitcode_t HandleCommandDefault(); exitcode_t HandleCommandUri(CommandLineArgEnumerator* enumerator); + exitcode_t HandleCommandTriggerSteamDownload(CommandLineArgEnumerator* enumerator); } // namespace CommandLine } // namespace OpenRCT2 diff --git a/src/openrct2/command_line/RootCommands.cpp b/src/openrct2/command_line/RootCommands.cpp index a8f7dcd3d6cc..6629f801f46f 100644 --- a/src/openrct2/command_line/RootCommands.cpp +++ b/src/openrct2/command_line/RootCommands.cpp @@ -135,6 +135,7 @@ namespace OpenRCT2 DefineCommand("set-rct2", "", kStandardOptions, HandleCommandSetRCT2), DefineCommand("scan-objects", "", kStandardOptions, HandleCommandScanObjects), DefineCommand("handle-uri", "openrct2://.../", kStandardOptions, CommandLine::HandleCommandUri), + DefineCommand("trigger-steam-download", "", kStandardOptions, CommandLine::HandleCommandTriggerSteamDownload), #if defined(_WIN32) DefineCommand("register-shell", "", RegisterShellOptions, HandleCommandRegisterShell), @@ -496,4 +497,14 @@ namespace OpenRCT2 // TODO Print other potential information (e.g. user, hardware) } + + exitcode_t CommandLine::HandleCommandTriggerSteamDownload([[maybe_unused]] CommandLineArgEnumerator* enumerator) + { + if (!Platform::triggerSteamDownload()) + { + return EXITCODE_FAIL; + } + + return EXITCODE_OK; + } } // namespace OpenRCT2 From 8cf0c9e9e760b2d8370ad92ff196ef382a60c5c7 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 14 Dec 2025 21:48:51 +0100 Subject: [PATCH 138/222] Fix inclusion of "thirdparty" openrct2-cli for Android --- src/openrct2-android/app/src/main/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openrct2-android/app/src/main/CMakeLists.txt b/src/openrct2-android/app/src/main/CMakeLists.txt index ef632854168a..375481a0dd79 100644 --- a/src/openrct2-android/app/src/main/CMakeLists.txt +++ b/src/openrct2-android/app/src/main/CMakeLists.txt @@ -272,6 +272,7 @@ target_include_directories(openrct2-ui PRIVATE "${ORCT2_ROOT}/src/thirdparty/duk target_include_directories(openrct2-ui PRIVATE "${ORCT2_ROOT}/src") target_include_directories(openrct2-ui SYSTEM PRIVATE "${ORCT2_ROOT}/src/thirdparty") target_include_directories(openrct2-cli PRIVATE "${ORCT2_ROOT}/src") +target_include_directories(openrct2-cli SYSTEM PRIVATE "${ORCT2_ROOT}/src/thirdparty") target_include_directories(openrct2 PRIVATE "/opt/openrct2/include/nlohmann/../") target_include_directories(openrct2-ui PRIVATE "/opt/openrct2/include/nlohmann/../") From 13795ce082db51e7b5ccffdd062473067a80d64f Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 21 Dec 2025 16:19:35 +0100 Subject: [PATCH 139/222] Close #25244: Unify kImageIndexUndefined and kSpriteIdNull (#25683) --- src/openrct2-ui/interface/Widget.cpp | 2 +- src/openrct2-ui/windows/EditorObjectSelection.cpp | 2 +- src/openrct2-ui/windows/EditorParkEntrance.cpp | 2 +- src/openrct2-ui/windows/Footpath.cpp | 10 +++++----- src/openrct2/drawing/ImageId.hpp | 2 -- src/openrct2/drawing/ImageIndexType.h | 2 +- src/openrct2/ride/RideData.h | 4 ++-- 7 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 919cb5ddde9e..5cbc8249f99c 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -857,7 +857,7 @@ namespace OpenRCT2::Ui const auto& widget = w.widgets[widgetIndex]; // Get the image - if (widget.image.GetIndex() == kSpriteIdNull) + if (widget.image.GetIndex() == kImageIndexUndefined) return; auto image = widget.image; diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 1818b1cb8a0f..bfccd04fd94c 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -917,7 +917,7 @@ namespace OpenRCT2::Ui::Windows for (size_t i = 0; i < std::size(ObjectSelectionPages); i++) { auto& widget = widgets[WIDX_TAB_1 + i]; - if (ObjectSelectionPages[i].Image != kSpriteIdNull) + if (ObjectSelectionPages[i].Image != kImageIndexUndefined) { widget.type = WidgetType::tab; widget.left = x; diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 4bc14ab6d7b3..e08bf361a38f 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -48,7 +48,7 @@ namespace OpenRCT2::Ui::Windows { ObjectEntryIndex entryIndex = kObjectEntryIndexNull; StringId stringId = kStringIdNone; - ImageIndex imageId = kSpriteIdNull; + ImageIndex imageId = kImageIndexUndefined; }; enum WindowEditorParkEntranceListWidgetIdx diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 8d7546ab0f45..59d62502781c 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -688,8 +688,8 @@ namespace OpenRCT2::Ui::Windows if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull) { // Set footpath and queue type button images - auto pathImage = kSpriteIdNull; - auto queueImage = kSpriteIdNull; + auto pathImage = kImageIndexUndefined; + auto queueImage = kImageIndexUndefined; auto pathEntry = GetPathSurfaceEntry(gFootpathSelection.NormalSurface); if (pathEntry != nullptr) { @@ -706,7 +706,7 @@ namespace OpenRCT2::Ui::Windows WindowFootpathDrawDropdownButton(rt, WIDX_QUEUELINE_TYPE, queueImage); // Set railing - auto railingsImage = kSpriteIdNull; + auto railingsImage = kImageIndexUndefined; auto railingsEntry = GetPathRailingsEntry(gFootpathSelection.Railings); if (railingsEntry != nullptr) { @@ -719,8 +719,8 @@ namespace OpenRCT2::Ui::Windows auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); // Set footpath and queue type button images - auto pathImage = kSpriteIdNull; - auto queueImage = kSpriteIdNull; + auto pathImage = kImageIndexUndefined; + auto queueImage = kImageIndexUndefined; const auto* pathObj = objManager.GetLoadedObject(gFootpathSelection.LegacyPath); if (pathObj != nullptr) { diff --git a/src/openrct2/drawing/ImageId.hpp b/src/openrct2/drawing/ImageId.hpp index 8a0cdaaa45ac..bc24def9a864 100644 --- a/src/openrct2/drawing/ImageId.hpp +++ b/src/openrct2/drawing/ImageId.hpp @@ -18,8 +18,6 @@ using colour_t = uint8_t; enum class FilterPaletteID : int32_t; -static constexpr ImageIndex kImageIndexUndefined = std::numeric_limits::max(); - enum class ImageCatalogue { UNKNOWN, diff --git a/src/openrct2/drawing/ImageIndexType.h b/src/openrct2/drawing/ImageIndexType.h index c88581561e67..1a0cb843be5a 100644 --- a/src/openrct2/drawing/ImageIndexType.h +++ b/src/openrct2/drawing/ImageIndexType.h @@ -14,4 +14,4 @@ using ImageIndex = uint32_t; -constexpr ImageIndex kSpriteIdNull = std::numeric_limits::max(); +constexpr ImageIndex kImageIndexUndefined = std::numeric_limits::max(); diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index d76afc8bfd51..29fdbb061da3 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -296,7 +296,7 @@ struct TrackDrawerEntry // or because they are not realistic for the ride type (e.g. LIM boosters in Mini Roller Coasters). RideTrackGroups extraTrackGroups{}; - ImageIndex icon = kSpriteIdNull; + ImageIndex icon = kImageIndexUndefined; StringId tooltip = kStringIdNone; void GetAvailableTrackGroups(RideTrackGroups& res) const; @@ -642,7 +642,7 @@ constexpr RideTypeDescriptor kDummyRTD = .PhotoItem = ShopItem::photo, .BonusValue = 0, .ColourPresets = kDefaultFlatRideColourPreset, - .ColourPreview = { kSpriteIdNull, kSpriteIdNull }, + .ColourPreview = { kImageIndexUndefined, kImageIndexUndefined }, .ColourKey = RideColourKey::Ride, .Name = "invalid", .RatingsData = From 0c1e78a042767015566e9508a878da47dc09e68a Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 26 Nov 2025 01:18:43 -0300 Subject: [PATCH 140/222] Replace if chain with else ifs --- src/openrct2/entity/Guest.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index e6282410ca81..32569b2bbd08 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1715,29 +1715,25 @@ static bool GuestDecideAndBuyItem(Guest& guest, Ride& ride, const ShopItem shopI } } - if (shopItemDescriptor.IsFood()) - guest.AmountOfFood++; - - if (shopItemDescriptor.IsDrink()) - guest.AmountOfDrinks++; - - if (shopItemDescriptor.IsSouvenir()) - guest.AmountOfSouvenirs++; - money64* expend_type = &guest.PaidOnSouvenirs; ExpenditureType expenditure = ExpenditureType::shopStock; if (shopItemDescriptor.IsFood()) { + guest.AmountOfFood++; expend_type = &guest.PaidOnFood; expenditure = ExpenditureType::foodDrinkStock; } - - if (shopItemDescriptor.IsDrink()) + else if (shopItemDescriptor.IsDrink()) { + guest.AmountOfDrinks++; expend_type = &guest.PaidOnDrink; expenditure = ExpenditureType::foodDrinkStock; } + else if (shopItemDescriptor.IsSouvenir()) + { + guest.AmountOfSouvenirs++; + } if (!(gameState.park.flags & PARK_FLAGS_NO_MONEY)) FinancePayment(shopItemDescriptor.Cost, expenditure); From c3a31d106f1aa4cdc8ed4a2b57c0c1a1697d948e Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Mon, 22 Dec 2025 04:16:35 +0000 Subject: [PATCH 141/222] Merge Localisation/master into OpenRCT2/develop --- data/language/eo-ZZ.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/language/eo-ZZ.txt b/data/language/eo-ZZ.txt index a07a1faf679a..662fde46aeeb 100644 --- a/data/language/eo-ZZ.txt +++ b/data/language/eo-ZZ.txt @@ -3835,3 +3835,7 @@ STR_7005 :Treni areon de trotuaro STR_7006 :Desegni borderon ĉirkaŭ bildo-butonoj STR_7007 :Atrakciotipo STR_7008 :Nekonata atrakciotipo ({INT32}) +STR_7009 :Ricevas skriptojn… +STR_7010 :Ne povas komenci reludigon, la dosiero ‘{STRING}’ ne ekzistas aŭ ne validas +STR_7011 :Ne povas komenci reludigon +STR_7012 :Pola zloto (PLN) From db619be0c3a7d91ddd886bc6fb1a57d7ff63025f Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Tue, 23 Dec 2025 11:56:52 +0100 Subject: [PATCH 142/222] Rename ViewportInitAll to ContextResetSubsystems (#25690) --- src/openrct2/Context.cpp | 33 +++++++++++++++++-- src/openrct2/Context.h | 3 ++ src/openrct2/Editor.cpp | 11 +++---- src/openrct2/Game.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 28 ---------------- src/openrct2/interface/Viewport.h | 1 - .../scenes/preloader/PreloaderScene.cpp | 2 +- src/openrct2/scenes/title/TitleScene.cpp | 3 +- 8 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 7df72e4dfa17..8f599f73e859 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -19,6 +19,7 @@ #include "Game.h" #include "GameState.h" #include "GameStateSnapshots.h" +#include "Input.h" #include "OpenRCT2.h" #include "ParkImporter.h" #include "PlatformEnvironment.h" @@ -42,6 +43,7 @@ #include "drawing/Image.h" #include "drawing/LightFX.h" #include "entity/EntityTweener.h" +#include "entity/PatrolArea.h" #include "interface/Chat.h" #include "interface/StdInOutConsole.h" #include "interface/Viewport.h" @@ -72,6 +74,7 @@ #include "ui/UiContext.h" #include "ui/WindowManager.h" #include "world/MapAnimation.h" +#include "world/MapSelection.h" #include #include @@ -533,9 +536,8 @@ namespace OpenRCT2 Drawing::LightFx::Init(); } - ViewportInitAll(); - ContextInit(); + ResetSubsystems(); if (!gOpenRCT2Headless) { @@ -555,6 +557,28 @@ namespace OpenRCT2 return true; } + /** + * rct2: 0x006E6EAC + */ + void ResetSubsystems() override + { + if (!gOpenRCT2NoGraphics) + { + ColoursInitMaps(); + } + + WindowInitAll(); + + gInputFlags.clearAll(); + InputSetState(InputState::Reset); + gPressedWidget.windowClassification = WindowClass::null; + gPickupPeepImage = ImageId(); + ResetTooltipNotShown(); + gMapSelectFlags.clearAll(); + ClearPatrolAreaToRender(); + TextinputCancel(); + } + private: void InitialiseRepositories() { @@ -1600,6 +1624,11 @@ namespace OpenRCT2 GetWindowManager()->Init(); } + void ContextResetSubsystems() + { + GetContext()->ResetSubsystems(); + } + bool ContextLoadParkFromStream(void* stream) { return GetContext()->LoadParkFromStream(static_cast(stream), ""); diff --git a/src/openrct2/Context.h b/src/openrct2/Context.h index a6ba477f6d3f..92e9b33eb5c8 100644 --- a/src/openrct2/Context.h +++ b/src/openrct2/Context.h @@ -119,6 +119,8 @@ namespace OpenRCT2 virtual int32_t RunOpenRCT2(int argc, const char** argv) = 0; virtual bool Initialise() = 0; + virtual void ResetSubsystems() = 0; + virtual void InitialiseDrawingEngine() = 0; virtual void DisposeDrawingEngine() = 0; @@ -151,6 +153,7 @@ namespace OpenRCT2 [[nodiscard]] IContext* GetContext(); void ContextInit(); + void ContextResetSubsystems(); void ContextSetCurrentCursor(CursorID cursor); void ContextUpdateCursorScale(); void ContextHideCursor(); diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 7e91e5d5ffc8..44995fc961da 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -28,7 +28,6 @@ #include "entity/Guest.h" #include "entity/PatrolArea.h" #include "entity/Staff.h" -#include "interface/Viewport.h" #include "interface/WindowBase.h" #include "localisation/LocalisationService.h" #include "management/Finance.h" @@ -118,7 +117,7 @@ namespace OpenRCT2::Editor gameState.park.flags |= PARK_FLAGS_SHOW_REAL_GUEST_NAMES; gameState.scenarioOptions.category = Scenario::Category::other; ObjectListLoad(); - ViewportInitAll(); + ContextResetSubsystems(); WindowBase* mainWindow = OpenEditorWindows(); mainWindow->setViewportLocation(TileCoordsXYZ{ 75, 75, 14 }.ToCoordsXYZ()); LoadPalette(); @@ -161,7 +160,7 @@ namespace OpenRCT2::Editor gLegacyScene = LegacyScene::scenarioEditor; gameState.editorStep = EditorStep::OptionsSelection; gameState.scenarioOptions.category = Scenario::Category::other; - ViewportInitAll(); + ContextResetSubsystems(); OpenEditorWindows(); FinaliseMainView(); gScreenAge = 0; @@ -195,7 +194,7 @@ namespace OpenRCT2::Editor gameState.editorStep = EditorStep::ObjectSelection; SetAllLandOwned(); ObjectListLoad(); - ViewportInitAll(); + ContextResetSubsystems(); WindowBase* mainWindow = OpenEditorWindows(); mainWindow->setViewportLocation(TileCoordsXYZ{ 75, 75, 14 }.ToCoordsXYZ()); LoadPalette(); @@ -223,7 +222,7 @@ namespace OpenRCT2::Editor SetAllLandOwned(); gameState.editorStep = EditorStep::ObjectSelection; ObjectListLoad(); - ViewportInitAll(); + ContextResetSubsystems(); WindowBase* mainWindow = OpenEditorWindows(); mainWindow->setViewportLocation(TileCoordsXYZ{ 75, 75, 14 }.ToCoordsXYZ()); LoadPalette(); @@ -263,7 +262,7 @@ namespace OpenRCT2::Editor getGameState().editorStep = EditorStep::LandscapeEditor; gScreenAge = 0; gLegacyScene = LegacyScene::scenarioEditor; - ViewportInitAll(); + ContextResetSubsystems(); OpenEditorWindows(); FinaliseMainView(); diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index fb037c21d6a5..1314b67094ee 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -364,7 +364,7 @@ void GameLoadInit() if (!gLoadKeepWindowsOpen) { - ViewportInitAll(); + ContextResetSubsystems(); GameCreateWindows(); } else diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index e2511c36bd53..df2a2b42ebb2 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -13,7 +13,6 @@ #include "../Diagnostic.h" #include "../Game.h" #include "../GameState.h" -#include "../Input.h" #include "../OpenRCT2.h" #include "../config/Config.h" #include "../core/Guard.hpp" @@ -24,7 +23,6 @@ #include "../drawing/Rectangle.h" #include "../entity/EntityList.h" #include "../entity/Guest.h" -#include "../entity/PatrolArea.h" #include "../entity/Staff.h" #include "../interface/Cursors.h" #include "../object/LargeSceneryEntry.h" @@ -39,7 +37,6 @@ #include "../ui/WindowManager.h" #include "../world/Climate.h" #include "../world/Map.h" -#include "../world/MapSelection.h" #include "../world/tile_element/LargeSceneryElement.h" #include "../world/tile_element/SmallSceneryElement.h" #include "../world/tile_element/TileElement.h" @@ -90,31 +87,6 @@ namespace OpenRCT2 static void ViewportUpdateSmartFollowVehicle(WindowBase* window); static void ViewportInvalidate(const Viewport* viewport, const ScreenRect& screenRect); - /** - * This is not a viewport function. It is used to setup many variables for - * multiple things. - * rct2: 0x006E6EAC - */ - void ViewportInitAll() - { - if (!gOpenRCT2NoGraphics) - { - ColoursInitMaps(); - } - - WindowInitAll(); - - // ? - gInputFlags.clearAll(); - InputSetState(InputState::Reset); - gPressedWidget.windowClassification = WindowClass::null; - gPickupPeepImage = ImageId(); - ResetTooltipNotShown(); - gMapSelectFlags.clearAll(); - ClearPatrolAreaToRender(); - TextinputCancel(); - } - /** * Converts between 3d point of a sprite to 2d coordinates for centring on that * sprite diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index c5fe5f1bf2c1..4b0fce617f43 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -183,7 +183,6 @@ namespace OpenRCT2 // rct2: 0x014234BC extern Viewport* gMusicTrackingViewport; - void ViewportInitAll(); std::optional centre2dCoordinates(const CoordsXYZ& loc, Viewport* viewport); void ViewportCreate(WindowBase& w, const ScreenCoordsXY& screenCoords, int32_t width, int32_t height, const Focus& focus); void ViewportRemove(Viewport* viewport); diff --git a/src/openrct2/scenes/preloader/PreloaderScene.cpp b/src/openrct2/scenes/preloader/PreloaderScene.cpp index 0a33469f2f10..5203d1728a65 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.cpp +++ b/src/openrct2/scenes/preloader/PreloaderScene.cpp @@ -37,7 +37,7 @@ void PreloaderScene::Load() gLegacyScene = LegacyScene::playing; gameStateInitAll(getGameState(), kDefaultMapSize); - ViewportInitAll(); + ContextResetSubsystems(); ContextOpenWindow(WindowClass::mainWindow); WindowSetFlagForAllViewports(VIEWPORT_FLAG_RENDERING_INHIBITED, true); WindowResizeGui(ContextGetWidth(), ContextGetHeight()); diff --git a/src/openrct2/scenes/title/TitleScene.cpp b/src/openrct2/scenes/title/TitleScene.cpp index 239fae6bc0c1..7eceffa1587c 100644 --- a/src/openrct2/scenes/title/TitleScene.cpp +++ b/src/openrct2/scenes/title/TitleScene.cpp @@ -20,7 +20,6 @@ #include "../../core/Console.hpp" #include "../../drawing/Text.h" #include "../../interface/Screenshot.h" -#include "../../interface/Viewport.h" #include "../../network/Network.h" #include "../../network/NetworkBase.h" #include "../../scenario/ScenarioRepository.h" @@ -107,7 +106,7 @@ void TitleScene::Load() GetContext().GetNetwork().Close(); #endif gameStateInitAll(getGameState(), kDefaultMapSize); - ViewportInitAll(); + ContextResetSubsystems(); ContextOpenWindow(WindowClass::mainWindow); TitleInitialise(); From 7f5806aa31c130d9d494f31d39b4c4b3926a98e7 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Tue, 23 Dec 2025 11:57:44 +0100 Subject: [PATCH 143/222] Move ZoomLevel::min implementation to ZoomLevel.cpp (#25689) --- src/openrct2/interface/Viewport.cpp | 5 ----- src/openrct2/interface/ZoomLevel.cpp | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index df2a2b42ebb2..ddc748413c54 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -2002,8 +2002,3 @@ namespace OpenRCT2 return viewports; } } // namespace OpenRCT2 - -ZoomLevel ZoomLevel::min() -{ - return ZoomLevel{ -2 }; -} diff --git a/src/openrct2/interface/ZoomLevel.cpp b/src/openrct2/interface/ZoomLevel.cpp index e7f71acd6645..9af9241eaf53 100644 --- a/src/openrct2/interface/ZoomLevel.cpp +++ b/src/openrct2/interface/ZoomLevel.cpp @@ -9,6 +9,11 @@ #include "ZoomLevel.h" +ZoomLevel ZoomLevel::min() +{ + return ZoomLevel{ -2 }; +} + ZoomLevel ZoomLevel::operator++(int) { ZoomLevel tmp(*this); From 39729f23e913079cf6ca8bdf07e771bda898ea04 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Tue, 23 Dec 2025 10:19:37 -0300 Subject: [PATCH 144/222] Remove redundant parenthesis around negated .has FlagHolder checks --- src/openrct2-ui/WindowManager.cpp | 24 +++++++++---------- src/openrct2-ui/input/MouseInput.cpp | 4 ++-- src/openrct2-ui/interface/Window.cpp | 2 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- src/openrct2-ui/windows/Footpath.cpp | 2 +- src/openrct2-ui/windows/Land.cpp | 8 +++---- src/openrct2-ui/windows/LandRights.cpp | 2 +- src/openrct2-ui/windows/PatrolArea.cpp | 2 +- src/openrct2-ui/windows/RideConstruction.cpp | 8 +++---- src/openrct2-ui/windows/Water.cpp | 4 ++-- src/openrct2/actions/BannerPlaceAction.cpp | 2 +- src/openrct2/actions/BannerRemoveAction.cpp | 2 +- .../actions/FootpathAdditionPlaceAction.cpp | 4 ++-- .../actions/FootpathAdditionRemoveAction.cpp | 2 +- .../actions/FootpathLayoutPlaceAction.cpp | 6 ++--- src/openrct2/actions/FootpathPlaceAction.cpp | 18 +++++++------- src/openrct2/actions/FootpathRemoveAction.cpp | 2 +- src/openrct2/actions/GameAction.cpp | 4 ++-- .../actions/LargeSceneryPlaceAction.cpp | 2 +- src/openrct2/actions/MazePlaceTrackAction.cpp | 2 +- src/openrct2/actions/MazeSetTrackAction.cpp | 4 ++-- .../actions/ParkEntrancePlaceAction.cpp | 2 +- .../actions/RideEntranceExitPlaceAction.cpp | 6 ++--- .../actions/SmallSceneryPlaceAction.cpp | 2 +- .../actions/SmallSceneryRemoveAction.cpp | 2 +- src/openrct2/actions/TrackPlaceAction.cpp | 14 +++++------ src/openrct2/actions/TrackRemoveAction.cpp | 6 ++--- src/openrct2/actions/WallPlaceAction.cpp | 6 ++--- src/openrct2/entity/Fountain.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 2 +- src/openrct2/interface/Widget.h | 2 +- src/openrct2/interface/Window.cpp | 2 +- src/openrct2/interface/WindowBase.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/ride/Ride.cpp | 4 ++-- src/openrct2/ride/Track.cpp | 2 +- src/openrct2/ride/Vehicle.cpp | 12 +++++----- src/openrct2/world/ConstructionClearance.cpp | 4 ++-- src/openrct2/world/Footpath.cpp | 6 ++--- 39 files changed, 92 insertions(+), 92 deletions(-) diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index b71e0d78d503..cf0c19c967d0 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -862,7 +862,7 @@ class WindowManager final : public IWindowManager { if (w->flags.has(WindowFlag::dead)) continue; - if (!(w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront, WindowFlag::noAutoClose))) + if (!w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront, WindowFlag::noAutoClose)) { Close(*w.get()); break; @@ -884,7 +884,7 @@ class WindowManager final : public IWindowManager } } } - else if (!(flags.has(WindowFlag::stickToFront))) + else if (!flags.has(WindowFlag::stickToFront)) { for (auto it = gWindowList.rbegin(); it != gWindowList.rend(); it++) { @@ -903,7 +903,7 @@ class WindowManager final : public IWindowManager wp->flags = flags; // Play sounds and flash the window - if (!(flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront))) + if (!flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)) { wp->flash(); OpenRCT2::Audio::Play(OpenRCT2::Audio::SoundId::windowOpen, 0, pos.x + (windowSize.width / 2)); @@ -964,7 +964,7 @@ class WindowManager final : public IWindowManager { if (w->flags.has(WindowFlag::dead)) continue; - if (!(w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront, WindowFlag::noAutoClose))) + if (!w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront, WindowFlag::noAutoClose)) { foundW = w.get(); break; @@ -1007,7 +1007,7 @@ class WindowManager final : public IWindowManager // Now close the collected windows for (auto* wnd : windowsToClose) { - if (!(wnd->flags.has(WindowFlag::dead))) + if (!wnd->flags.has(WindowFlag::dead)) { Close(*wnd); } @@ -1053,7 +1053,7 @@ class WindowManager final : public IWindowManager return; } - auto pred = [](WindowBase* w) -> bool { return !(w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)); }; + auto pred = [](WindowBase* w) -> bool { return !w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront); }; CloseByCondition(pred, WindowCloseFlags::CloseSingle); } @@ -1066,14 +1066,14 @@ class WindowManager final : public IWindowManager { CloseByClass(WindowClass::dropdown); CloseByCondition( - [](WindowBase* w) -> bool { return !(w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)); }); + [](WindowBase* w) -> bool { return !w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront); }); } void CloseAllExceptClass(WindowClass cls) override { CloseByClass(WindowClass::dropdown); CloseByCondition([cls](WindowBase* w) -> bool { - return w->classification != cls && !(w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)); + return w->classification != cls && !w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront); }); } @@ -1082,7 +1082,7 @@ class WindowManager final : public IWindowManager */ void CloseAllExceptFlags(WindowFlags flags) override { - CloseByCondition([flags](WindowBase* w) -> bool { return !(w->flags.hasAny(flags)); }); + CloseByCondition([flags](WindowBase* w) -> bool { return !w->flags.hasAny(flags); }); } /** @@ -1094,7 +1094,7 @@ class WindowManager final : public IWindowManager CloseByCondition([cls, number](WindowBase* w) -> bool { return ( !(w->number == number && w->classification == cls) - && !(w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront))); + && !w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)); }); } @@ -1327,7 +1327,7 @@ class WindowManager final : public IWindowManager */ WindowBase* BringToFront(WindowBase& w) override { - if (!(w.flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront))) + if (!w.flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)) { auto itSourcePos = WindowGetIterator(&w); if (itSourcePos != gWindowList.end()) @@ -1341,7 +1341,7 @@ class WindowManager final : public IWindowManager { continue; } - if (!(w2->flags.has(WindowFlag::stickToFront))) + if (!w2->flags.has(WindowFlag::stickToFront)) { // base() returns the next element in the list, so we need to decrement it. itDestPos = std::prev(it.base()); diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 095108769d9f..71a79c8f5359 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -397,7 +397,7 @@ namespace OpenRCT2 break; if (w->classification != _dragWidget.windowClassification || w->number != _dragWidget.windowNumber - || !(gInputFlags.has(InputFlag::toolActive))) + || !gInputFlags.has(InputFlag::toolActive)) { break; } @@ -591,7 +591,7 @@ namespace OpenRCT2 } else if (differentialCoords.x != 0 || differentialCoords.y != 0) { - if (!(w->flags.has(WindowFlag::noScrolling))) + if (!w->flags.has(WindowFlag::noScrolling)) { // User dragged a scrollable viewport diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index 2d98febf04a5..78e5993ae21c 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -1024,7 +1024,7 @@ namespace OpenRCT2::Ui::Windows */ void WindowDrawWidgets(WindowBase& w, RenderTarget& rt) { - if ((w.flags.has(WindowFlag::transparent)) && !(w.flags.has(WindowFlag::noBackground))) + if ((w.flags.has(WindowFlag::transparent)) && !w.flags.has(WindowFlag::noBackground)) Rectangle::filter( rt, { w.windowPos, w.windowPos + ScreenCoordsXY{ w.width - 1, w.height - 1 } }, FilterPaletteID::palette51); diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 201f1f42b204..665e3e110991 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -227,7 +227,7 @@ namespace OpenRCT2::Ui::Windows return state_changed; } - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { gMapSelectFlags.set(MapSelectFlag::enable); state_changed++; diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 59d62502781c..65e8185bb350 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -643,7 +643,7 @@ namespace OpenRCT2::Ui::Windows } // Update provisional bridge mode path - if (!(_provisionalFootpath.flags.has(ProvisionalPathFlag::placed))) + if (!_provisionalFootpath.flags.has(ProvisionalPathFlag::placed)) { ObjectEntryIndex type; ObjectEntryIndex railings = gFootpathSelection.Railings; diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index 2aa570bd0146..b18d77732bd8 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -461,7 +461,7 @@ namespace OpenRCT2::Ui::Windows return state_changed; } - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { gMapSelectFlags.set(MapSelectFlag::enable); state_changed++; @@ -616,7 +616,7 @@ namespace OpenRCT2::Ui::Windows if (gCurrentToolId == Tool::upDownArrow) { - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) return; money64 lower_cost = SelectionLowerLand(SelectionMode::query); @@ -660,7 +660,7 @@ namespace OpenRCT2::Ui::Windows uint8_t state_changed = 0; - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { gMapSelectFlags.set(MapSelectFlag::enable); state_changed++; @@ -737,7 +737,7 @@ namespace OpenRCT2::Ui::Windows uint8_t state_changed = 0; - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { gMapSelectFlags.set(MapSelectFlag::enable); state_changed++; diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index 134320c47a03..e47ca7abc02a 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -477,7 +477,7 @@ namespace OpenRCT2::Ui::Windows uint8_t state_changed = 0; - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { gMapSelectFlags.set(MapSelectFlag::enable); state_changed++; diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index e05be57ae3c9..b5d26a2a6f16 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -159,7 +159,7 @@ namespace OpenRCT2::Ui::Windows return; auto stateChanged = false; - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) stateChanged = true; if (gMapSelectType != MapSelectType::full) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index a4cfc2273889..eea5e732ad64 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1138,12 +1138,12 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_NEXT_SECTION: RideSelectNextSection(); - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) VirtualFloorSetHeight(_currentTrackBegin.z); break; case WIDX_PREVIOUS_SECTION: RideSelectPreviousSection(); - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) VirtualFloorSetHeight(_currentTrackBegin.z); break; case WIDX_LEFT_CURVE: @@ -3268,7 +3268,7 @@ namespace OpenRCT2::Ui::Windows arrowDirection = DirectionReverse(arrowDirection); gMapSelectArrowDirection = arrowDirection; - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { // Set height to where the next track piece would begin VirtualFloorSetHeight(_currentTrackBegin.z); @@ -4806,7 +4806,7 @@ namespace OpenRCT2::Ui::Windows if (_currentTrackPitchEnd != TrackPitch::None) ViewportSetVisibility(ViewportVisibility::trackHeights); - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { // Set height to where the next track piece would begin VirtualFloorSetHeight(trackPos.z - zBegin + zEnd); diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index c427f593b97f..f006b6f21c8b 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -299,7 +299,7 @@ namespace OpenRCT2::Ui::Windows if (gCurrentToolId == Tool::upDownArrow) { - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) return; auto waterLowerAction = GameActions::WaterLowerAction( @@ -342,7 +342,7 @@ namespace OpenRCT2::Ui::Windows uint8_t state_changed = 0; - if (!(gMapSelectFlags.has(MapSelectFlag::enable))) + if (!gMapSelectFlags.has(MapSelectFlag::enable)) { gMapSelectFlags.set(MapSelectFlag::enable); state_changed++; diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index a101a2d4d1d8..824653fdb07d 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -170,7 +170,7 @@ namespace OpenRCT2::GameActions if (!(pathElement->GetEdges() & (1 << _loc.direction))) continue; - if (pathElement->IsGhost() && !(GetFlags().has(CommandFlag::ghost))) + if (pathElement->IsGhost() && !GetFlags().has(CommandFlag::ghost)) continue; return pathElement; diff --git a/src/openrct2/actions/BannerRemoveAction.cpp b/src/openrct2/actions/BannerRemoveAction.cpp index 7d5ed1a897ba..5e7f876c89c4 100644 --- a/src/openrct2/actions/BannerRemoveAction.cpp +++ b/src/openrct2/actions/BannerRemoveAction.cpp @@ -144,7 +144,7 @@ namespace OpenRCT2::GameActions { if (bannerElement->GetBaseZ() != _loc.z) continue; - if (bannerElement->IsGhost() && !(GetFlags().has(CommandFlag::ghost))) + if (bannerElement->IsGhost() && !GetFlags().has(CommandFlag::ghost)) continue; if (bannerElement->GetPosition() != _loc.direction) continue; diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 86010bffb49e..223274e44f31 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -91,7 +91,7 @@ namespace OpenRCT2::GameActions } // No change - if (!(GetFlags().has(CommandFlag::ghost)) && pathElement->GetAdditionEntryIndex() == _entryIndex + if (!GetFlags().has(CommandFlag::ghost) && pathElement->GetAdditionEntryIndex() == _entryIndex && !(pathElement->IsBroken())) { return res; @@ -156,7 +156,7 @@ namespace OpenRCT2::GameActions } // No change - if (!(GetFlags().has(CommandFlag::ghost)) && pathElement->GetAdditionEntryIndex() == _entryIndex + if (!GetFlags().has(CommandFlag::ghost) && pathElement->GetAdditionEntryIndex() == _entryIndex && !(pathElement->IsBroken()) && !pathElement->AdditionIsGhost()) { return res; diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index 8289305ea595..73632af68ebb 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -96,7 +96,7 @@ namespace OpenRCT2::GameActions Result FootpathAdditionRemoveAction::Execute(GameState_t& gameState) const { auto* pathElement = MapGetFootpathElement(_loc); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { FootpathInterruptPeeps(_loc); } diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 2904d77e83c2..a53b296064fe 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -104,7 +104,7 @@ namespace OpenRCT2::GameActions res.expenditure = ExpenditureType::landscaping; res.position = _loc.ToTileCentre(); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { FootpathInterruptPeeps(_loc); } @@ -191,7 +191,7 @@ namespace OpenRCT2::GameActions { bool entrancePath = false, entranceIsSamePath = false; - if (!(GetFlags().hasAny(CommandFlag::allowDuringPaused, CommandFlag::ghost))) + if (!GetFlags().hasAny(CommandFlag::allowDuringPaused, CommandFlag::ghost)) { FootpathRemoveLitter(_loc); } @@ -247,7 +247,7 @@ namespace OpenRCT2::GameActions if (entrancePath) { - if (!(GetFlags().has(CommandFlag::ghost)) && !entranceIsSamePath) + if (!GetFlags().has(CommandFlag::ghost) && !entranceIsSamePath) { if (_constructFlags & PathConstructFlag::IsLegacyPathObject) { diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index c9564264a335..7bd4df0ec67b 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -132,7 +132,7 @@ namespace OpenRCT2::GameActions res.expenditure = ExpenditureType::landscaping; res.position = _loc.ToTileCentre(); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { FootpathInterruptPeeps(_loc); } @@ -142,7 +142,7 @@ namespace OpenRCT2::GameActions // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { if (_direction != kInvalidDirection && !getGameState().cheats.disableClearanceChecks) { @@ -239,7 +239,7 @@ namespace OpenRCT2::GameActions FootpathQueueChainReset(); - if (!(GetFlags().has(CommandFlag::trackDesign))) + if (!GetFlags().has(CommandFlag::trackDesign)) { FootpathRemoveEdgesAt(_loc, reinterpret_cast(pathElement)); } @@ -355,7 +355,7 @@ namespace OpenRCT2::GameActions { bool entrancePath = false, entranceIsSamePath = false; - if (!(GetFlags().hasAny(CommandFlag::allowDuringPaused, CommandFlag::ghost))) + if (!GetFlags().hasAny(CommandFlag::allowDuringPaused, CommandFlag::ghost)) { FootpathRemoveLitter(_loc); } @@ -410,7 +410,7 @@ namespace OpenRCT2::GameActions if (entrancePath) { - if (!(GetFlags().has(CommandFlag::ghost)) && !entranceIsSamePath) + if (!GetFlags().has(CommandFlag::ghost) && !entranceIsSamePath) { if (_constructFlags & PathConstructFlag::IsLegacyPathObject) { @@ -449,11 +449,11 @@ namespace OpenRCT2::GameActions FootpathQueueChainReset(); - if (!(GetFlags().has(CommandFlag::trackDesign))) + if (!GetFlags().has(CommandFlag::trackDesign)) { FootpathRemoveEdgesAt(_loc, pathElement->as()); } - if (gLegacyScene == LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::ghost))) + if (gLegacyScene == LegacyScene::scenarioEditor && !GetFlags().has(CommandFlag::ghost)) { AutomaticallySetPeepSpawn(); } @@ -505,7 +505,7 @@ namespace OpenRCT2::GameActions void FootpathPlaceAction::RemoveIntersectingWalls(PathElement* pathElement) const { - if (pathElement->IsSloped() && !(GetFlags().has(CommandFlag::ghost))) + if (pathElement->IsSloped() && !GetFlags().has(CommandFlag::ghost)) { auto direction = pathElement->GetSlopeDirection(); int32_t z = pathElement->GetBaseZ(); @@ -520,7 +520,7 @@ namespace OpenRCT2::GameActions } } - if (!(GetFlags().has(CommandFlag::trackDesign))) + if (!GetFlags().has(CommandFlag::trackDesign)) FootpathConnectEdges(_loc, reinterpret_cast(pathElement), GetFlags()); FootpathUpdateQueueChains(); diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 73419c90a5b5..9513813d4535 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -83,7 +83,7 @@ namespace OpenRCT2::GameActions res.expenditure = ExpenditureType::landscaping; res.position = { _loc.x + 16, _loc.y + 16, _loc.z }; - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { FootpathInterruptPeeps(_loc); FootpathRemoveLitter(_loc); diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index fc04e890d425..a47bce001ae8 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -405,7 +405,7 @@ namespace OpenRCT2::GameActions } else { - bool commandExecutes = !(flags.hasAny(CommandFlag::ghost, CommandFlag::noSpend)); + bool commandExecutes = !flags.hasAny(CommandFlag::ghost, CommandFlag::noSpend); bool recordAction = false; if (replayManager != nullptr && !ignoreForReplays) @@ -437,7 +437,7 @@ namespace OpenRCT2::GameActions } // Only show errors when its not a ghost and not a preview and also top level action. - bool shouldShowError = !(flags.has(CommandFlag::ghost)) && !(flags.has(CommandFlag::noSpend)) && topLevel; + bool shouldShowError = !flags.has(CommandFlag::ghost) && !flags.has(CommandFlag::noSpend) && topLevel; // In network mode the error should be only shown to the issuer of the action. if (Network::GetMode() != Network::Mode::none) diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 2c8803544085..6355a94c0fc2 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -287,7 +287,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); resultData.GroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { FootpathRemoveLitter({ curTile, zLow }); if (!getGameState().cheats.disableClearanceChecks) diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 3412c99f4b9f..65865a6165eb 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -162,7 +162,7 @@ namespace OpenRCT2::GameActions } auto flags = GetFlags(); - if (!(flags.has(CommandFlag::ghost))) + if (!flags.has(CommandFlag::ghost)) { FootpathRemoveLitter(_loc); WallRemoveAt({ _loc.ToTileStart(), _loc.z, _loc.z + 32 }); diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 4fa98b4e801b..2316b8433ed9 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -206,7 +206,7 @@ namespace OpenRCT2::GameActions } auto flags = GetFlags(); - if (!(flags.has(CommandFlag::ghost))) + if (!flags.has(CommandFlag::ghost)) { FootpathRemoveLitter(_loc); WallRemoveAt({ _loc.ToTileStart(), _loc.z, _loc.z + 32 }); @@ -237,7 +237,7 @@ namespace OpenRCT2::GameActions ride->getStation().SetBaseZ(tileElement->GetBaseZ()); ride->getStation().Start = { 0, 0 }; - if (_initialPlacement && !(flags.has(CommandFlag::ghost))) + if (_initialPlacement && !flags.has(CommandFlag::ghost)) { ride->overallView = startLoc; } diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index 66168e9763f6..4faadb0d495b 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -143,7 +143,7 @@ namespace OpenRCT2::GameActions entranceLoc.y += CoordsDirectionDelta[(_loc.direction + 1) & 0x3].y * 2; } - if (!(flags.has(CommandFlag::ghost))) + if (!flags.has(CommandFlag::ghost)) { SurfaceElement* surfaceElement = MapGetSurfaceElementAt(entranceLoc); if (surfaceElement != nullptr) diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 8fa8e762e26b..791204bb5c10 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -154,7 +154,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, errorTitle, STR_ERR_RIDE_NOT_FOUND); } - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { RideClearForConstruction(*ride); ride->removePeeps(); @@ -177,7 +177,7 @@ namespace OpenRCT2::GameActions } auto z = station.GetBaseZ(); - if (!(GetFlags().has(CommandFlag::allowDuringPaused)) && !(GetFlags().has(CommandFlag::ghost)) + if (!GetFlags().has(CommandFlag::allowDuringPaused) && !GetFlags().has(CommandFlag::ghost) && !getGameState().cheats.disableClearanceChecks) { FootpathRemoveLitter({ _loc, z }); @@ -224,7 +224,7 @@ namespace OpenRCT2::GameActions FootpathQueueChainReset(); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { MazeEntranceHedgeRemoval({ _loc, entranceElement->as() }); } diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index 790ea6430789..c5ff87375ba4 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -358,7 +358,7 @@ namespace OpenRCT2::GameActions targetHeight = surfaceHeight; } - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { FootpathRemoveLitter({ _loc, targetHeight }); if (!getGameState().cheats.disableClearanceChecks && (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_NO_WALLS))) diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index 0abcf52c5e97..a2e82b1746a2 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -74,7 +74,7 @@ namespace OpenRCT2::GameActions res.expenditure = ExpenditureType::landscaping; res.position = _loc; - if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::ghost)) + if (gLegacyScene != LegacyScene::scenarioEditor && !GetFlags().has(CommandFlag::ghost) && !getGameState().cheats.sandboxMode) { // Check if allowed to remove item diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index d26cc162dec8..2e3afcd25282 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -477,7 +477,7 @@ namespace OpenRCT2::GameActions costs += canBuild.cost; // When building a level crossing, remove any pre-existing path furniture. - if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags().has(CommandFlag::ghost))) + if (crossingMode == CreateCrossingMode::trackOverPath && !GetFlags().has(CommandFlag::ghost)) { auto footpathElement = MapGetFootpathElement(mapLoc); if (footpathElement != nullptr && footpathElement->HasAddition()) @@ -486,7 +486,7 @@ namespace OpenRCT2::GameActions } } - if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) + if (!GetFlags().has(CommandFlag::ghost) && !gameState.cheats.disableClearanceChecks) { FootpathRemoveLitter(mapLoc); if (rtd.HasFlag(RtdFlag::noWallsAroundTrack)) @@ -542,7 +542,7 @@ namespace OpenRCT2::GameActions bool isOrigin = false; if (!ride->overallView.IsNull()) { - if (!(GetFlags().has(CommandFlag::noSpend))) + if (!GetFlags().has(CommandFlag::noSpend)) { isOrigin = ted.sequences[0].flags.has(SequenceFlag::trackOrigin); } @@ -611,7 +611,7 @@ namespace OpenRCT2::GameActions uint32_t connectionSides = ted.sequences[0].getEntranceConnectionSides(); if (connectionSides != 0) { - if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) + if (!GetFlags().has(CommandFlag::ghost) && !gameState.cheats.disableClearanceChecks) { for (int32_t chosenDirection = Numerics::bitScanForward(connectionSides); chosenDirection != -1; chosenDirection = Numerics::bitScanForward(connectionSides)) @@ -632,7 +632,7 @@ namespace OpenRCT2::GameActions // Don't do this if the tile is a ghost to prevent desyncs // However, ghost tiles from track designs need to modify station data to display properly if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) - && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) + && (!GetFlags().has(CommandFlag::ghost) || _fromTrackDesign)) { if (blockIndex == 0) { @@ -654,7 +654,7 @@ namespace OpenRCT2::GameActions } } - if (!gameState.cheats.disableClearanceChecks || !(GetFlags().has(CommandFlag::ghost))) + if (!gameState.cheats.disableClearanceChecks || !GetFlags().has(CommandFlag::ghost)) { FootpathConnectEdges(mapLoc, tileElement, GetFlags()); } @@ -662,7 +662,7 @@ namespace OpenRCT2::GameActions } // Update ride stats and block brake count if the piece was successfully built - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { switch (_trackType) { diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index ddba7bbfe2bf..6721dd8e0d7e 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -405,7 +405,7 @@ namespace OpenRCT2::GameActions // If the removed tile is a station modify station properties. // Don't do this if the ride is simulating and the tile is a ghost to prevent desyncs. if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) - && (!(GetFlags().has(CommandFlag::ghost)) || (GetFlags().has(CommandFlag::trackDesign))) + && (!GetFlags().has(CommandFlag::ghost) || (GetFlags().has(CommandFlag::trackDesign))) && (tileElement->AsTrack()->GetSequenceIndex() == 0)) { const auto removeElementResult = TrackRemoveStationElement( @@ -429,13 +429,13 @@ namespace OpenRCT2::GameActions } TileElementRemove(tileElement); ride->validateStations(); - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { ride->updateMaxVehicles(); } } - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { switch (trackType) { diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 128141886aea..a17cb60da1fd 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -92,7 +92,7 @@ namespace OpenRCT2::GameActions } auto mapSizeMax = GetMapSizeMaxXY(); - if (gLegacyScene != LegacyScene::scenarioEditor && !(GetFlags().has(CommandFlag::trackDesign)) + if (gLegacyScene != LegacyScene::scenarioEditor && !GetFlags().has(CommandFlag::trackDesign) && !gameState.cheats.sandboxMode) { if (_loc.z == 0) @@ -252,7 +252,7 @@ namespace OpenRCT2::GameActions clearanceHeight += wallEntry->height; bool wallAcrossTrack = false; - if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) + if (!GetFlags().has(CommandFlag::trackDesign) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / 8, clearanceHeight, &wallAcrossTrack); if (result.error != Status::ok) @@ -326,7 +326,7 @@ namespace OpenRCT2::GameActions clearanceHeight += wallEntry->height; bool wallAcrossTrack = false; - if (!(GetFlags().has(CommandFlag::trackDesign)) && !gameState.cheats.disableClearanceChecks) + if (!GetFlags().has(CommandFlag::trackDesign) && !gameState.cheats.disableClearanceChecks) { auto result = WallCheckObstruction(wallEntry, targetHeight / kCoordsZStep, clearanceHeight, &wallAcrossTrack); if (result.error != Status::ok) diff --git a/src/openrct2/entity/Fountain.cpp b/src/openrct2/entity/Fountain.cpp index 269082fedbf3..367e516778e7 100644 --- a/src/openrct2/entity/Fountain.cpp +++ b/src/openrct2/entity/Fountain.cpp @@ -182,7 +182,7 @@ void JumpingFountain::Update() { AdvanceAnimation(); } - if (frame == 16 && !(fountainFlags.has(FountainFlag::fast))) + if (frame == 16 && !fountainFlags.has(FountainFlag::fast)) { AdvanceAnimation(); } diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index ddc748413c54..df95010a14d6 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -416,7 +416,7 @@ namespace OpenRCT2 for (; it != gWindowList.end(); it++) { auto w = it->get(); - if (!(w->flags.has(WindowFlag::transparent)) || (w->flags.has(WindowFlag::dead))) + if (!w->flags.has(WindowFlag::transparent) || (w->flags.has(WindowFlag::dead))) continue; if (w->viewport == window->viewport) continue; diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index 3602ef6e8d5c..450fa7c3abc2 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -168,7 +168,7 @@ namespace OpenRCT2 bool IsVisible() const { - return !(flags.has(OpenRCT2::WidgetFlag::isHidden)); + return !flags.has(OpenRCT2::WidgetFlag::isHidden); } }; diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 01bb4699c6d1..051615a9d40d 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -405,7 +405,7 @@ static constexpr float kWindowScrollLocations[][2] = { // rct2: 0x006E7C76 if (w.viewportTargetSprite.IsNull()) { - if (!(w.flags.has(WindowFlag::noScrolling))) + if (!w.flags.has(WindowFlag::noScrolling)) { w.savedViewPos = screenCoords - ScreenCoordsXY{ static_cast(w.viewport->ViewWidth() * kWindowScrollLocations[i][0]), diff --git a/src/openrct2/interface/WindowBase.cpp b/src/openrct2/interface/WindowBase.cpp index f7d9de7cd53b..df4ff760fb36 100644 --- a/src/openrct2/interface/WindowBase.cpp +++ b/src/openrct2/interface/WindowBase.cpp @@ -151,7 +151,7 @@ namespace OpenRCT2 int16_t WindowBase::getTitleBarCurrentHeight() const { - if (!(flags.has(WindowFlag::noTitleBar)) && widgets.size() > 2) + if (!flags.has(WindowFlag::noTitleBar) && widgets.size() > 2) return widgets[1].height() - 1; else return 0; diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 7cfaf2ae206f..6ceb0c6ab21c 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1134,7 +1134,7 @@ namespace OpenRCT2::RCT2 dst->type = RCTEntryIndexToOpenRCT2EntryIndex(src->Type); dst->flags = src->flags; - if (!(src->flags.has(BannerFlag::linkedToRide)) && IsUserStringID(src->StringID)) + if (!src->flags.has(BannerFlag::linkedToRide) && IsUserStringID(src->StringID)) { dst->text = GetUserString(src->StringID); } diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index fcb422d5216f..c4c82e92fcae 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -925,7 +925,7 @@ int32_t Ride::getTotalTime() const bool Ride::canHaveMultipleCircuits() const { - if (!(getRideTypeDescriptor().HasFlag(RtdFlag::allowMultipleCircuits))) + if (!getRideTypeDescriptor().HasFlag(RtdFlag::allowMultipleCircuits)) return false; // Only allow circuit or launch modes @@ -5199,7 +5199,7 @@ void Ride::updateMaxVehicles() } while (totalLength <= stationLength); if ((mode != RideMode::stationToStation && mode != RideMode::continuousCircuit) - || !(rtd.HasFlag(RtdFlag::allowMoreVehiclesThanStationFits))) + || !rtd.HasFlag(RtdFlag::allowMoreVehiclesThanStationFits)) { maxNumTrains = std::min(maxNumTrains, int32_t(OpenRCT2::Limits::kMaxTrainsPerRide)); } diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index a7f6144b3652..9bca4b496b6c 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -332,7 +332,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn } } while (stationElement != nullptr); - if (!(flags.has(CommandFlag::apply))) + if (!flags.has(CommandFlag::apply)) { if ((removeLoc != stationBackLoc) && (removeLoc != stationFrontLoc) && ride->numStations >= Limits::kMaxStationsPerRide) { diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index b131d19ac13d..fe3529568a03 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -615,7 +615,7 @@ void Vehicle::UpdateMeasurements() auto trackElemType = GetTrackType(); if (trackElemType == TrackElemType::PoweredLift || HasFlag(VehicleFlags::OnLiftHill)) { - if (!(curRide->testingFlags.has(RideTestingFlag::poweredLift))) + if (!curRide->testingFlags.has(RideTestingFlag::poweredLift)) { curRide->testingFlags.set(RideTestingFlag::poweredLift); if (curRide->numPoweredLifts < OpenRCT2::Limits::kRideMaxNumPoweredLiftsCount) @@ -677,10 +677,10 @@ void Vehicle::UpdateMeasurements() RideTestingFlag::turnSloped); uint8_t turnType = 1; - if (!(testingFlags.has(RideTestingFlag::turnBanked))) + if (!testingFlags.has(RideTestingFlag::turnBanked)) { turnType = 2; - if (!(testingFlags.has(RideTestingFlag::turnSloped))) + if (!testingFlags.has(RideTestingFlag::turnSloped)) { turnType = 0; } @@ -858,7 +858,7 @@ void Vehicle::UpdateMeasurements() } } - if (!(curRide->testingFlags.has(RideTestingFlag::sheltered))) + if (!curRide->testingFlags.has(RideTestingFlag::sheltered)) { curRide->testingFlags.set(RideTestingFlag::sheltered); @@ -6502,7 +6502,7 @@ void Vehicle::Sub6DBF3E() auto trackType = GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags.has(SequenceFlag::trackOrigin))) + if (!ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) { return; } @@ -7906,7 +7906,7 @@ void Vehicle::Loc6DCE02(const Ride& curRide) auto trackType = GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[0].flags.has(SequenceFlag::trackOrigin))) + if (!ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) { return; } diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 9f949363d14f..3d61e31aa4db 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -43,7 +43,7 @@ static bool MapPlaceClearFunc( if ((*tile_element)->GetType() != TileElementType::SmallScenery) return false; - if (is_scenery && !(flags.has(CommandFlag::trackDesign))) + if (is_scenery && !flags.has(CommandFlag::trackDesign)) return false; auto* scenery = (*tile_element)->AsSmallScenery()->GetEntry(); @@ -61,7 +61,7 @@ static bool MapPlaceClearFunc( if (flags.has(CommandFlag::ghost)) return true; - if (!(flags.has(CommandFlag::apply))) + if (!flags.has(CommandFlag::apply)) return true; MapInvalidateTile({ coords, (*tile_element)->GetBaseZ(), (*tile_element)->GetClearanceZ() }); diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index ea7fd6837662..4f0784b3f83b 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -526,7 +526,7 @@ static void Loc6A6F1F( FootpathQueueChainPush(tileElement->AsPath()->GetRideIndex()); } } - if (!(flags.hasAny(CommandFlag::ghost, CommandFlag::allowDuringPaused))) + if (!flags.hasAny(CommandFlag::ghost, CommandFlag::allowDuringPaused)) { FootpathInterruptPeeps({ targetPos, tileElement->GetBaseZ() }); } @@ -596,7 +596,7 @@ static void Loc6A6D7E( const auto trackType = tileElement->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElement->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath))) + if (!ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath)) { return; } @@ -682,7 +682,7 @@ static void Loc6A6C85( const auto trackType = tileElementPos.element->AsTrack()->GetTrackType(); const uint8_t trackSequence = tileElementPos.element->AsTrack()->GetSequenceIndex(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath))) + if (!ted.sequences[trackSequence].flags.has(SequenceFlag::connectsToPath)) { return; } From d8ad249b0a34149b77da5b2b47ab7cf4344cc76f Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:20:11 +0100 Subject: [PATCH 145/222] Only add invisible entrances to S4/S6 if they were actually used (#25682) --- distribution/changelog.txt | 1 + src/openrct2/rct1/S4Importer.cpp | 3 ++- src/openrct2/rct12/RCT12.cpp | 39 +++++++++++++++++--------------- src/openrct2/rct12/RCT12.h | 19 +++++++++++++++- src/openrct2/rct2/S6Importer.cpp | 28 +++++++++++++++++++---- 5 files changed, 66 insertions(+), 24 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 8235900f34a1..52447bd4ba19 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -23,6 +23,7 @@ - Fix: [#25571] Potential crash due to drawing a Crooked House ride. - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. +- Fix: [#25595] Invisible entrance is added to imported SV4 saves. - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. - Fix: [#25639] Scenery window crashes when a no longer present object is still selected. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 6b44148d5f55..3e598fbbf158 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1561,7 +1561,8 @@ namespace OpenRCT2::RCT1 AppendRequiredObjects(result, ObjectType::footpathSurface, _footpathSurfaceEntries); AppendRequiredObjects(result, ObjectType::footpathRailings, _footpathRailingsEntries); AppendRequiredObjects(result, ObjectType::peepNames, std::vector({ "rct2.peep_names.original" })); - RCT12AddDefaultObjects(result); + AppendRequiredObjects(result, ObjectType::station, kDefaultStationStyles); + RCT12AddDefaultMusic(result); // Normalise the name to make the scenario as recognisable as possible auto normalisedName = ScenarioSources::NormaliseName(_s4.ScenarioName); diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index c69be1e1bda3..ce1e330e1972 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -719,11 +719,20 @@ OpenRCT2::RCT12::TrackElemType OpenRCT2FlatTrackTypeToRCT12(OpenRCT2::TrackElemT } } -static constexpr std::string_view _stationStyles[] = { - "rct2.station.plain", "rct2.station.wooden", "rct2.station.canvas_tent", "rct2.station.castle_grey", - "rct2.station.castle_brown", "rct2.station.jungle", "rct2.station.log", "rct2.station.classical", - "rct2.station.abstract", "rct2.station.snow", "rct2.station.pagoda", "rct2.station.space", - "openrct2.station.noentrance", +static constexpr std::string_view _stationStyleMap[] = { + "rct2.station.plain", // RCT12_STATION_STYLE_PLAIN + "rct2.station.wooden", // RCT12_STATION_STYLE_WOODEN + "rct2.station.canvas_tent", // RCT12_STATION_STYLE_CANVAS_TENT + "rct2.station.castle_grey", // RCT12_STATION_STYLE_CASTLE_GREY + "rct2.station.castle_brown", // RCT12_STATION_STYLE_CASTLE_BROWN + "rct2.station.jungle", // RCT12_STATION_STYLE_JUNGLE + "rct2.station.log", // RCT12_STATION_STYLE_LOG_CABIN + "rct2.station.classical", // RCT12_STATION_STYLE_CLASSICAL + "rct2.station.abstract", // RCT12_STATION_STYLE_ABSTRACT + "rct2.station.snow", // RCT12_STATION_STYLE_SNOW + "rct2.station.pagoda", // RCT12_STATION_STYLE_PAGODA + "rct2.station.space", // RCT12_STATION_STYLE_SPACE + "openrct2.station.noentrance", // RCT12_STATION_STYLE_INVISIBLE }; static constexpr std::string_view _musicStyles[] = { @@ -764,22 +773,22 @@ static constexpr std::string_view _musicStyles[] = { std::string_view GetStationIdentifierFromStyle(uint8_t style) { - if (style < std::size(_stationStyles)) + if (style < std::size(_stationStyleMap)) { - return _stationStyles[style]; + return _stationStyleMap[style]; } - return _stationStyles[RCT12_STATION_STYLE_INVISIBLE]; + return _stationStyleMap[RCT12_STATION_STYLE_INVISIBLE]; } uint8_t GetStationStyleFromIdentifier(u8string_view identifier) { // Not supported in TD6, closest match. - if (identifier == "openrct2.station.noplatformnoentrance") + if (identifier == kNoEntranceNoPlatformIdentifier) return RCT12_STATION_STYLE_INVISIBLE; - for (uint8_t i = RCT12_STATION_STYLE_PLAIN; i < std::size(_stationStyles); i++) + for (uint8_t i = RCT12_STATION_STYLE_PLAIN; i < std::size(_stationStyleMap); i++) { - if (_stationStyles[i] == identifier) + if (_stationStyleMap[i] == identifier) { return i; } @@ -798,14 +807,8 @@ std::optional GetStyleFromMusicIdentifier(std::string_view identifier) return std::nullopt; } -void RCT12AddDefaultObjects(ObjectList& objectList) +void RCT12AddDefaultMusic(ObjectList& objectList) { - // Stations - for (size_t i = 0; i < std::size(_stationStyles); i++) - { - objectList.SetObject(ObjectType::station, static_cast(i), _stationStyles[i]); - } - // Music for (size_t i = 0; i < std::size(_musicStyles); i++) { diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index 8fbe67ef82a5..538738d37ea6 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -478,6 +478,23 @@ enum : uint32_t TRACK_FLAGS2_SIX_FLAGS_RIDE_DEPRECATED = (1u << 31) // Not used anymore. }; +static constexpr std::string_view kNoEntranceNoPlatformIdentifier = "openrct2.station.noplatformnoentrance"; + +constexpr std::string_view kDefaultStationStyles[] = { + "rct2.station.plain", // RCT12_STATION_STYLE_PLAIN + "rct2.station.wooden", // RCT12_STATION_STYLE_WOODEN + "rct2.station.canvas_tent", // RCT12_STATION_STYLE_CANVAS_TENT + "rct2.station.castle_grey", // RCT12_STATION_STYLE_CASTLE_GREY + "rct2.station.castle_brown", // RCT12_STATION_STYLE_CASTLE_BROWN + "rct2.station.jungle", // RCT12_STATION_STYLE_JUNGLE + "rct2.station.log", // RCT12_STATION_STYLE_LOG_CABIN + "rct2.station.classical", // RCT12_STATION_STYLE_CLASSICAL + "rct2.station.abstract", // RCT12_STATION_STYLE_ABSTRACT + "rct2.station.snow", // RCT12_STATION_STYLE_SNOW + "rct2.station.pagoda", // RCT12_STATION_STYLE_PAGODA + "rct2.station.space", // RCT12_STATION_STYLE_SPACE +}; + #pragma pack(push, 1) struct RCT12xy8 @@ -1216,7 +1233,7 @@ OpenRCT2::RCT12::TrackElemType OpenRCT2FlatTrackTypeToRCT12(OpenRCT2::TrackElemT std::string_view GetStationIdentifierFromStyle(uint8_t style); uint8_t GetStationStyleFromIdentifier(u8string_view identifier); std::optional GetStyleFromMusicIdentifier(std::string_view identifier); -void RCT12AddDefaultObjects(OpenRCT2::ObjectList& objectList); +void RCT12AddDefaultMusic(OpenRCT2::ObjectList& objectList); void AppendRequiredObjects( OpenRCT2::ObjectList& objectList, OpenRCT2::ObjectType objectType, std::span objectNames); void AppendRequiredObjects( diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 6ceb0c6ab21c..c11889e58705 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -90,6 +90,7 @@ namespace OpenRCT2::RCT2 ObjectEntryIndex _pathToRailingMap[16]; RCT12::EntryList _terrainSurfaceEntries; RCT12::EntryList _terrainEdgeEntries; + RCT12::EntryList _stationEntries; public: S6Importer(IObjectRepository& objectRepository) @@ -612,6 +613,8 @@ namespace OpenRCT2::RCT2 // Add default edges _terrainEdgeEntries.AddRange(DefaultTerrainEdges); + + _stationEntries.AddRange(kDefaultStationStyles); } void ConvertScenarioStringsToUTF8(GameState_t& gameState) @@ -971,11 +974,11 @@ namespace OpenRCT2::RCT2 } dst->music = musicStyle; + auto entranceStyle = src->entranceStyle; // In SV7, "plain" entrances are invisible. - auto entranceStyle = kObjectEntryIndexNull; - if (!_isSV7 && GetRideTypeDescriptor(dst->type).HasFlag(RtdFlag::hasEntranceAndExit)) + if (_isSV7) { - entranceStyle = src->entranceStyle; + entranceStyle = _stationEntries.GetOrAddEntry(kNoEntranceNoPlatformIdentifier); } dst->entranceStyle = entranceStyle; @@ -1920,9 +1923,26 @@ namespace OpenRCT2::RCT2 AppendRequiredObjects(objectList, ObjectType::terrainSurface, _terrainSurfaceEntries); AppendRequiredObjects(objectList, ObjectType::terrainEdge, _terrainEdgeEntries); + + const bool hasInvisibleEntrance = std::any_of(std::begin(_s6.Rides), std::end(_s6.Rides), [](Ride& ride) { + if (ride.type == kRideTypeNull) + return false; + + return ride.entranceStyle == RCT12_STATION_STYLE_INVISIBLE; + }); + if (hasInvisibleEntrance) + { + _stationEntries.GetOrAddEntry(GetStationIdentifierFromStyle(RCT12_STATION_STYLE_INVISIBLE)); + } + if (_isSV7) + { + _stationEntries.GetOrAddEntry(kNoEntranceNoPlatformIdentifier); + } + AppendRequiredObjects(objectList, ObjectType::station, _stationEntries); + AppendRequiredObjects( objectList, ObjectType::peepNames, std::vector({ "rct2.peep_names.original" })); - RCT12AddDefaultObjects(objectList); + RCT12AddDefaultMusic(objectList); // Normalise the name to make the scenario as recognisable as possible auto normalisedName = ScenarioSources::NormaliseName(_s6.Info.Name); From 490bf3ec307735965d49211fb757816b4253ecd8 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:16:44 -0300 Subject: [PATCH 146/222] Remove redundant parentheses around FlagHolder method invocations (#25695) --- src/openrct2-ui/input/MouseInput.cpp | 6 ++---- src/openrct2-ui/interface/Window.cpp | 2 +- src/openrct2-ui/scripting/ScWidget.hpp | 2 +- src/openrct2-ui/scripting/ScWindow.hpp | 2 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- src/openrct2-ui/windows/EditorObjectSelection.cpp | 4 ++-- src/openrct2-ui/windows/Footpath.cpp | 4 ++-- src/openrct2-ui/windows/MapTooltip.cpp | 2 +- src/openrct2/actions/TrackPlaceAction.cpp | 2 +- src/openrct2/entity/Fountain.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 2 +- src/openrct2/interface/Window.cpp | 2 +- src/openrct2/paint/VirtualFloor.cpp | 2 +- src/openrct2/paint/tile_element/Paint.TileElement.cpp | 2 +- src/openrct2/ride/Ride.cpp | 2 +- src/openrct2/world/Banner.cpp | 2 +- 16 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 71a79c8f5359..125a9097abfa 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -490,9 +490,7 @@ namespace OpenRCT2 static void InputWindowPositionContinue( WindowBase& w, const ScreenCoordsXY& lastScreenCoords, const ScreenCoordsXY& newScreenCoords) { - int32_t snapProximity; - - snapProximity = (w.flags.has(WindowFlag::noSnapping)) ? 0 : Config::Get().general.windowSnapProximity; + int32_t snapProximity = w.flags.has(WindowFlag::noSnapping) ? 0 : Config::Get().general.windowSnapProximity; WindowMoveAndSnap(w, newScreenCoords - lastScreenCoords, snapProximity); } @@ -1603,7 +1601,7 @@ namespace OpenRCT2 mainWindow = WindowGetMain(); if (mainWindow == nullptr) return; - if ((mainWindow->flags.has(WindowFlag::noScrolling)) + if (mainWindow->flags.has(WindowFlag::noScrolling) || (gLegacyScene == LegacyScene::trackDesignsManager || gLegacyScene == LegacyScene::titleSequence)) return; if (mainWindow->viewport == nullptr) diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index 78e5993ae21c..b8b68a8e66a7 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -1024,7 +1024,7 @@ namespace OpenRCT2::Ui::Windows */ void WindowDrawWidgets(WindowBase& w, RenderTarget& rt) { - if ((w.flags.has(WindowFlag::transparent)) && !w.flags.has(WindowFlag::noBackground)) + if (w.flags.has(WindowFlag::transparent) && !w.flags.has(WindowFlag::noBackground)) Rectangle::filter( rt, { w.windowPos, w.windowPos + ScreenCoordsXY{ w.width - 1, w.height - 1 } }, FilterPaletteID::palette51); diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index 9023774701be..936865ed3c1e 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -371,7 +371,7 @@ namespace OpenRCT2::Scripting if (IsCustomWindow()) { auto widget = GetWidget(); - if (widget != nullptr && (widget->flags.has(WidgetFlag::textIsString)) && widget->string != nullptr) + if (widget != nullptr && widget->flags.has(WidgetFlag::textIsString) && widget->string != nullptr) { return widget->string; } diff --git a/src/openrct2-ui/scripting/ScWindow.hpp b/src/openrct2-ui/scripting/ScWindow.hpp index 32d7e67dc049..9129c781d158 100644 --- a/src/openrct2-ui/scripting/ScWindow.hpp +++ b/src/openrct2-ui/scripting/ScWindow.hpp @@ -208,7 +208,7 @@ namespace OpenRCT2::Scripting auto w = GetWindow(); if (w != nullptr) { - return (w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront)); + return w->flags.hasAny(WindowFlag::stickToBack, WindowFlag::stickToFront); } return false; } diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 665e3e110991..a7814d0b0bf3 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -329,7 +329,7 @@ namespace OpenRCT2::Ui::Windows case WIDX_BACKGROUND: { auto* windowMgr = GetWindowManager(); - if (windowMgr->FindByClass(WindowClass::error) == nullptr && (gMapSelectFlags.has(MapSelectFlag::enable))) + if (windowMgr->FindByClass(WindowClass::error) == nullptr && gMapSelectFlags.has(MapSelectFlag::enable)) { auto action = GetClearAction(); GameActions::Execute(&action, getGameState()); diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index bfccd04fd94c..22d16ee9f4df 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -655,8 +655,8 @@ namespace OpenRCT2::Ui::Windows const auto objectSelectResult = WindowEditorObjectSelectionSelectObject(0, inputFlags, listItem->repositoryItem); if (!objectSelectResult.Successful) { - StringId error_title = (inputFlags.has(EditorInputFlag::select)) ? STR_UNABLE_TO_SELECT_THIS_OBJECT - : STR_UNABLE_TO_DE_SELECT_THIS_OBJECT; + StringId error_title = inputFlags.has(EditorInputFlag::select) ? STR_UNABLE_TO_SELECT_THIS_OBJECT + : STR_UNABLE_TO_DE_SELECT_THIS_OBJECT; ContextShowError(error_title, objectSelectResult.Message, {}); return; diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 65e8185bb350..0828e7aceb7e 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1057,7 +1057,7 @@ namespace OpenRCT2::Ui::Windows return; // Check for change - if ((_provisionalFootpath.flags.has(ProvisionalPathFlag::placed)) && _provisionalFootpath.positionA == mapPos + if (_provisionalFootpath.flags.has(ProvisionalPathFlag::placed) && _provisionalFootpath.positionA == mapPos && _provisionalFootpath.startZ == _footpathPlaceZ) { return; @@ -1118,7 +1118,7 @@ namespace OpenRCT2::Ui::Windows gMapSelectFlags.unset(MapSelectFlag::enableArrow); // Check for change - if ((_provisionalFootpath.flags.has(ProvisionalPathFlag::placed)) && range.Point1 == _provisionalFootpath.positionA + if (_provisionalFootpath.flags.has(ProvisionalPathFlag::placed) && range.Point1 == _provisionalFootpath.positionA && range.Point2 == _provisionalFootpath.positionB && baseZ == _provisionalFootpath.startZ) { return; diff --git a/src/openrct2-ui/windows/MapTooltip.cpp b/src/openrct2-ui/windows/MapTooltip.cpp index 2d43802b0cb6..f5492a6c9aae 100644 --- a/src/openrct2-ui/windows/MapTooltip.cpp +++ b/src/openrct2-ui/windows/MapTooltip.cpp @@ -86,7 +86,7 @@ namespace OpenRCT2::Ui::Windows // Check for cursor movement _cursorHoldDuration++; - if (abs(cursorChange.x) > 5 || abs(cursorChange.y) > 5 || (gInputFlags.has(InputFlag::rightMousePressed)) + if (abs(cursorChange.x) > 5 || abs(cursorChange.y) > 5 || gInputFlags.has(InputFlag::rightMousePressed) || InputGetState() == InputState::ViewportRight) _cursorHoldDuration = 0; diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 2e3afcd25282..221e096ffaf9 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -345,7 +345,7 @@ namespace OpenRCT2::GameActions } } - if ((ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) && blockIndex == 0) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) && blockIndex == 0) { const auto addElementResult = TrackAddStationElement( { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); diff --git a/src/openrct2/entity/Fountain.cpp b/src/openrct2/entity/Fountain.cpp index 367e516778e7..020e298483f1 100644 --- a/src/openrct2/entity/Fountain.cpp +++ b/src/openrct2/entity/Fountain.cpp @@ -178,7 +178,7 @@ void JumpingFountain::Update() switch (FountainType) { case JumpingFountainType::Water: - if (frame == 11 && (fountainFlags.has(FountainFlag::fast))) + if (frame == 11 && fountainFlags.has(FountainFlag::fast)) { AdvanceAnimation(); } diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index df95010a14d6..b5c9738263c7 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -416,7 +416,7 @@ namespace OpenRCT2 for (; it != gWindowList.end(); it++) { auto w = it->get(); - if (!w->flags.has(WindowFlag::transparent) || (w->flags.has(WindowFlag::dead))) + if (!w->flags.has(WindowFlag::transparent) || w->flags.has(WindowFlag::dead)) continue; if (w->viewport == window->viewport) continue; diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 051615a9d40d..51c333da597d 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -562,7 +562,7 @@ static constexpr float kWindowScrollLocations[][2] = { auto* v = (*it).get(); if (v->flags.has(WindowFlag::dead)) continue; - if ((&w == v || (v->flags.has(WindowFlag::transparent))) && v->isVisible) + if ((&w == v || v->flags.has(WindowFlag::transparent)) && v->isVisible) { WindowDrawSingle(rt, *v, left, top, right, bottom); } diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index 5f3e490d395a..d26934970ded 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -202,7 +202,7 @@ static void VirtualFloorGetTileProperties( *tileOwned = false; // See if we are a selected tile - if ((gMapSelectFlags.has(MapSelectFlag::enable))) + if (gMapSelectFlags.has(MapSelectFlag::enable)) { if (loc >= gMapSelectPositionA && loc <= gMapSelectPositionB) { diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index f201a4b50247..46f699116dff 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -163,7 +163,7 @@ static void PaintTileElementBase(PaintSession& session, const CoordsXY& origCoor int32_t screenMinY = Translate3DTo2DWithZ(rotation, { coords, 0 }).y; // Display little yellow arrow when building footpaths? - if ((gMapSelectFlags.has(MapSelectFlag::enableArrow)) && session.MapPosition.x == gMapSelectArrowPosition.x + if (gMapSelectFlags.has(MapSelectFlag::enableArrow) && session.MapPosition.x == gMapSelectArrowPosition.x && session.MapPosition.y == gMapSelectArrowPosition.y) { uint8_t arrowRotation = (rotation + (gMapSelectArrowDirection & 3)) & 3; diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index c4c82e92fcae..927a99dce0b2 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -507,7 +507,7 @@ bool RideTryGetOriginElement(const Ride& ride, CoordsXYE* output) bool specialTrackPiece = (it.element->AsTrack()->GetTrackType() != TrackElemType::BeginStation && it.element->AsTrack()->GetTrackType() != TrackElemType::MiddleStation - && (ted.sequences[0].flags.has(SequenceFlag::trackOrigin))); + && ted.sequences[0].flags.has(SequenceFlag::trackOrigin)); // Set result tile to this track piece if first found track or a ??? if (resultTileElement == nullptr || specialTrackPiece) diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index 05bde03032c5..96ded195b955 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -389,7 +389,7 @@ void UnlinkAllBannersForRide(RideId rideId) auto& gameState = getGameState(); for (auto& banner : gameState.banners) { - if (!banner.isNull() && (banner.flags.has(BannerFlag::linkedToRide)) && banner.rideIndex == rideId) + if (!banner.isNull() && banner.flags.has(BannerFlag::linkedToRide) && banner.rideIndex == rideId) { banner.flags.unset(BannerFlag::linkedToRide); banner.rideIndex = RideId::GetNull(); From 7f8eeb09c1332aaa0ae059941550db65478a41c6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 19:15:44 +0100 Subject: [PATCH 147/222] Rename members of TrackElemType --- src/openrct2-ui/ride/Construction.cpp | 260 +- src/openrct2-ui/windows/Ride.cpp | 8 +- src/openrct2-ui/windows/RideConstruction.cpp | 142 +- src/openrct2/actions/MazePlaceTrackAction.cpp | 2 +- src/openrct2/actions/MazeSetTrackAction.cpp | 12 +- src/openrct2/actions/RideDemolishAction.cpp | 2 +- src/openrct2/actions/TrackPlaceAction.cpp | 40 +- src/openrct2/actions/TrackRemoveAction.cpp | 24 +- src/openrct2/entity/Guest.cpp | 2 +- .../paint/tile_element/Paint.Path.cpp | 2 +- .../coaster/AirPoweredVerticalCoaster.cpp | 74 +- .../paint/track/coaster/AlpineCoaster.cpp | 170 +- .../paint/track/coaster/BobsleighCoaster.cpp | 90 +- .../coaster/ClassicStandUpRollerCoaster.cpp | 224 +- .../coaster/ClassicWoodenRollerCoaster.cpp | 76 +- .../ClassicWoodenTwisterRollerCoaster.cpp | 96 +- .../track/coaster/CompactInvertedCoaster.cpp | 228 +- .../track/coaster/CorkscrewRollerCoaster.cpp | 522 +- .../track/coaster/FlyingRollerCoaster.cpp | 32 +- .../coaster/FlyingRollerCoasterInverted.cpp | 276 +- .../track/coaster/HeartlineTwisterCoaster.cpp | 72 +- .../paint/track/coaster/HybridCoaster.cpp | 436 +- .../track/coaster/InvertedHairpinCoaster.cpp | 60 +- .../track/coaster/InvertedImpulseCoaster.cpp | 52 +- .../track/coaster/InvertedRollerCoaster.cpp | 298 +- .../track/coaster/JuniorRollerCoaster.cpp | 214 +- .../track/coaster/LatticeTriangleTrack.cpp | 506 +- .../track/coaster/LatticeTriangleTrackAlt.cpp | 22 +- .../coaster/LayDownRollerCoasterInverted.cpp | 206 +- .../coaster/LimLaunchedRollerCoaster.cpp | 400 +- .../track/coaster/LoopingRollerCoaster.cpp | 278 +- src/openrct2/paint/track/coaster/MineRide.cpp | 144 +- .../paint/track/coaster/MineTrainCoaster.cpp | 266 +- .../paint/track/coaster/MiniRollerCoaster.cpp | 276 +- .../track/coaster/MiniSuspendedCoaster.cpp | 54 +- .../coaster/MultiDimensionRollerCoaster.cpp | 206 +- .../track/coaster/ReverseFreefallCoaster.cpp | 26 +- .../track/coaster/ReverserRollerCoaster.cpp | 104 +- .../coaster/SideFrictionRollerCoaster.cpp | 168 +- .../track/coaster/SingleRailRollerCoaster.cpp | 498 +- .../track/coaster/StandUpRollerCoaster.cpp | 482 +- .../paint/track/coaster/Steeplechase.cpp | 62 +- .../coaster/SuspendedSwingingCoaster.cpp | 106 +- .../track/coaster/TwisterRollerCoaster.cpp | 518 +- .../paint/track/coaster/VirginiaReel.cpp | 42 +- .../paint/track/coaster/WildMouse.cpp | 64 +- .../track/coaster/WoodenRollerCoaster.cpp | 314 +- .../track/coaster/WoodenRollerCoaster.hpp | 16 +- .../paint/track/coaster/WoodenWildMouse.cpp | 72 +- src/openrct2/paint/track/gentle/CarRide.cpp | 44 +- src/openrct2/paint/track/gentle/Circus.cpp | 2 +- .../paint/track/gentle/CrookedHouse.cpp | 2 +- src/openrct2/paint/track/gentle/Dodgems.cpp | 2 +- .../paint/track/gentle/FerrisWheel.cpp | 2 +- .../paint/track/gentle/FlyingSaucers.cpp | 2 +- .../paint/track/gentle/GhostTrain.cpp | 38 +- .../paint/track/gentle/HauntedHouse.cpp | 4 +- src/openrct2/paint/track/gentle/Maze.cpp | 2 +- .../paint/track/gentle/MerryGoRound.cpp | 2 +- src/openrct2/paint/track/gentle/MiniGolf.cpp | 34 +- .../paint/track/gentle/MiniHelicopters.cpp | 30 +- .../paint/track/gentle/MonorailCycles.cpp | 20 +- .../paint/track/gentle/ObservationTower.cpp | 4 +- .../paint/track/gentle/SpaceRings.cpp | 4 +- .../paint/track/gentle/SpiralSlide.cpp | 2 +- src/openrct2/paint/track/shops/Facility.cpp | 4 +- src/openrct2/paint/track/shops/Shop.cpp | 6 +- src/openrct2/paint/track/thrill/3dCinema.cpp | 2 +- .../paint/track/thrill/Enterprise.cpp | 2 +- src/openrct2/paint/track/thrill/GoKarts.cpp | 164 +- .../paint/track/thrill/LaunchedFreefall.cpp | 4 +- .../paint/track/thrill/MagicCarpet.cpp | 2 +- .../paint/track/thrill/MotionSimulator.cpp | 2 +- src/openrct2/paint/track/thrill/RotoDrop.cpp | 4 +- .../track/thrill/SwingingInverterShip.cpp | 2 +- .../paint/track/thrill/SwingingShip.cpp | 2 +- src/openrct2/paint/track/thrill/TopSpin.cpp | 2 +- src/openrct2/paint/track/thrill/Twist.cpp | 2 +- .../paint/track/transport/Chairlift.cpp | 28 +- src/openrct2/paint/track/transport/Lift.cpp | 4 +- .../track/transport/MiniatureRailway.cpp | 58 +- .../paint/track/transport/Monorail.cpp | 54 +- .../track/transport/SuspendedMonorail.cpp | 54 +- src/openrct2/paint/track/water/BoatHire.cpp | 34 +- .../paint/track/water/DinghySlide.cpp | 44 +- .../paint/track/water/DinghySlideCovered.cpp | 38 +- src/openrct2/paint/track/water/LogFlume.cpp | 38 +- .../paint/track/water/RiverRapids.cpp | 46 +- .../paint/track/water/SplashBoats.cpp | 84 +- .../paint/track/water/SubmarineRide.cpp | 16 +- src/openrct2/paint/vehicle/VehiclePaint.cpp | 10 +- src/openrct2/park/Legacy.cpp | 996 +-- src/openrct2/park/ParkFile.cpp | 6 +- src/openrct2/rct1/S4Importer.cpp | 14 +- src/openrct2/rct12/RCT12.cpp | 40 +- src/openrct2/rct12/ScenarioPatcher.cpp | 6 +- src/openrct2/rct12/TD46.cpp | 4 +- src/openrct2/rct2/RCT2.cpp | 4 +- src/openrct2/rct2/S6Importer.cpp | 14 +- src/openrct2/rct2/T6Exporter.cpp | 2 +- src/openrct2/rct2/T6Importer.cpp | 2 +- src/openrct2/ride/CableLift.cpp | 8 +- src/openrct2/ride/MazeCost.cpp | 2 +- src/openrct2/ride/Ride.cpp | 90 +- src/openrct2/ride/RideConstruction.cpp | 6 +- src/openrct2/ride/RideData.h | 2 +- src/openrct2/ride/RideRatings.cpp | 22 +- src/openrct2/ride/Track.cpp | 160 +- src/openrct2/ride/Track.h | 728 +- src/openrct2/ride/TrackData.cpp | 7296 ++++++++--------- src/openrct2/ride/TrackData.h | 6 +- src/openrct2/ride/TrackDesign.cpp | 4 +- src/openrct2/ride/TrackDesign.h | 2 +- src/openrct2/ride/TrackPaint.cpp | 84 +- src/openrct2/ride/Vehicle.cpp | 250 +- src/openrct2/ride/VehicleRiderControl.cpp | 80 +- src/openrct2/ride/VehicleSubpositionData.cpp | 358 +- src/openrct2/ride/VehicleSubpositionData.h | 2 +- .../rtd/coaster/AirPoweredVerticalCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/AlpineCoaster.h | 2 +- .../ride/rtd/coaster/BobsleighCoaster.h | 2 +- .../rtd/coaster/ClassicMiniRollerCoaster.h | 2 +- .../rtd/coaster/ClassicStandUpRollerCoaster.h | 2 +- .../rtd/coaster/ClassicWoodenRollerCoaster.h | 2 +- .../ClassicWoodenTwisterRollerCoaster.h | 2 +- .../ride/rtd/coaster/CompactInvertedCoaster.h | 2 +- .../ride/rtd/coaster/CorkscrewRollerCoaster.h | 2 +- .../ride/rtd/coaster/FlyingRollerCoaster.h | 4 +- src/openrct2/ride/rtd/coaster/GigaCoaster.h | 2 +- .../rtd/coaster/HeartlineTwisterCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/HybridCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/HyperTwister.h | 2 +- src/openrct2/ride/rtd/coaster/Hypercoaster.h | 2 +- .../ride/rtd/coaster/InvertedHairpinCoaster.h | 2 +- .../ride/rtd/coaster/InvertedImpulseCoaster.h | 2 +- .../ride/rtd/coaster/InvertedRollerCoaster.h | 2 +- .../ride/rtd/coaster/JuniorRollerCoaster.h | 2 +- .../rtd/coaster/LIMLaunchedRollerCoaster.h | 2 +- .../rtd/coaster/LSMLaunchedRollerCoaster.h | 2 +- .../ride/rtd/coaster/LayDownRollerCoaster.h | 4 +- .../ride/rtd/coaster/LoopingRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/MineRide.h | 2 +- .../ride/rtd/coaster/MineTrainCoaster.h | 2 +- .../ride/rtd/coaster/MiniRollerCoaster.h | 2 +- .../ride/rtd/coaster/MiniSuspendedCoaster.h | 2 +- .../rtd/coaster/MultiDimensionRollerCoaster.h | 4 +- .../ride/rtd/coaster/ReverseFreefallCoaster.h | 2 +- .../ride/rtd/coaster/ReverserRollerCoaster.h | 2 +- .../rtd/coaster/SideFrictionRollerCoaster.h | 2 +- .../rtd/coaster/SingleRailRollerCoaster.h | 2 +- .../ride/rtd/coaster/SpinningWildMouse.h | 2 +- .../ride/rtd/coaster/SpiralRollerCoaster.h | 2 +- .../ride/rtd/coaster/StandUpRollerCoaster.h | 2 +- .../ride/rtd/coaster/SteelWildMouse.h | 2 +- src/openrct2/ride/rtd/coaster/Steeplechase.h | 2 +- .../rtd/coaster/SuspendedSwingingCoaster.h | 2 +- .../ride/rtd/coaster/TwisterRollerCoaster.h | 2 +- .../ride/rtd/coaster/VerticalDropCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/VirginiaReel.h | 2 +- src/openrct2/ride/rtd/coaster/WaterCoaster.h | 2 +- .../ride/rtd/coaster/WoodenRollerCoaster.h | 2 +- .../ride/rtd/coaster/WoodenWildMouse.h | 2 +- src/openrct2/ride/rtd/gentle/CarRide.h | 2 +- src/openrct2/ride/rtd/gentle/Circus.h | 2 +- src/openrct2/ride/rtd/gentle/CrookedHouse.h | 2 +- src/openrct2/ride/rtd/gentle/Dodgems.h | 2 +- src/openrct2/ride/rtd/gentle/FerrisWheel.h | 2 +- src/openrct2/ride/rtd/gentle/FlyingSaucers.h | 2 +- src/openrct2/ride/rtd/gentle/GhostTrain.h | 2 +- src/openrct2/ride/rtd/gentle/HauntedHouse.h | 2 +- src/openrct2/ride/rtd/gentle/Maze.h | 2 +- src/openrct2/ride/rtd/gentle/MerryGoRound.h | 2 +- src/openrct2/ride/rtd/gentle/MiniGolf.h | 2 +- .../ride/rtd/gentle/MiniHelicopters.h | 2 +- src/openrct2/ride/rtd/gentle/MonorailCycles.h | 2 +- src/openrct2/ride/rtd/gentle/MonsterTrucks.h | 2 +- .../ride/rtd/gentle/ObservationTower.h | 2 +- src/openrct2/ride/rtd/gentle/SpaceRings.h | 2 +- src/openrct2/ride/rtd/gentle/SpiralSlide.h | 2 +- src/openrct2/ride/rtd/shops/CashMachine.h | 2 +- src/openrct2/ride/rtd/shops/DrinkStall.h | 2 +- src/openrct2/ride/rtd/shops/FirstAid.h | 2 +- src/openrct2/ride/rtd/shops/FoodStall.h | 2 +- .../ride/rtd/shops/InformationKiosk.h | 2 +- src/openrct2/ride/rtd/shops/Shop.h | 2 +- src/openrct2/ride/rtd/shops/Toilets.h | 2 +- src/openrct2/ride/rtd/thrill/3DCinema.h | 2 +- src/openrct2/ride/rtd/thrill/Enterprise.h | 2 +- src/openrct2/ride/rtd/thrill/GoKarts.h | 2 +- .../ride/rtd/thrill/LaunchedFreefall.h | 2 +- src/openrct2/ride/rtd/thrill/MagicCarpet.h | 2 +- .../ride/rtd/thrill/MotionSimulator.h | 2 +- src/openrct2/ride/rtd/thrill/RotoDrop.h | 2 +- .../ride/rtd/thrill/SwingingInverterShip.h | 2 +- src/openrct2/ride/rtd/thrill/SwingingShip.h | 2 +- src/openrct2/ride/rtd/thrill/TopSpin.h | 2 +- src/openrct2/ride/rtd/thrill/Twist.h | 2 +- src/openrct2/ride/rtd/transport/Chairlift.h | 2 +- src/openrct2/ride/rtd/transport/Lift.h | 2 +- .../ride/rtd/transport/MiniatureRailway.h | 2 +- src/openrct2/ride/rtd/transport/Monorail.h | 2 +- .../ride/rtd/transport/SuspendedMonorail.h | 2 +- src/openrct2/ride/rtd/water/BoatHire.h | 2 +- src/openrct2/ride/rtd/water/DinghySlide.h | 2 +- src/openrct2/ride/rtd/water/LogFlume.h | 2 +- src/openrct2/ride/rtd/water/RiverRafts.h | 2 +- src/openrct2/ride/rtd/water/RiverRapids.h | 2 +- src/openrct2/ride/rtd/water/SplashBoats.h | 2 +- src/openrct2/ride/rtd/water/SubmarineRide.h | 2 +- .../scripting/bindings/game/ScContext.hpp | 4 +- .../bindings/ride/ScTrackIterator.cpp | 2 +- .../bindings/ride/ScTrackSegment.cpp | 4 +- src/openrct2/world/ConstructionClearance.cpp | 4 +- src/openrct2/world/Entrance.cpp | 4 +- src/openrct2/world/Footpath.cpp | 2 +- src/openrct2/world/MapAnimation.cpp | 18 +- .../world/tile_element/TrackElement.cpp | 16 +- 217 files changed, 9787 insertions(+), 9787 deletions(-) diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index a06c381bcd6d..978beeb08197 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -25,200 +25,200 @@ using namespace OpenRCT2::TrackMetaData; namespace OpenRCT2 { - constexpr auto kSeparator = TrackElemType::None; + constexpr auto kSeparator = TrackElemType::none; /** * Order of special track elements dropdown. Elements with the same name string must be sequential or they show up twice. */ constexpr std::array kSpecialElementsDropdownOrder = { - TrackElemType::EndStation, + TrackElemType::endStation, // Brakes - TrackElemType::Brakes, - TrackElemType::DiagBrakes, - TrackElemType::Down25Brakes, - TrackElemType::DiagDown25Brakes, - TrackElemType::BlockBrakes, - TrackElemType::DiagBlockBrakes, + TrackElemType::brakes, + TrackElemType::diagBrakes, + TrackElemType::down25Brakes, + TrackElemType::diagDown25Brakes, + TrackElemType::blockBrakes, + TrackElemType::diagBlockBrakes, // Boosters - TrackElemType::Booster, - TrackElemType::DiagBooster, + TrackElemType::booster, + TrackElemType::diagBooster, // Photo sections - TrackElemType::OnRidePhoto, + TrackElemType::onRidePhoto, // Rotation control - TrackElemType::RotationControlToggle, + TrackElemType::rotationControlToggle, // (Curved) lift (hills) pieces - TrackElemType::LeftCurvedLiftHill, - TrackElemType::RightCurvedLiftHill, - TrackElemType::CableLiftHill, - TrackElemType::PoweredLift, + TrackElemType::leftCurvedLiftHill, + TrackElemType::rightCurvedLiftHill, + TrackElemType::cableLiftHill, + TrackElemType::poweredLift, kSeparator, // Heart Line pieces - TrackElemType::HeartLineTransferUp, - TrackElemType::HeartLineTransferDown, - TrackElemType::LeftHeartLineRoll, - TrackElemType::RightHeartLineRoll, + TrackElemType::heartLineTransferUp, + TrackElemType::heartLineTransferDown, + TrackElemType::leftHeartLineRoll, + TrackElemType::rightHeartLineRoll, kSeparator, // Brake for drop - TrackElemType::BrakeForDrop, + TrackElemType::brakeForDrop, kSeparator, // Tower - TrackElemType::TowerBase, - TrackElemType::TowerSection, + TrackElemType::towerBase, + TrackElemType::towerSection, kSeparator, // Mini Golf pieces - TrackElemType::MinigolfHoleA, - TrackElemType::MinigolfHoleB, - TrackElemType::MinigolfHoleC, - TrackElemType::MinigolfHoleD, - TrackElemType::MinigolfHoleE, + TrackElemType::minigolfHoleA, + TrackElemType::minigolfHoleB, + TrackElemType::minigolfHoleC, + TrackElemType::minigolfHoleD, + TrackElemType::minigolfHoleE, kSeparator, // S-Bends - TrackElemType::SBendLeft, - TrackElemType::SBendRight, + TrackElemType::sBendLeft, + TrackElemType::sBendRight, kSeparator, // Helixes - TrackElemType::LeftHalfBankedHelixUpSmall, - TrackElemType::RightHalfBankedHelixUpSmall, - TrackElemType::LeftHalfBankedHelixDownSmall, - TrackElemType::RightHalfBankedHelixDownSmall, - TrackElemType::LeftHalfBankedHelixUpLarge, - TrackElemType::RightHalfBankedHelixUpLarge, - TrackElemType::LeftHalfBankedHelixDownLarge, - TrackElemType::RightHalfBankedHelixDownLarge, - TrackElemType::LeftQuarterBankedHelixLargeUp, - TrackElemType::RightQuarterBankedHelixLargeUp, - TrackElemType::LeftQuarterBankedHelixLargeDown, - TrackElemType::RightQuarterBankedHelixLargeDown, - TrackElemType::LeftQuarterHelixLargeUp, - TrackElemType::RightQuarterHelixLargeUp, - TrackElemType::LeftQuarterHelixLargeDown, - TrackElemType::RightQuarterHelixLargeDown, + TrackElemType::leftHalfBankedHelixUpSmall, + TrackElemType::rightHalfBankedHelixUpSmall, + TrackElemType::leftHalfBankedHelixDownSmall, + TrackElemType::rightHalfBankedHelixDownSmall, + TrackElemType::leftHalfBankedHelixUpLarge, + TrackElemType::rightHalfBankedHelixUpLarge, + TrackElemType::leftHalfBankedHelixDownLarge, + TrackElemType::rightHalfBankedHelixDownLarge, + TrackElemType::leftQuarterBankedHelixLargeUp, + TrackElemType::rightQuarterBankedHelixLargeUp, + TrackElemType::leftQuarterBankedHelixLargeDown, + TrackElemType::rightQuarterBankedHelixLargeDown, + TrackElemType::leftQuarterHelixLargeUp, + TrackElemType::rightQuarterHelixLargeUp, + TrackElemType::leftQuarterHelixLargeDown, + TrackElemType::rightQuarterHelixLargeDown, kSeparator, // (Wooden) water splash - TrackElemType::Watersplash, + TrackElemType::watersplash, kSeparator, // River Rapids - TrackElemType::Waterfall, - TrackElemType::Rapids, // Also used for Monster Trucks - TrackElemType::Whirlpool, + TrackElemType::waterfall, + TrackElemType::rapids, // Also used for Monster Trucks + TrackElemType::whirlpool, kSeparator, // Spinning tunnel - TrackElemType::SpinningTunnel, + TrackElemType::spinningTunnel, kSeparator, // Reverser pieces - TrackElemType::LeftReverser, - TrackElemType::RightReverser, - TrackElemType::LogFlumeReverser, + TrackElemType::leftReverser, + TrackElemType::rightReverser, + TrackElemType::logFlumeReverser, kSeparator, // Reverse freefall pieces - TrackElemType::ReverseFreefallSlope, - TrackElemType::ReverseFreefallVertical, + TrackElemType::reverseFreefallSlope, + TrackElemType::reverseFreefallVertical, // Air thrust pieces - TrackElemType::AirThrustTopCap, - TrackElemType::AirThrustVerticalDown, - TrackElemType::AirThrustVerticalDownToLevel, + TrackElemType::airThrustTopCap, + TrackElemType::airThrustVerticalDown, + TrackElemType::airThrustVerticalDownToLevel, kSeparator, // Corkscrews - TrackElemType::LeftCorkscrewUp, - TrackElemType::LeftCorkscrewDown, - TrackElemType::RightCorkscrewUp, - TrackElemType::RightCorkscrewDown, - TrackElemType::LeftFlyerCorkscrewUp, - TrackElemType::LeftFlyerCorkscrewDown, - TrackElemType::RightFlyerCorkscrewUp, - TrackElemType::RightFlyerCorkscrewDown, - TrackElemType::LeftLargeCorkscrewUp, - TrackElemType::LeftLargeCorkscrewDown, - TrackElemType::RightLargeCorkscrewUp, - TrackElemType::RightLargeCorkscrewDown, + TrackElemType::leftCorkscrewUp, + TrackElemType::leftCorkscrewDown, + TrackElemType::rightCorkscrewUp, + TrackElemType::rightCorkscrewDown, + TrackElemType::leftFlyerCorkscrewUp, + TrackElemType::leftFlyerCorkscrewDown, + TrackElemType::rightFlyerCorkscrewUp, + TrackElemType::rightFlyerCorkscrewDown, + TrackElemType::leftLargeCorkscrewUp, + TrackElemType::leftLargeCorkscrewDown, + TrackElemType::rightLargeCorkscrewUp, + TrackElemType::rightLargeCorkscrewDown, kSeparator, // Loops - TrackElemType::LeftVerticalLoop, - TrackElemType::RightVerticalLoop, - TrackElemType::HalfLoopUp, - TrackElemType::HalfLoopDown, - TrackElemType::FlyerHalfLoopUninvertedUp, - TrackElemType::FlyerHalfLoopInvertedDown, - TrackElemType::FlyerHalfLoopInvertedUp, - TrackElemType::FlyerHalfLoopUninvertedDown, - TrackElemType::LeftMediumHalfLoopUp, - TrackElemType::LeftMediumHalfLoopDown, - TrackElemType::RightMediumHalfLoopUp, - TrackElemType::RightMediumHalfLoopDown, - TrackElemType::LeftLargeHalfLoopUp, - TrackElemType::LeftLargeHalfLoopDown, - TrackElemType::RightLargeHalfLoopUp, - TrackElemType::RightLargeHalfLoopDown, - TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp, - TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, - TrackElemType::LeftFlyerLargeHalfLoopInvertedUp, - TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, - TrackElemType::RightFlyerLargeHalfLoopUninvertedUp, - TrackElemType::RightFlyerLargeHalfLoopInvertedDown, - TrackElemType::RightFlyerLargeHalfLoopInvertedUp, - TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, - TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop, - TrackElemType::Up90ToInvertedFlatQuarterLoop, - TrackElemType::InvertedFlatToDown90QuarterLoop, - TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop, - TrackElemType::MultiDimFlatToDown90QuarterLoop, - TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop, + TrackElemType::leftVerticalLoop, + TrackElemType::rightVerticalLoop, + TrackElemType::halfLoopUp, + TrackElemType::halfLoopDown, + TrackElemType::flyerHalfLoopUninvertedUp, + TrackElemType::flyerHalfLoopInvertedDown, + TrackElemType::flyerHalfLoopInvertedUp, + TrackElemType::flyerHalfLoopUninvertedDown, + TrackElemType::leftMediumHalfLoopUp, + TrackElemType::leftMediumHalfLoopDown, + TrackElemType::rightMediumHalfLoopUp, + TrackElemType::rightMediumHalfLoopDown, + TrackElemType::leftLargeHalfLoopUp, + TrackElemType::leftLargeHalfLoopDown, + TrackElemType::rightLargeHalfLoopUp, + TrackElemType::rightLargeHalfLoopDown, + TrackElemType::leftFlyerLargeHalfLoopUninvertedUp, + TrackElemType::leftFlyerLargeHalfLoopInvertedDown, + TrackElemType::leftFlyerLargeHalfLoopInvertedUp, + TrackElemType::leftFlyerLargeHalfLoopUninvertedDown, + TrackElemType::rightFlyerLargeHalfLoopUninvertedUp, + TrackElemType::rightFlyerLargeHalfLoopInvertedDown, + TrackElemType::rightFlyerLargeHalfLoopInvertedUp, + TrackElemType::rightFlyerLargeHalfLoopUninvertedDown, + TrackElemType::multiDimInvertedFlatToDown90QuarterLoop, + TrackElemType::up90ToInvertedFlatQuarterLoop, + TrackElemType::invertedFlatToDown90QuarterLoop, + TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop, + TrackElemType::multiDimFlatToDown90QuarterLoop, + TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop, kSeparator, // Zero-G Rolls, Dive Loops - TrackElemType::LeftZeroGRollUp, - TrackElemType::LeftZeroGRollDown, - TrackElemType::RightZeroGRollUp, - TrackElemType::RightZeroGRollDown, - TrackElemType::LeftLargeZeroGRollUp, - TrackElemType::LeftLargeZeroGRollDown, - TrackElemType::RightLargeZeroGRollUp, - TrackElemType::RightLargeZeroGRollDown, - TrackElemType::LeftEighthDiveLoopUpToOrthogonal, - TrackElemType::LeftEighthDiveLoopDownToDiag, - TrackElemType::RightEighthDiveLoopUpToOrthogonal, - TrackElemType::RightEighthDiveLoopDownToDiag, + TrackElemType::leftZeroGRollUp, + TrackElemType::leftZeroGRollDown, + TrackElemType::rightZeroGRollUp, + TrackElemType::rightZeroGRollDown, + TrackElemType::leftLargeZeroGRollUp, + TrackElemType::leftLargeZeroGRollDown, + TrackElemType::rightLargeZeroGRollUp, + TrackElemType::rightLargeZeroGRollDown, + TrackElemType::leftEighthDiveLoopUpToOrthogonal, + TrackElemType::leftEighthDiveLoopDownToDiag, + TrackElemType::rightEighthDiveLoopUpToOrthogonal, + TrackElemType::rightEighthDiveLoopDownToDiag, kSeparator, // Barrel Rolls - TrackElemType::LeftBarrelRollUpToDown, - TrackElemType::LeftBarrelRollDownToUp, - TrackElemType::RightBarrelRollUpToDown, - TrackElemType::RightBarrelRollDownToUp, + TrackElemType::leftBarrelRollUpToDown, + TrackElemType::leftBarrelRollDownToUp, + TrackElemType::rightBarrelRollUpToDown, + TrackElemType::rightBarrelRollDownToUp, kSeparator, // Twists - TrackElemType::LeftTwistDownToUp, - TrackElemType::LeftTwistUpToDown, - TrackElemType::RightTwistDownToUp, - TrackElemType::RightTwistUpToDown, - TrackElemType::LeftFlyerTwistUp, - TrackElemType::LeftFlyerTwistDown, - TrackElemType::RightFlyerTwistUp, - TrackElemType::RightFlyerTwistDown, + TrackElemType::leftTwistDownToUp, + TrackElemType::leftTwistUpToDown, + TrackElemType::rightTwistDownToUp, + TrackElemType::rightTwistUpToDown, + TrackElemType::leftFlyerTwistUp, + TrackElemType::leftFlyerTwistDown, + TrackElemType::rightFlyerTwistUp, + TrackElemType::rightFlyerTwistDown, }; // Update the magic number with the current number of track elements to silence - static_assert(EnumValue(TrackElemType::Count) == 350, "Reminder to add new track element to special dropdown list"); + static_assert(EnumValue(TrackElemType::count) == 350, "Reminder to add new track element to special dropdown list"); /** * @@ -278,7 +278,7 @@ namespace OpenRCT2 } // Additional tower bases can only be built if the ride allows for it (elevator) - if (trackType == TrackElemType::TowerBase + if (trackType == TrackElemType::towerBase && !currentRide.getRideTypeDescriptor().HasFlag(RtdFlag::allowExtraTowerBases)) entryIsDisabled = true; @@ -341,7 +341,7 @@ namespace OpenRCT2 break; auto trackPiece = elements[list.PreferredNumRows + i].TrackType; - if (trackPiece == TrackElemType::None) + if (trackPiece == TrackElemType::none) { list.PreferredNumRows += i + 1; break; @@ -379,7 +379,7 @@ namespace OpenRCT2 const auto& ted = GetTrackElementDescriptor(trackElement->GetTrackType()); if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) { - if (trackElement->GetTrackType() == TrackElemType::Maze) + if (trackElement->GetTrackType() == TrackElemType::maze) { gRideEntranceExitPlaceStationIndex = StationIndex::FromUnderlying(0); } @@ -457,7 +457,7 @@ namespace OpenRCT2 auto* trackElement = tileElement->AsTrack(); if (trackElement->GetRideIndex() != gRideEntranceExitPlaceRideIndex) continue; - if (trackElement->GetTrackType() == TrackElemType::Maze) + if (trackElement->GetTrackType() == TrackElemType::maze) { // if it's a maze, it can place the entrance and exit immediately entranceExitCoords.direction = DirectionReverse(entranceExitCoords.direction); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index da1cda5266d8..e3579f9f6058 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -2462,10 +2462,10 @@ namespace OpenRCT2::Ui::Windows if (vehicle->status != Vehicle::Status::crashing && vehicle->status != Vehicle::Status::crashed) { auto trackType = vehicle->GetTrackType(); - if (trackType == TrackElemType::BlockBrakes || trackType == TrackElemType::CableLiftHill - || trackType == TrackElemType::Up25ToFlat || trackType == TrackElemType::Up60ToFlat - || trackType == TrackElemType::DiagUp25ToFlat || trackType == TrackElemType::DiagUp60ToFlat - || trackType == TrackElemType::DiagBlockBrakes) + if (trackType == TrackElemType::blockBrakes || trackType == TrackElemType::cableLiftHill + || trackType == TrackElemType::up25ToFlat || trackType == TrackElemType::up60ToFlat + || trackType == TrackElemType::diagUp25ToFlat || trackType == TrackElemType::diagUp60ToFlat + || trackType == TrackElemType::diagBlockBrakes) { if (rtd.SupportsTrackGroup(TrackGroup::blockBrakes) && vehicle->velocity == 0) { diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index eea5e732ad64..6a3a53f114df 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1035,10 +1035,10 @@ namespace OpenRCT2::Ui::Windows { switch (_currentlySelectedTrack.trackType) { - case TrackElemType::SpinningTunnel: - case TrackElemType::Whirlpool: - case TrackElemType::Rapids: - case TrackElemType::Waterfall: + case TrackElemType::spinningTunnel: + case TrackElemType::whirlpool: + case TrackElemType::rapids: + case TrackElemType::waterfall: invalidateWidget(WIDX_CONSTRUCT); break; default: @@ -1212,28 +1212,28 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) { - _currentlySelectedTrack = TrackElemType::LeftHalfBankedHelixDownLarge; + _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixDownLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) { - _currentlySelectedTrack = TrackElemType::RightHalfBankedHelixDownLarge; + _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixDownLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::LeftSmall && _currentTrackRollEnd == TrackRoll::Left) { - _currentlySelectedTrack = TrackElemType::LeftHalfBankedHelixDownSmall; + _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixDownSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::RightSmall && _currentTrackRollEnd == TrackRoll::Right) { - _currentlySelectedTrack = TrackElemType::RightHalfBankedHelixDownSmall; + _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixDownSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1243,14 +1243,14 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) { - _currentlySelectedTrack = TrackElemType::LeftQuarterBankedHelixLargeDown; + _currentlySelectedTrack = TrackElemType::leftQuarterBankedHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) { - _currentlySelectedTrack = TrackElemType::RightQuarterBankedHelixLargeDown; + _currentlySelectedTrack = TrackElemType::rightQuarterBankedHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1263,14 +1263,14 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::Left) { - _currentlySelectedTrack = TrackElemType::LeftQuarterHelixLargeDown; + _currentlySelectedTrack = TrackElemType::leftQuarterHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::Right) { - _currentlySelectedTrack = TrackElemType::RightQuarterHelixLargeDown; + _currentlySelectedTrack = TrackElemType::rightQuarterHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1326,7 +1326,7 @@ namespace OpenRCT2::Ui::Windows if (_rideConstructionState == RideConstructionState::Front && _currentlySelectedTrack == TrackCurve::None) { - _currentlySelectedTrack = TrackElemType::ReverseFreefallSlope; + _currentlySelectedTrack = TrackElemType::reverseFreefallSlope; WindowRideConstructionUpdateActiveElements(); } } @@ -1341,28 +1341,28 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) { - _currentlySelectedTrack = TrackElemType::LeftHalfBankedHelixUpLarge; + _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixUpLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) { - _currentlySelectedTrack = TrackElemType::RightHalfBankedHelixUpLarge; + _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixUpLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::LeftSmall && _currentTrackRollEnd == TrackRoll::Left) { - _currentlySelectedTrack = TrackElemType::LeftHalfBankedHelixUpSmall; + _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixUpSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::RightSmall && _currentTrackRollEnd == TrackRoll::Right) { - _currentlySelectedTrack = TrackElemType::RightHalfBankedHelixUpSmall; + _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixUpSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1372,14 +1372,14 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) { - _currentlySelectedTrack = TrackElemType::LeftQuarterBankedHelixLargeUp; + _currentlySelectedTrack = TrackElemType::leftQuarterBankedHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) { - _currentlySelectedTrack = TrackElemType::RightQuarterBankedHelixLargeUp; + _currentlySelectedTrack = TrackElemType::rightQuarterBankedHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1392,14 +1392,14 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::Left) { - _currentlySelectedTrack = TrackElemType::LeftQuarterHelixLargeUp; + _currentlySelectedTrack = TrackElemType::leftQuarterHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } if (_currentlySelectedTrack == TrackCurve::Right) { - _currentlySelectedTrack = TrackElemType::RightQuarterHelixLargeUp; + _currentlySelectedTrack = TrackElemType::rightQuarterHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1548,18 +1548,18 @@ namespace OpenRCT2::Ui::Windows OpenRCT2::TrackElemType trackPiece = _specialElementDropdownState.Elements[selectedIndex].TrackType; switch (trackPiece) { - case TrackElemType::EndStation: - case TrackElemType::SBendLeft: - case TrackElemType::SBendRight: + case TrackElemType::endStation: + case TrackElemType::sBendLeft: + case TrackElemType::sBendRight: _currentTrackPitchEnd = TrackPitch::None; break; - case TrackElemType::LeftVerticalLoop: - case TrackElemType::RightVerticalLoop: + case TrackElemType::leftVerticalLoop: + case TrackElemType::rightVerticalLoop: _currentTrackRollEnd = TrackRoll::None; _currentTrackHasLiftHill = false; break; - case TrackElemType::BlockBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::blockBrakes: + case TrackElemType::diagBlockBrakes: _currentBrakeSpeed = kRCT2DefaultBlockBrakeSpeed; break; default: @@ -1990,9 +1990,9 @@ namespace OpenRCT2::Ui::Windows || TrackTypeIsBooster(_currentlySelectedTrack.trackType); // only necessary because TD6 writes speed and seat rotation to the same bits. Remove for new track design format. - bool trackHasSpeedAndSeatRotation = _selectedTrackType == TrackElemType::BlockBrakes - || _currentlySelectedTrack == TrackElemType::BlockBrakes || _selectedTrackType > TrackElemType::HighestAlias - || _currentlySelectedTrack.trackType > TrackElemType::HighestAlias; + bool trackHasSpeedAndSeatRotation = _selectedTrackType == TrackElemType::blockBrakes + || _currentlySelectedTrack == TrackElemType::blockBrakes || _selectedTrackType > TrackElemType::highestAlias + || _currentlySelectedTrack.trackType > TrackElemType::highestAlias; bool rideHasSeatRotation = rtd.HasFlag(RtdFlag::hasSeatRotation); @@ -2250,7 +2250,7 @@ namespace OpenRCT2::Ui::Windows { case RideConstructionState::State0: trackDirection = _currentTrackPieceDirection; - trackType = TrackElemType::Flat; + trackType = TrackElemType::flat; trackPos = _currentTrackBegin; break; case RideConstructionState::Selected: @@ -2265,7 +2265,7 @@ namespace OpenRCT2::Ui::Windows if (WindowRideConstructionUpdateState(&trackType, &trackDirection, nullptr, nullptr, &trackPos, nullptr)) { trackDirection = _currentTrackPieceDirection; - trackType = OpenRCT2::TrackElemType::Flat; + trackType = OpenRCT2::TrackElemType::flat; trackPos = _currentTrackBegin; } break; @@ -2596,7 +2596,7 @@ namespace OpenRCT2::Ui::Windows TrackElemType trackPiece = element.TrackType; // Separate elements logically - if (trackPiece == TrackElemType::None) + if (trackPiece == TrackElemType::none) { gDropdown.items[i++] = Dropdown::Separator(); continue; @@ -3176,7 +3176,7 @@ namespace OpenRCT2::Ui::Windows window->updateMapSelection(); - _selectedTrackType = TrackElemType::None; + _selectedTrackType = TrackElemType::none; if (_rideConstructionState == RideConstructionState::Selected) { TileElement* tileElement; @@ -4701,16 +4701,16 @@ namespace OpenRCT2::Ui::Windows if (_rideConstructionState2 == RideConstructionState::Selected || _rideConstructionState2 == RideConstructionState::Front) { - if (type == TrackElemType::MiddleStation || type == TrackElemType::BeginStation) + if (type == TrackElemType::middleStation || type == TrackElemType::beginStation) { - type = TrackElemType::EndStation; + type = TrackElemType::endStation; } } if (_rideConstructionState2 == RideConstructionState::Back) { - if (type == TrackElemType::MiddleStation) + if (type == TrackElemType::middleStation) { - type = TrackElemType::BeginStation; + type = TrackElemType::beginStation; } } if (Network::GetMode() == Network::Mode::client) @@ -4831,9 +4831,9 @@ namespace OpenRCT2::Ui::Windows } auto selectedTrack = _currentlySelectedTrack; - if (selectedTrack == TrackElemType::None) + if (selectedTrack == TrackElemType::none) { - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } bool startsDiagonal = (_currentTrackPieceDirection & (1 << 2)) != 0; @@ -4849,49 +4849,49 @@ namespace OpenRCT2::Ui::Windows { auto trackPiece = GetTrackTypeFromCurve( selectedTrack.curve, startsDiagonal, startSlope, endSlope, startBank, endBank); - if (trackPiece != TrackElemType::None) + if (trackPiece != TrackElemType::none) return std::make_pair(true, trackPiece); else - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } auto asTrackType = selectedTrack.trackType; switch (asTrackType) { - case TrackElemType::EndStation: - case TrackElemType::SBendLeft: - case TrackElemType::SBendRight: + case TrackElemType::endStation: + case TrackElemType::sBendLeft: + case TrackElemType::sBendRight: if (startSlope != TrackPitch::None || endSlope != TrackPitch::None) { - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } if (startBank != TrackRoll::None || endBank != TrackRoll::None) { - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } return std::make_pair(true, asTrackType); - case TrackElemType::LeftVerticalLoop: - case TrackElemType::RightVerticalLoop: + case TrackElemType::leftVerticalLoop: + case TrackElemType::rightVerticalLoop: if (startBank != TrackRoll::None || endBank != TrackRoll::None) { - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } if (_rideConstructionState == RideConstructionState::Back) { if (endSlope != TrackPitch::Down25) { - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } } else { if (startSlope != TrackPitch::Up25) { - return std::make_pair(false, OpenRCT2::TrackElemType::Flat); + return std::make_pair(false, OpenRCT2::TrackElemType::flat); } } @@ -4952,20 +4952,20 @@ namespace OpenRCT2::Ui::Windows { switch (trackType) { - case TrackElemType::FlatToUp60: - trackType = TrackElemType::FlatToUp60LongBase; + case TrackElemType::flatToUp60: + trackType = TrackElemType::flatToUp60LongBase; break; - case TrackElemType::Up60ToFlat: - trackType = TrackElemType::Up60ToFlatLongBase; + case TrackElemType::up60ToFlat: + trackType = TrackElemType::up60ToFlatLongBase; break; - case TrackElemType::FlatToDown60: - trackType = TrackElemType::FlatToDown60LongBase; + case TrackElemType::flatToDown60: + trackType = TrackElemType::flatToDown60LongBase; break; - case TrackElemType::Down60ToFlat: - trackType = TrackElemType::Down60ToFlatLongBase; + case TrackElemType::down60ToFlat: + trackType = TrackElemType::down60ToFlatLongBase; break; default: @@ -4977,20 +4977,20 @@ namespace OpenRCT2::Ui::Windows { switch (trackType) { - case TrackElemType::DiagFlatToUp60: - trackType = TrackElemType::DiagFlatToUp60LongBase; + case TrackElemType::diagFlatToUp60: + trackType = TrackElemType::diagFlatToUp60LongBase; break; - case TrackElemType::DiagUp60ToFlat: - trackType = TrackElemType::DiagUp60ToFlatLongBase; + case TrackElemType::diagUp60ToFlat: + trackType = TrackElemType::diagUp60ToFlatLongBase; break; - case TrackElemType::DiagFlatToDown60: - trackType = TrackElemType::DiagFlatToDown60LongBase; + case TrackElemType::diagFlatToDown60: + trackType = TrackElemType::diagFlatToDown60LongBase; break; - case TrackElemType::DiagDown60ToFlat: - trackType = TrackElemType::DiagDown60ToFlatLongBase; + case TrackElemType::diagDown60ToFlat: + trackType = TrackElemType::diagDown60ToFlatLongBase; break; default: @@ -5007,7 +5007,7 @@ namespace OpenRCT2::Ui::Windows auto coveredVariant = ted.alternativeType; // this method limits the track element types that can be used - if (coveredVariant != TrackElemType::None && (availableGroups.get(EnumValue(ted.definition.group)))) + if (coveredVariant != TrackElemType::none && (availableGroups.get(EnumValue(ted.definition.group)))) { trackType = coveredVariant; if (!getGameState().cheats.enableChainLiftOnAllTrack) @@ -5065,7 +5065,7 @@ namespace OpenRCT2::Ui::Windows liftHillAndInvertedState.unset(LiftHillAndInverted::liftHill); _currentTrackHasLiftHill = false; - if (trackType == TrackElemType::LeftCurvedLiftHill || trackType == TrackElemType::RightCurvedLiftHill) + if (trackType == TrackElemType::leftCurvedLiftHill || trackType == TrackElemType::rightCurvedLiftHill) { liftHillAndInvertedState.set(LiftHillAndInverted::liftHill); } diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 65865a6165eb..9ce59392054d 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -188,7 +188,7 @@ namespace OpenRCT2::GameActions Guard::Assert(trackElement != nullptr); trackElement->SetClearanceZ(clearanceHeight); - trackElement->SetTrackType(TrackElemType::Maze); + trackElement->SetTrackType(TrackElemType::maze); trackElement->SetRideType(ride->type); trackElement->SetRideIndex(_rideIndex); trackElement->SetMazeEntry(_mazeEntry); diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 2316b8433ed9..a864f482acd0 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -140,7 +140,7 @@ namespace OpenRCT2::GameActions } } - TileElement* tileElement = MapGetTrackElementAtOfTypeFromRide(_loc, TrackElemType::Maze, _rideIndex); + TileElement* tileElement = MapGetTrackElementAtOfTypeFromRide(_loc, TrackElemType::maze, _rideIndex); if (tileElement == nullptr) { if (_mode != GC_SET_MAZE_TRACK_BUILD) @@ -212,7 +212,7 @@ namespace OpenRCT2::GameActions WallRemoveAt({ _loc.ToTileStart(), _loc.z, _loc.z + 32 }); } - auto tileElement = MapGetTrackElementAtOfTypeFromRide(_loc, TrackElemType::Maze, _rideIndex); + auto tileElement = MapGetTrackElementAtOfTypeFromRide(_loc, TrackElemType::maze, _rideIndex); if (tileElement == nullptr) { res.cost = MazeCalculateCost(0, *ride, _loc); @@ -223,7 +223,7 @@ namespace OpenRCT2::GameActions Guard::Assert(trackElement != nullptr); trackElement->SetClearanceZ(_loc.z + kMazeClearanceHeight); - trackElement->SetTrackType(TrackElemType::Maze); + trackElement->SetTrackType(TrackElemType::maze); trackElement->SetRideType(ride->type); trackElement->SetRideIndex(_rideIndex); trackElement->SetMazeEntry(0xFFFF); @@ -262,7 +262,7 @@ namespace OpenRCT2::GameActions auto previousElementLoc = CoordsXY{ _loc }.ToTileStart() - CoordsDirectionDelta[_loc.direction]; TileElement* previousTileElement = MapGetTrackElementAtOfTypeFromRide( - { previousElementLoc, _loc.z }, TrackElemType::Maze, _rideIndex); + { previousElementLoc, _loc.z }, TrackElemType::maze, _rideIndex); if (previousTileElement != nullptr) { @@ -288,7 +288,7 @@ namespace OpenRCT2::GameActions _loc.y - CoordsDirectionDelta[_loc.direction].y / 2 }; tileElement = MapGetTrackElementAtOfTypeFromRide( - { previousSegment, _loc.z }, TrackElemType::Maze, _rideIndex); + { previousSegment, _loc.z }, TrackElemType::maze, _rideIndex); MapInvalidateTileFull(previousSegment.ToTileStart()); if (tileElement == nullptr) @@ -316,7 +316,7 @@ namespace OpenRCT2::GameActions auto nextElementLoc = previousSegment.ToTileStart() + CoordsDirectionDelta[direction1]; TileElement* tmp_tileElement = MapGetTrackElementAtOfTypeFromRide( - { nextElementLoc, _loc.z }, TrackElemType::Maze, _rideIndex); + { nextElementLoc, _loc.z }, TrackElemType::maze, _rideIndex); if (tmp_tileElement != nullptr) { diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index e8237b1c4fc3..1672a63a678e 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -224,7 +224,7 @@ namespace OpenRCT2::GameActions const auto location = CoordsXYZD(tileCoords, trackElement->GetBaseZ(), trackElement->GetDirection()); const auto type = trackElement->GetTrackType(); - if (type != TrackElemType::Maze) + if (type != TrackElemType::maze) { auto trackRemoveAction = TrackRemoveAction(type, trackElement->GetSequenceIndex(), location); trackRemoveAction.SetFlags({ CommandFlag::noSpend }); diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 221e096ffaf9..8f88e63849dd 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -127,7 +127,7 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); - if ((ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _trackType == TrackElemType::EndStation) + if ((ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _trackType == TrackElemType::endStation) { return Result( Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NOT_ALLOWED_TO_MODIFY_STATION); @@ -145,7 +145,7 @@ namespace OpenRCT2::GameActions if (!rtd.HasFlag(RtdFlag::isFlatRide)) { - if (_trackType == TrackElemType::OnRidePhoto) + if (_trackType == TrackElemType::onRidePhoto) { if (ride->lifecycleFlags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) { @@ -154,7 +154,7 @@ namespace OpenRCT2::GameActions STR_ONLY_ONE_ON_RIDE_PHOTO_PER_RIDE); } } - else if (_trackType == TrackElemType::CableLiftHill) + else if (_trackType == TrackElemType::cableLiftHill) { if (ride->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) { @@ -259,7 +259,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } - auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::Flat) + auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::flat) ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( @@ -463,7 +463,7 @@ namespace OpenRCT2::GameActions clearanceZ = floor2(clearanceZ, kCoordsZStep) + baseZ; const auto mapLocWithClearance = CoordsXYRangedZ(mapLoc, baseZ, clearanceZ); - auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::Flat) + auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::flat) ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( @@ -572,14 +572,14 @@ namespace OpenRCT2::GameActions switch (_trackType) { - case TrackElemType::Waterfall: - case TrackElemType::Rapids: - case TrackElemType::Whirlpool: - case TrackElemType::SpinningTunnel: + case TrackElemType::waterfall: + case TrackElemType::rapids: + case TrackElemType::whirlpool: + case TrackElemType::spinningTunnel: MapAnimations::MarkTileForInvalidation(TileCoordsXY(mapLoc)); break; - case TrackElemType::Brakes: - case TrackElemType::DiagBrakes: + case TrackElemType::brakes: + case TrackElemType::diagBrakes: trackElement->SetBrakeClosed(true); break; default: @@ -666,17 +666,17 @@ namespace OpenRCT2::GameActions { switch (_trackType) { - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: ride->lifecycleFlags |= RIDE_LIFECYCLE_ON_RIDE_PHOTO; InvalidateTestResults(*ride); break; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: ride->lifecycleFlags |= RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED; ride->cableLiftLoc = originLocation; InvalidateTestResults(*ride); break; - case TrackElemType::DiagBlockBrakes: - case TrackElemType::BlockBrakes: + case TrackElemType::diagBlockBrakes: + case TrackElemType::blockBrakes: { ride->numBlockBrakes++; @@ -701,14 +701,14 @@ namespace OpenRCT2::GameActions switch (_trackType) { - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: if (!_trackPlaceFlags.has(LiftHillAndInverted::liftHill)) break; [[fallthrough]]; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: ride->numBlockBrakes++; break; default: diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index 6721dd8e0d7e..af9e4e774903 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -50,9 +50,9 @@ namespace OpenRCT2::GameActions { switch (trackType) { - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: - return TrackElemType::EndStation; + case TrackElemType::beginStation: + case TrackElemType::middleStation: + return TrackElemType::endStation; default: return trackType; } @@ -439,14 +439,14 @@ namespace OpenRCT2::GameActions { switch (trackType) { - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: ride->lifecycleFlags &= ~RIDE_LIFECYCLE_ON_RIDE_PHOTO; break; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: ride->lifecycleFlags &= ~RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED; break; - case TrackElemType::BlockBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::blockBrakes: + case TrackElemType::diagBlockBrakes: ride->numBlockBrakes--; if (ride->numBlockBrakes == 0 && ride->isBlockSectioned()) { @@ -478,14 +478,14 @@ namespace OpenRCT2::GameActions switch (trackType) { - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: if (!isLiftHill) break; [[fallthrough]]; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: ride->numBlockBrakes--; break; default: diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index a6879a3e90f3..b03a48a6aa73 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -4235,7 +4235,7 @@ void Guest::UpdateRideLeaveVehicle() vehicle = gameState.entities.GetEntity(vehicle->prev_vehicle_on_ride)) { auto trackType = vehicle->GetTrackType(); - if (trackType == TrackElemType::Flat || trackType > TrackElemType::MiddleStation) + if (trackType == TrackElemType::flat || trackType > TrackElemType::middleStation) continue; bool foundStation = false; diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 682e605eaf4d..945996c1c5dd 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -894,7 +894,7 @@ static BoundBoxXYZ PathPaintGetBoundbox(const PaintSession& session, int32_t hei // If we are on the same tile as a straight track, add the offset 2 so we // can clip above gravel part of the track sprite if (session.TrackElementOnSameHeight != nullptr - && session.TrackElementOnSameHeight->AsTrack()->GetTrackType() == TrackElemType::Flat) + && session.TrackElementOnSameHeight->AsTrack()->GetTrackType() == TrackElemType::flat) { boundingBoxZOffset = 2; } diff --git a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp index 45348d609a5d..cb1cf4a83ba8 100644 --- a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp @@ -187,7 +187,7 @@ static void AirPoweredVerticalRCTrackFlat( auto imageId = session.TrackColours.WithIndex(imageIds[direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -210,7 +210,7 @@ static void AirPoweredVerticalRCTrackStation( session, direction, session.TrackColours.WithIndex(imageIds[direction]), { 0, 0, height }, { { 0, 6, height + 1 }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawNarrowStationPlatform(session, ride, direction, height, 5, trackElement, StationBaseType::b, -2); @@ -257,7 +257,7 @@ static void AirPoweredVerticalRCTrackRightQuarterTurn5( }; TrackPaintUtilRightQuarterTurn5TilesPaint3(session, height, direction, trackSequence, session.TrackColours, imageIds); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilRightQuarterTurn5TilesTunnel(session, kTunnelGroup, TunnelSubType::Flat, height, direction, trackSequence); @@ -348,7 +348,7 @@ static void AirPoweredVerticalRCTrackFlatToLeftBank( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -378,7 +378,7 @@ static void AirPoweredVerticalRCTrackFlatToRightBank( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -452,7 +452,7 @@ static void AirPoweredVerticalRCTrackBankedRightQuarterTurn5( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height }, { 1, 32, 26 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilRightQuarterTurn5TilesTunnel(session, kTunnelGroup, TunnelSubType::Flat, height, direction, trackSequence); @@ -544,7 +544,7 @@ static void AirPoweredVerticalRCTrackLeftBank( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -574,7 +574,7 @@ static void AirPoweredVerticalRCTrackBrakes( auto imageId = session.TrackColours.WithIndex(imageIds[direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -695,7 +695,7 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp( PaintAddImageAsChildRotated( session, direction, trackImageId, { 0, 0, height }, { { 0, 6, height }, { 20, 32, bbHeight } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -721,7 +721,7 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp( session, direction, trackImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0) @@ -747,11 +747,11 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp( session, direction, supportsImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); break; case 5: - if (DrawSupportForSequenceA( + if (DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours)) { ImageId floorImageId; @@ -788,7 +788,7 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp( PaintAddImageAsChildRotated( session, direction, supportsImageId, { 0, 0, height }, { { 27, 6, height }, { 1, 20, 126 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetVerticalTunnel(session, height + 240); @@ -981,7 +981,7 @@ static void AirPoweredVerticalRCTrackBooster( PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1001,7 +1001,7 @@ static void AirPoweredVerticalRCTrackOnridePhoto( auto imageId = session.TrackColours.WithIndex(imageIds[direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); @@ -1011,47 +1011,47 @@ TrackPaintFunction GetTrackPaintFunctionAirPoweredVerticalRC(OpenRCT2::TrackElem { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return AirPoweredVerticalRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return AirPoweredVerticalRCTrackStation; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return AirPoweredVerticalRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return AirPoweredVerticalRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return AirPoweredVerticalRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return AirPoweredVerticalRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return AirPoweredVerticalRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return AirPoweredVerticalRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return AirPoweredVerticalRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return AirPoweredVerticalRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return AirPoweredVerticalRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return AirPoweredVerticalRCTrackRightBank; - case TrackElemType::Brakes: + case TrackElemType::brakes: return AirPoweredVerticalRCTrackBrakes; - case TrackElemType::ReverseFreefallSlope: + case TrackElemType::reverseFreefallSlope: return AirPoweredVerticalRCTrackVerticalSlopeUp; - case TrackElemType::ReverseFreefallVertical: + case TrackElemType::reverseFreefallVertical: return AirPoweredVerticalRCTrackVerticalUp; - case TrackElemType::AirThrustTopCap: + case TrackElemType::airThrustTopCap: return AirPoweredVerticalRCTrackVerticalTop; - case TrackElemType::AirThrustVerticalDown: + case TrackElemType::airThrustVerticalDown: return AirPoweredVerticalRCTrackVerticalDown; - case TrackElemType::AirThrustVerticalDownToLevel: + case TrackElemType::airThrustVerticalDownToLevel: return AirPoweredVerticalRCTrackVerticalSlopeDown; - case TrackElemType::Booster: + case TrackElemType::booster: return AirPoweredVerticalRCTrackBooster; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return AirPoweredVerticalRCTrackOnridePhoto; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp index 792cd9a99271..af874e2053f4 100644 --- a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp @@ -101,7 +101,7 @@ namespace OpenRCT2::AlpineRC { (SPR_TRACKS_ALPINE_TRACK_FLAT + 1), (SPR_TRACKS_ALPINE_TRACK_FLAT + 1), SPR_STATION_BASE_MEDIUM_NW_SE }, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction][1]), { 0, 0, height }, @@ -7184,171 +7184,171 @@ namespace OpenRCT2::AlpineRC { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return TrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return TrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return Track25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return TrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return Track25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return Track25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return TrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return Track25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return TrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return TrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return TrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return TrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return TrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return TrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return TrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return TrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return TrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return TrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return Track25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return Track25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return TrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return TrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return Track25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return Track25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return TrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return TrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return TrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return TrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return TrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return TrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return TrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return TrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return TrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return TrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return TrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return TrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return TrackLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return TrackRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return TrackLeftQuarterTurn3Tile25DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return TrackRightQuarterTurn3Tile25DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return TrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return TrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return TrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return TrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return TrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return TrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return TrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return TrackRightHalfBankedHelixDownLarge; - case TrackElemType::Brakes: + case TrackElemType::brakes: return TrackBrakes; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return TrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return TrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return TrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return TrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return TrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return TrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return TrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return TrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return TrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return TrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return TrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return TrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return TrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return TrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return TrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return TrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return TrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return TrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return TrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return TrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return TrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return TrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return TrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return TrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return TrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return TrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return TrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return TrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return TrackDiagRightBank; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return TrackLeftBankToLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return TrackRightBankToRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return TrackLeftQuarterTurn3Tile25DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return TrackRightQuarterTurn3Tile25DegDownToRightBank; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp index f8d4e3eb6fb5..e24baea1a177 100644 --- a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp +++ b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp @@ -4083,94 +4083,94 @@ TrackPaintFunction GetTrackPaintFunctionBobsleighRC(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return BobsleighRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return BobsleighRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return BobsleighRCTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return BobsleighRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return BobsleighRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return BobsleighRCTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return BobsleighRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return BobsleighRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return BobsleighRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return BobsleighRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return BobsleighRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return BobsleighRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return BobsleighRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return BobsleighRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return BobsleighRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return BobsleighRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return BobsleighRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return BobsleighRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return BobsleighRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return BobsleighRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return BobsleighRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return BobsleighRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return BobsleighRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return BobsleighRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return BobsleighRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return BobsleighRCTrackRightBank; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return BobsleighRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return BobsleighRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return BobsleighRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return BobsleighRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return BobsleighRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return BobsleighRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return BobsleighRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return BobsleighRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return BobsleighRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return BobsleighRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return BobsleighRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return BobsleighRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return BobsleighRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return BobsleighRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::Brakes: + case TrackElemType::brakes: return BobsleighRCTrackBrakes; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return BobsleighRCTrackBlockBrakes; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return BobsleighRCTrackOnRidePhoto; default: diff --git a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp index eb22b2a4c93b..14963e10ade3 100644 --- a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp @@ -1372,157 +1372,157 @@ TrackPaintFunction GetTrackPaintFunctionClassicStandUpRC(OpenRCT2::TrackElemType switch (trackType) { - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return classicStandUpRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return classicStandUpRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return classicStandUpRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return classicStandUpRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return classicStandUpRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return classicStandUpRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return classicStandUpRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return classicStandUpRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return classicStandUpRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return classicStandUpRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return classicStandUpRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return classicStandUpRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return classicStandUpRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return classicStandUpRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return classicStandUpRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return classicStandUpRCTrackRightBank; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return classicStandUpRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return classicStandUpRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return classicStandUpRCTrackLeftEighthDiagBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return classicStandUpRCTrackRightEighthDiagBankToOrthogonal; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return classicStandUpRCTrackLeftBankedQuarterTurn3; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return classicStandUpRCTrackRightBankedQuarterTurn3; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return classicStandUpRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return classicStandUpRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return classicStandUpRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return classicStandUpRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return classicStandUpRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return classicStandUpRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return classicStandUpRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return classicStandUpRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return classicStandUpRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return classicStandUpRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return classicStandUpRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return classicStandUpRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return classicStandUpRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return classicStandUpRCTrackDiagRightBank; - case TrackElemType::Up25ToLeftBankedUp25: - case TrackElemType::Up25ToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToUp25: - case TrackElemType::RightBankedUp25ToUp25: - case TrackElemType::Down25ToLeftBankedDown25: - case TrackElemType::Down25ToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToDown25: - case TrackElemType::RightBankedDown25ToDown25: - case TrackElemType::LeftBankedFlatToLeftBankedUp25: - case TrackElemType::RightBankedFlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: - case TrackElemType::RightBankedUp25ToRightBankedFlat: - case TrackElemType::LeftBankedFlatToLeftBankedDown25: - case TrackElemType::RightBankedFlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: - case TrackElemType::RightBankedDown25ToRightBankedFlat: - case TrackElemType::Down25LeftBanked: - case TrackElemType::Down25RightBanked: - case TrackElemType::FlatToLeftBankedUp25: - case TrackElemType::FlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToFlat: - case TrackElemType::RightBankedUp25ToFlat: - case TrackElemType::FlatToLeftBankedDown25: - case TrackElemType::FlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToFlat: - case TrackElemType::RightBankedDown25ToFlat: - case TrackElemType::Up25LeftBanked: - case TrackElemType::Up25RightBanked: - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: - case TrackElemType::RightEighthBankToOrthogonalDown25: - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::up25ToLeftBankedUp25: + case TrackElemType::up25ToRightBankedUp25: + case TrackElemType::leftBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: + case TrackElemType::down25ToLeftBankedDown25: + case TrackElemType::down25ToRightBankedDown25: + case TrackElemType::leftBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: + case TrackElemType::leftBankedFlatToLeftBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: + case TrackElemType::down25LeftBanked: + case TrackElemType::down25RightBanked: + case TrackElemType::flatToLeftBankedUp25: + case TrackElemType::flatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: + case TrackElemType::flatToLeftBankedDown25: + case TrackElemType::flatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: + case TrackElemType::up25LeftBanked: + case TrackElemType::up25RightBanked: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return TrackPaintFunctionDummy; default: diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp index c1ee58fa8aba..ceb1361745c2 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp @@ -920,7 +920,7 @@ static void ClassicWoodenRCTrackBankedRightQuarterTurn5( WoodenRCTrackPaintBb(session, &imageIds[direction][trackSequence][1], height); TrackPaintUtilRightQuarterTurn5TilesTunnel(session, kTunnelGroup, TunnelSubType::Flat, height, direction, trackSequence); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1079,7 +1079,7 @@ static void ClassicWoodenRCTrackRightQuarterTurn3Bank( WoodenRCTrackPaintBb(session, &imageIds[direction][trackSequence][1], height); TrackPaintUtilRightQuarterTurn3TilesTunnel(session, kTunnelGroup, TunnelSubType::Flat, height, direction, trackSequence); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0); @@ -1187,77 +1187,77 @@ TrackPaintFunction GetTrackPaintFunctionClassicWoodenRC(OpenRCT2::TrackElemType switch (trackType) { - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return WoodenRCTrackFlatToBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return WoodenRCTrackFlatToBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return ClassicWoodenRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return ClassicWoodenRCTrackRightBankToFlat; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return WoodenRCTrackFlatToBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return ClassicWoodenRCTrackRightBank; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return WoodenRCTrack25DegUpToBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return WoodenRCTrack25DegUpToBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return ClassicWoodenRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return ClassicWoodenRCTrackRightBankTo25DegDown; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return WoodenRCTrackBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return WoodenRCTrackBankTo25DegUp; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return ClassicWoodenRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return ClassicWoodenRCTrack25DegDownToRightBank; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return ClassicWoodenRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return ClassicWoodenRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return ClassicWoodenRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return ClassicWoodenRCTrackRightQuarterTurn3Bank; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return WoodenRCTrackDiagFlatToBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return WoodenRCTrackDiagFlatToBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return ClassicWoodenRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return ClassicWoodenRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return WoodenRCTrackDiagBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return WoodenRCTrackDiagBankTo25DegUp; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return ClassicWoodenRCTrackDiagDown25ToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return ClassicWoodenRCTrackDiagDown25ToRightBank; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return WoodenRCTrackDiagUp25ToBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return WoodenRCTrackDiagUp25ToBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return ClassicWoodenRCTrackDiagLeftBankToDown25; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return ClassicWoodenRCTrackDiagRightBankToDown25; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return WoodenRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return ClassicWoodenRCTrackDiagRightBank; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return WoodenRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return WoodenRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return ClassicWoodenRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return ClassicWoodenRCTrackRightEighthBankToOrthogonal; default: return GetTrackPaintFunctionClassicWoodenRCFallback(trackType); diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp index b7d799279ebd..d76f8df60b35 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp @@ -2094,112 +2094,112 @@ TrackPaintFunction GetTrackPaintFunctionClassicWoodenTwisterRC(OpenRCT2::TrackEl switch (trackType) { - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return WoodenRCTrackFlatToBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return WoodenRCTrackFlatToBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return ClassicWoodenTwisterRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return ClassicWoodenTwisterRCTrackRightBankToFlat; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return WoodenRCTrackFlatToBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return ClassicWoodenTwisterRCTrackRightBank; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return WoodenRCTrack25DegUpToBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return WoodenRCTrack25DegUpToBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return ClassicWoodenTwisterRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return ClassicWoodenTwisterRCTrackRightBankTo25DegDown; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return WoodenRCTrackBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return WoodenRCTrackBankTo25DegUp; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return ClassicWoodenTwisterRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return ClassicWoodenTwisterRCTrack25DegDownToRightBank; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return WoodenRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return ClassicWoodenTwisterRCTrackRightQuarterTurn3Bank; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return ClassicWoodenTwisterRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return WoodenRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return WoodenRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return WoodenRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return ClassicWoodenTwisterRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return ClassicWoodenTwisterRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return WoodenRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return WoodenRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return ClassicWoodenTwisterRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return ClassicWoodenTwisterRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return WoodenRCTrackLeftBankToLeftQuarterTurn325DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return WoodenRCTrackRightBankToRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return ClassicWoodenTwisterRCTrackLeftQuarterTurn325DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return ClassicWoodenTwisterRCTrackRightQuarterTurn325DegDownToRightBank; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return WoodenRCTrackDiagFlatToBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return WoodenRCTrackDiagFlatToBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return ClassicWoodenTwisterRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return ClassicWoodenTwisterRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return WoodenRCTrackDiagBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return WoodenRCTrackDiagBankTo25DegUp; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return ClassicWoodenTwisterRCTrackDiagDown25ToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return ClassicWoodenTwisterRCTrackDiagDown25ToRightBank; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return WoodenRCTrackDiagUp25ToBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return WoodenRCTrackDiagUp25ToBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return ClassicWoodenTwisterRCTrackDiagLeftBankToDown25; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return ClassicWoodenTwisterRCTrackDiagRightBankToDown25; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return WoodenRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return ClassicWoodenTwisterRCTrackDiagRightBank; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return WoodenRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return WoodenRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return ClassicWoodenTwisterRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return ClassicWoodenTwisterRCTrackRightEighthBankToOrthogonal; default: diff --git a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp index 2e1d973a48fe..9fad42a9d3bb 100644 --- a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp @@ -9615,231 +9615,231 @@ TrackPaintFunction GetTrackPaintFunctionCompactInvertedRC(OpenRCT2::TrackElemTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return CompactInvertedRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return CompactInvertedRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return CompactInvertedRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return CompactInvertedRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return CompactInvertedRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return CompactInvertedRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return CompactInvertedRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return CompactInvertedRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return CompactInvertedRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return CompactInvertedRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return CompactInvertedRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return CompactInvertedRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return CompactInvertedRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return CompactInvertedRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return CompactInvertedRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return CompactInvertedRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return CompactInvertedRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return CompactInvertedRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return CompactInvertedRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return CompactInvertedRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return CompactInvertedRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return CompactInvertedRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return CompactInvertedRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return CompactInvertedRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return CompactInvertedRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return CompactInvertedRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return CompactInvertedRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return CompactInvertedRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return CompactInvertedRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return CompactInvertedRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return CompactInvertedRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return CompactInvertedRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return CompactInvertedRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return CompactInvertedRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return CompactInvertedRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return CompactInvertedRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return CompactInvertedRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return CompactInvertedRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return CompactInvertedRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return CompactInvertedRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return CompactInvertedRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return CompactInvertedRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return CompactInvertedRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return CompactInvertedRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return CompactInvertedRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return CompactInvertedRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return CompactInvertedRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return CompactInvertedRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftTwistDownToUp: + case TrackElemType::leftTwistDownToUp: return CompactInvertedRCTrackLeftTwistDownToUp; - case TrackElemType::RightTwistDownToUp: + case TrackElemType::rightTwistDownToUp: return CompactInvertedRCTrackRightTwistDownToUp; - case TrackElemType::LeftTwistUpToDown: + case TrackElemType::leftTwistUpToDown: return CompactInvertedRCTrackLeftTwistUpToDown; - case TrackElemType::RightTwistUpToDown: + case TrackElemType::rightTwistUpToDown: return CompactInvertedRCTrackRightTwistUpToDown; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return CompactInvertedRCTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return CompactInvertedRCTrackHalfLoopDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return CompactInvertedRCTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return CompactInvertedRCTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return CompactInvertedRCTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return CompactInvertedRCTrackRightCorkscrewDown; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return CompactInvertedRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return CompactInvertedRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return CompactInvertedRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return CompactInvertedRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return CompactInvertedRCTrackBrakes; - case TrackElemType::LeftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeUp: return CompactInvertedRCTrackLeftQuarterBankedHelixLargeUp; - case TrackElemType::RightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeUp: return CompactInvertedRCTrackRightQuarterBankedHelixLargeUp; - case TrackElemType::LeftQuarterBankedHelixLargeDown: + case TrackElemType::leftQuarterBankedHelixLargeDown: return CompactInvertedRCTrackLeftQuarterBankedHelixLargeDown; - case TrackElemType::RightQuarterBankedHelixLargeDown: + case TrackElemType::rightQuarterBankedHelixLargeDown: return CompactInvertedRCTrackRightQuarterBankedHelixLargeDown; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return CompactInvertedRCTrackOnRidePhoto; - case TrackElemType::Up90: + case TrackElemType::up90: return CompactInvertedRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return CompactInvertedRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return CompactInvertedRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return CompactInvertedRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return CompactInvertedRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return CompactInvertedRCTrack60DegDownTo90DegDown; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return CompactInvertedRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return CompactInvertedRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return CompactInvertedRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return CompactInvertedRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return CompactInvertedRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return CompactInvertedRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return CompactInvertedRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return CompactInvertedRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return CompactInvertedRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return CompactInvertedRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return CompactInvertedRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return CompactInvertedRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return CompactInvertedRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return CompactInvertedRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return CompactInvertedRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return CompactInvertedRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return CompactInvertedRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return CompactInvertedRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return CompactInvertedRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return CompactInvertedRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return CompactInvertedRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return CompactInvertedRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return CompactInvertedRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return CompactInvertedRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return CompactInvertedRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return CompactInvertedRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return CompactInvertedRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return CompactInvertedRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return CompactInvertedRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return CompactInvertedRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return CompactInvertedRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return CompactInvertedRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return CompactInvertedRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return CompactInvertedRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return CompactInvertedRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return CompactInvertedRCTrackBlockBrakes; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return CompactInvertedRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return CompactInvertedRCTrackDiagBlockBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp index b26a65204f85..265c8cf0f4d1 100644 --- a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp @@ -135,7 +135,7 @@ static void CorkscrewRCTrackStation( 16237, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -10788,7 +10788,7 @@ static void LayDownRCTrackHalfLoopUninvertedDown( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - auto function = GetTrackPaintFunctionLayDownRCInverted(TrackElemType::FlyerHalfLoopInvertedUp); + auto function = GetTrackPaintFunctionLayDownRCInverted(TrackElemType::flyerHalfLoopInvertedUp); function(session, ride, 3 - trackSequence, direction, height, trackElement, supportType); return; } @@ -20420,564 +20420,564 @@ TrackPaintFunction GetTrackPaintFunctionCorkscrewRC(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return CorkscrewRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return CorkscrewRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return CorkscrewRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return CorkscrewRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return CorkscrewRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return CorkscrewRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return CorkscrewRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return CorkscrewRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return CorkscrewRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return CorkscrewRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return CorkscrewRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return CorkscrewRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return CorkscrewRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return CorkscrewRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return CorkscrewRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return CorkscrewRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return CorkscrewRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return CorkscrewRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return CorkscrewRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return CorkscrewRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return CorkscrewRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return CorkscrewRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return CorkscrewRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return CorkscrewRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return CorkscrewRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return CorkscrewRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return CorkscrewRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return CorkscrewRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return CorkscrewRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return CorkscrewRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return CorkscrewRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return CorkscrewRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return CorkscrewRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return CorkscrewRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return CorkscrewRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return CorkscrewRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return CorkscrewRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return CorkscrewRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return CorkscrewRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return CorkscrewRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return CorkscrewRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return CorkscrewRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return CorkscrewRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return CorkscrewRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return CorkscrewRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return CorkscrewRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return CorkscrewRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return CorkscrewRCTrackRightQuarterTurn325DegDown; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return CorkscrewRCTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return CorkscrewRCTrackHalfLoopDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return CorkscrewRCTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return CorkscrewRCTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return CorkscrewRCTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return CorkscrewRCTrackRightCorkscrewDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return CorkscrewRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return CorkscrewRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return CorkscrewRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return CorkscrewRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return CorkscrewRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return CorkscrewRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return CorkscrewRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return CorkscrewRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return CorkscrewRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return CorkscrewRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return CorkscrewRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return CorkscrewRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return CorkscrewRCTrackBrakes; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return CorkscrewRCTrackOnRidePhoto; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return CorkscrewRCTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return CorkscrewRCTrack60DegUpToFlatLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return CorkscrewRCTrack60DegDownToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return CorkscrewRCTrackFlatTo60DegDownLongBase; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return CorkscrewRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return CorkscrewRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return CorkscrewRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return CorkscrewRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return CorkscrewRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return CorkscrewRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return CorkscrewRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return CorkscrewRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return CorkscrewRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return CorkscrewRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return CorkscrewRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return CorkscrewRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return CorkscrewRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return CorkscrewRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return CorkscrewRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return CorkscrewRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return CorkscrewRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return CorkscrewRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return CorkscrewRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return CorkscrewRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return CorkscrewRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return CorkscrewRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return CorkscrewRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return CorkscrewRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return CorkscrewRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return CorkscrewRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return CorkscrewRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return CorkscrewRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return CorkscrewRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return CorkscrewRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return CorkscrewRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return CorkscrewRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return CorkscrewRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return CorkscrewRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return CorkscrewRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return CorkscrewRCTrackBlockBrakes; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return CorkscrewRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return CorkscrewRCTrackDiagBlockBrakes; - case TrackElemType::Booster: + case TrackElemType::booster: return CorkscrewRCTrackBooster; - case TrackElemType::LeftTwistDownToUp: + case TrackElemType::leftTwistDownToUp: return CorkscrewRCTrackLeftTwistDownToUp; - case TrackElemType::RightTwistDownToUp: + case TrackElemType::rightTwistDownToUp: return CorkscrewRCTrackRightTwistDownToUp; - case TrackElemType::LeftTwistUpToDown: + case TrackElemType::leftTwistUpToDown: return CorkscrewRCTrackLeftTwistUpToDown; - case TrackElemType::RightTwistUpToDown: + case TrackElemType::rightTwistUpToDown: return CorkscrewRCTrackRightTwistUpToDown; // From Lay-down - case TrackElemType::LeftFlyerTwistUp: + case TrackElemType::leftFlyerTwistUp: return LayDownRCTrackLeftFlyerTwistUp; - case TrackElemType::RightFlyerTwistUp: + case TrackElemType::rightFlyerTwistUp: return LayDownRCTrackRightFlyerTwistUp; - case TrackElemType::FlyerHalfLoopUninvertedUp: + case TrackElemType::flyerHalfLoopUninvertedUp: return LayDownRCTrackFlyerHalfLoopUp; - case TrackElemType::LeftFlyerCorkscrewUp: + case TrackElemType::leftFlyerCorkscrewUp: return LayDownRCTrackLeftFlyerCorkscrewUp; - case TrackElemType::RightFlyerCorkscrewUp: + case TrackElemType::rightFlyerCorkscrewUp: return LayDownRCTrackRightFlyerCorkscrewUp; - case TrackElemType::FlyerHalfLoopUninvertedDown: + case TrackElemType::flyerHalfLoopUninvertedDown: return LayDownRCTrackHalfLoopUninvertedDown; // Added by OpenRCT2 // Small flat to steep - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return CorkscrewRCTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return CorkscrewRCTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return CorkscrewRCTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return CorkscrewRCTrack60DegDownToFlat; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return CorkscrewRCTrackDiagFlatTo60DegUp; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return CorkscrewRCTrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return CorkscrewRCTrackDiagFlatTo60DegDown; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return CorkscrewRCTrackDiag60DegDownToFlat; // Diagonal large flat to steep - case TrackElemType::DiagFlatToUp60LongBase: + case TrackElemType::diagFlatToUp60LongBase: return CorkscrewRCTrackDiagFlatTo60DegUpLongBase; - case TrackElemType::DiagUp60ToFlatLongBase: + case TrackElemType::diagUp60ToFlatLongBase: return CorkscrewRCTrackDiag60DegUpToFlatLongBase; - case TrackElemType::DiagFlatToDown60LongBase: + case TrackElemType::diagFlatToDown60LongBase: return CorkscrewRCTrackDiagFlatTo60DegDownLongBase; - case TrackElemType::DiagDown60ToFlatLongBase: + case TrackElemType::diagDown60ToFlatLongBase: return CorkscrewRCTrackDiag60DegDownToFlatLongBase; // Vertical slopes - case TrackElemType::Up90: + case TrackElemType::up90: return CorkscrewRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return CorkscrewRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return CorkscrewRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return CorkscrewRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return CorkscrewRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return CorkscrewRCTrack60DegDownTo90DegDown; // Vertical turns - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return CorkscrewRCTrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return CorkscrewRCTrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return CorkscrewRCTrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return CorkscrewRCTrackRightQuarterTurn190DegDown; // Banked slope transitions - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return CorkscrewRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return CorkscrewRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return CorkscrewRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return CorkscrewRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return CorkscrewRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return CorkscrewRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return CorkscrewRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return CorkscrewRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return CorkscrewRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return CorkscrewRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return CorkscrewRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return CorkscrewRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return CorkscrewRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return CorkscrewRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return CorkscrewRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return CorkscrewRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return CorkscrewRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return CorkscrewRCTrack25DegDownRightBanked; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return CorkscrewRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return CorkscrewRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return CorkscrewRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return CorkscrewRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return CorkscrewRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return CorkscrewRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return CorkscrewRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return CorkscrewRCTrackRightBanked25DegDownToFlat; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return CorkscrewRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return CorkscrewRCTrack25DegUpRightBanked; // Small banked sloped curves - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return CorkscrewRCTrackLeftBankedQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return CorkscrewRCTrackRightBankedQuarterTurn3Tile25DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return CorkscrewRCTrackLeftBankedQuarterTurn3Tile25DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return CorkscrewRCTrackRightBankedQuarterTurn3Tile25DegDown; // Medium banked sloped curves - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return CorkscrewRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return CorkscrewRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return CorkscrewRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return CorkscrewRCTrackRightBankedQuarterTurn525DegDown; // Large sloped curves - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return CorkscrewRCTrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return CorkscrewRCTrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return CorkscrewRCTrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return CorkscrewRCTrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return CorkscrewRCTrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return CorkscrewRCTrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return CorkscrewRCTrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return CorkscrewRCTrackRightEighthToOrthogonalDown25; // Large banked sloped curves - case TrackElemType::DiagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToLeftBankedUp25: return CorkscrewRCTrackDiagUp25ToLeftBankedUp25; - case TrackElemType::DiagUp25ToRightBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: return CorkscrewRCTrackDiagUp25ToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: return CorkscrewRCTrackDiagLeftBankedUp25ToUp25; - case TrackElemType::DiagRightBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: return CorkscrewRCTrackDiagRightBankedUp25ToUp25; - case TrackElemType::DiagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToLeftBankedDown25: return CorkscrewRCTrackDiagDown25ToLeftBankedDown25; - case TrackElemType::DiagDown25ToRightBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: return CorkscrewRCTrackDiagDown25ToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: return CorkscrewRCTrackDiagLeftBankedDown25ToDown25; - case TrackElemType::DiagRightBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: return CorkscrewRCTrackDiagRightBankedDown25ToDown25; - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: return CorkscrewRCTrackDiagLeftBankedFlatToLeftBankedUp25; - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: return CorkscrewRCTrackDiagRightBankedFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: return CorkscrewRCTrackDiagLeftBankedUp25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: return CorkscrewRCTrackDiagRightBankedUp25ToRightBankedFlat; - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: return CorkscrewRCTrackDiagLeftBankedFlatToLeftBankedDown25; - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: return CorkscrewRCTrackDiagRightBankedFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: return CorkscrewRCTrackDiagLeftBankedDown25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: return CorkscrewRCTrackDiagRightBankedDown25ToRightBankedFlat; - case TrackElemType::DiagUp25LeftBanked: + case TrackElemType::diagUp25LeftBanked: return CorkscrewRCTrackDiagUp25LeftBanked; - case TrackElemType::DiagUp25RightBanked: + case TrackElemType::diagUp25RightBanked: return CorkscrewRCTrackDiagUp25RightBanked; - case TrackElemType::DiagDown25LeftBanked: + case TrackElemType::diagDown25LeftBanked: return CorkscrewRCTrackDiagDown25LeftBanked; - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::diagDown25RightBanked: return CorkscrewRCTrackDiagDown25RightBanked; - case TrackElemType::DiagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToLeftBankedUp25: return CorkscrewRCTrackDiagFlatToLeftBankedUp25; - case TrackElemType::DiagFlatToRightBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: return CorkscrewRCTrackDiagFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToFlat: + case TrackElemType::diagLeftBankedUp25ToFlat: return CorkscrewRCTrackDiagLeftBankedUp25ToFlat; - case TrackElemType::DiagRightBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: return CorkscrewRCTrackDiagRightBankedUp25ToFlat; - case TrackElemType::DiagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToLeftBankedDown25: return CorkscrewRCTrackDiagFlatToLeftBankedDown25; - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return CorkscrewRCTrackDiagFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToFlat: + case TrackElemType::diagLeftBankedDown25ToFlat: return CorkscrewRCTrackDiagLeftBankedDown25ToFlat; - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return CorkscrewRCTrackDiagRightBankedDown25ToFlat; - case TrackElemType::LeftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagUp25: return CorkscrewRCTrackLeftEighthBankToDiagUp25; - case TrackElemType::RightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: return CorkscrewRCTrackRightEighthBankToDiagUp25; - case TrackElemType::LeftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToDiagDown25: return CorkscrewRCTrackLeftEighthBankToDiagDown25; - case TrackElemType::RightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: return CorkscrewRCTrackRightEighthBankToDiagDown25; - case TrackElemType::LeftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalUp25: return CorkscrewRCTrackLeftEighthBankToOrthogonalUp25; - case TrackElemType::RightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: return CorkscrewRCTrackRightEighthBankToOrthogonalUp25; - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return CorkscrewRCTrackLeftEighthBankToOrthogonalDown25; - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return CorkscrewRCTrackRightEighthBankToOrthogonalDown25; // Small banked to unbanked curves - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return CorkscrewRCTrackLeftBankToLeftQuarterTurn325DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return CorkscrewRCTrackRightBankToRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return CorkscrewRCTrackLeftQuarterTurn325DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return CorkscrewRCTrackRightQuarterTurn325DegDownToRightBank; // Large corkscrews - case TrackElemType::LeftLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewUp: return CorkscrewRCTrackLeftLargeCorkscrewUp; - case TrackElemType::RightLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: return CorkscrewRCTrackRightLargeCorkscrewUp; - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewDown: return CorkscrewRCTrackLeftLargeCorkscrewDown; - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: return CorkscrewRCTrackRightLargeCorkscrewDown; // Quarter loops - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return CorkscrewRCTrack90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return CorkscrewRCTrackInvertedFlatTo90DegQuarterLoopDown; // Medium half loops - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return CorkscrewRCTrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return CorkscrewRCTrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return CorkscrewRCTrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return CorkscrewRCTrackRightMediumHalfLoopDown; // Large half loops - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return CorkscrewRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return CorkscrewRCTrackRightLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return CorkscrewRCTrackLeftLargeHalfLoopDown; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return CorkscrewRCTrackRightLargeHalfLoopDown; // Barrel rolls - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return CorkscrewRCTrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return CorkscrewRCTrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return CorkscrewRCTrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return CorkscrewRCTrackRightBarrelRollDownToUp; // Zero g rolls - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return CorkscrewRCTrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return CorkscrewRCTrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return CorkscrewRCTrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return CorkscrewRCTrackRightZeroGRollDown; // Large zero g rolls - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return CorkscrewRCTrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return CorkscrewRCTrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return CorkscrewRCTrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return CorkscrewRCTrackRightLargeZeroGRollDown; // Dive loops - case TrackElemType::LeftEighthDiveLoopUpToOrthogonal: + case TrackElemType::leftEighthDiveLoopUpToOrthogonal: return CorkscrewRCTrackLeftEighthDiveLoopUpToOrthogonal; - case TrackElemType::RightEighthDiveLoopUpToOrthogonal: + case TrackElemType::rightEighthDiveLoopUpToOrthogonal: return CorkscrewRCTrackRightEighthDiveLoopUpToOrthogonal; - case TrackElemType::LeftEighthDiveLoopDownToDiag: + case TrackElemType::leftEighthDiveLoopDownToDiag: return CorkscrewRCTrackLeftEighthDiveLoopDownToDiag; - case TrackElemType::RightEighthDiveLoopDownToDiag: + case TrackElemType::rightEighthDiveLoopDownToDiag: return CorkscrewRCTrackRightEighthDiveLoopToDownOrthogonal; default: diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp index 4c02e98cd189..3fe74a1bbcb3 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp @@ -38,7 +38,7 @@ static void FlyingRCTrackStation( { 17155, 17151 }, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction][1]), { 0, 0, height }, @@ -851,35 +851,35 @@ TrackPaintFunction GetTrackPaintFunctionFlyingRC(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return FlyingRCTrackStation; // OpenRCT2-specific paint code - case TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop: + case TrackElemType::multiDimInvertedFlatToDown90QuarterLoop: return FlyingRCTrackInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop: + case TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop: return FlyingRCTrack90DegToInvertedFlatQuarterLoopUp; // OpenRCT2-specific track elements - case TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp: + case TrackElemType::leftFlyerLargeHalfLoopUninvertedUp: return TwisterRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightFlyerLargeHalfLoopUninvertedUp: + case TrackElemType::rightFlyerLargeHalfLoopUninvertedUp: return TwisterRCTrackRightLargeHalfLoopUp; - case TrackElemType::LeftFlyerLargeHalfLoopInvertedDown: + case TrackElemType::leftFlyerLargeHalfLoopInvertedDown: return TwisterRCTrackLeftLargeHalfLoopDown; - case TrackElemType::RightFlyerLargeHalfLoopInvertedDown: + case TrackElemType::rightFlyerLargeHalfLoopInvertedDown: return TwisterRCTrackRightLargeHalfLoopDown; - case TrackElemType::FlyerHalfLoopInvertedUp: + case TrackElemType::flyerHalfLoopInvertedUp: return FlyingRCTrackHalfLoopInvertedUp; - case TrackElemType::FlyerHalfLoopUninvertedDown: + case TrackElemType::flyerHalfLoopUninvertedDown: return FlyingRCTrackHalfLoopUninvertedDown; - case TrackElemType::LeftFlyerLargeHalfLoopInvertedUp: + case TrackElemType::leftFlyerLargeHalfLoopInvertedUp: return FlyingRCTrackLeftFlyingLargeHalfLoopInvertedUp; - case TrackElemType::RightFlyerLargeHalfLoopInvertedUp: + case TrackElemType::rightFlyerLargeHalfLoopInvertedUp: return FlyingRCTrackRightFlyingLargeHalfLoopInvertedUp; - case TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown: + case TrackElemType::leftFlyerLargeHalfLoopUninvertedDown: return FlyingRCTrackLeftFlyingLargeHalfLoopUninvertedDown; - case TrackElemType::RightFlyerLargeHalfLoopUninvertedDown: + case TrackElemType::rightFlyerLargeHalfLoopUninvertedDown: return FlyingRCTrackRightFlyingLargeHalfLoopUninvertedDown; default: return GetTrackPaintFunctionTwisterRC(trackType); diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp index 72d9cf94e9d7..611424075ef9 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp @@ -8916,281 +8916,281 @@ TrackPaintFunction GetTrackPaintFunctionFlyingRCInverted(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return InvertedFlyingRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return InvertedFlyingRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return InvertedFlyingRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return InvertedFlyingRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return InvertedFlyingRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return InvertedFlyingRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return InvertedFlyingRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return InvertedFlyingRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return InvertedFlyingRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return InvertedFlyingRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return InvertedFlyingRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return InvertedFlyingRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return InvertedFlyingRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return InvertedFlyingRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return InvertedFlyingRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return InvertedFlyingRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return InvertedFlyingRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return InvertedFlyingRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return InvertedFlyingRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return InvertedFlyingRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return InvertedFlyingRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return InvertedFlyingRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return InvertedFlyingRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return InvertedFlyingRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return InvertedFlyingRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return InvertedFlyingRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return InvertedFlyingRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return InvertedFlyingRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return InvertedFlyingRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return InvertedFlyingRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return InvertedFlyingRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return InvertedFlyingRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return InvertedFlyingRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return InvertedFlyingRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return InvertedFlyingRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return InvertedFlyingRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return InvertedFlyingRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return InvertedFlyingRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return InvertedFlyingRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return InvertedFlyingRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return InvertedFlyingRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return InvertedFlyingRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return InvertedFlyingRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return InvertedFlyingRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return InvertedFlyingRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return InvertedFlyingRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return InvertedFlyingRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return InvertedFlyingRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return InvertedFlyingRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return InvertedFlyingRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return InvertedFlyingRCTrackBrakes; - case TrackElemType::LeftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeUp: return InvertedFlyingRCTrackLeftQuarterBankedHelixLargeUp; - case TrackElemType::RightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeUp: return InvertedFlyingRCTrackRightQuarterBankedHelixLargeUp; - case TrackElemType::LeftQuarterBankedHelixLargeDown: + case TrackElemType::leftQuarterBankedHelixLargeDown: return InvertedFlyingRCTrackLeftQuarterBankedHelixLargeDown; - case TrackElemType::RightQuarterBankedHelixLargeDown: + case TrackElemType::rightQuarterBankedHelixLargeDown: return InvertedFlyingRCTrackRightQuarterBankedHelixLargeDown; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return InvertedFlyingRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return InvertedFlyingRCTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return InvertedFlyingRCTrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return InvertedFlyingRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return InvertedFlyingRCTrack25DegDownRightBanked; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return InvertedFlyingRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return InvertedFlyingRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return InvertedFlyingRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return InvertedFlyingRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return InvertedFlyingRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return InvertedFlyingRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return InvertedFlyingRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return InvertedFlyingRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return InvertedFlyingRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return InvertedFlyingRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return InvertedFlyingRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return InvertedFlyingRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return InvertedFlyingRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return InvertedFlyingRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return InvertedFlyingRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return InvertedFlyingRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return InvertedFlyingRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return InvertedFlyingRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return InvertedFlyingRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return InvertedFlyingRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return InvertedFlyingRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return InvertedFlyingRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return InvertedFlyingRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return InvertedFlyingRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return InvertedFlyingRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return InvertedFlyingRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return InvertedFlyingRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return InvertedFlyingRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return InvertedFlyingRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return InvertedFlyingRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return InvertedFlyingRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return InvertedFlyingRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return InvertedFlyingRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return InvertedFlyingRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return InvertedFlyingRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return InvertedFlyingRCTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return InvertedFlyingRCTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return InvertedFlyingRCTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return InvertedFlyingRCTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return InvertedFlyingRCTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return InvertedFlyingRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return InvertedFlyingRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return InvertedFlyingRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return InvertedFlyingRCTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return InvertedFlyingRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return InvertedFlyingRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return InvertedFlyingRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return InvertedFlyingRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return InvertedFlyingRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return InvertedFlyingRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return InvertedFlyingRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return InvertedFlyingRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return InvertedFlyingRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return InvertedFlyingRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return InvertedFlyingRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return InvertedFlyingRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return InvertedFlyingRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return InvertedFlyingRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return InvertedFlyingRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return InvertedFlyingRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return InvertedFlyingRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return InvertedFlyingRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return InvertedFlyingRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return InvertedFlyingRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return InvertedFlyingRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return InvertedFlyingRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return InvertedFlyingRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return InvertedFlyingRCTrackRightBanked25DegDownToFlat; - case TrackElemType::LeftFlyerTwistDown: + case TrackElemType::leftFlyerTwistDown: return InvertedFlyingRCTrackLeftFlyerTwistDown; - case TrackElemType::RightFlyerTwistDown: + case TrackElemType::rightFlyerTwistDown: return InvertedFlyingRCTrackRightFlyerTwistDown; - case TrackElemType::FlyerHalfLoopInvertedDown: + case TrackElemType::flyerHalfLoopInvertedDown: return FlyingRCTrackFlyerHalfLoopDown; // OpenRCT2-specific paint code - case TrackElemType::Booster: + case TrackElemType::booster: return InvertedFlyingRCTrackBooster; - case TrackElemType::Up90: + case TrackElemType::up90: return InvertedFlyingRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return InvertedFlyingRCTrack90DegDown; // OpenRCT2-specific track elements - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return InvertedFlyingRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return InvertedFlyingRCTrackDiagBlockBrakes; default: diff --git a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp index 96286a0e3d9a..592d8e37445e 100644 --- a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp @@ -94,7 +94,7 @@ static void HeartlineTwisterRCTrackFlat( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -124,7 +124,7 @@ static void HeartlineTwisterRCTrackStation( PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction][1]), { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); } TrackPaintUtilDrawStationTunnel(session, direction, height); @@ -214,7 +214,7 @@ static void HeartlineTwisterRCTrack25DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -311,7 +311,7 @@ static void HeartlineTwisterRCTrack60DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -408,7 +408,7 @@ static void HeartlineTwisterRCTrackFlatTo25DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -505,7 +505,7 @@ static void HeartlineTwisterRCTrack25DegUpTo60DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -602,7 +602,7 @@ static void HeartlineTwisterRCTrack60DegUpTo25DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -699,7 +699,7 @@ static void HeartlineTwisterRCTrack25DegUpToFlat( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -808,7 +808,7 @@ static void HeartlineTwisterRCTrackHeartlineTransferUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -883,7 +883,7 @@ static void HeartlineTwisterRCTrackHeartlineTransferUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -926,7 +926,7 @@ static void HeartlineTwisterRCTrackHeartlineTransferUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1097,7 +1097,7 @@ static void HeartlineTwisterRCTrackHeartlineTransferDown( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1140,7 +1140,7 @@ static void HeartlineTwisterRCTrackHeartlineTransferDown( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1183,7 +1183,7 @@ static void HeartlineTwisterRCTrackHeartlineTransferDown( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -1431,7 +1431,7 @@ static void HeartlineTwisterRCTrackLeftHeartlineRoll( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -1670,7 +1670,7 @@ static void HeartlineTwisterRCTrackRightHeartlineRoll( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -1682,43 +1682,43 @@ TrackPaintFunction GetTrackPaintFunctionHeartlineTwisterRC(OpenRCT2::TrackElemTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return HeartlineTwisterRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return HeartlineTwisterRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return HeartlineTwisterRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return HeartlineTwisterRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return HeartlineTwisterRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return HeartlineTwisterRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return HeartlineTwisterRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return HeartlineTwisterRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return HeartlineTwisterRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return HeartlineTwisterRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return HeartlineTwisterRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return HeartlineTwisterRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return HeartlineTwisterRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return HeartlineTwisterRCTrack25DegDownToFlat; - case TrackElemType::HeartLineTransferUp: + case TrackElemType::heartLineTransferUp: return HeartlineTwisterRCTrackHeartlineTransferUp; - case TrackElemType::HeartLineTransferDown: + case TrackElemType::heartLineTransferDown: return HeartlineTwisterRCTrackHeartlineTransferDown; - case TrackElemType::LeftHeartLineRoll: + case TrackElemType::leftHeartLineRoll: return HeartlineTwisterRCTrackLeftHeartlineRoll; - case TrackElemType::RightHeartLineRoll: + case TrackElemType::rightHeartLineRoll: return HeartlineTwisterRCTrackRightHeartlineRoll; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/HybridCoaster.cpp b/src/openrct2/paint/track/coaster/HybridCoaster.cpp index 1c3663141ad0..e77d8c816c5a 100644 --- a/src/openrct2/paint/track/coaster/HybridCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HybridCoaster.cpp @@ -67,7 +67,7 @@ namespace OpenRCT2::HybridRC { (SPR_TRACKS_HYBRID_TRACK_BRAKE + 1), (SPR_TRACKS_HYBRID_TRACK_BLOCK_BRAKE + 1) }, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { PaintAddImageAsParentRotated( session, direction, GetTrackColour(session).WithIndex(imageIds[direction][1]), { 0, 0, height }, @@ -1380,7 +1380,7 @@ namespace OpenRCT2::HybridRC session, 3, height, direction, trackSequence, images[trackElement.HasChain()], defaultDiagTileOffsets, defaultDiagBoundLengths, nullptr, 0, GetTrackColour(session)); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -14550,437 +14550,437 @@ namespace OpenRCT2::HybridRC { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return TrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return TrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return Track25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return Track60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return TrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return Track25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return Track60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return Track25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return Track25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return Track60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return TrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return Track25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return Track60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return Track25DegDownToFlat; - case TrackElemType::Up90: + case TrackElemType::up90: return Track90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return Track90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return Track60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return Track90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return Track90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return Track60DegDownTo90DegDown; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return TrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return TrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return TrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return TrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return TrackLeftBankToflat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return TrackRightBankToflat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return TrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return TrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return TrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return TrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return Track25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return Track25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return TrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return TrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return Track25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return Track25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return TrackLeftbank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return TrackRightbank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return TrackLeftQuarterTurn5Tile25DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return TrackRightQuarterTurn5Tile25DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return TrackLeftQuarterTurn5Tile25DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return TrackRightQuarterTurn5Tile25DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return TrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return TrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return TrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return TrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return TrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return TrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return TrackLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return TrackRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return TrackLeftQuarterTurn3Tile25DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return TrackRightQuarterTurn3Tile25DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return TrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return TrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return TrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return TrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return TrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return TrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return TrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return TrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return TrackLeftQuarterTurn1Tile60DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return TrackRightQuarterTurn1Tile60DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return TrackLeftQuarterTurn1Tile60DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return TrackRightQuarterTurn1Tile60DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return Trackbrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return Track25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return Track25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return TrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return Track25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return Track25DegDownRightBanked; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return TrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return Track60DegUpToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return TrackFlatTo60DegDownLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return Track60DegDownToFlatLongBase; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return TrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return TrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return TrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return TrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return TrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return TrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return TrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return TrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return TrackDiagFlat; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return TrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return TrackDiagBlockBrakes; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return TrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return TrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return TrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return TrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return TrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return TrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return TrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return TrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return TrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return TrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return TrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return TrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return TrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return TrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return TrackDiagLeftBankToflat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return TrackDiagRightBankToflat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return TrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return TrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return TrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return TrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return TrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return TrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return TrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return TrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return TrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return TrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return TrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return TrackLeftBankedQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return TrackRightBankedQuarterTurn3Tile25DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return TrackLeftBankedQuarterTurn3Tile25DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return TrackRightBankedQuarterTurn3Tile25DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return TrackLeftBankedQuarterTurn5Tile25DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return TrackRightBankedQuarterTurn5Tile25DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return TrackLeftBankedQuarterTurn5Tile25DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return TrackRightBankedQuarterTurn5Tile25DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return Track25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return Track25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return TrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return TrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return Track25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return Track25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return TrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return TrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return TrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return TrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return TrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return TrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return TrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return TrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return TrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return TrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return TrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return TrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return TrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return TrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return TrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return TrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return TrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return TrackRightBanked25DegDownToFlat; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return TrackLeftBankToLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return TrackRightBankToRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return TrackLeftQuarterTurn3Tile25DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return TrackRightQuarterTurn3Tile25DegDownToRightBank; - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return TrackLeftQuarterTurn1Tile90DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return TrackRightQuarterTurn1Tile90DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return TrackLeftQuarterTurn1Tile90DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return TrackRightQuarterTurn1Tile90DegDown; - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return TrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return TrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return TrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return TrackRightBarrelRollDownToUp; - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return TrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return TrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return TrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return TrackRightZeroGRollDown; - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return TrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return TrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return TrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return TrackRightLargeZeroGRollDown; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return Track90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return TrackInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return TrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return TrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return TrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return TrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return TrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return TrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return TrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return TrackRightEighthToOrthogonalDown25; - case TrackElemType::DiagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToLeftBankedUp25: return TrackDiagUp25ToLeftBankedUp25; - case TrackElemType::DiagUp25ToRightBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: return TrackDiagUp25ToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: return TrackDiagLeftBankedUp25ToUp25; - case TrackElemType::DiagRightBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: return TrackDiagRightBankedUp25ToUp25; - case TrackElemType::DiagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToLeftBankedDown25: return TrackDiagDown25ToLeftBankedDown25; - case TrackElemType::DiagDown25ToRightBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: return TrackDiagDown25ToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: return TrackDiagLeftBankedDown25ToDown25; - case TrackElemType::DiagRightBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: return TrackDiagRightBankedDown25ToDown25; - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: return TrackDiagLeftBankedFlatToLeftBankedUp25; - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: return TrackDiagRightBankedFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: return TrackDiagLeftBankedUp25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: return TrackDiagRightBankedUp25ToRightBankedFlat; - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: return TrackDiagLeftBankedFlatToLeftBankedDown25; - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: return TrackDiagRightBankedFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: return TrackDiagLeftBankedDown25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: return TrackDiagRightBankedDown25ToRightBankedFlat; - case TrackElemType::DiagUp25LeftBanked: + case TrackElemType::diagUp25LeftBanked: return TrackDiagUp25LeftBanked; - case TrackElemType::DiagUp25RightBanked: + case TrackElemType::diagUp25RightBanked: return TrackDiagUp25RightBanked; - case TrackElemType::DiagDown25LeftBanked: + case TrackElemType::diagDown25LeftBanked: return TrackDiagDown25LeftBanked; - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::diagDown25RightBanked: return TrackDiagDown25RightBanked; - case TrackElemType::DiagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToLeftBankedUp25: return TrackDiagFlatToLeftBankedUp25; - case TrackElemType::DiagFlatToRightBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: return TrackDiagFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToFlat: + case TrackElemType::diagLeftBankedUp25ToFlat: return TrackDiagLeftBankedUp25ToFlat; - case TrackElemType::DiagRightBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: return TrackDiagRightBankedUp25ToFlat; - case TrackElemType::DiagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToLeftBankedDown25: return TrackDiagFlatToLeftBankedDown25; - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return TrackDiagFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToFlat: + case TrackElemType::diagLeftBankedDown25ToFlat: return TrackDiagLeftBankedDown25ToFlat; - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return TrackDiagRightBankedDown25ToFlat; - case TrackElemType::LeftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagUp25: return TrackLeftEighthBankToDiagUp25; - case TrackElemType::RightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: return TrackRightEighthBankToDiagUp25; - case TrackElemType::LeftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToDiagDown25: return TrackLeftEighthBankToDiagDown25; - case TrackElemType::RightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: return TrackRightEighthBankToDiagDown25; - case TrackElemType::LeftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalUp25: return TrackLeftEighthBankToOrthogonalUp25; - case TrackElemType::RightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: return TrackRightEighthBankToOrthogonalUp25; - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return TrackLeftEighthBankToOrthogonalDown25; - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return TrackRightEighthBankToOrthogonalDown25; - case TrackElemType::PoweredLift: + case TrackElemType::poweredLift: return TrackpoweredLift; - case TrackElemType::Booster: + case TrackElemType::booster: return Trackbooster; - case TrackElemType::Down25Brakes: + case TrackElemType::down25Brakes: return Track25DegDownBrakes; - case TrackElemType::DiagDown25Brakes: + case TrackElemType::diagDown25Brakes: return TrackDiag25DegDownBrakes; default: diff --git a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp index bc415ec3fce9..0c8fb3f456ac 100644 --- a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp @@ -1386,63 +1386,63 @@ TrackPaintFunction GetTrackPaintFunctionInvertedHairpinRC(OpenRCT2::TrackElemTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return InvertedHairpinRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return InvertedHairpinRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return InvertedHairpinRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return InvertedHairpinRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return InvertedHairpinRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return InvertedHairpinRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return InvertedHairpinRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return InvertedHairpinRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return InvertedHairpinRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return InvertedHairpinRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return InvertedHairpinRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return InvertedHairpinRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return InvertedHairpinRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return InvertedHairpinRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return InvertedHairpinRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return InvertedHairpinRCTrackRightQuarterTurn3; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return InvertedHairpinRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return InvertedHairpinRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return InvertedHairpinRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return InvertedHairpinRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return InvertedHairpinRCTrackLeftQuarterTurn1; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return InvertedHairpinRCTrackRightQuarterTurn1; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return InvertedHairpinRCTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return InvertedHairpinRCTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return InvertedHairpinRCTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return InvertedHairpinRCTrack60DegDownToFlat; - case TrackElemType::Brakes: + case TrackElemType::brakes: return InvertedHairpinRCTrackBrakes; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return InvertedHairpinRCTrackBlockBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp index 80da907f1546..71a7469c681b 100644 --- a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp @@ -762,55 +762,55 @@ TrackPaintFunction GetTrackPaintFunctionInvertedImpulseRC(OpenRCT2::TrackElemTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return InvertedImpulseRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return InvertedImpulseRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return InvertedImpulseRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return InvertedImpulseRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return InvertedImpulseRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return InvertedImpulseRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return InvertedImpulseRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return InvertedImpulseRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return InvertedImpulseRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return InvertedImpulseRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return InvertedImpulseRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return InvertedImpulseRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return InvertedImpulseRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return InvertedImpulseRCTrack25DegDownToFlat; - case TrackElemType::Up90: + case TrackElemType::up90: return InvertedImpulseRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return InvertedImpulseRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return InvertedImpulseRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return InvertedImpulseRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return InvertedImpulseRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return InvertedImpulseRCTrack60DegDownTo90DegDown; - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return InvertedImpulseRCTrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return InvertedImpulseRCTrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return InvertedImpulseRCTrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return InvertedImpulseRCTrackRightQuarterTurn190DegDown; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp index eb790d55193b..08cfd168c988 100644 --- a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp @@ -11334,302 +11334,302 @@ TrackPaintFunction GetTrackPaintFunctionInvertedRC(OpenRCT2::TrackElemType track { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return InvertedRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return InvertedRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return InvertedRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return InvertedRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return InvertedRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return InvertedRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return InvertedRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return InvertedRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return InvertedRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return InvertedRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return InvertedRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return InvertedRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return InvertedRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return InvertedRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return InvertedRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return InvertedRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return InvertedRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return InvertedRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return InvertedRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return InvertedRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return InvertedRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return InvertedRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return InvertedRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return InvertedRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return InvertedRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return InvertedRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return InvertedRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return InvertedRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return InvertedRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return InvertedRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return InvertedRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return InvertedRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return InvertedRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return InvertedRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return InvertedRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return InvertedRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return InvertedRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return InvertedRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return InvertedRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return InvertedRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return InvertedRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return InvertedRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return InvertedRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return InvertedRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return InvertedRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return InvertedRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return InvertedRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return InvertedRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftTwistDownToUp: + case TrackElemType::leftTwistDownToUp: return InvertedRCTrackLeftTwistDownToUp; - case TrackElemType::RightTwistDownToUp: + case TrackElemType::rightTwistDownToUp: return InvertedRCTrackRightTwistDownToUp; - case TrackElemType::LeftTwistUpToDown: + case TrackElemType::leftTwistUpToDown: return InvertedRCTrackLeftTwistUpToDown; - case TrackElemType::RightTwistUpToDown: + case TrackElemType::rightTwistUpToDown: return InvertedRCTrackRightTwistUpToDown; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return InvertedRCTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return InvertedRCTrackHalfLoopDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return InvertedRCTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return InvertedRCTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return InvertedRCTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return InvertedRCTrackRightCorkscrewDown; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return InvertedRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return InvertedRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return InvertedRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return InvertedRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return InvertedRCTrackBrakes; - case TrackElemType::LeftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeUp: return InvertedRCTrackLeftQuarterBankedHelixLargeUp; - case TrackElemType::RightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeUp: return InvertedRCTrackRightQuarterBankedHelixLargeUp; - case TrackElemType::LeftQuarterBankedHelixLargeDown: + case TrackElemType::leftQuarterBankedHelixLargeDown: return InvertedRCTrackLeftQuarterBankedHelixLargeDown; - case TrackElemType::RightQuarterBankedHelixLargeDown: + case TrackElemType::rightQuarterBankedHelixLargeDown: return InvertedRCTrackRightQuarterBankedHelixLargeDown; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return InvertedRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return InvertedRCTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return InvertedRCTrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return InvertedRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return InvertedRCTrack25DegDownRightBanked; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return InvertedRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return InvertedRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return InvertedRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return InvertedRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return InvertedRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return InvertedRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return InvertedRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return InvertedRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return InvertedRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return InvertedRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return InvertedRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return InvertedRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return InvertedRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return InvertedRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return InvertedRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return InvertedRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return InvertedRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return InvertedRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return InvertedRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return InvertedRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return InvertedRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return InvertedRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return InvertedRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return InvertedRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return InvertedRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return InvertedRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return InvertedRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return InvertedRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return InvertedRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return InvertedRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return InvertedRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return InvertedRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return InvertedRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return InvertedRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return InvertedRCTrackDiagRightBank; - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return InvertedRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return InvertedRCTrackRightLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return InvertedRCTrackLeftLargeHalfLoopDown; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return InvertedRCTrackRightLargeHalfLoopDown; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return InvertedRCTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return InvertedRCTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return InvertedRCTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return InvertedRCTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return InvertedRCTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return InvertedRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return InvertedRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return InvertedRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return InvertedRCTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return InvertedRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return InvertedRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return InvertedRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return InvertedRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return InvertedRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return InvertedRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return InvertedRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return InvertedRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return InvertedRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return InvertedRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return InvertedRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return InvertedRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return InvertedRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return InvertedRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return InvertedRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return InvertedRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return InvertedRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return InvertedRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return InvertedRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return InvertedRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return InvertedRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return InvertedRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return InvertedRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return InvertedRCTrackRightBanked25DegDownToFlat; - case TrackElemType::DiagBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBrakes: + case TrackElemType::diagBlockBrakes: return InvertedRCTrackDiagBrakes; - case TrackElemType::Booster: + case TrackElemType::booster: return InvertedRCTrackBooster; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp index ef3ebab82e4e..4674e9edd989 100644 --- a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp @@ -1892,7 +1892,7 @@ static void JuniorRCPaintStation( if (direction == 0 || direction == 2) { // height += 2 (height) - if (trackElement.GetTrackType() == TrackElemType::EndStation && TSubType == JuniorRCSubType::Junior) + if (trackElement.GetTrackType() == TrackElemType::endStation && TSubType == JuniorRCSubType::Junior) { imageId = session.TrackColours.WithIndex(junior_rc_track_pieces_block_brake[isBraked][direction]); } @@ -1905,7 +1905,7 @@ static void JuniorRCPaintStation( else if (direction == 1 || direction == 3) { // height += 2 (height) - if (trackElement.GetTrackType() == TrackElemType::EndStation && TSubType == JuniorRCSubType::Junior) + if (trackElement.GetTrackType() == TrackElemType::endStation && TSubType == JuniorRCSubType::Junior) { imageId = session.TrackColours.WithIndex(junior_rc_track_pieces_block_brake[isBraked][direction]); } @@ -5772,225 +5772,225 @@ TrackPaintFunction GetTrackPaintFunctionJuniorRCTemplate(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return JuniorRCPaintTrackFlat; - case TrackElemType::EndStation: + case TrackElemType::endStation: return JuniorRCPaintStation; - case TrackElemType::BeginStation: + case TrackElemType::beginStation: return JuniorRCPaintStation; - case TrackElemType::MiddleStation: + case TrackElemType::middleStation: return JuniorRCPaintStation; - case TrackElemType::Up25: + case TrackElemType::up25: return JuniorRCPaintTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return JuniorRCPaintTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return JuniorRCPaintTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return JuniorRCPaintTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return JuniorRCPaintTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return JuniorRCPaintTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return JuniorRC25DegDownPaintSetup; - case TrackElemType::Down60: + case TrackElemType::down60: return JuniorRC60DegDownPaintSetup; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return JuniorRCFlatTo25DegDownPaintSetup; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return JuniorRC25DegDownTo60DegDownPaintSetup; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return JuniorRC60DegDownTo25DegDownPaintSetup; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return JuniorRC25DegDownToFlatPaintSetup; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return JuniorRCLeftQuarterTurn5TilesPaintSetup; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return JuniorRCRightQuarterTurn5TilesPaintSetup; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return JuniorRCFlatToLeftBankPaintSetup; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return JuniorRCFlatToRightBankPaintSetup; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return JuniorRCLeftBankToFlatPaintSetup; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return JuniorRCRightBankToFlatPaintSetup; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return JuniorRCBankedLeftQuarterTurn5TilesPaintSetup; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return JuniorRCBankedRightQuarterTurn5TilesPaintSetup; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return JuniorRCLeftBankTo25DegUpPaintSetup; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return JuniorRCRightBankTo25DegUpPaintSetup; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return JuniorRC25DegUpToLeftBankPaintSetup; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return JuniorRC25DegUpToRightBankPaintSetup; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return JuniorRCLeftBankTo25DegDownPaintSetup; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return JuniorRCRightBankTo25DegDownPaintSetup; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return JuniorRC25DegDownToLeftBankPaintSetup; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return JuniorRC25DegDownToRightBankPaintSetup; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return JuniorRCLeftBankPaintSetup; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return JuniorRCRightBankPaintSetup; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return JuniorRCPaintTrackLeftQuarterTurn5Tiles25DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return JuniorRCPaintTrackRightQuarterTurn5Tiles25DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return JuniorRCLeftQuarterTurn5Tiles25DegDownPaintSetup; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return JuniorRCRightQuarterTurn5Tiles25DegDownPaintSetup; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return JuniorRCSBendLeftPaintSetup; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return JuniorRCSBendRightPaintSetup; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return JuniorRCLeftQuarterTurn3TilesPaintSetup; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return JuniorRCRightQuarterTurn3TilesPaintSetup; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return JuniorRCLeftQuarterTurn3TilesBankPaintSetup; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return JuniorRCRightQuarterTurn3TilesBankPaintSetup; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return JuniorRCLeftQuarterTurn3Tiles25DegUpPaintSetup; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return JuniorRCPaintTrackRightQuarterTurn3Tiles25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return JuniorRCLeftQuarterTurn3Tiles25DegDownPaintSetup; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return JuniorRCPaintTrackRightQuarterTurn3Tiles25DegDown; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return JuniorRCFlatTo60DegUpPaintSetup; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return JuniorRC60DegUpToFlatPaintSetup; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return JuniorRCFlatTo60DegDownPaintSetup; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return JuniorRC60DegDownToFlatPaintSetup; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return JuniorRCLeftHalfBankedHelixUpSmallPaintSetup; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return JuniorRCRightHalfBankedHelixUpSmallPaintSetup; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return JuniorRCLeftHalfBankedHelixDownSmallPaintSetup; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return JuniorRCRightHalfBankedHelixDownSmallPaintSetup; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return JuniorRCLeftHalfBankedHelixUpLargePaintSetup; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return JuniorRCRightHalfBankedHelixUpLargePaintSetup; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return JuniorRCLeftHalfBankedHelixDownLargePaintSetup; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return JuniorRCRightHalfBankedHelixDownLargePaintSetup; - case TrackElemType::Brakes: + case TrackElemType::brakes: return JuniorRCBrakePaintSetup; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return JuniorRCLeftEighthToDiagPaintSetup; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return JuniorRCRightEighthToDiagPaintSetup; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return JuniorRCLeftEighthToOrthogonalPaintSetup; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return JuniorRCRightEighthToOrthogonalPaintSetup; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return JuniorRCLeftEighthToDiagBankPaintSetup; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return JuniorRCRightEighthToDiagBankPaintSetup; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return JuniorRCLeftEighthToOrthogonalBankPaintSetup; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return JuniorRCRightEighthToOrthogonalBankPaintSetup; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return JuniorRCPaintTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return JuniorRCPaintTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return JuniorRCPaintTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return JuniorRCPaintTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return JuniorRCPaintTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return JuniorRCPaintTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return JuniorRCPaintTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return JuniorRCPaintTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return JuniorRCPaintTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return JuniorRCPaintTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return JuniorRCPaintTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return JuniorRCPaintTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return JuniorRCPaintTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return JuniorRCDiagFlatToLeftBankPaintSetup; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return JuniorRCDiagFlatToRightBankPaintSetup; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return JuniorRCDiagLeftBankToFlatPaintSetup; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return JuniorRCDiagRightBankToFlatPaintSetup; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return JuniorRCDiagLeftBankTo25DegUpPaintSetup; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return JuniorRCDiagRightBankTo25DegUpPaintSetup; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return JuniorRCDiag25DegUpToLeftBankPaintSetup; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return JuniorRCDiag25DegUpToRightBankPaintSetup; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return JuniorRCDiagLeftBankTo25DegDownPaintSetup; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return JuniorRCDiagRightBankTo25DegDownPaintSetup; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return JuniorRCDiag25DegDownToLeftBankPaintSetup; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return JuniorRCDiag25DegDownToRightBankPaintSetup; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return JuniorRCDiagLeftBankPaintSetup; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return JuniorRCDiagRightBankPaintSetup; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return JuniorRCBlockBrakePaintSetup; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return JuniorRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return JuniorRCTrackDiagBlockBrakes; - case TrackElemType::Booster: + case TrackElemType::booster: return JuniorRCBoosterPaintSetup; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return JuniorRCPaintTrackDiag60DegDownToFlat; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return JuniorRCPaintTrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return JuniorRCPaintTrackDiagFlatTo60DegUp; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return JuniorRCPaintTrackDiagFlatTo60DegDown; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return JuniorRCTrackOnRidePhoto; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp index 68026a54ffa7..73812824af00 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp @@ -182,7 +182,7 @@ static void LatticeTriangleTrackStation( 18085, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -19560,510 +19560,510 @@ TrackPaintFunction GetTrackPaintFunctionLatticeTriangleTrack(OpenRCT2::TrackElem { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return LatticeTriangleTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return LatticeTriangleTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return LatticeTriangleTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return LatticeTriangleTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return LatticeTriangleTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return LatticeTriangleTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return LatticeTriangleTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return LatticeTriangleTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return LatticeTriangleTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return LatticeTriangleTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return LatticeTriangleTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return LatticeTriangleTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return LatticeTriangleTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return LatticeTriangleTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return LatticeTriangleTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return LatticeTriangleTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return LatticeTriangleTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return LatticeTriangleTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return LatticeTriangleTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return LatticeTriangleTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return LatticeTriangleTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return LatticeTriangleTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return LatticeTriangleTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return LatticeTriangleTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return LatticeTriangleTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return LatticeTriangleTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return LatticeTriangleTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return LatticeTriangleTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return LatticeTriangleTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return LatticeTriangleTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return LatticeTriangleTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return LatticeTriangleTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return LatticeTriangleTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return LatticeTriangleTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return LatticeTriangleTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return LatticeTriangleTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return LatticeTriangleTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return LatticeTriangleTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return LatticeTriangleTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return LatticeTriangleTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return LatticeTriangleTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return LatticeTriangleTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return LatticeTriangleTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return LatticeTriangleTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return LatticeTriangleTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return LatticeTriangleTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return LatticeTriangleTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return LatticeTriangleTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return LatticeTriangleTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return LatticeTriangleTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return LatticeTriangleTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return LatticeTriangleTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return LatticeTriangleTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return LatticeTriangleTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return LatticeTriangleTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return LatticeTriangleTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return LatticeTriangleTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return LatticeTriangleTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return LatticeTriangleTrackBrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return LatticeTriangleTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return LatticeTriangleTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return LatticeTriangleTrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return LatticeTriangleTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return LatticeTriangleTrack25DegDownRightBanked; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return LatticeTriangleTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return LatticeTriangleTrack60DegUpToFlatLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return LatticeTriangleTrack60DegDownToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return LatticeTriangleTrackFlatTo60DegDownLongBase; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: return LatticeTriangleTrackCableLiftHill; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return LatticeTriangleTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return LatticeTriangleTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return LatticeTriangleTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return LatticeTriangleTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return LatticeTriangleTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return LatticeTriangleTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return LatticeTriangleTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return LatticeTriangleTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return LatticeTriangleTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return LatticeTriangleTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return LatticeTriangleTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return LatticeTriangleTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return LatticeTriangleTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return LatticeTriangleTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return LatticeTriangleTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return LatticeTriangleTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return LatticeTriangleTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return LatticeTriangleTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return LatticeTriangleTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return LatticeTriangleTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return LatticeTriangleTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return LatticeTriangleTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return LatticeTriangleTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return LatticeTriangleTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return LatticeTriangleTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return LatticeTriangleTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return LatticeTriangleTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return LatticeTriangleTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return LatticeTriangleTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return LatticeTriangleTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return LatticeTriangleTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return LatticeTriangleTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return LatticeTriangleTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return LatticeTriangleTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return LatticeTriangleTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return LatticeTriangleTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return LatticeTriangleTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return LatticeTriangleTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return LatticeTriangleTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return LatticeTriangleTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return LatticeTriangleTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return LatticeTriangleTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return LatticeTriangleTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return LatticeTriangleTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return LatticeTriangleTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return LatticeTriangleTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return LatticeTriangleTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return LatticeTriangleTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return LatticeTriangleTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return LatticeTriangleTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return LatticeTriangleTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return LatticeTriangleTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return LatticeTriangleTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return LatticeTriangleTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return LatticeTriangleTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return LatticeTriangleTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return LatticeTriangleTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return LatticeTriangleTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return LatticeTriangleTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return LatticeTriangleTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return LatticeTriangleTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return LatticeTriangleTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return LatticeTriangleTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return LatticeTriangleTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return LatticeTriangleTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return LatticeTriangleTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return LatticeTriangleTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return LatticeTriangleTrackRightBanked25DegDownToFlat; - case TrackElemType::Booster: + case TrackElemType::booster: return LatticeTriangleTrackBooster; - case TrackElemType::PoweredLift: + case TrackElemType::poweredLift: return LatticeTriangleTrackPoweredLift; - case TrackElemType::Up90: + case TrackElemType::up90: return LatticeTriangleTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return LatticeTriangleTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return LatticeTriangleTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return LatticeTriangleTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return LatticeTriangleTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return LatticeTriangleTrack60DegDownTo90DegDown; - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return LatticeTriangleTrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return LatticeTriangleTrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return LatticeTriangleTrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return LatticeTriangleTrackRightQuarterTurn190DegDown; - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return LatticeTriangleTrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return LatticeTriangleTrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return LatticeTriangleTrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return LatticeTriangleTrackRightBarrelRollDownToUp; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return LatticeTriangleTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return LatticeTriangleTrackHalfLoopDown; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return LatticeTriangleTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return LatticeTriangleTrackRightVerticalLoop; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return LatticeTriangleTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return LatticeTriangleTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return LatticeTriangleTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return LatticeTriangleTrackRightCorkscrewDown; - case TrackElemType::LeftLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewUp: return LatticeTriangleTrackLeftLargeCorkscrewUp; - case TrackElemType::RightLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: return LatticeTriangleTrackRightLargeCorkscrewUp; - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewDown: return LatticeTriangleTrackLeftLargeCorkscrewDown; - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: return LatticeTriangleTrackRightLargeCorkscrewDown; - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return LatticeTriangleTrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return LatticeTriangleTrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return LatticeTriangleTrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return LatticeTriangleTrackRightZeroGRollDown; - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return LatticeTriangleTrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return LatticeTriangleTrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return LatticeTriangleTrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return LatticeTriangleTrackRightLargeZeroGRollDown; - case TrackElemType::LeftEighthDiveLoopUpToOrthogonal: + case TrackElemType::leftEighthDiveLoopUpToOrthogonal: return LatticeTriangleTrackLeftEighthDiveLoopUpToOrthogonal; - case TrackElemType::RightEighthDiveLoopUpToOrthogonal: + case TrackElemType::rightEighthDiveLoopUpToOrthogonal: return LatticeTriangleTrackRightEighthDiveLoopUpToOrthogonal; - case TrackElemType::LeftEighthDiveLoopDownToDiag: + case TrackElemType::leftEighthDiveLoopDownToDiag: return LatticeTriangleTrackLeftEighthDiveLoopDownToDiag; - case TrackElemType::RightEighthDiveLoopDownToDiag: + case TrackElemType::rightEighthDiveLoopDownToDiag: return LatticeTriangleTrackRightEighthDiveLoopToDownOrthogonal; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return LatticeTriangleTrack90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return LatticeTriangleTrackInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return LatticeTriangleTrackLeftBankToLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return LatticeTriangleTrackRightBankToRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return LatticeTriangleTrackLeftQuarterTurn3Tile25DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return LatticeTriangleTrackRightQuarterTurn3Tile25DegDownToRightBank; - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return LatticeTriangleTrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return LatticeTriangleTrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return LatticeTriangleTrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return LatticeTriangleTrackRightMediumHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return LatticeTriangleTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return LatticeTriangleTrackRightLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return LatticeTriangleTrackRightLargeHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return LatticeTriangleTrackLeftLargeHalfLoopDown; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return LatticeTriangleTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return LatticeTriangleTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return LatticeTriangleTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return LatticeTriangleTrack60DegDownToFlat; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return LatticeTriangleTrackDiagFlatTo60DegUp; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return LatticeTriangleTrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return LatticeTriangleTrackDiagFlatTo60DegDown; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return LatticeTriangleTrackDiag60DegDownToFlat; - case TrackElemType::DiagFlatToUp60LongBase: + case TrackElemType::diagFlatToUp60LongBase: return LatticeTriangleTrackDiagFlatTo60DegUpLongBase; - case TrackElemType::DiagUp60ToFlatLongBase: + case TrackElemType::diagUp60ToFlatLongBase: return LatticeTriangleTrackDiag60DegUpToFlatLongBase; - case TrackElemType::DiagFlatToDown60LongBase: + case TrackElemType::diagFlatToDown60LongBase: return LatticeTriangleTrackDiagFlatTo60DegDownLongBase; - case TrackElemType::DiagDown60ToFlatLongBase: + case TrackElemType::diagDown60ToFlatLongBase: return LatticeTriangleTrackDiag60DegDownToFlatLongBase; - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return LatticeTriangleTrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return LatticeTriangleTrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return LatticeTriangleTrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return LatticeTriangleTrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return LatticeTriangleTrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return LatticeTriangleTrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return LatticeTriangleTrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return LatticeTriangleTrackRightEighthToOrthogonalDown25; - case TrackElemType::DiagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToLeftBankedUp25: return LatticeTriangleTrackDiagUp25ToLeftBankedUp25; - case TrackElemType::DiagUp25ToRightBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: return LatticeTriangleTrackDiagUp25ToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: return LatticeTriangleTrackDiagLeftBankedUp25ToUp25; - case TrackElemType::DiagRightBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: return LatticeTriangleTrackDiagRightBankedUp25ToUp25; - case TrackElemType::DiagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToLeftBankedDown25: return LatticeTriangleTrackDiagDown25ToLeftBankedDown25; - case TrackElemType::DiagDown25ToRightBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: return LatticeTriangleTrackDiagDown25ToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: return LatticeTriangleTrackDiagLeftBankedDown25ToDown25; - case TrackElemType::DiagRightBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: return LatticeTriangleTrackDiagRightBankedDown25ToDown25; - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: return LatticeTriangleTrackDiagLeftBankedFlatToLeftBankedUp25; - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: return LatticeTriangleTrackDiagRightBankedFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: return LatticeTriangleTrackDiagLeftBankedUp25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: return LatticeTriangleTrackDiagRightBankedUp25ToRightBankedFlat; - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: return LatticeTriangleTrackDiagLeftBankedFlatToLeftBankedDown25; - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: return LatticeTriangleTrackDiagRightBankedFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: return LatticeTriangleTrackDiagLeftBankedDown25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: return LatticeTriangleTrackDiagRightBankedDown25ToRightBankedFlat; - case TrackElemType::DiagUp25LeftBanked: + case TrackElemType::diagUp25LeftBanked: return LatticeTriangleTrackDiagUp25LeftBanked; - case TrackElemType::DiagUp25RightBanked: + case TrackElemType::diagUp25RightBanked: return LatticeTriangleTrackDiagUp25RightBanked; - case TrackElemType::DiagDown25LeftBanked: + case TrackElemType::diagDown25LeftBanked: return LatticeTriangleTrackDiagDown25LeftBanked; - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::diagDown25RightBanked: return LatticeTriangleTrackDiagDown25RightBanked; - case TrackElemType::DiagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToLeftBankedUp25: return LatticeTriangleTrackDiagFlatToLeftBankedUp25; - case TrackElemType::DiagFlatToRightBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: return LatticeTriangleTrackDiagFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToFlat: + case TrackElemType::diagLeftBankedUp25ToFlat: return LatticeTriangleTrackDiagLeftBankedUp25ToFlat; - case TrackElemType::DiagRightBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: return LatticeTriangleTrackDiagRightBankedUp25ToFlat; - case TrackElemType::DiagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToLeftBankedDown25: return LatticeTriangleTrackDiagFlatToLeftBankedDown25; - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return LatticeTriangleTrackDiagFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToFlat: + case TrackElemType::diagLeftBankedDown25ToFlat: return LatticeTriangleTrackDiagLeftBankedDown25ToFlat; - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return LatticeTriangleTrackDiagRightBankedDown25ToFlat; - case TrackElemType::LeftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagUp25: return LatticeTriangleTrackLeftEighthBankToDiagUp25; - case TrackElemType::RightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: return LatticeTriangleTrackRightEighthBankToDiagUp25; - case TrackElemType::LeftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToDiagDown25: return LatticeTriangleTrackLeftEighthBankToDiagDown25; - case TrackElemType::RightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: return LatticeTriangleTrackRightEighthBankToDiagDown25; - case TrackElemType::LeftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalUp25: return LatticeTriangleTrackLeftEighthBankToOrthogonalUp25; - case TrackElemType::RightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: return LatticeTriangleTrackRightEighthBankToOrthogonalUp25; - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return LatticeTriangleTrackLeftEighthBankToOrthogonalDown25; - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return LatticeTriangleTrackRightEighthBankToOrthogonalDown25; - case TrackElemType::DiagBlockBrakes: - case TrackElemType::DiagBrakes: + case TrackElemType::diagBlockBrakes: + case TrackElemType::diagBrakes: return LatticeTriangleTrackDiagBrakes; - case TrackElemType::DiagBooster: + case TrackElemType::diagBooster: return LatticeTriangleTrackDiagBooster; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp index 06a21d391495..7f97bb4b8d42 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp @@ -69,7 +69,7 @@ static void LatticeTriangleTrackAltStation( SPR_TRACKS_LATTICE_TRIANGLE_TRACK_DRIVE_TYRE_SW_NE, SPR_TRACKS_LATTICE_TRIANGLE_TRACK_DRIVE_TYRE_SE_NW, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -258,23 +258,23 @@ TrackPaintFunction GetTrackPaintFunctionLatticeTriangleTrackAlt(TrackElemType tr { switch (trackType) { - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return LatticeTriangleTrackAltStation; - case TrackElemType::Brakes: + case TrackElemType::brakes: return LatticeTriangleTrackAltBrakes; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return LatticeTriangleTrackAltBlockBrakes; - case TrackElemType::Booster: + case TrackElemType::booster: return LatticeTriangleTrackAltBooster; - case TrackElemType::PoweredLift: + case TrackElemType::poweredLift: return LatticeTriangleTrackAltPoweredLift; - case TrackElemType::DiagBooster: + case TrackElemType::diagBooster: return LatticeTriangleTrackAltDiagBooster; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return LatticeTriangleTrackAltDiagBlockBrake; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return LatticeTriangleTrackAltDiagBrake; default: diff --git a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp index eb8b2c8efad8..da2cbfbdfc2f 100644 --- a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp @@ -7157,7 +7157,7 @@ static void LayDownRCTrackRightFlyerCorkscrewDown( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - auto function = GetTrackPaintFunctionCorkscrewRC(TrackElemType::LeftFlyerCorkscrewUp); + auto function = GetTrackPaintFunctionCorkscrewRC(TrackElemType::leftFlyerCorkscrewUp); function(session, ride, 2 - trackSequence, (direction + 3) % 4, height, trackElement, supportType); return; } @@ -8169,208 +8169,208 @@ TrackPaintFunction GetTrackPaintFunctionLayDownRCInverted(OpenRCT2::TrackElemTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return LayDownRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return LayDownRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return LayDownRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return LayDownRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return LayDownRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return LayDownRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return LayDownRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return LayDownRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return LayDownRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return LayDownRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return LayDownRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return LayDownRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return LayDownRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return LayDownRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return LayDownRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return LayDownRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return LayDownRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return LayDownRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return LayDownRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return LayDownRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return LayDownRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return LayDownRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return LayDownRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return LayDownRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return LayDownRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return LayDownRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return LayDownRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return LayDownRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return LayDownRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return LayDownRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return LayDownRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return LayDownRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return LayDownRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return LayDownRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return LayDownRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return LayDownRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return LayDownRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return LayDownRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return LayDownRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return LayDownRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return LayDownRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return LayDownRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return LayDownRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return LayDownRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return LayDownRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return LayDownRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return LayDownRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return LayDownRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return LayDownRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return LayDownRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return LayDownRCTrackBrakes; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return LayDownRCTrackOnRidePhoto; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return LayDownRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return LayDownRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return LayDownRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return LayDownRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return LayDownRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return LayDownRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return LayDownRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return LayDownRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return LayDownRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return LayDownRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return LayDownRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return LayDownRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return LayDownRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return LayDownRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return LayDownRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return LayDownRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return LayDownRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return LayDownRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return LayDownRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return LayDownRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return LayDownRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return LayDownRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return LayDownRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return LayDownRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return LayDownRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return LayDownRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return LayDownRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return LayDownRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return LayDownRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return LayDownRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return LayDownRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return LayDownRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return LayDownRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return LayDownRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return LayDownRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return LayDownRCTrackBlockBrakes; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return LayDownRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return LayDownRCTrackDiagBlockBrakes; - case TrackElemType::LeftFlyerTwistDown: + case TrackElemType::leftFlyerTwistDown: return LayDownRCTrackLeftFlyerTwistDown; - case TrackElemType::RightFlyerTwistDown: + case TrackElemType::rightFlyerTwistDown: return LayDownRCTrackRightFlyerTwistDown; - case TrackElemType::FlyerHalfLoopInvertedDown: + case TrackElemType::flyerHalfLoopInvertedDown: return LayDownRCTrackFlyerHalfLoopDown; - case TrackElemType::LeftFlyerCorkscrewDown: + case TrackElemType::leftFlyerCorkscrewDown: return LayDownRCTrackLeftFlyerCorkscrewDown; - case TrackElemType::RightFlyerCorkscrewDown: + case TrackElemType::rightFlyerCorkscrewDown: return LayDownRCTrackRightFlyerCorkscrewDown; - case TrackElemType::LeftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeUp: return LayDownRCTrackLeftQuarterBankedHelixLargeUp; - case TrackElemType::RightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeUp: return LayDownRCTrackRightQuarterBankedHelixLargeUp; - case TrackElemType::LeftQuarterBankedHelixLargeDown: + case TrackElemType::leftQuarterBankedHelixLargeDown: return LayDownRCTrackLeftQuarterBankedHelixLargeDown; - case TrackElemType::RightQuarterBankedHelixLargeDown: + case TrackElemType::rightQuarterBankedHelixLargeDown: return LayDownRCTrackRightQuarterBankedHelixLargeDown; - case TrackElemType::FlyerHalfLoopInvertedUp: + case TrackElemType::flyerHalfLoopInvertedUp: return LayDownRCTrackHalfLoopInvertedUp; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp index c5056053119d..0345252cb175 100644 --- a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp @@ -49,7 +49,7 @@ static void LimLaunchedRCTrackStation( 15019, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -5777,273 +5777,273 @@ TrackPaintFunction GetTrackPaintFunctionLimLaunchedRC(OpenRCT2::TrackElemType tr switch (trackType) { // Use Looping Roller Coaster - case TrackElemType::Flat: - case TrackElemType::Up25: - case TrackElemType::Up60: - case TrackElemType::FlatToUp25: - case TrackElemType::Up25ToUp60: - case TrackElemType::Up60ToUp25: - case TrackElemType::Up25ToFlat: - case TrackElemType::Down25: - case TrackElemType::Down60: - case TrackElemType::FlatToDown25: - case TrackElemType::Down25ToDown60: - case TrackElemType::Down60ToDown25: - case TrackElemType::Down25ToFlat: - case TrackElemType::LeftQuarterTurn5Tiles: - case TrackElemType::RightQuarterTurn5Tiles: - case TrackElemType::FlatToLeftBank: - case TrackElemType::FlatToRightBank: - case TrackElemType::LeftBankToFlat: - case TrackElemType::RightBankToFlat: - case TrackElemType::BankedLeftQuarterTurn5Tiles: - case TrackElemType::BankedRightQuarterTurn5Tiles: - case TrackElemType::LeftBankToUp25: - case TrackElemType::RightBankToUp25: - case TrackElemType::Up25ToLeftBank: - case TrackElemType::Up25ToRightBank: - case TrackElemType::LeftBankToDown25: - case TrackElemType::RightBankToDown25: - case TrackElemType::Down25ToLeftBank: - case TrackElemType::Down25ToRightBank: - case TrackElemType::LeftBank: - case TrackElemType::RightBank: - case TrackElemType::LeftQuarterTurn5TilesUp25: - case TrackElemType::RightQuarterTurn5TilesUp25: - case TrackElemType::LeftQuarterTurn5TilesDown25: - case TrackElemType::RightQuarterTurn5TilesDown25: - case TrackElemType::SBendLeft: - case TrackElemType::SBendRight: - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3Tiles: - case TrackElemType::LeftBankedQuarterTurn3Tiles: - case TrackElemType::RightBankedQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25: - case TrackElemType::RightQuarterTurn3TilesDown25: - case TrackElemType::LeftHalfBankedHelixUpSmall: - case TrackElemType::RightHalfBankedHelixUpSmall: - case TrackElemType::LeftHalfBankedHelixDownSmall: - case TrackElemType::RightHalfBankedHelixDownSmall: - case TrackElemType::LeftHalfBankedHelixUpLarge: - case TrackElemType::RightHalfBankedHelixUpLarge: - case TrackElemType::LeftHalfBankedHelixDownLarge: - case TrackElemType::RightHalfBankedHelixDownLarge: - case TrackElemType::LeftQuarterTurn1TileUp60: - case TrackElemType::RightQuarterTurn1TileUp60: - case TrackElemType::LeftQuarterTurn1TileDown60: - case TrackElemType::RightQuarterTurn1TileDown60: - case TrackElemType::Up25LeftBanked: - case TrackElemType::Up25RightBanked: - case TrackElemType::OnRidePhoto: - case TrackElemType::Down25LeftBanked: - case TrackElemType::Down25RightBanked: - case TrackElemType::LeftEighthToDiag: - case TrackElemType::RightEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: - case TrackElemType::RightEighthToOrthogonal: - case TrackElemType::LeftEighthBankToDiag: - case TrackElemType::RightEighthBankToDiag: - case TrackElemType::LeftEighthBankToOrthogonal: - case TrackElemType::RightEighthBankToOrthogonal: - case TrackElemType::DiagFlat: - case TrackElemType::DiagUp25: - case TrackElemType::DiagUp60: - case TrackElemType::DiagFlatToUp25: - case TrackElemType::DiagUp25ToUp60: - case TrackElemType::DiagUp60ToUp25: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagDown25: - case TrackElemType::DiagDown60: - case TrackElemType::DiagFlatToDown25: - case TrackElemType::DiagDown25ToDown60: - case TrackElemType::DiagDown60ToDown25: - case TrackElemType::DiagDown25ToFlat: - case TrackElemType::DiagFlatToLeftBank: - case TrackElemType::DiagFlatToRightBank: - case TrackElemType::DiagLeftBankToFlat: - case TrackElemType::DiagRightBankToFlat: - case TrackElemType::DiagLeftBankToUp25: - case TrackElemType::DiagRightBankToUp25: - case TrackElemType::DiagUp25ToLeftBank: - case TrackElemType::DiagUp25ToRightBank: - case TrackElemType::DiagLeftBankToDown25: - case TrackElemType::DiagRightBankToDown25: - case TrackElemType::DiagDown25ToLeftBank: - case TrackElemType::DiagDown25ToRightBank: - case TrackElemType::DiagLeftBank: - case TrackElemType::DiagRightBank: - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: - case TrackElemType::Up25ToLeftBankedUp25: - case TrackElemType::Up25ToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToUp25: - case TrackElemType::RightBankedUp25ToUp25: - case TrackElemType::Down25ToLeftBankedDown25: - case TrackElemType::Down25ToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToDown25: - case TrackElemType::RightBankedDown25ToDown25: - case TrackElemType::LeftBankedFlatToLeftBankedUp25: - case TrackElemType::RightBankedFlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: - case TrackElemType::RightBankedUp25ToRightBankedFlat: - case TrackElemType::LeftBankedFlatToLeftBankedDown25: - case TrackElemType::RightBankedFlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: - case TrackElemType::RightBankedDown25ToRightBankedFlat: - case TrackElemType::FlatToLeftBankedUp25: - case TrackElemType::FlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToFlat: - case TrackElemType::RightBankedUp25ToFlat: - case TrackElemType::FlatToLeftBankedDown25: - case TrackElemType::FlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToFlat: - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::flat: + case TrackElemType::up25: + case TrackElemType::up60: + case TrackElemType::flatToUp25: + case TrackElemType::up25ToUp60: + case TrackElemType::up60ToUp25: + case TrackElemType::up25ToFlat: + case TrackElemType::down25: + case TrackElemType::down60: + case TrackElemType::flatToDown25: + case TrackElemType::down25ToDown60: + case TrackElemType::down60ToDown25: + case TrackElemType::down25ToFlat: + case TrackElemType::leftQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: + case TrackElemType::flatToLeftBank: + case TrackElemType::flatToRightBank: + case TrackElemType::leftBankToFlat: + case TrackElemType::rightBankToFlat: + case TrackElemType::bankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: + case TrackElemType::leftBankToUp25: + case TrackElemType::rightBankToUp25: + case TrackElemType::up25ToLeftBank: + case TrackElemType::up25ToRightBank: + case TrackElemType::leftBankToDown25: + case TrackElemType::rightBankToDown25: + case TrackElemType::down25ToLeftBank: + case TrackElemType::down25ToRightBank: + case TrackElemType::leftBank: + case TrackElemType::rightBank: + case TrackElemType::leftQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: + case TrackElemType::sBendLeft: + case TrackElemType::sBendRight: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: + case TrackElemType::leftHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: + case TrackElemType::leftQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: + case TrackElemType::up25LeftBanked: + case TrackElemType::up25RightBanked: + case TrackElemType::onRidePhoto: + case TrackElemType::down25LeftBanked: + case TrackElemType::down25RightBanked: + case TrackElemType::leftEighthToDiag: + case TrackElemType::rightEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: + case TrackElemType::leftEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: + case TrackElemType::leftEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: + case TrackElemType::diagFlat: + case TrackElemType::diagUp25: + case TrackElemType::diagUp60: + case TrackElemType::diagFlatToUp25: + case TrackElemType::diagUp25ToUp60: + case TrackElemType::diagUp60ToUp25: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagDown25: + case TrackElemType::diagDown60: + case TrackElemType::diagFlatToDown25: + case TrackElemType::diagDown25ToDown60: + case TrackElemType::diagDown60ToDown25: + case TrackElemType::diagDown25ToFlat: + case TrackElemType::diagFlatToLeftBank: + case TrackElemType::diagFlatToRightBank: + case TrackElemType::diagLeftBankToFlat: + case TrackElemType::diagRightBankToFlat: + case TrackElemType::diagLeftBankToUp25: + case TrackElemType::diagRightBankToUp25: + case TrackElemType::diagUp25ToLeftBank: + case TrackElemType::diagUp25ToRightBank: + case TrackElemType::diagLeftBankToDown25: + case TrackElemType::diagRightBankToDown25: + case TrackElemType::diagDown25ToLeftBank: + case TrackElemType::diagDown25ToRightBank: + case TrackElemType::diagLeftBank: + case TrackElemType::diagRightBank: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: + case TrackElemType::up25ToLeftBankedUp25: + case TrackElemType::up25ToRightBankedUp25: + case TrackElemType::leftBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: + case TrackElemType::down25ToLeftBankedDown25: + case TrackElemType::down25ToRightBankedDown25: + case TrackElemType::leftBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: + case TrackElemType::leftBankedFlatToLeftBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: + case TrackElemType::flatToLeftBankedUp25: + case TrackElemType::flatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: + case TrackElemType::flatToLeftBankedDown25: + case TrackElemType::flatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return GetTrackPaintFunctionLoopingRC(trackType); - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return LimLaunchedRCTrackStation; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return LimLaunchedRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return LimLaunchedRCTrackRightVerticalLoop; - case TrackElemType::LeftTwistDownToUp: + case TrackElemType::leftTwistDownToUp: return LimLaunchedRCTrackLeftTwistDownToUp; - case TrackElemType::RightTwistDownToUp: + case TrackElemType::rightTwistDownToUp: return LimLaunchedRCTrackRightTwistDownToUp; - case TrackElemType::LeftTwistUpToDown: + case TrackElemType::leftTwistUpToDown: return LimLaunchedRCTrackLeftTwistUpToDown; - case TrackElemType::RightTwistUpToDown: + case TrackElemType::rightTwistUpToDown: return LimLaunchedRCTrackRightTwistUpToDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return LimLaunchedRCTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return LimLaunchedRCTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return LimLaunchedRCTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return LimLaunchedRCTrackRightCorkscrewDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return LimLaunchedRCTrackBrakes; - case TrackElemType::Up90: + case TrackElemType::up90: return LimLaunchedRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return LimLaunchedRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return LimLaunchedRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return LimLaunchedRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return LimLaunchedRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return LimLaunchedRCTrack60DegDownTo90DegDown; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return LimLaunchedRCTrack90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return LimLaunchedRCTrackInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return LimLaunchedRCTrackBlockBrakes; - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return LimLaunchedRCTrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return LimLaunchedRCTrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return LimLaunchedRCTrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return LimLaunchedRCTrackRightQuarterTurn190DegDown; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return LimLaunchedRCTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return LimLaunchedRCTrack60DegUpToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return LimLaunchedRCTrackFlatTo60DegDownLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return LimLaunchedRCTrack60DegDownToFlatLongBase; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return LimLaunchedRCTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return LimLaunchedRCTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return LimLaunchedRCTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return LimLaunchedRCTrack60DegDownToFlat; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return LimLaunchedRCTrackDiagFlatTo60DegUp; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return LimLaunchedRCTrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return LimLaunchedRCTrackDiagFlatTo60DegDown; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return LimLaunchedRCTrackDiag60DegDownToFlat; - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return LimLaunchedRCTrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return LimLaunchedRCTrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return LimLaunchedRCTrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return LimLaunchedRCTrackRightBarrelRollDownToUp; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return LimLaunchedRCTrackLeftBankToLeftQuarterTurn325DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return LimLaunchedRCTrackRightBankToRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return LimLaunchedRCTrackLeftQuarterTurn325DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return LimLaunchedRCTrackRightQuarterTurn325DegDownToRightBank; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return LimLaunchedRCTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return LimLaunchedRCTrackHalfLoopDown; - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return LimLaunchedRCTrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return LimLaunchedRCTrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return LimLaunchedRCTrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return LimLaunchedRCTrackRightMediumHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return LimLaunchedRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return LimLaunchedRCTrackRightLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return LimLaunchedRCTrackLeftLargeHalfLoopDown; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return LimLaunchedRCTrackRightLargeHalfLoopDown; - case TrackElemType::LeftLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewUp: return LimLaunchedRCTrackLeftLargeCorkscrewUp; - case TrackElemType::RightLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: return LimLaunchedRCTrackRightLargeCorkscrewUp; - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewDown: return LimLaunchedRCTrackLeftLargeCorkscrewDown; - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: return LimLaunchedRCTrackRightLargeCorkscrewDown; - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return LimLaunchedRCTrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return LimLaunchedRCTrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return LimLaunchedRCTrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return LimLaunchedRCTrackRightZeroGRollDown; - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return LimLaunchedRCTrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return LimLaunchedRCTrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return LimLaunchedRCTrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return LimLaunchedRCTrackRightLargeZeroGRollDown; - case TrackElemType::Booster: + case TrackElemType::booster: return LimLaunchedRCTrackBooster; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp index d11b91e68506..1f17ef33a1b8 100644 --- a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp @@ -10311,282 +10311,282 @@ TrackPaintFunction GetTrackPaintFunctionLoopingRC(OpenRCT2::TrackElemType trackT { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return LoopingRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return LoopingRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return LoopingRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return LoopingRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return LoopingRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return LoopingRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return LoopingRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return LoopingRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return LoopingRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return LoopingRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return LoopingRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return LoopingRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return LoopingRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return LoopingRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return LoopingRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return LoopingRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return LoopingRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return LoopingRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return LoopingRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return LoopingRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return LoopingRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return LoopingRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return LoopingRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return LoopingRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return LoopingRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return LoopingRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return LoopingRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return LoopingRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return LoopingRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return LoopingRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return LoopingRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return LoopingRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return LoopingRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return LoopingRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return LoopingRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return LoopingRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return LoopingRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return LoopingRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return LoopingRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return LoopingRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return LoopingRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return LoopingRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return LoopingRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return LoopingRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return LoopingRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return LoopingRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return LoopingRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return LoopingRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return LoopingRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return LoopingRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return LoopingRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return LoopingRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return LoopingRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return LoopingRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return LoopingRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return LoopingRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return LoopingRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return LoopingRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return LoopingRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return LoopingRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return LoopingRCTrackBrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return LoopingRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return LoopingRCTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return LoopingRCTrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return LoopingRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return LoopingRCTrack25DegDownRightBanked; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return LoopingRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return LoopingRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return LoopingRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return LoopingRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return LoopingRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return LoopingRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return LoopingRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return LoopingRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return LoopingRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return LoopingRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return LoopingRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return LoopingRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return LoopingRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return LoopingRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return LoopingRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return LoopingRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return LoopingRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return LoopingRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return LoopingRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return LoopingRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return LoopingRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return LoopingRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return LoopingRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return LoopingRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return LoopingRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return LoopingRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return LoopingRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return LoopingRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return LoopingRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return LoopingRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return LoopingRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return LoopingRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return LoopingRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return LoopingRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return LoopingRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return LoopingRCTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return LoopingRCTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return LoopingRCTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return LoopingRCTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return LoopingRCTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return LoopingRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return LoopingRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return LoopingRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return LoopingRCTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return LoopingRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return LoopingRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return LoopingRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return LoopingRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return LoopingRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return LoopingRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return LoopingRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return LoopingRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return LoopingRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return LoopingRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return LoopingRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return LoopingRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return LoopingRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return LoopingRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return LoopingRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return LoopingRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return LoopingRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return LoopingRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return LoopingRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return LoopingRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return LoopingRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return LoopingRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return LoopingRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return LoopingRCTrackRightBanked25DegDownToFlat; - case TrackElemType::Booster: + case TrackElemType::booster: return LoopingRCTrackBooster; - case TrackElemType::DiagBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBrakes: + case TrackElemType::diagBlockBrakes: return LoopingRCTrackDiagBrakes; default: diff --git a/src/openrct2/paint/track/coaster/MineRide.cpp b/src/openrct2/paint/track/coaster/MineRide.cpp index 212523b58398..3eca31d55d70 100644 --- a/src/openrct2/paint/track/coaster/MineRide.cpp +++ b/src/openrct2/paint/track/coaster/MineRide.cpp @@ -5427,147 +5427,147 @@ TrackPaintFunction GetTrackPaintFunctionMineRide(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return MineRideTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return MineRideTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return MineRideTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return MineRideTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return MineRideTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return MineRideTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return MineRideTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return MineRideTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return MineRideTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return MineRideTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return MineRideTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return MineRideTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return MineRideTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return MineRideTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return MineRideTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return MineRideTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return MineRideTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return MineRideTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return MineRideTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return MineRideTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return MineRideTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return MineRideTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return MineRideTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return MineRideTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return MineRideTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return MineRideTrackRightBank; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return MineRideTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return MineRideTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return MineRideTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return MineRideTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return MineRideTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return MineRideTrackRightQuarterTurn3Bank; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return MineRideTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return MineRideTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return MineRideTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return MineRideTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return MineRideTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return MineRideTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return MineRideTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return MineRideTrackRightHalfBankedHelixDownLarge; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return MineRideTrackOnRidePhoto; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return MineRideTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return MineRideTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return MineRideTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return MineRideTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return MineRideTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return MineRideTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return MineRideTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return MineRideTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return MineRideTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return MineRideTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return MineRideTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return MineRideTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return MineRideTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return MineRideTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return MineRideTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return MineRideTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return MineRideTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return MineRideTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return MineRideTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return MineRideTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return MineRideTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return MineRideTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return MineRideTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return MineRideTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return MineRideTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return MineRideTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return MineRideTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return MineRideTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return MineRideTrackDiagRightBank; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp index 6f5abf347b04..b31f5f6a93bd 100644 --- a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp @@ -119,7 +119,7 @@ static void MineTrainRCTrackFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -137,7 +137,7 @@ static void MineTrainRCTrackStation( 20064, 20065, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -156,7 +156,7 @@ static void MineTrainRCTrackStation( } else { - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); } TrackPaintUtilDrawStationTunnel(session, direction, height); @@ -222,7 +222,7 @@ static void MineTrainRCTrack25DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -266,7 +266,7 @@ static void MineTrainRCTrack60DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -339,7 +339,7 @@ static void MineTrainRCTrackFlatTo25DegUp( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -389,7 +389,7 @@ static void MineTrainRCTrack25DegUpTo60DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -439,7 +439,7 @@ static void MineTrainRCTrack60DegUpTo25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -512,7 +512,7 @@ static void MineTrainRCTrack25DegUpToFlat( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -606,7 +606,7 @@ static void MineTrainRCTrackLeftQuarterTurn5( { { 0, 6, height }, { 32, 20, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -645,7 +645,7 @@ static void MineTrainRCTrackLeftQuarterTurn5( { { 0, 16, height }, { 32, 16, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -680,7 +680,7 @@ static void MineTrainRCTrackLeftQuarterTurn5( session, direction, session.TrackColours.WithIndex(20148), { 0, 0, height }, { 16, 16, 1 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -722,7 +722,7 @@ static void MineTrainRCTrackLeftQuarterTurn5( { { 16, 0, height }, { 16, 32, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -758,7 +758,7 @@ static void MineTrainRCTrackLeftQuarterTurn5( { { 6, 0, height }, { 20, 32, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -818,7 +818,7 @@ static void MineTrainRCTrackFlatToLeftBank( { { 0, 6, height }, { 32, 20, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -859,7 +859,7 @@ static void MineTrainRCTrackFlatToRightBank( { { 0, 27, height }, { 32, 1, 26 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -900,7 +900,7 @@ static void MineTrainRCTrackLeftBankToFlat( { { 0, 6, height }, { 32, 20, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -941,7 +941,7 @@ static void MineTrainRCTrackRightBankToFlat( { { 0, 27, height }, { 32, 1, 26 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -982,7 +982,7 @@ static void MineTrainRCTrackBankedLeftQuarterTurn5( { { 0, 6, height }, { 32, 20, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1020,7 +1020,7 @@ static void MineTrainRCTrackBankedLeftQuarterTurn5( { { 0, 16, height }, { 32, 16, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -1055,7 +1055,7 @@ static void MineTrainRCTrackBankedLeftQuarterTurn5( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( @@ -1098,7 +1098,7 @@ static void MineTrainRCTrackBankedLeftQuarterTurn5( { { 16, 0, height }, { 16, 32, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -1136,7 +1136,7 @@ static void MineTrainRCTrackBankedLeftQuarterTurn5( { { 6, 0, height }, { 20, 32, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -1199,7 +1199,7 @@ static void MineTrainRCTrackLeftBankTo25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -1249,7 +1249,7 @@ static void MineTrainRCTrackRightBankTo25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -1299,7 +1299,7 @@ static void MineTrainRCTrack25DegUpToLeftBank( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -1349,7 +1349,7 @@ static void MineTrainRCTrack25DegUpToRightBank( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -1424,7 +1424,7 @@ static void MineTrainRCTrackLeftBank( { { 0, 6, height }, { 32, 20, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1471,7 +1471,7 @@ static void MineTrainRCTrackLeftQuarterTurn525DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -1513,7 +1513,7 @@ static void MineTrainRCTrackLeftQuarterTurn525DegUp( { { 0, 16, height }, { 32, 16, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -1549,7 +1549,7 @@ static void MineTrainRCTrackLeftQuarterTurn525DegUp( { { 0, 0, height }, { 16, 16, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -1593,7 +1593,7 @@ static void MineTrainRCTrackLeftQuarterTurn525DegUp( { { 16, 0, height }, { 16, 32, 1 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -5346,7 +5346,7 @@ static void MineTrainRCTrackDiag25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -7228,203 +7228,203 @@ TrackPaintFunction GetTrackPaintFunctionMineTrainRC(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return MineTrainRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return MineTrainRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return MineTrainRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return MineTrainRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return MineTrainRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return MineTrainRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return MineTrainRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return MineTrainRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return MineTrainRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return MineTrainRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return MineTrainRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return MineTrainRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return MineTrainRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return MineTrainRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return MineTrainRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return MineTrainRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return MineTrainRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return MineTrainRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return MineTrainRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return MineTrainRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return MineTrainRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return MineTrainRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return MineTrainRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return MineTrainRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return MineTrainRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return MineTrainRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return MineTrainRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return MineTrainRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return MineTrainRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return MineTrainRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return MineTrainRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return MineTrainRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return MineTrainRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return MineTrainRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return MineTrainRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return MineTrainRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return MineTrainRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return MineTrainRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return MineTrainRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return MineTrainRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return MineTrainRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return MineTrainRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return MineTrainRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return MineTrainRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return MineTrainRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return MineTrainRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return MineTrainRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return MineTrainRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return MineTrainRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return MineTrainRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return MineTrainRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return MineTrainRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return MineTrainRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return MineTrainRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::Brakes: + case TrackElemType::brakes: return MineTrainRCTrackBrakes; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return MineTrainRCTrackOnRidePhoto; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return MineTrainRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return MineTrainRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return MineTrainRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return MineTrainRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return MineTrainRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return MineTrainRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return MineTrainRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return MineTrainRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return MineTrainRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return MineTrainRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return MineTrainRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return MineTrainRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return MineTrainRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return MineTrainRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return MineTrainRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return MineTrainRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return MineTrainRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return MineTrainRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return MineTrainRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return MineTrainRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return MineTrainRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return MineTrainRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return MineTrainRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return MineTrainRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return MineTrainRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return MineTrainRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return MineTrainRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return MineTrainRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return MineTrainRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return MineTrainRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return MineTrainRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return MineTrainRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return MineTrainRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return MineTrainRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return MineTrainRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return MineTrainRCTrackBlockBrakes; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return MineTrainRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return MineTrainRCTrackDiagBlockBrakes; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return MineTrainRCTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return MineTrainRCTrack60DegUpToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return MineTrainRCTrackFlatTo60DegDownLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return MineTrainRCTrack60DegDownToFlatLongBase; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp index 49b7bdc796e2..8f4f55d51f02 100644 --- a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp @@ -107,7 +107,7 @@ static void MiniRCTrackStation( 18747, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -8990,277 +8990,277 @@ TrackPaintFunction GetTrackPaintFunctionMiniRC(OpenRCT2::TrackElemType trackType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return MiniRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return MiniRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return MiniRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return MiniRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return MiniRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return MiniRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return MiniRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return MiniRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return MiniRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return MiniRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return MiniRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return MiniRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return MiniRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return MiniRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return MiniRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return MiniRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return MiniRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return MiniRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return MiniRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return MiniRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return MiniRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return MiniRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return MiniRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return MiniRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return MiniRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return MiniRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return MiniRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return MiniRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return MiniRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return MiniRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return MiniRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return MiniRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return MiniRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return MiniRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return MiniRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return MiniRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return MiniRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return MiniRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return MiniRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return MiniRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return MiniRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return MiniRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return MiniRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return MiniRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return MiniRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return MiniRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return MiniRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return MiniRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return MiniRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return MiniRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return MiniRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return MiniRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return MiniRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return MiniRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return MiniRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return MiniRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return MiniRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return MiniRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return MiniRCTrackBrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return MiniRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return MiniRCTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return MiniRCTrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return MiniRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return MiniRCTrack25DegDownRightBanked; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return MiniRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return MiniRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return MiniRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return MiniRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return MiniRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return MiniRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return MiniRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return MiniRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return MiniRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return MiniRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return MiniRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return MiniRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return MiniRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return MiniRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return MiniRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return MiniRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return MiniRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return MiniRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return MiniRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return MiniRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return MiniRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return MiniRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return MiniRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return MiniRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return MiniRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return MiniRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return MiniRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return MiniRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return MiniRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return MiniRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return MiniRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return MiniRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return MiniRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return MiniRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return MiniRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return MiniRCTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return MiniRCTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return MiniRCTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return MiniRCTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return MiniRCTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return MiniRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return MiniRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return MiniRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return MiniRCTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return MiniRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return MiniRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return MiniRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return MiniRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return MiniRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return MiniRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return MiniRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return MiniRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return MiniRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return MiniRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return MiniRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return MiniRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return MiniRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return MiniRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return MiniRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return MiniRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return MiniRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return MiniRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return MiniRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return MiniRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return MiniRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return MiniRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return MiniRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return MiniRCTrackRightBanked25DegDownToFlat; - case TrackElemType::LeftCurvedLiftHill: + case TrackElemType::leftCurvedLiftHill: return MiniRCTrackLeftCurvedLiftHill; - case TrackElemType::RightCurvedLiftHill: + case TrackElemType::rightCurvedLiftHill: return MiniRCTrackRightCurvedLiftHill; - case TrackElemType::Booster: + case TrackElemType::booster: return MiniRCTrackBooster; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp index 0eecc1f8e0c8..7a91a0cf34eb 100644 --- a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp @@ -2193,57 +2193,57 @@ TrackPaintFunction GetTrackPaintFunctionMiniSuspendedRC(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return MiniSuspendedRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return MiniSuspendedRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return MiniSuspendedRCTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return MiniSuspendedRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return MiniSuspendedRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return MiniSuspendedRCTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return MiniSuspendedRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return MiniSuspendedRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return MiniSuspendedRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return MiniSuspendedRCTrackRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return MiniSuspendedRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return MiniSuspendedRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return MiniSuspendedRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return MiniSuspendedRCTrackRightQuarterTurn3; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return MiniSuspendedRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return MiniSuspendedRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return MiniSuspendedRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return MiniSuspendedRCTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return MiniSuspendedRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return MiniSuspendedRCTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return MiniSuspendedRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return MiniSuspendedRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return MiniSuspendedRCTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return MiniSuspendedRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return MiniSuspendedRCTrackDiag25DegDownToFlat; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp index c9360013d69e..382fb802d296 100644 --- a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp @@ -198,7 +198,7 @@ static void MultiDimensionRCTrackStation( } }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); uint8_t offset = isClosed ? 2 : 1; @@ -14527,208 +14527,208 @@ TrackPaintFunction GetTrackPaintFunctionMultiDimensionRC(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return MultiDimensionRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return MultiDimensionRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return MultiDimensionRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return MultiDimensionRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return MultiDimensionRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return MultiDimensionRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return MultiDimensionRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return MultiDimensionRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return MultiDimensionRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return MultiDimensionRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return MultiDimensionRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return MultiDimensionRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return MultiDimensionRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return MultiDimensionRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return MultiDimensionRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return MultiDimensionRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return MultiDimensionRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return MultiDimensionRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return MultiDimensionRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return MultiDimensionRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return MultiDimensionRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return MultiDimensionRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return MultiDimensionRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return MultiDimensionRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return MultiDimensionRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return MultiDimensionRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return MultiDimensionRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return MultiDimensionRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return MultiDimensionRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return MultiDimensionRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return MultiDimensionRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return MultiDimensionRCTrackRightBank; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return MultiDimensionRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return MultiDimensionRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return MultiDimensionRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return MultiDimensionRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return MultiDimensionRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return MultiDimensionRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return MultiDimensionRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return MultiDimensionRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return MultiDimensionRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return MultiDimensionRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return MultiDimensionRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return MultiDimensionRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return MultiDimensionRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return MultiDimensionRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::Brakes: + case TrackElemType::brakes: return MultiDimensionRCTrackBrakes; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return MultiDimensionRCTrackOnRidePhoto; - case TrackElemType::Up90: + case TrackElemType::up90: return MultiDimensionRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return MultiDimensionRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return MultiDimensionRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return MultiDimensionRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return MultiDimensionRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return MultiDimensionRCTrack60DegDownTo90DegDown; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return MultiDimensionRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return MultiDimensionRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return MultiDimensionRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return MultiDimensionRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return MultiDimensionRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return MultiDimensionRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return MultiDimensionRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return MultiDimensionRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return MultiDimensionRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return MultiDimensionRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return MultiDimensionRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return MultiDimensionRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return MultiDimensionRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return MultiDimensionRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return MultiDimensionRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return MultiDimensionRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return MultiDimensionRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return MultiDimensionRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return MultiDimensionRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return MultiDimensionRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return MultiDimensionRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return MultiDimensionRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return MultiDimensionRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return MultiDimensionRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return MultiDimensionRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return MultiDimensionRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return MultiDimensionRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return MultiDimensionRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return MultiDimensionRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return MultiDimensionRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return MultiDimensionRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return MultiDimensionRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return MultiDimensionRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return MultiDimensionRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return MultiDimensionRCTrackDiagRightBank; - case TrackElemType::LeftFlyerTwistUp: + case TrackElemType::leftFlyerTwistUp: return MultiDimensionRCTrackLeftFlyerTwistUp; - case TrackElemType::RightFlyerTwistUp: + case TrackElemType::rightFlyerTwistUp: return MultiDimensionRCTrackRightFlyerTwistUp; - case TrackElemType::LeftFlyerTwistDown: + case TrackElemType::leftFlyerTwistDown: return MultiDimensionRCTrackLeftFlyerTwistDown; - case TrackElemType::RightFlyerTwistDown: + case TrackElemType::rightFlyerTwistDown: return MultiDimensionRCTrackRightFlyerTwistDown; - case TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop: + case TrackElemType::multiDimInvertedFlatToDown90QuarterLoop: return MultiDimensionRCTrackMultidimInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return MultiDimensionRCTrackBlockBrakes; - case TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop: + case TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop: return MultiDimensionRCTrackMultidim90DegUpToInvertedFlatQuarterLoop; - case TrackElemType::MultiDimFlatToDown90QuarterLoop: + case TrackElemType::multiDimFlatToDown90QuarterLoop: return MultiDimensionRCTrackMultidimFlatTo90DegDownQuarterLoop; - case TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop: + case TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop: return MultiDimensionRCTrackMultidimInverted90DegUpToFlatQuarterLoop; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return MultiDimensionRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return MultiDimensionRCTrackDiagBlockBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp index 24c4cb09883e..2bd7e3833b3d 100644 --- a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp @@ -220,7 +220,7 @@ static void PaintReverseFreefallRCFlat( PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -242,7 +242,7 @@ static void PaintReverseFreefallRCStation( imageId = session.TrackColours.WithIndex(kPiecesStation[direction]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height + 1 }, { 20, 32, 1 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawStationTunnel(session, direction, height); @@ -299,13 +299,13 @@ static void PaintReverseFreefallRCSlope( session, direction, supportsImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence]); break; case 5: - if (DrawSupportForSequenceA( + if (DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours)) { ImageId floorImageId; @@ -346,7 +346,7 @@ static void PaintReverseFreefallRCSlope( PaintAddImageAsChildRotated( session, direction, supportsImageId, { 0, 0, height }, { { 27, 6, height }, { 1, 20, 126 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence]); @@ -395,7 +395,7 @@ static void PaintReverseFreefallRCOnridePhoto( session, direction, session.TrackColours.WithIndex(kPiecesStation[direction]), { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); @@ -405,17 +405,17 @@ TrackPaintFunction GetTrackPaintFunctionReverseFreefallRC(OpenRCT2::TrackElemTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintReverseFreefallRCFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintReverseFreefallRCStation; - case TrackElemType::ReverseFreefallSlope: + case TrackElemType::reverseFreefallSlope: return PaintReverseFreefallRCSlope; - case TrackElemType::ReverseFreefallVertical: + case TrackElemType::reverseFreefallVertical: return PaintReverseFreefallRCVertical; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return PaintReverseFreefallRCOnridePhoto; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp index 45e5f9a06570..9c1287f71f77 100644 --- a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp @@ -68,7 +68,7 @@ static void ReverserRCTrackFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -88,7 +88,7 @@ static void ReverserRCTrackStation( PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction]), { 0, 0, height }, { { 0, 2, height + 1 }, { 32, 27, 2 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawStation2(session, ride, direction, height, trackElement, StationBaseType::a, 0, 9, 11); TrackPaintUtilDrawStationTunnel(session, direction, height); @@ -153,7 +153,7 @@ static void ReverserRCTrack25DegUp( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -224,7 +224,7 @@ static void ReverserRCTrackFlatTo25DegUp( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -295,7 +295,7 @@ static void ReverserRCTrack25DegUpToFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -360,7 +360,7 @@ static void ReverserRCTrackLeftQuarterTurn5( session, direction, session.TrackColours.WithIndex(21538), { 0, 2, height }, { 32, 32, 2 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -397,7 +397,7 @@ static void ReverserRCTrackLeftQuarterTurn5( session, direction, session.TrackColours.WithIndex(21537), { 0, 16, height }, { 32, 16, 2 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -429,7 +429,7 @@ static void ReverserRCTrackLeftQuarterTurn5( session, direction, session.TrackColours.WithIndex(21536), { 0, 0, height }, { 16, 16, 2 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -469,7 +469,7 @@ static void ReverserRCTrackLeftQuarterTurn5( session, direction, session.TrackColours.WithIndex(21535), { 16, 0, height }, { 16, 32, 2 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -501,7 +501,7 @@ static void ReverserRCTrackLeftQuarterTurn5( session, direction, session.TrackColours.WithIndex(21534), { 2, 0, height }, { 32, 32, 2 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -558,7 +558,7 @@ static void ReverserRCTrackSBendLeft( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -591,7 +591,7 @@ static void ReverserRCTrackSBendLeft( { { 0, 6, height }, { 32, 26, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -627,7 +627,7 @@ static void ReverserRCTrackSBendLeft( { { 0, 0, height }, { 32, 26, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -663,7 +663,7 @@ static void ReverserRCTrackSBendLeft( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -711,7 +711,7 @@ static void ReverserRCTrackSBendRight( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -744,7 +744,7 @@ static void ReverserRCTrackSBendRight( { { 0, 0, height }, { 32, 26, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -780,7 +780,7 @@ static void ReverserRCTrackSBendRight( { { 0, 6, height }, { 32, 26, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -816,7 +816,7 @@ static void ReverserRCTrackSBendRight( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -864,7 +864,7 @@ static void ReverserRCTrackLeftQuarterTurn3( { { 0, 6, height }, { 32, 20, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -932,7 +932,7 @@ static void ReverserRCTrackLeftQuarterTurn3( { { 6, 0, height }, { 20, 32, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -978,7 +978,7 @@ static void ReverserRCTrackBrakes( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1016,7 +1016,7 @@ static void ReverserRCTrackLeftReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1047,7 +1047,7 @@ static void ReverserRCTrackLeftReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); break; case 2: @@ -1074,7 +1074,7 @@ static void ReverserRCTrackLeftReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); break; case 3: @@ -1101,7 +1101,7 @@ static void ReverserRCTrackLeftReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); break; case 4: @@ -1128,7 +1128,7 @@ static void ReverserRCTrackLeftReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); break; case 5: @@ -1155,7 +1155,7 @@ static void ReverserRCTrackLeftReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -1204,7 +1204,7 @@ static void ReverserRCTrackRightReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1237,7 +1237,7 @@ static void ReverserRCTrackRightReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1266,7 +1266,7 @@ static void ReverserRCTrackRightReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1295,7 +1295,7 @@ static void ReverserRCTrackRightReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1324,7 +1324,7 @@ static void ReverserRCTrackRightReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1353,7 +1353,7 @@ static void ReverserRCTrackRightReverser( { { 0, 2, height }, { 32, 27, 2 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -1374,41 +1374,41 @@ TrackPaintFunction GetTrackPaintFunctionReverserRC(OpenRCT2::TrackElemType track { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return ReverserRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return ReverserRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return ReverserRCTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return ReverserRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return ReverserRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return ReverserRCTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return ReverserRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return ReverserRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return ReverserRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return ReverserRCTrackRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return ReverserRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return ReverserRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return ReverserRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return ReverserRCTrackRightQuarterTurn3; - case TrackElemType::Brakes: + case TrackElemType::brakes: return ReverserRCTrackBrakes; - case TrackElemType::LeftReverser: + case TrackElemType::leftReverser: return ReverserRCTrackLeftReverser; - case TrackElemType::RightReverser: + case TrackElemType::rightReverser: return ReverserRCTrackRightReverser; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp index 65aa8c588b78..4a128f2aacd2 100644 --- a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp @@ -140,7 +140,7 @@ static void SideFrictionRCTrackFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -162,7 +162,7 @@ static void SideFrictionRCTrackStation( PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction][0]), { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (!TrackPaintUtilDrawStation2(session, ride, direction, height, trackElement, StationBaseType::none, 0, 9, 11)) { @@ -256,7 +256,7 @@ static void SideFrictionRCTrack25DegUp( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -351,7 +351,7 @@ static void SideFrictionRCTrackFlatTo25DegUp( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -446,7 +446,7 @@ static void SideFrictionRCTrack25DegUpToFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -523,7 +523,7 @@ static void SideFrictionRCTrackLeftQuarterTurn5( { { 0, 2, height + 27 }, { 32, 32, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -572,7 +572,7 @@ static void SideFrictionRCTrackLeftQuarterTurn5( { { 0, 16, height + 27 }, { 32, 16, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -616,7 +616,7 @@ static void SideFrictionRCTrackLeftQuarterTurn5( { { 0, 0, height + 27 }, { 16, 16, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -668,7 +668,7 @@ static void SideFrictionRCTrackLeftQuarterTurn5( { { 16, 0, height + 27 }, { 16, 32, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -712,7 +712,7 @@ static void SideFrictionRCTrackLeftQuarterTurn5( { { 2, 0, height + 27 }, { 32, 32, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -781,7 +781,7 @@ static void SideFrictionRCTrackSBendLeft( { { 0, 2, height + 27 }, { 32, 27, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -826,7 +826,7 @@ static void SideFrictionRCTrackSBendLeft( { { 0, 6, height + 27 }, { 32, 26, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -874,7 +874,7 @@ static void SideFrictionRCTrackSBendLeft( { { 0, 0, height + 27 }, { 32, 26, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -922,7 +922,7 @@ static void SideFrictionRCTrackSBendLeft( { { 0, 2, height + 27 }, { 32, 27, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -982,7 +982,7 @@ static void SideFrictionRCTrackSBendRight( { { 0, 2, height + 27 }, { 32, 27, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1027,7 +1027,7 @@ static void SideFrictionRCTrackSBendRight( { { 0, 0, height + 27 }, { 32, 26, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -1075,7 +1075,7 @@ static void SideFrictionRCTrackSBendRight( { { 0, 6, height + 27 }, { 32, 26, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( session, @@ -1123,7 +1123,7 @@ static void SideFrictionRCTrackSBendRight( { { 0, 2, height + 27 }, { 32, 27, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -1183,7 +1183,7 @@ static void SideFrictionRCTrackLeftQuarterTurn3( { { 0, 6, height + 27 }, { 32, 20, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1275,7 +1275,7 @@ static void SideFrictionRCTrackLeftQuarterTurn3( { { 6, 0, height + 27 }, { 20, 32, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -1327,7 +1327,7 @@ static void SideFrictionRCTrackBrakes( { { 0, 2, height + 27 }, { 32, 27, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1377,7 +1377,7 @@ static void SideFrictionRCTrackLeftEighthToDiag( { { 0, 0, height + 27 }, { 32, 32, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1422,7 +1422,7 @@ static void SideFrictionRCTrackLeftEighthToDiag( { { 0, 16, height + 27 }, { 32, 16, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1463,13 +1463,13 @@ static void SideFrictionRCTrackLeftEighthToDiag( { { 0, 0, height + 27 }, { 16, 16, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); break; case 3: - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1559,7 +1559,7 @@ static void SideFrictionRCTrackRightEighthToDiag( { { 0, 0, height + 27 }, { 32, 32, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) { @@ -1604,7 +1604,7 @@ static void SideFrictionRCTrackRightEighthToDiag( { { 0, 0, height + 27 }, { 32, 16, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1645,13 +1645,13 @@ static void SideFrictionRCTrackRightEighthToDiag( { { 0, 16, height + 27 }, { 16, 16, 0 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); break; case 3: - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -1753,7 +1753,7 @@ static void SideFrictionRCTrackDiagFlat( } break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1876,7 +1876,7 @@ static void SideFrictionRCTrackDiag25DegUp( } break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1945,7 +1945,7 @@ static void SideFrictionRCTrackDiagFlatTo25DegUp( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -1979,7 +1979,7 @@ static void SideFrictionRCTrackDiagFlatTo25DegUp( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -2130,7 +2130,7 @@ static void SideFrictionRCTrackDiag25DegUpToFlat( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2253,7 +2253,7 @@ static void SideFrictionRCTrackDiag25DegDown( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2376,7 +2376,7 @@ static void SideFrictionRCTrackDiagFlatTo25DegDown( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2444,7 +2444,7 @@ static void SideFrictionRCTrackDiag25DegDownToFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -2478,7 +2478,7 @@ static void SideFrictionRCTrackDiag25DegDownToFlat( break; } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -2552,7 +2552,7 @@ static void SideFrictionRCTrack60DegUp( { { 0, 26, height + 5 }, { 32, 1, 9 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -2613,7 +2613,7 @@ static void SideFrictionRCTrack25DegUpTo60DegUp( { 0, 0, height }, { { 0, 26, height + 5 }, { 32, 1, 9 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -2674,7 +2674,7 @@ static void SideFrictionRCTrack60DegUpTo25DegUp( { 0, 0, height }, { { 0, 26, height + 5 }, { 32, 1, 9 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -2750,7 +2750,7 @@ static void SideFrictionRCTrackDiag60DegUp( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 104); @@ -2823,7 +2823,7 @@ static void SideFrictionRCTrackDiag60DegUpTo25DegUp( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 72); @@ -2895,7 +2895,7 @@ static void SideFrictionRCTrackDiag25DegUpTo60DegUp( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 72); @@ -2913,86 +2913,86 @@ TrackPaintFunction GetTrackPaintFunctionSideFrictionRC(OpenRCT2::TrackElemType t { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return SideFrictionRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return SideFrictionRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return SideFrictionRCTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return SideFrictionRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return SideFrictionRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return SideFrictionRCTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return SideFrictionRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return SideFrictionRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return SideFrictionRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return SideFrictionRCTrackRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return SideFrictionRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return SideFrictionRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return SideFrictionRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return SideFrictionRCTrackRightQuarterTurn3; - case TrackElemType::Brakes: + case TrackElemType::brakes: return SideFrictionRCTrackBrakes; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return SideFrictionRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return SideFrictionRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return SideFrictionRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return SideFrictionRCTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return SideFrictionRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return SideFrictionRCTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return SideFrictionRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return SideFrictionRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return SideFrictionRCTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return SideFrictionRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return SideFrictionRCTrackDiag25DegDownToFlat; // Added by OpenRCT2 - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return SideFrictionRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return SideFrictionRCTrack60DegDownTo25DegDown; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return SideFrictionRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return SideFrictionRCTrack60DegUpTo25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return SideFrictionRCTrack60DegUp; - case TrackElemType::Down60: + case TrackElemType::down60: return SideFrictionRCTrack60DegDown; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return SideFrictionRCTrackDiag60DegUp; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return SideFrictionRCTrackDiag60DegDown; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return SideFrictionRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return SideFrictionRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return SideFrictionRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return SideFrictionRCTrackDiag60DegDownTo25DegDown; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp index 09648e5e4992..696dc461c874 100644 --- a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp @@ -113,7 +113,7 @@ namespace OpenRCT2::SingleRailRC }, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction][1]), { 0, 0, height }, @@ -19887,502 +19887,502 @@ namespace OpenRCT2::SingleRailRC { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return TrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return TrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return Track25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return Track60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return TrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return Track25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return Track60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return Track25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return Track25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return Track60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return TrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return Track25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return Track60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return Track25DegDownToFlat; - case TrackElemType::Up90: + case TrackElemType::up90: return Track90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return Track90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return Track60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return Track90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return Track90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return Track60DegDownTo90DegDown; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return TrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return TrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return TrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return TrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return TrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return TrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return TrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return TrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return TrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return TrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return Track25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return Track25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return TrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return TrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return Track25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return Track25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return TrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return TrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return TrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return TrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return TrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return TrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return TrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return TrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return TrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return TrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return TrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return TrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return TrackLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return TrackRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return TrackLeftQuarterTurn3Tile25DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return TrackRightQuarterTurn3Tile25DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return TrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return TrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return TrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return TrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return TrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return TrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return TrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return TrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return TrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return TrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return TrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return TrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return TrackBrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return Track25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return Track25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return TrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return Track25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return Track25DegDownRightBanked; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return TrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return Track60DegUpToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return TrackFlatTo60DegDownLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return Track60DegDownToFlatLongBase; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return TrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return TrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return TrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return TrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return TrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return TrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return TrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return TrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return TrackDiagFlat; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return TrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return TrackDiagBlockBrakes; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return TrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return TrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return TrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return TrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return TrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return TrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return TrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return TrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return TrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return TrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return TrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return TrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return TrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return TrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return TrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return TrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return TrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return TrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return TrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return TrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return TrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return TrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return TrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return TrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return TrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return TrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return TrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return TrackLeftBankedQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return TrackRightBankedQuarterTurn3Tile25DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return TrackLeftBankedQuarterTurn3Tile25DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return TrackRightBankedQuarterTurn3Tile25DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return TrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return TrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return TrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return TrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return Track25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return Track25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return TrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return TrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return Track25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return Track25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return TrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return TrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return TrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return TrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return TrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return TrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return TrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return TrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return TrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return TrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return TrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return TrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return TrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return TrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return TrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return TrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return TrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return TrackRightBanked25DegDownToFlat; - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return TrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return TrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return TrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return TrackRightQuarterTurn190DegDown; - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return TrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return TrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return TrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return TrackRightBarrelRollDownToUp; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return TrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return TrackHalfLoopDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return TrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return TrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return TrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return TrackRightCorkscrewDown; - case TrackElemType::LeftLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewUp: return TrackLeftLargeCorkscrewUp; - case TrackElemType::RightLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: return TrackRightLargeCorkscrewUp; - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewDown: return TrackLeftLargeCorkscrewDown; - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: return TrackRightLargeCorkscrewDown; - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return TrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return TrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return TrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return TrackRightZeroGRollDown; - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return TrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return TrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return TrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return TrackRightLargeZeroGRollDown; - case TrackElemType::LeftEighthDiveLoopUpToOrthogonal: + case TrackElemType::leftEighthDiveLoopUpToOrthogonal: return TrackLeftEighthDiveLoopUpToOrthogonal; - case TrackElemType::RightEighthDiveLoopUpToOrthogonal: + case TrackElemType::rightEighthDiveLoopUpToOrthogonal: return TrackRightEighthDiveLoopUpToOrthogonal; - case TrackElemType::LeftEighthDiveLoopDownToDiag: + case TrackElemType::leftEighthDiveLoopDownToDiag: return TrackLeftEighthDiveLoopDownToDiag; - case TrackElemType::RightEighthDiveLoopDownToDiag: + case TrackElemType::rightEighthDiveLoopDownToDiag: return TrackRightEighthDiveLoopToDownOrthogonal; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return Track90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return TrackInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return TrackLeftBankToLeftQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return TrackRightBankToRightQuarterTurn3Tile25DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return TrackLeftQuarterTurn3Tile25DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return TrackRightQuarterTurn3Tile25DegDownToRightBank; - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return TrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return TrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return TrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return TrackRightMediumHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return TrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return TrackRightLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return TrackLeftLargeHalfLoopDown; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return TrackRightLargeHalfLoopDown; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return TrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return Track60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return TrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return Track60DegDownToFlat; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return TrackDiagFlatTo60DegUp; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return TrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return TrackDiagFlatTo60DegDown; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return TrackDiag60DegDownToFlat; - case TrackElemType::DiagFlatToUp60LongBase: + case TrackElemType::diagFlatToUp60LongBase: return TrackDiagFlatTo60DegUpLongBase; - case TrackElemType::DiagUp60ToFlatLongBase: + case TrackElemType::diagUp60ToFlatLongBase: return TrackDiag60DegUpToFlatLongBase; - case TrackElemType::DiagFlatToDown60LongBase: + case TrackElemType::diagFlatToDown60LongBase: return TrackDiagFlatTo60DegDownLongBase; - case TrackElemType::DiagDown60ToFlatLongBase: + case TrackElemType::diagDown60ToFlatLongBase: return TrackDiag60DegDownToFlatLongBase; - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return TrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return TrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return TrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return TrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return TrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return TrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return TrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return TrackRightEighthToOrthogonalDown25; - case TrackElemType::DiagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToLeftBankedUp25: return TrackDiagUp25ToLeftBankedUp25; - case TrackElemType::DiagUp25ToRightBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: return TrackDiagUp25ToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: return TrackDiagLeftBankedUp25ToUp25; - case TrackElemType::DiagRightBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: return TrackDiagRightBankedUp25ToUp25; - case TrackElemType::DiagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToLeftBankedDown25: return TrackDiagDown25ToLeftBankedDown25; - case TrackElemType::DiagDown25ToRightBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: return TrackDiagDown25ToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: return TrackDiagLeftBankedDown25ToDown25; - case TrackElemType::DiagRightBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: return TrackDiagRightBankedDown25ToDown25; - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: return TrackDiagLeftBankedFlatToLeftBankedUp25; - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: return TrackDiagRightBankedFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: return TrackDiagLeftBankedUp25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: return TrackDiagRightBankedUp25ToRightBankedFlat; - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: return TrackDiagLeftBankedFlatToLeftBankedDown25; - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: return TrackDiagRightBankedFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: return TrackDiagLeftBankedDown25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: return TrackDiagRightBankedDown25ToRightBankedFlat; - case TrackElemType::DiagUp25LeftBanked: + case TrackElemType::diagUp25LeftBanked: return TrackDiagUp25LeftBanked; - case TrackElemType::DiagUp25RightBanked: + case TrackElemType::diagUp25RightBanked: return TrackDiagUp25RightBanked; - case TrackElemType::DiagDown25LeftBanked: + case TrackElemType::diagDown25LeftBanked: return TrackDiagDown25LeftBanked; - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::diagDown25RightBanked: return TrackDiagDown25RightBanked; - case TrackElemType::DiagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToLeftBankedUp25: return TrackDiagFlatToLeftBankedUp25; - case TrackElemType::DiagFlatToRightBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: return TrackDiagFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToFlat: + case TrackElemType::diagLeftBankedUp25ToFlat: return TrackDiagLeftBankedUp25ToFlat; - case TrackElemType::DiagRightBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: return TrackDiagRightBankedUp25ToFlat; - case TrackElemType::DiagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToLeftBankedDown25: return TrackDiagFlatToLeftBankedDown25; - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return TrackDiagFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToFlat: + case TrackElemType::diagLeftBankedDown25ToFlat: return TrackDiagLeftBankedDown25ToFlat; - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return TrackDiagRightBankedDown25ToFlat; - case TrackElemType::LeftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagUp25: return TrackLeftEighthBankToDiagUp25; - case TrackElemType::RightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: return TrackRightEighthBankToDiagUp25; - case TrackElemType::LeftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToDiagDown25: return TrackLeftEighthBankToDiagDown25; - case TrackElemType::RightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: return TrackRightEighthBankToDiagDown25; - case TrackElemType::LeftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalUp25: return TrackLeftEighthBankToOrthogonalUp25; - case TrackElemType::RightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: return TrackRightEighthBankToOrthogonalUp25; - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return TrackLeftEighthBankToOrthogonalDown25; - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return TrackRightEighthBankToOrthogonalDown25; - case TrackElemType::Down25Brakes: + case TrackElemType::down25Brakes: return Track25DegDownBrakes; - case TrackElemType::DiagDown25Brakes: + case TrackElemType::diagDown25Brakes: return TrackDiag25DegDownBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp index a0dfc817f96d..ed61a6dac858 100644 --- a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp @@ -127,7 +127,7 @@ static void StandUpRCTrackStation( 25568, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -18365,523 +18365,523 @@ TrackPaintFunction GetTrackPaintFunctionStandUpRC(OpenRCT2::TrackElemType trackT { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return StandUpRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return StandUpRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return StandUpRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return StandUpRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return StandUpRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return StandUpRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return StandUpRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return StandUpRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return StandUpRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return StandUpRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return StandUpRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return StandUpRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return StandUpRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return StandUpRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return StandUpRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return StandUpRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return StandUpRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return StandUpRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return StandUpRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return StandUpRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return StandUpRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return StandUpRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return StandUpRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return StandUpRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return StandUpRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return StandUpRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return StandUpRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return StandUpRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return StandUpRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return StandUpRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return StandUpRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return StandUpRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return StandUpRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return StandUpRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return StandUpRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return StandUpRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return StandUpRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return StandUpRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return StandUpRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return StandUpRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return StandUpRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return StandUpRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return StandUpRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return StandUpRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return StandUpRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return StandUpRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return StandUpRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return StandUpRCTrackRightQuarterTurn325DegDown; - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return StandUpRCTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return StandUpRCTrackHalfLoopDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return StandUpRCTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return StandUpRCTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return StandUpRCTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return StandUpRCTrackRightCorkscrewDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return StandUpRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return StandUpRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return StandUpRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return StandUpRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return StandUpRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return StandUpRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return StandUpRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return StandUpRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::Brakes: + case TrackElemType::brakes: return StandUpRCTrackBrakes; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return StandUpRCTrackOnRidePhoto; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return StandUpRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return StandUpRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return StandUpRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return StandUpRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return StandUpRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return StandUpRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return StandUpRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return StandUpRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return StandUpRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return StandUpRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return StandUpRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return StandUpRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return StandUpRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return StandUpRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return StandUpRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return StandUpRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return StandUpRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return StandUpRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return StandUpRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return StandUpRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return StandUpRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return StandUpRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return StandUpRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return StandUpRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return StandUpRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return StandUpRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return StandUpRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return StandUpRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return StandUpRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return StandUpRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return StandUpRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return StandUpRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return StandUpRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return StandUpRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return StandUpRCTrackDiagRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return StandUpRCTrackBlockBrakes; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return StandUpRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return StandUpRCTrackDiagBlockBrakes; // Added by OpenRCT2 // Small flat to steep - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return StandUpRCTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return StandUpRCTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return StandUpRCTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return StandUpRCTrack60DegDownToFlat; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return StandUpRCTrackDiagFlatTo60DegUp; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return StandUpRCTrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return StandUpRCTrackDiagFlatTo60DegDown; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return StandUpRCTrackDiag60DegDownToFlat; // Long flat to steep - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return StandUpRCTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return StandUpRCTrack60DegUpToFlatLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return StandUpRCTrack60DegDownToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return StandUpRCTrackFlatTo60DegDownLongBase; // Vertical slopes - case TrackElemType::Up90: + case TrackElemType::up90: return StandUpRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return StandUpRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return StandUpRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return StandUpRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return StandUpRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return StandUpRCTrack60DegDownTo90DegDown; // Steep turns - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return StandUpRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return StandUpRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return StandUpRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return StandUpRCTrackRightQuarterTurn160DegDown; // Vertical turns - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return StandUpRCTrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return StandUpRCTrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return StandUpRCTrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return StandUpRCTrackRightQuarterTurn190DegDown; // Banked slope transitions - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return StandUpRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return StandUpRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return StandUpRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return StandUpRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return StandUpRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return StandUpRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return StandUpRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return StandUpRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return StandUpRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return StandUpRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return StandUpRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return StandUpRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return StandUpRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return StandUpRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return StandUpRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return StandUpRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return StandUpRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return StandUpRCTrack25DegDownRightBanked; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return StandUpRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return StandUpRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return StandUpRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return StandUpRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return StandUpRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return StandUpRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return StandUpRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return StandUpRCTrackRightBanked25DegDownToFlat; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return StandUpRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return StandUpRCTrack25DegUpRightBanked; // Small banked sloped curves - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return StandUpRCTrackLeftBankedQuarterTurn3Tile25DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return StandUpRCTrackRightBankedQuarterTurn3Tile25DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return StandUpRCTrackLeftBankedQuarterTurn3Tile25DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return StandUpRCTrackRightBankedQuarterTurn3Tile25DegDown; // Medium banked sloped curves - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return StandUpRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return StandUpRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return StandUpRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return StandUpRCTrackRightBankedQuarterTurn525DegDown; // Large curved slopes - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return StandUpRCTrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return StandUpRCTrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return StandUpRCTrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return StandUpRCTrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return StandUpRCTrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return StandUpRCTrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return StandUpRCTrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return StandUpRCTrackRightEighthToOrthogonalDown25; // Diagonal unbanked to banked - case TrackElemType::DiagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToLeftBankedUp25: return StandUpRCTrackDiagUp25ToLeftBankedUp25; - case TrackElemType::DiagUp25ToRightBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: return StandUpRCTrackDiagUp25ToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: return StandUpRCTrackDiagLeftBankedUp25ToUp25; - case TrackElemType::DiagRightBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: return StandUpRCTrackDiagRightBankedUp25ToUp25; - case TrackElemType::DiagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToLeftBankedDown25: return StandUpRCTrackDiagDown25ToLeftBankedDown25; - case TrackElemType::DiagDown25ToRightBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: return StandUpRCTrackDiagDown25ToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: return StandUpRCTrackDiagLeftBankedDown25ToDown25; - case TrackElemType::DiagRightBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: return StandUpRCTrackDiagRightBankedDown25ToDown25; - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: return StandUpRCTrackDiagLeftBankedFlatToLeftBankedUp25; - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: return StandUpRCTrackDiagRightBankedFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: return StandUpRCTrackDiagLeftBankedUp25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: return StandUpRCTrackDiagRightBankedUp25ToRightBankedFlat; - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: return StandUpRCTrackDiagLeftBankedFlatToLeftBankedDown25; - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: return StandUpRCTrackDiagRightBankedFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: return StandUpRCTrackDiagLeftBankedDown25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: return StandUpRCTrackDiagRightBankedDown25ToRightBankedFlat; - case TrackElemType::DiagUp25LeftBanked: + case TrackElemType::diagUp25LeftBanked: return StandUpRCTrackDiagUp25LeftBanked; - case TrackElemType::DiagUp25RightBanked: + case TrackElemType::diagUp25RightBanked: return StandUpRCTrackDiagUp25RightBanked; - case TrackElemType::DiagDown25LeftBanked: + case TrackElemType::diagDown25LeftBanked: return StandUpRCTrackDiagDown25LeftBanked; - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::diagDown25RightBanked: return StandUpRCTrackDiagDown25RightBanked; - case TrackElemType::DiagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToLeftBankedUp25: return StandUpRCTrackDiagFlatToLeftBankedUp25; - case TrackElemType::DiagFlatToRightBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: return StandUpRCTrackDiagFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToFlat: + case TrackElemType::diagLeftBankedUp25ToFlat: return StandUpRCTrackDiagLeftBankedUp25ToFlat; - case TrackElemType::DiagRightBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: return StandUpRCTrackDiagRightBankedUp25ToFlat; - case TrackElemType::DiagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToLeftBankedDown25: return StandUpRCTrackDiagFlatToLeftBankedDown25; - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return StandUpRCTrackDiagFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToFlat: + case TrackElemType::diagLeftBankedDown25ToFlat: return StandUpRCTrackDiagLeftBankedDown25ToFlat; - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return StandUpRCTrackDiagRightBankedDown25ToFlat; // Large banked curved slopes - case TrackElemType::LeftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagUp25: return StandUpRCTrackLeftEighthBankToDiagUp25; - case TrackElemType::RightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: return StandUpRCTrackRightEighthBankToDiagUp25; - case TrackElemType::LeftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToDiagDown25: return StandUpRCTrackLeftEighthBankToDiagDown25; - case TrackElemType::RightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: return StandUpRCTrackRightEighthBankToDiagDown25; - case TrackElemType::LeftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalUp25: return StandUpRCTrackLeftEighthBankToOrthogonalUp25; - case TrackElemType::RightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: return StandUpRCTrackRightEighthBankToOrthogonalUp25; - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return StandUpRCTrackLeftEighthBankToOrthogonalDown25; - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return StandUpRCTrackRightEighthBankToOrthogonalDown25; // Small banked to unbanked curved slopes - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return StandUpRCTrackLeftBankToLeftQuarterTurn325DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return StandUpRCTrackRightBankToRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return StandUpRCTrackLeftQuarterTurn325DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return StandUpRCTrackRightQuarterTurn325DegDownToRightBank; // Large corkscrews - case TrackElemType::LeftLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewUp: return StandUpRCTrackLeftLargeCorkscrewUp; - case TrackElemType::RightLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: return StandUpRCTrackRightLargeCorkscrewUp; - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewDown: return StandUpRCTrackLeftLargeCorkscrewDown; - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: return StandUpRCTrackRightLargeCorkscrewDown; // Quarter loops - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return StandUpRCTrack90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return StandUpRCTrackInvertedFlatTo90DegQuarterLoopDown; // Medium half loops - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return StandUpRCTrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return StandUpRCTrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return StandUpRCTrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return StandUpRCTrackRightMediumHalfLoopDown; // Large half loops - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return StandUpRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return StandUpRCTrackRightLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return StandUpRCTrackRightLargeHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return StandUpRCTrackLeftLargeHalfLoopDown; // Barrel rolls - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return StandUpRCTrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return StandUpRCTrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return StandUpRCTrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return StandUpRCTrackRightBarrelRollDownToUp; // Zero g rolls - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return StandUpRCTrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return StandUpRCTrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return StandUpRCTrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return StandUpRCTrackRightZeroGRollDown; // Large zero g rolls - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return StandUpRCTrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return StandUpRCTrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return StandUpRCTrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return StandUpRCTrackRightLargeZeroGRollDown; default: diff --git a/src/openrct2/paint/track/coaster/Steeplechase.cpp b/src/openrct2/paint/track/coaster/Steeplechase.cpp index 797783c16132..3b345bf30bb4 100644 --- a/src/openrct2/paint/track/coaster/Steeplechase.cpp +++ b/src/openrct2/paint/track/coaster/Steeplechase.cpp @@ -2185,64 +2185,64 @@ TrackPaintFunction GetTrackPaintFunctionSteeplechase(OpenRCT2::TrackElemType tra { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return SteeplechaseTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return SteeplechaseTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return SteeplechaseTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return SteeplechaseTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return SteeplechaseTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return SteeplechaseTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return SteeplechaseTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return SteeplechaseTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return SteeplechaseTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return SteeplechaseTrackRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return SteeplechaseTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return SteeplechaseTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return SteeplechaseTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return SteeplechaseTrackRightQuarterTurn3; - case TrackElemType::Brakes: + case TrackElemType::brakes: return SteeplechaseTrackBrakes; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return SteeplechaseTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return SteeplechaseTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return SteeplechaseTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return SteeplechaseTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return SteeplechaseTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return SteeplechaseTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return SteeplechaseTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return SteeplechaseTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return SteeplechaseTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return SteeplechaseTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return SteeplechaseTrackDiag25DegDownToFlat; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return SteeplechaseTrackBlockBrakes; - case TrackElemType::DiagBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBrakes: + case TrackElemType::diagBlockBrakes: return SteeplechaseTrackDiagBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp index 5b2c120c2f7c..0dab1bc6df63 100644 --- a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp @@ -4693,109 +4693,109 @@ TrackPaintFunction GetTrackPaintFunctionSuspendedSwingingRC(OpenRCT2::TrackElemT { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return SuspendedSwingingRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return SuspendedSwingingRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return SuspendedSwingingRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return SuspendedSwingingRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return SuspendedSwingingRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return SuspendedSwingingRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return SuspendedSwingingRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return SuspendedSwingingRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return SuspendedSwingingRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return SuspendedSwingingRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return SuspendedSwingingRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return SuspendedSwingingRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return SuspendedSwingingRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return SuspendedSwingingRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return SuspendedSwingingRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return SuspendedSwingingRCTrackRightQuarterTurn5; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return SuspendedSwingingRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return SuspendedSwingingRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return SuspendedSwingingRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return SuspendedSwingingRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return SuspendedSwingingRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return SuspendedSwingingRCTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return SuspendedSwingingRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return SuspendedSwingingRCTrackRightQuarterTurn3; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return SuspendedSwingingRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return SuspendedSwingingRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return SuspendedSwingingRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return SuspendedSwingingRCTrackRightQuarterTurn325DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return SuspendedSwingingRCTrackBrakes; - case TrackElemType::LeftQuarterHelixLargeUp: + case TrackElemType::leftQuarterHelixLargeUp: return SuspendedSwingingRCTrackLeftQuarterHelixLargeUp; - case TrackElemType::RightQuarterHelixLargeUp: + case TrackElemType::rightQuarterHelixLargeUp: return SuspendedSwingingRCTrackRightQuarterHelixLargeUp; - case TrackElemType::LeftQuarterHelixLargeDown: + case TrackElemType::leftQuarterHelixLargeDown: return SuspendedSwingingRCTrackLeftQuarterHelixLargeDown; - case TrackElemType::RightQuarterHelixLargeDown: + case TrackElemType::rightQuarterHelixLargeDown: return SuspendedSwingingRCTrackRightQuarterHelixLargeDown; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return SuspendedSwingingRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return SuspendedSwingingRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return SuspendedSwingingRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return SuspendedSwingingRCTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return SuspendedSwingingRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return SuspendedSwingingRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return SuspendedSwingingRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return SuspendedSwingingRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return SuspendedSwingingRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return SuspendedSwingingRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return SuspendedSwingingRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return SuspendedSwingingRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return SuspendedSwingingRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return SuspendedSwingingRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return SuspendedSwingingRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return SuspendedSwingingRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return SuspendedSwingingRCTrackDiag25DegDownToFlat; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return SuspendedSwingingRCTrackBlockBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp index c6b71ef81ef3..5e1149f68539 100644 --- a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp @@ -116,7 +116,7 @@ static void TwisterRCTrackStation( 17155, }; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -20055,541 +20055,541 @@ TrackPaintFunction GetTrackPaintFunctionTwisterRC(OpenRCT2::TrackElemType trackT { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return TwisterRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return TwisterRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return TwisterRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return TwisterRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return TwisterRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return TwisterRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return TwisterRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return TwisterRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return TwisterRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return TwisterRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return TwisterRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return TwisterRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return TwisterRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return TwisterRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return TwisterRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return TwisterRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return TwisterRCTrackFlatToLeftBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return TwisterRCTrackFlatToRightBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return TwisterRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return TwisterRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return TwisterRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return TwisterRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return TwisterRCTrackLeftBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return TwisterRCTrackRightBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return TwisterRCTrack25DegUpToLeftBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return TwisterRCTrack25DegUpToRightBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return TwisterRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return TwisterRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return TwisterRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return TwisterRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return TwisterRCTrackLeftBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return TwisterRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return TwisterRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return TwisterRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return TwisterRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return TwisterRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return TwisterRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return TwisterRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return TwisterRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return TwisterRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return TwisterRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return TwisterRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return TwisterRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return TwisterRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return TwisterRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return TwisterRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return TwisterRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return TwisterRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return TwisterRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return TwisterRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return TwisterRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return TwisterRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return TwisterRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return TwisterRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return TwisterRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return TwisterRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return TwisterRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return TwisterRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return TwisterRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return TwisterRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return TwisterRCTrackBrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return TwisterRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return TwisterRCTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return TwisterRCTrackOnRidePhoto; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return TwisterRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return TwisterRCTrack25DegDownRightBanked; - case TrackElemType::Up90: + case TrackElemType::up90: return TwisterRCTrack90DegUp; - case TrackElemType::Down90: + case TrackElemType::down90: return TwisterRCTrack90DegDown; - case TrackElemType::Up60ToUp90: + case TrackElemType::up60ToUp90: return TwisterRCTrack60DegUpTo90DegUp; - case TrackElemType::Down90ToDown60: + case TrackElemType::down90ToDown60: return TwisterRCTrack90DegDownTo60DegDown; - case TrackElemType::Up90ToUp60: + case TrackElemType::up90ToUp60: return TwisterRCTrack90DegUpTo60DegUp; - case TrackElemType::Down60ToDown90: + case TrackElemType::down60ToDown90: return TwisterRCTrack60DegDownTo90DegDown; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return TwisterRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return TwisterRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return TwisterRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return TwisterRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return TwisterRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return TwisterRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return TwisterRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return TwisterRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return TwisterRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return TwisterRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return TwisterRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return TwisterRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return TwisterRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return TwisterRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return TwisterRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return TwisterRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return TwisterRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return TwisterRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return TwisterRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return TwisterRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return TwisterRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return TwisterRCTrackDiagFlatToLeftBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return TwisterRCTrackDiagFlatToRightBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return TwisterRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return TwisterRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return TwisterRCTrackDiagLeftBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return TwisterRCTrackDiagRightBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return TwisterRCTrackDiag25DegUpToLeftBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return TwisterRCTrackDiag25DegUpToRightBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return TwisterRCTrackDiagLeftBankTo25DegDown; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return TwisterRCTrackDiagRightBankTo25DegDown; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return TwisterRCTrackDiag25DegDownToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return TwisterRCTrackDiag25DegDownToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return TwisterRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return TwisterRCTrackDiagRightBank; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return TwisterRCTrackLeftBankToLeftQuarterTurn325DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return TwisterRCTrackRightBankToRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return TwisterRCTrackLeftQuarterTurn325DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return TwisterRCTrackRightQuarterTurn325DegDownToRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return TwisterRCTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return TwisterRCTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return TwisterRCTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return TwisterRCTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return TwisterRCTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return TwisterRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return TwisterRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return TwisterRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return TwisterRCTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return TwisterRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return TwisterRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return TwisterRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return TwisterRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return TwisterRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return TwisterRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return TwisterRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return TwisterRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return TwisterRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return TwisterRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return TwisterRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return TwisterRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return TwisterRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return TwisterRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return TwisterRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return TwisterRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return TwisterRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return TwisterRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return TwisterRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return TwisterRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return TwisterRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return TwisterRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return TwisterRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return TwisterRCTrackRightBanked25DegDownToFlat; - case TrackElemType::LeftQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileUp90: return TwisterRCTrackLeftQuarterTurn190DegUp; - case TrackElemType::RightQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: return TwisterRCTrackRightQuarterTurn190DegUp; - case TrackElemType::LeftQuarterTurn1TileDown90: + case TrackElemType::leftQuarterTurn1TileDown90: return TwisterRCTrackLeftQuarterTurn190DegDown; - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return TwisterRCTrackRightQuarterTurn190DegDown; /* The following track elements used to be specific to the vertical RC */ - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return TwisterRCTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return TwisterRCTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return TwisterRCTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return TwisterRCTrack60DegDownToFlat; - case TrackElemType::BrakeForDrop: + case TrackElemType::brakeForDrop: return TwisterRCTrackBrakeForDrop; - case TrackElemType::DiagFlatToUp60: + case TrackElemType::diagFlatToUp60: return TwisterRCTrackDiagFlatTo60DegUp; - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp60ToFlat: return TwisterRCTrackDiag60DegUpToFlat; - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagFlatToDown60: return TwisterRCTrackDiagFlatTo60DegDown; - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagDown60ToFlat: return TwisterRCTrackDiag60DegDownToFlat; /* The following track elements used to be specific to the Twister RC */ - case TrackElemType::HalfLoopUp: + case TrackElemType::halfLoopUp: return TwisterRCTrackHalfLoopUp; - case TrackElemType::HalfLoopDown: + case TrackElemType::halfLoopDown: return TwisterRCTrackHalfLoopDown; - case TrackElemType::LeftCorkscrewUp: + case TrackElemType::leftCorkscrewUp: return TwisterRCTrackLeftCorkscrewUp; - case TrackElemType::RightCorkscrewUp: + case TrackElemType::rightCorkscrewUp: return TwisterRCTrackRightCorkscrewUp; - case TrackElemType::LeftCorkscrewDown: + case TrackElemType::leftCorkscrewDown: return TwisterRCTrackLeftCorkscrewDown; - case TrackElemType::RightCorkscrewDown: + case TrackElemType::rightCorkscrewDown: return TwisterRCTrackRightCorkscrewDown; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return TwisterRCTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return TwisterRCTrack60DegUpToFlatLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return TwisterRCTrack60DegDownToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return TwisterRCTrackFlatTo60DegDownLongBase; - case TrackElemType::LeftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollUpToDown: return TwisterRCTrackLeftBarrelRollUpToDown; - case TrackElemType::RightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: return TwisterRCTrackRightBarrelRollUpToDown; - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollDownToUp: return TwisterRCTrackLeftBarrelRollDownToUp; - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: return TwisterRCTrackRightBarrelRollDownToUp; - case TrackElemType::PoweredLift: + case TrackElemType::poweredLift: return TwisterRCTrackPoweredLift; - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return TwisterRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return TwisterRCTrackRightLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return TwisterRCTrackLeftLargeHalfLoopDown; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return TwisterRCTrackRightLargeHalfLoopDown; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: return TwisterRCTrack90DegToInvertedFlatQuarterLoopUp; - case TrackElemType::InvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: return TwisterRCTrackInvertedFlatTo90DegQuarterLoopDown; - case TrackElemType::Booster: + case TrackElemType::booster: return TwisterRCTrackBooster; - case TrackElemType::LeftTwistDownToUp: + case TrackElemType::leftTwistDownToUp: return TwisterRCTrackLeftTwistDownToUp; - case TrackElemType::RightTwistDownToUp: + case TrackElemType::rightTwistDownToUp: return TwisterRCTrackRightTwistDownToUp; - case TrackElemType::LeftTwistUpToDown: + case TrackElemType::leftTwistUpToDown: return TwisterRCTrackLeftTwistUpToDown; - case TrackElemType::RightTwistUpToDown: + case TrackElemType::rightTwistUpToDown: return TwisterRCTrackRightTwistUpToDown; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return TwisterRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return TwisterRCTrackDiagBlockBrakes; - case TrackElemType::LeftFlyerTwistUp: + case TrackElemType::leftFlyerTwistUp: return TwisterRCTrackLeftFlyerTwistUp; - case TrackElemType::RightFlyerTwistUp: + case TrackElemType::rightFlyerTwistUp: return TwisterRCTrackRightFlyerTwistUp; - case TrackElemType::FlyerHalfLoopUninvertedUp: + case TrackElemType::flyerHalfLoopUninvertedUp: return TwisterRCTrackFlyerHalfLoopUp; // Large curved slopes - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return TwisterRCTrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return TwisterRCTrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return TwisterRCTrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return TwisterRCTrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return TwisterRCTrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return TwisterRCTrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return TwisterRCTrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return TwisterRCTrackRightEighthToOrthogonalDown25; // Diagonal unbanked to banked - case TrackElemType::DiagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToLeftBankedUp25: return TwisterRCTrackDiagUp25ToLeftBankedUp25; - case TrackElemType::DiagUp25ToRightBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: return TwisterRCTrackDiagUp25ToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: return TwisterRCTrackDiagLeftBankedUp25ToUp25; - case TrackElemType::DiagRightBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: return TwisterRCTrackDiagRightBankedUp25ToUp25; - case TrackElemType::DiagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToLeftBankedDown25: return TwisterRCTrackDiagDown25ToLeftBankedDown25; - case TrackElemType::DiagDown25ToRightBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: return TwisterRCTrackDiagDown25ToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: return TwisterRCTrackDiagLeftBankedDown25ToDown25; - case TrackElemType::DiagRightBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: return TwisterRCTrackDiagRightBankedDown25ToDown25; - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: return TwisterRCTrackDiagLeftBankedFlatToLeftBankedUp25; - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: return TwisterRCTrackDiagRightBankedFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: return TwisterRCTrackDiagLeftBankedUp25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: return TwisterRCTrackDiagRightBankedUp25ToRightBankedFlat; - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: return TwisterRCTrackDiagLeftBankedFlatToLeftBankedDown25; - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: return TwisterRCTrackDiagRightBankedFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: return TwisterRCTrackDiagLeftBankedDown25ToLeftBankedFlat; - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: return TwisterRCTrackDiagRightBankedDown25ToRightBankedFlat; - case TrackElemType::DiagUp25LeftBanked: + case TrackElemType::diagUp25LeftBanked: return TwisterRCTrackDiagUp25LeftBanked; - case TrackElemType::DiagUp25RightBanked: + case TrackElemType::diagUp25RightBanked: return TwisterRCTrackDiagUp25RightBanked; - case TrackElemType::DiagDown25LeftBanked: + case TrackElemType::diagDown25LeftBanked: return TwisterRCTrackDiagDown25LeftBanked; - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::diagDown25RightBanked: return TwisterRCTrackDiagDown25RightBanked; - case TrackElemType::DiagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToLeftBankedUp25: return TwisterRCTrackDiagFlatToLeftBankedUp25; - case TrackElemType::DiagFlatToRightBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: return TwisterRCTrackDiagFlatToRightBankedUp25; - case TrackElemType::DiagLeftBankedUp25ToFlat: + case TrackElemType::diagLeftBankedUp25ToFlat: return TwisterRCTrackDiagLeftBankedUp25ToFlat; - case TrackElemType::DiagRightBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: return TwisterRCTrackDiagRightBankedUp25ToFlat; - case TrackElemType::DiagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToLeftBankedDown25: return TwisterRCTrackDiagFlatToLeftBankedDown25; - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return TwisterRCTrackDiagFlatToRightBankedDown25; - case TrackElemType::DiagLeftBankedDown25ToFlat: + case TrackElemType::diagLeftBankedDown25ToFlat: return TwisterRCTrackDiagLeftBankedDown25ToFlat; - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return TwisterRCTrackDiagRightBankedDown25ToFlat; // Large banked curved slopes - case TrackElemType::LeftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagUp25: return TwisterRCTrackLeftEighthBankToDiagUp25; - case TrackElemType::RightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: return TwisterRCTrackRightEighthBankToDiagUp25; - case TrackElemType::LeftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToDiagDown25: return TwisterRCTrackLeftEighthBankToDiagDown25; - case TrackElemType::RightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: return TwisterRCTrackRightEighthBankToDiagDown25; - case TrackElemType::LeftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalUp25: return TwisterRCTrackLeftEighthBankToOrthogonalUp25; - case TrackElemType::RightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: return TwisterRCTrackRightEighthBankToOrthogonalUp25; - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return TwisterRCTrackLeftEighthBankToOrthogonalDown25; - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return TwisterRCTrackRightEighthBankToOrthogonalDown25; // Large corkscrews - case TrackElemType::LeftLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewUp: return TwisterRCTrackLeftLargeCorkscrewUp; - case TrackElemType::RightLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: return TwisterRCTrackRightLargeCorkscrewUp; - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewDown: return TwisterRCTrackLeftLargeCorkscrewDown; - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: return TwisterRCTrackRightLargeCorkscrewDown; // Medium half loops - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return TwisterRCTrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return TwisterRCTrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return TwisterRCTrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return TwisterRCTrackRightMediumHalfLoopDown; // Zero g rolls - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return TwisterRCTrackLeftZeroGRollUp; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return TwisterRCTrackRightZeroGRollUp; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return TwisterRCTrackLeftZeroGRollDown; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return TwisterRCTrackRightZeroGRollDown; // Large zero g rolls - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return TwisterRCTrackLeftLargeZeroGRollUp; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return TwisterRCTrackRightLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return TwisterRCTrackLeftLargeZeroGRollDown; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return TwisterRCTrackRightLargeZeroGRollDown; // Diagonal flat to steep - case TrackElemType::DiagFlatToUp60LongBase: + case TrackElemType::diagFlatToUp60LongBase: return TwisterRCTrackDiagFlatTo60DegUpLongBase; - case TrackElemType::DiagUp60ToFlatLongBase: + case TrackElemType::diagUp60ToFlatLongBase: return TwisterRCTrackDiag60DegUpToFlatLongBase; - case TrackElemType::DiagFlatToDown60LongBase: + case TrackElemType::diagFlatToDown60LongBase: return TwisterRCTrackDiagFlatTo60DegDownLongBase; - case TrackElemType::DiagDown60ToFlatLongBase: + case TrackElemType::diagDown60ToFlatLongBase: return TwisterRCTrackDiag60DegDownToFlatLongBase; - case TrackElemType::LeftEighthDiveLoopUpToOrthogonal: + case TrackElemType::leftEighthDiveLoopUpToOrthogonal: return TwisterRCTrackLeftEighthDiveLoopUpToOrthogonal; // Dive loops - case TrackElemType::RightEighthDiveLoopUpToOrthogonal: + case TrackElemType::rightEighthDiveLoopUpToOrthogonal: return TwisterRCTrackRightEighthDiveLoopUpToOrthogonal; - case TrackElemType::LeftEighthDiveLoopDownToDiag: + case TrackElemType::leftEighthDiveLoopDownToDiag: return TwisterRCTrackLeftEighthDiveLoopDownToDiag; - case TrackElemType::RightEighthDiveLoopDownToDiag: + case TrackElemType::rightEighthDiveLoopDownToDiag: return TwisterRCTrackRightEighthDiveLoopToDownOrthogonal; default: diff --git a/src/openrct2/paint/track/coaster/VirginiaReel.cpp b/src/openrct2/paint/track/coaster/VirginiaReel.cpp index 1fa84ba4a5cc..654183a9e09e 100644 --- a/src/openrct2/paint/track/coaster/VirginiaReel.cpp +++ b/src/openrct2/paint/track/coaster/VirginiaReel.cpp @@ -184,7 +184,7 @@ static void PaintVirginiaReelTrackFlat( PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -219,7 +219,7 @@ static void PaintVirginiaReelTrack25DegUp( session.WoodenSupportsPrependTo = ps; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -273,7 +273,7 @@ static void PaintVirginiaReelTrackFlatTo25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); @@ -309,7 +309,7 @@ static void PaintVirginiaReelTrack25DegUpToFlat( session.WoodenSupportsPrependTo = ps; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -377,7 +377,7 @@ static void PaintVirginiaReelStation( PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawStation(session, ride, direction, height, trackElement, StationBaseType::b, -2); @@ -406,7 +406,7 @@ static void PaintVirginiaReelTrackLeftQuarterTurn3Tiles( break; case 0: case 3: - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); break; @@ -440,7 +440,7 @@ static void PaintVirginiaReelTrackLeftQuarterTurn1Tile( TrackPaintUtilLeftQuarterTurn1TilePaint( session, 2, height, 0, direction, session.TrackColours, kPiecesFlatQuarterTurn1Tile); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { @@ -476,36 +476,36 @@ TrackPaintFunction GetTrackPaintFunctionVirginiaReel(OpenRCT2::TrackElemType tra { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintVirginiaReelTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintVirginiaReelStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintVirginiaReelTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintVirginiaReelTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintVirginiaReelTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintVirginiaReelTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintVirginiaReelTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintVirginiaReelTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintVirginiaReelTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintVirginiaReelTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintVirginiaReelTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintVirginiaReelTrackRightQuarterTurn1Tile; default: diff --git a/src/openrct2/paint/track/coaster/WildMouse.cpp b/src/openrct2/paint/track/coaster/WildMouse.cpp index 15e7632d4f24..800e8b3a6174 100644 --- a/src/openrct2/paint/track/coaster/WildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WildMouse.cpp @@ -199,7 +199,7 @@ static void WildMouseTrackStation( const TrackElement& trackElement, SupportType supportType) { auto trackType = trackElement.GetTrackType(); - if (trackType == TrackElemType::EndStation) + if (trackType == TrackElemType::endStation) { bool isClosed = trackElement.IsBrakeClosed(); PaintAddImageAsParentRotated( @@ -945,65 +945,65 @@ TrackPaintFunction GetTrackPaintFunctionWildMouse(OpenRCT2::TrackElemType trackT { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return WildMouseTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return WildMouseTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return WildMouseTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return WildMouseTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return WildMouseTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return WildMouseTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return WildMouseTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return WildMouseTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return WildMouseTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return WildMouseTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return WildMouseTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return WildMouseTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return WildMouseTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return WildMouseTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return WildMouseTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return WildMouseTrackRightQuarterTurn3; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return WildMouseTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return WildMouseTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return WildMouseTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return WildMouseTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return WildMouseTrackLeftQuarterTurn1; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return WildMouseTrackRightQuarterTurn1; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return WildMouseTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return WildMouseTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return WildMouseTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return WildMouseTrack60DegDownToFlat; - case TrackElemType::Brakes: + case TrackElemType::brakes: return WildMouseTrackBrakes; - case TrackElemType::RotationControlToggle: + case TrackElemType::rotationControlToggle: return WildMouseTrackRotationControlToggle; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return WildMouseTrackBlockBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp index 154da4a2abde..ae0a5eb0242d 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp @@ -2064,7 +2064,7 @@ static void WoodenRCTrackStation( const bool drewStation = TrackPaintUtilDrawStation2( session, ride, direction, height, trackElement, StationBaseType::none, 0, 9, 11); const ImageId colours = isClassic ? session.TrackColours : session.SupportColours; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { const ImageIndex imageIndex = kStationBlockBrakesImageIds[drewStation][direction][trackElement.IsBrakeClosed()]; PaintAddImageAsParentRotated( @@ -13362,315 +13362,315 @@ TrackPaintFunction GetTrackPaintFunctionWoodenAndClassicWoodenRC(OpenRCT2::Track { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return WoodenRCTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return WoodenRCTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return WoodenRCTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return WoodenRCTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return WoodenRCTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return WoodenRCTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return WoodenRCTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return WoodenRCTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return WoodenRCTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return WoodenRCTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return WoodenRCTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return WoodenRCTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return WoodenRCTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return WoodenRCTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return WoodenRCTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return WoodenRCTrackRightQuarterTurn5; - case TrackElemType::FlatToLeftBank: + case TrackElemType::flatToLeftBank: return WoodenRCTrackFlatToBank; - case TrackElemType::FlatToRightBank: + case TrackElemType::flatToRightBank: return WoodenRCTrackFlatToBank; - case TrackElemType::LeftBankToFlat: + case TrackElemType::leftBankToFlat: return WoodenRCTrackLeftBankToFlat; - case TrackElemType::RightBankToFlat: + case TrackElemType::rightBankToFlat: return WoodenRCTrackRightBankToFlat; - case TrackElemType::BankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: return WoodenRCTrackBankedLeftQuarterTurn5; - case TrackElemType::BankedRightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: return WoodenRCTrackBankedRightQuarterTurn5; - case TrackElemType::LeftBankToUp25: + case TrackElemType::leftBankToUp25: return WoodenRCTrackBankTo25DegUp; - case TrackElemType::RightBankToUp25: + case TrackElemType::rightBankToUp25: return WoodenRCTrackBankTo25DegUp; - case TrackElemType::Up25ToLeftBank: + case TrackElemType::up25ToLeftBank: return WoodenRCTrack25DegUpToBank; - case TrackElemType::Up25ToRightBank: + case TrackElemType::up25ToRightBank: return WoodenRCTrack25DegUpToBank; - case TrackElemType::LeftBankToDown25: + case TrackElemType::leftBankToDown25: return WoodenRCTrackLeftBankTo25DegDown; - case TrackElemType::RightBankToDown25: + case TrackElemType::rightBankToDown25: return WoodenRCTrackRightBankTo25DegDown; - case TrackElemType::Down25ToLeftBank: + case TrackElemType::down25ToLeftBank: return WoodenRCTrack25DegDownToLeftBank; - case TrackElemType::Down25ToRightBank: + case TrackElemType::down25ToRightBank: return WoodenRCTrack25DegDownToRightBank; - case TrackElemType::LeftBank: + case TrackElemType::leftBank: return WoodenRCTrackFlatToBank; - case TrackElemType::RightBank: + case TrackElemType::rightBank: return WoodenRCTrackRightBank; - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return WoodenRCTrackLeftQuarterTurn525DegUp; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return WoodenRCTrackRightQuarterTurn525DegUp; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return WoodenRCTrackLeftQuarterTurn525DegDown; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return WoodenRCTrackRightQuarterTurn525DegDown; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return WoodenRCTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return WoodenRCTrackSBendRight; - case TrackElemType::LeftVerticalLoop: + case TrackElemType::leftVerticalLoop: return WoodenRCTrackLeftVerticalLoop; - case TrackElemType::RightVerticalLoop: + case TrackElemType::rightVerticalLoop: return WoodenRCTrackRightVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return WoodenRCTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return WoodenRCTrackRightQuarterTurn3; - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: return WoodenRCTrackLeftQuarterTurn3Bank; - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: return WoodenRCTrackRightQuarterTurn3Bank; - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return WoodenRCTrackLeftQuarterTurn325DegUp; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return WoodenRCTrackRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return WoodenRCTrackLeftQuarterTurn325DegDown; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return WoodenRCTrackRightQuarterTurn325DegDown; - case TrackElemType::LeftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixUpSmall: return WoodenRCTrackLeftHalfBankedHelixUpSmall; - case TrackElemType::RightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: return WoodenRCTrackRightHalfBankedHelixUpSmall; - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return WoodenRCTrackLeftHalfBankedHelixDownSmall; - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return WoodenRCTrackRightHalfBankedHelixDownSmall; - case TrackElemType::LeftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixUpLarge: return WoodenRCTrackLeftHalfBankedHelixUpLarge; - case TrackElemType::RightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: return WoodenRCTrackRightHalfBankedHelixUpLarge; - case TrackElemType::LeftHalfBankedHelixDownLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: return WoodenRCTrackLeftHalfBankedHelixDownLarge; - case TrackElemType::RightHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: return WoodenRCTrackRightHalfBankedHelixDownLarge; - case TrackElemType::LeftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileUp60: return WoodenRCTrackLeftQuarterTurn160DegUp; - case TrackElemType::RightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: return WoodenRCTrackRightQuarterTurn160DegUp; - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileDown60: return WoodenRCTrackLeftQuarterTurn160DegDown; - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: return WoodenRCTrackRightQuarterTurn160DegDown; - case TrackElemType::Brakes: + case TrackElemType::brakes: return WoodenRCTrackBrakes; - case TrackElemType::Up25LeftBanked: + case TrackElemType::up25LeftBanked: return WoodenRCTrack25DegUpLeftBanked; - case TrackElemType::Up25RightBanked: + case TrackElemType::up25RightBanked: return WoodenRCTrack25DegUpRightBanked; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return WoodenRCTrackOnRidePhoto; - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return WoodenRCTrackFlatTo60DegUpLongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return WoodenRCTrack60DegUpToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return WoodenRCTrackFlatTo60DegDownLongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return WoodenRCTrack60DegDownToFlatLongBase; - case TrackElemType::Down25LeftBanked: + case TrackElemType::down25LeftBanked: return WoodenRCTrack25DegDownLeftBanked; - case TrackElemType::Down25RightBanked: + case TrackElemType::down25RightBanked: return WoodenRCTrack25DegDownRightBanked; - case TrackElemType::Watersplash: + case TrackElemType::watersplash: return WoodenRCTrackWaterSplash; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return WoodenRCTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return WoodenRCTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return WoodenRCTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return WoodenRCTrackRightEighthToOrthogonal; - case TrackElemType::LeftEighthBankToDiag: + case TrackElemType::leftEighthBankToDiag: return WoodenRCTrackLeftEighthBankToDiag; - case TrackElemType::RightEighthBankToDiag: + case TrackElemType::rightEighthBankToDiag: return WoodenRCTrackRightEighthBankToDiag; - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToOrthogonal: return WoodenRCTrackLeftEighthBankToOrthogonal; - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToOrthogonal: return WoodenRCTrackRightEighthBankToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return WoodenRCTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return WoodenRCTrackDiag25DegUp; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return WoodenRCTrackDiag60DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return WoodenRCTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return WoodenRCTrackDiag25DegUpTo60DegUp; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return WoodenRCTrackDiag60DegUpTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return WoodenRCTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return WoodenRCTrackDiag25DegDown; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return WoodenRCTrackDiag60DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return WoodenRCTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return WoodenRCTrackDiag25DegDownTo60DegDown; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return WoodenRCTrackDiag60DegDownTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return WoodenRCTrackDiag25DegDownToFlat; - case TrackElemType::DiagFlatToLeftBank: + case TrackElemType::diagFlatToLeftBank: return WoodenRCTrackDiagFlatToBank; - case TrackElemType::DiagFlatToRightBank: + case TrackElemType::diagFlatToRightBank: return WoodenRCTrackDiagFlatToBank; - case TrackElemType::DiagLeftBankToFlat: + case TrackElemType::diagLeftBankToFlat: return WoodenRCTrackDiagLeftBankToFlat; - case TrackElemType::DiagRightBankToFlat: + case TrackElemType::diagRightBankToFlat: return WoodenRCTrackDiagRightBankToFlat; - case TrackElemType::DiagLeftBankToUp25: + case TrackElemType::diagLeftBankToUp25: return WoodenRCTrackDiagBankTo25DegUp; - case TrackElemType::DiagRightBankToUp25: + case TrackElemType::diagRightBankToUp25: return WoodenRCTrackDiagBankTo25DegUp; - case TrackElemType::DiagUp25ToLeftBank: + case TrackElemType::diagUp25ToLeftBank: return WoodenRCTrackDiagUp25ToBank; - case TrackElemType::DiagUp25ToRightBank: + case TrackElemType::diagUp25ToRightBank: return WoodenRCTrackDiagUp25ToBank; - case TrackElemType::DiagLeftBankToDown25: + case TrackElemType::diagLeftBankToDown25: return WoodenRCTrackDiagLeftBankToDown25; - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagRightBankToDown25: return WoodenRCTrackDiagRightBankToDown25; - case TrackElemType::DiagDown25ToLeftBank: + case TrackElemType::diagDown25ToLeftBank: return WoodenRCTrackDiagDown25ToLeftBank; - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagDown25ToRightBank: return WoodenRCTrackDiagDown25ToRightBank; - case TrackElemType::DiagLeftBank: + case TrackElemType::diagLeftBank: return WoodenRCTrackDiagLeftBank; - case TrackElemType::DiagRightBank: + case TrackElemType::diagRightBank: return WoodenRCTrackDiagRightBank; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return WoodenRCTrackLeftBankToLeftQuarterTurn325DegUp; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return WoodenRCTrackRightBankToRightQuarterTurn325DegUp; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return WoodenRCTrackLeftQuarterTurn325DegDownToLeftBank; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return WoodenRCTrackRightQuarterTurn325DegDownToRightBank; - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: return WoodenRCTrackBlockBrakes; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: return WoodenRCTrackLeftBankedQuarterTurn325DegUp; - case TrackElemType::RightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: return WoodenRCTrackRightBankedQuarterTurn325DegUp; - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return WoodenRCTrackLeftBankedQuarterTurn325DegDown; - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return WoodenRCTrackRightBankedQuarterTurn325DegDown; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: return WoodenRCTrackLeftBankedQuarterTurn525DegUp; - case TrackElemType::RightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: return WoodenRCTrackRightBankedQuarterTurn525DegUp; - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return WoodenRCTrackLeftBankedQuarterTurn525DegDown; - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return WoodenRCTrackRightBankedQuarterTurn525DegDown; - case TrackElemType::Up25ToLeftBankedUp25: + case TrackElemType::up25ToLeftBankedUp25: return WoodenRCTrack25DegUpToLeftBanked25DegUp; - case TrackElemType::Up25ToRightBankedUp25: + case TrackElemType::up25ToRightBankedUp25: return WoodenRCTrack25DegUpToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToUp25: + case TrackElemType::leftBankedUp25ToUp25: return WoodenRCTrackLeftBanked25DegUpTo25DegUp; - case TrackElemType::RightBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: return WoodenRCTrackRightBanked25DegUpTo25DegUp; - case TrackElemType::Down25ToLeftBankedDown25: + case TrackElemType::down25ToLeftBankedDown25: return WoodenRCTrack25DegDownToLeftBanked25DegDown; - case TrackElemType::Down25ToRightBankedDown25: + case TrackElemType::down25ToRightBankedDown25: return WoodenRCTrack25DegDownToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToDown25: + case TrackElemType::leftBankedDown25ToDown25: return WoodenRCTrackLeftBanked25DegDownTo25DegDown; - case TrackElemType::RightBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: return WoodenRCTrackRightBanked25DegDownTo25DegDown; - case TrackElemType::LeftBankedFlatToLeftBankedUp25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: return WoodenRCTrackLeftBankedFlatToLeftBanked25DegUp; - case TrackElemType::RightBankedFlatToRightBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: return WoodenRCTrackRightBankedFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: return WoodenRCTrackLeftBanked25DegUpToLeftBankedFlat; - case TrackElemType::RightBankedUp25ToRightBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: return WoodenRCTrackRightBanked25DegUpToRightBankedFlat; - case TrackElemType::LeftBankedFlatToLeftBankedDown25: + case TrackElemType::leftBankedFlatToLeftBankedDown25: return WoodenRCTrackLeftBankedFlatToLeftBanked25DegDown; - case TrackElemType::RightBankedFlatToRightBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: return WoodenRCTrackRightBankedFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: return WoodenRCTrackLeftBanked25DegDownToLeftBankedFlat; - case TrackElemType::RightBankedDown25ToRightBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: return WoodenRCTrackRightBanked25DegDownToRightBankedFlat; - case TrackElemType::FlatToLeftBankedUp25: + case TrackElemType::flatToLeftBankedUp25: return WoodenRCTrackFlatToLeftBanked25DegUp; - case TrackElemType::FlatToRightBankedUp25: + case TrackElemType::flatToRightBankedUp25: return WoodenRCTrackFlatToRightBanked25DegUp; - case TrackElemType::LeftBankedUp25ToFlat: + case TrackElemType::leftBankedUp25ToFlat: return WoodenRCTrackLeftBanked25DegUpToFlat; - case TrackElemType::RightBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: return WoodenRCTrackRightBanked25DegUpToFlat; - case TrackElemType::FlatToLeftBankedDown25: + case TrackElemType::flatToLeftBankedDown25: return WoodenRCTrackFlatToLeftBanked25DegDown; - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::flatToRightBankedDown25: return WoodenRCTrackFlatToRightBanked25DegDown; - case TrackElemType::LeftBankedDown25ToFlat: + case TrackElemType::leftBankedDown25ToFlat: return WoodenRCTrackLeftBanked25DegDownToFlat; - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return WoodenRCTrackRightBanked25DegDownToFlat; - case TrackElemType::Booster: + case TrackElemType::booster: return WoodenRCTrackBooster; - case TrackElemType::DiagBrakes: + case TrackElemType::diagBrakes: return WoodenRCTrackDiagBrakes; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: return WoodenRCTrackDiagBlockBrakes; - case TrackElemType::LeftMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: return WoodenRCTrackLeftMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return WoodenRCTrackRightMediumHalfLoopUp; - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return WoodenRCTrackLeftMediumHalfLoopDown; - case TrackElemType::RightMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: return WoodenRCTrackRightMediumHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: return WoodenRCTrackLeftLargeHalfLoopUp; - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return WoodenRCTrackRightLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: return WoodenRCTrackLeftLargeHalfLoopDown; - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return WoodenRCTrackRightLargeHalfLoopDown; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp index 60ed53fa2572..72eaaab5278b 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp @@ -303,7 +303,7 @@ static void WoodenRCTrackLeftQuarterTurn3Bank( kSegmentsAll, }; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -521,7 +521,7 @@ static void WoodenRCTrackBankedRightQuarterTurn5( kSegmentsAll, }; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -2964,7 +2964,7 @@ static void WoodenRCTrackDiagFlatToBank( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -3032,7 +3032,7 @@ static void WoodenRCTrackDiagBankTo25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -3100,7 +3100,7 @@ static void WoodenRCTrackDiagUp25ToBank( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -3168,7 +3168,7 @@ static void WoodenRCTrackDiagLeftBank( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -3336,7 +3336,7 @@ static void WoodenRCTrackLeftEighthBankToDiag( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -3504,7 +3504,7 @@ static void WoodenRCTrackRightEighthBankToDiag( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); diff --git a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp index b4565ee46b58..74a4070a40b4 100644 --- a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp @@ -141,7 +141,7 @@ static void WoodenWildMouseTrackFlat( auto imageId = session.TrackColours.WithIndex(imageIds[direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { 32, 20, 1 }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilSetSegmentSupportHeight( @@ -169,7 +169,7 @@ static void WoodenWildMouseTrackStation( PaintAddImageAsParentRotated( session, direction, session.TrackColours.WithIndex(imageIds[direction]), { 0, 6, height }, { { 0, 6, height + 1 }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawStation(session, ride, direction, height, trackElement, StationBaseType::b, -2); TrackPaintUtilDrawStationTunnel(session, direction, height); @@ -201,7 +201,7 @@ static void WoodenWildMouseTrack25DegUp( auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -249,7 +249,7 @@ static void WoodenWildMouseTrack60DegUp( session, direction, imageId, { 0, 6, height }, { { 28, 4, height - 16 }, { 2, 24, 93 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -289,7 +289,7 @@ static void WoodenWildMouseTrackFlatTo25DegUp( auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -341,7 +341,7 @@ static void WoodenWildMouseTrack25DegUpTo60DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -392,7 +392,7 @@ static void WoodenWildMouseTrack60DegTo25DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -432,7 +432,7 @@ static void WoodenWildMouseTrack25DegUpToFlat( auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -526,7 +526,7 @@ static void WoodenWildMouseTrackRightQuarterTurn3( TrackPaintUtilRightQuarterTurn3TilesPaint4(session, height, direction, trackSequence, session.TrackColours, imageIds); TrackPaintUtilRightQuarterTurn3TilesTunnel(session, kTunnelGroup, TunnelSubType::Flat, height, direction, trackSequence); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); int32_t blockedSegments = 0; @@ -582,7 +582,7 @@ static void WoodenWildMouseTrackLeftQuarterTurn1( PaintAddImageAsParent(session, imageId, { 6, 6, height }, { 24, 24, 1 }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilLeftQuarterTurn1TileTunnel( session, kTunnelGroup, direction, height, 0, TunnelSubType::Flat, 0, TunnelSubType::Flat); @@ -633,7 +633,7 @@ static void WoodenWildMouseTrackFlatTo60DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -684,7 +684,7 @@ static void WoodenWildMouseTrack60DegUpToFlat( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -720,51 +720,51 @@ TrackPaintFunction GetTrackPaintFunctionWoodenWildMouse(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return WoodenWildMouseTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return WoodenWildMouseTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return WoodenWildMouseTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return WoodenWildMouseTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return WoodenWildMouseTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return WoodenWildMouseTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return WoodenWildMouseTrack60DegTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return WoodenWildMouseTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return WoodenWildMouseTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return WoodenWildMouseTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return WoodenWildMouseTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return WoodenWildMouseTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return WoodenWildMouseTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return WoodenWildMouseTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return WoodenWildMouseTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return WoodenWildMouseTrackRightQuarterTurn3; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return WoodenWildMouseTrackLeftQuarterTurn1; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return WoodenWildMouseTrackRightQuarterTurn1; - case TrackElemType::FlatToUp60: + case TrackElemType::flatToUp60: return WoodenWildMouseTrackFlatTo60DegUp; - case TrackElemType::Up60ToFlat: + case TrackElemType::up60ToFlat: return WoodenWildMouseTrack60DegUpToFlat; - case TrackElemType::FlatToDown60: + case TrackElemType::flatToDown60: return WoodenWildMouseTrackFlatTo60DegDown; - case TrackElemType::Down60ToFlat: + case TrackElemType::down60ToFlat: return WoodenWildMouseTrack60DegDownToFlat; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/gentle/CarRide.cpp b/src/openrct2/paint/track/gentle/CarRide.cpp index bff64e1489f8..522d202970f3 100644 --- a/src/openrct2/paint/track/gentle/CarRide.cpp +++ b/src/openrct2/paint/track/gentle/CarRide.cpp @@ -727,54 +727,54 @@ TrackPaintFunction GetTrackPaintFunctionCarRide(OpenRCT2::TrackElemType trackTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintCarRideTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintCarRideStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintCarRideTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return PaintCarRideTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintCarRideTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return PaintCarRideTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return PaintCarRideTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintCarRideTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintCarRideTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return PaintCarRideTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintCarRideTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return PaintCarRideTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return PaintCarRideTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintCarRideTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintCarRideTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintCarRideTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintCarRideTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintCarRideTrackRightQuarterTurn1Tile; - case TrackElemType::Rapids: + case TrackElemType::rapids: return PaintCarRideTrackLogBumps; - case TrackElemType::SpinningTunnel: + case TrackElemType::spinningTunnel: return PaintCarRideTrackSpinningTunnel; default: diff --git a/src/openrct2/paint/track/gentle/Circus.cpp b/src/openrct2/paint/track/gentle/Circus.cpp index 73caf4278759..11bb974422a7 100644 --- a/src/openrct2/paint/track/gentle/Circus.cpp +++ b/src/openrct2/paint/track/gentle/Circus.cpp @@ -123,7 +123,7 @@ static void PaintCircus( TrackPaintFunction GetTrackPaintFunctionCircus(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/CrookedHouse.cpp b/src/openrct2/paint/track/gentle/CrookedHouse.cpp index 7fc59828ced4..a45d557f90ab 100644 --- a/src/openrct2/paint/track/gentle/CrookedHouse.cpp +++ b/src/openrct2/paint/track/gentle/CrookedHouse.cpp @@ -149,7 +149,7 @@ static void PaintCrookedHouse( TrackPaintFunction GetTrackPaintFunctionCrookedHouse(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/Dodgems.cpp b/src/openrct2/paint/track/gentle/Dodgems.cpp index 09b2d67ea28a..13e7ce136198 100644 --- a/src/openrct2/paint/track/gentle/Dodgems.cpp +++ b/src/openrct2/paint/track/gentle/Dodgems.cpp @@ -110,7 +110,7 @@ static void PaintDodgems( */ TrackPaintFunction GetTrackPaintFunctionDodgems(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack4x4) + if (trackType != TrackElemType::flatTrack4x4) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/FerrisWheel.cpp b/src/openrct2/paint/track/gentle/FerrisWheel.cpp index 08a1eefeb799..39b3e74c94ed 100644 --- a/src/openrct2/paint/track/gentle/FerrisWheel.cpp +++ b/src/openrct2/paint/track/gentle/FerrisWheel.cpp @@ -176,7 +176,7 @@ static void PaintFerrisWheel( TrackPaintFunction GetTrackPaintFunctionFerrisWheel(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack1x4C) + if (trackType != TrackElemType::flatTrack1x4C) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp index cc3c9c40dead..e2d573ec5174 100644 --- a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp +++ b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp @@ -71,7 +71,7 @@ static void PaintFlyingSaucers( */ TrackPaintFunction GetTrackPaintFunctionFlyingSaucers(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack4x4) + if (trackType != TrackElemType::flatTrack4x4) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/GhostTrain.cpp b/src/openrct2/paint/track/gentle/GhostTrain.cpp index 4e031da1a79c..1ea28c0de97d 100644 --- a/src/openrct2/paint/track/gentle/GhostTrain.cpp +++ b/src/openrct2/paint/track/gentle/GhostTrain.cpp @@ -262,7 +262,7 @@ static void PaintGhostTrainTrackFlatTo25DegUp( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - bool isBackwards = trackElement.GetTrackType() == TrackElemType::Down25ToFlat; + bool isBackwards = trackElement.GetTrackType() == TrackElemType::down25ToFlat; TunnelType doorImage; if (!isBackwards) { @@ -428,7 +428,7 @@ static void PaintGhostTrainTrackRightQuarterTurn3Tiles( TrackPaintUtilRightQuarterTurn3TilesPaint( session, 3, height, direction, trackSequence, session.TrackColours, kGhostTrainTrackPiecesQuarterTurn3Tiles, nullptr, defaultRightQuarterTurn3TilesBoundLengths, defaultRightQuarterTurn3TilesBoundOffsets); - bool isBackwards = trackElement.GetTrackType() == TrackElemType::LeftQuarterTurn3Tiles; + bool isBackwards = trackElement.GetTrackType() == TrackElemType::leftQuarterTurn3Tiles; bool isDoorA = (!isBackwards && trackSequence == 0) || (isBackwards && trackSequence == 3); auto tunnelType = isDoorA ? kDoorOpeningInwardsToImage[trackElement.GetDoorAState()] : kDoorOpeningOutwardsToImage[trackElement.GetDoorBState()]; @@ -478,7 +478,7 @@ static void PaintGhostTrainTrackLeftQuarterTurn1Tile( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - bool isBackwards = trackElement.GetTrackType() == TrackElemType::RightQuarterTurn1Tile; + bool isBackwards = trackElement.GetTrackType() == TrackElemType::rightQuarterTurn1Tile; TunnelType tunnelStartImage, tunnelEndImage; if (!isBackwards) { @@ -563,42 +563,42 @@ TrackPaintFunction GetTrackPaintFunctionGhostTrain(OpenRCT2::TrackElemType track { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintGhostTrainTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintGhostTrainStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintGhostTrainTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintGhostTrainTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintGhostTrainTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintGhostTrainTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintGhostTrainTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintGhostTrainTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintGhostTrainTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintGhostTrainTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintGhostTrainTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintGhostTrainTrackRightQuarterTurn1Tile; - case TrackElemType::Brakes: + case TrackElemType::brakes: return PaintGhostTrainTrackBrakes; - case TrackElemType::SpinningTunnel: + case TrackElemType::spinningTunnel: return PaintGhostTrainTrackSpinningTunnel; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/gentle/HauntedHouse.cpp b/src/openrct2/paint/track/gentle/HauntedHouse.cpp index 5cd3deaf7cb0..02fd4e69c77e 100644 --- a/src/openrct2/paint/track/gentle/HauntedHouse.cpp +++ b/src/openrct2/paint/track/gentle/HauntedHouse.cpp @@ -74,7 +74,7 @@ static void PaintHauntedHouse( int32_t edges = kEdges3x3[trackSequence]; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, GetStationColourScheme(session, trackElement)); const StationObject* stationObject = ride.getStationObject(); @@ -127,7 +127,7 @@ static void PaintHauntedHouse( TrackPaintFunction GetTrackPaintFunctionHauntedHouse(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/Maze.cpp b/src/openrct2/paint/track/gentle/Maze.cpp index b04413a0aa39..c4e9cff68a93 100644 --- a/src/openrct2/paint/track/gentle/Maze.cpp +++ b/src/openrct2/paint/track/gentle/Maze.cpp @@ -189,7 +189,7 @@ static void MazePaintSetup( */ TrackPaintFunction GetTrackPaintFunctionMaze(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::Maze) + if (trackType != TrackElemType::maze) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/MerryGoRound.cpp b/src/openrct2/paint/track/gentle/MerryGoRound.cpp index bfae0f618a7d..2b594fbc8ebc 100644 --- a/src/openrct2/paint/track/gentle/MerryGoRound.cpp +++ b/src/openrct2/paint/track/gentle/MerryGoRound.cpp @@ -177,7 +177,7 @@ static void PaintMerryGoRound( TrackPaintFunction GetTrackPaintFunctionMerryGoRound(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/MiniGolf.cpp b/src/openrct2/paint/track/gentle/MiniGolf.cpp index 51fcdcccb399..69c46c1b6597 100644 --- a/src/openrct2/paint/track/gentle/MiniGolf.cpp +++ b/src/openrct2/paint/track/gentle/MiniGolf.cpp @@ -1090,42 +1090,42 @@ TrackPaintFunction GetTrackPaintFunctionMiniGolf(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintMiniGolfTrackFlat; - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: - case TrackElemType::EndStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: + case TrackElemType::endStation: return PaintMiniGolfStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintMiniGolfTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintMiniGolfTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintMiniGolfTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintMiniGolfTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintMiniGolfTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintMiniGolfTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintMiniGolfTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintMiniGolfTrackRightQuarterTurn1Tile; - case TrackElemType::MinigolfHoleA: + case TrackElemType::minigolfHoleA: return PaintMiniGolfHoleA; - case TrackElemType::MinigolfHoleB: + case TrackElemType::minigolfHoleB: return PaintMiniGolfHoleB; - case TrackElemType::MinigolfHoleC: + case TrackElemType::minigolfHoleC: return PaintMiniGolfHoleC; - case TrackElemType::MinigolfHoleD: + case TrackElemType::minigolfHoleD: return PaintMiniGolfHoleD; - case TrackElemType::MinigolfHoleE: + case TrackElemType::minigolfHoleE: return PaintMiniGolfHoleE; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp index b7ba82cb0455..c2aba222aa3b 100644 --- a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp +++ b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp @@ -369,39 +369,39 @@ TrackPaintFunction GetTrackPaintFunctionMiniHelicopters(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintMiniHelicoptersTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintMiniHelicoptersTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintMiniHelicoptersTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintMiniHelicoptersTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintMiniHelicoptersTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintMiniHelicoptersTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintMiniHelicoptersTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintMiniHelicoptersTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintMiniHelicoptersTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintMiniHelicoptersTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintMiniHelicoptersTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintMiniHelicoptersTrackRightQuarterTurn1Tile; - case TrackElemType::SpinningTunnel: + case TrackElemType::spinningTunnel: return PaintMiniHelicoptersTrackSpinningTunnel; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/gentle/MonorailCycles.cpp b/src/openrct2/paint/track/gentle/MonorailCycles.cpp index 4ba25f2a7376..35cfaf8fb403 100644 --- a/src/openrct2/paint/track/gentle/MonorailCycles.cpp +++ b/src/openrct2/paint/track/gentle/MonorailCycles.cpp @@ -595,27 +595,27 @@ TrackPaintFunction GetTrackPaintFunctionMonorailCycles(OpenRCT2::TrackElemType t { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintMonorailCyclesTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintMonorailCyclesStation; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return PaintMonorailCyclesTrackLeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return PaintMonorailCyclesTrackRightQuarterTurn5Tiles; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return PaintMonorailCyclesTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return PaintMonorailCyclesTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintMonorailCyclesTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintMonorailCyclesTrackRightQuarterTurn3Tiles; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/gentle/ObservationTower.cpp b/src/openrct2/paint/track/gentle/ObservationTower.cpp index 4c851a6272e9..58a9cf4f052f 100644 --- a/src/openrct2/paint/track/gentle/ObservationTower.cpp +++ b/src/openrct2/paint/track/gentle/ObservationTower.cpp @@ -144,10 +144,10 @@ TrackPaintFunction GetTrackPaintFunctionObservationTower(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::TowerBase: + case TrackElemType::towerBase: return PaintObservationTowerBase; - case TrackElemType::TowerSection: + case TrackElemType::towerSection: return PaintObservationTowerSection; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/gentle/SpaceRings.cpp b/src/openrct2/paint/track/gentle/SpaceRings.cpp index 9452a4079b87..9f36e11a42ec 100644 --- a/src/openrct2/paint/track/gentle/SpaceRings.cpp +++ b/src/openrct2/paint/track/gentle/SpaceRings.cpp @@ -102,7 +102,7 @@ static void PaintSpaceRings( ImageId imageId; auto stationColour = GetStationColourScheme(session, trackElement); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, GetStationColourScheme(session, trackElement)); const StationObject* stationObject = ride.getStationObject(); @@ -192,7 +192,7 @@ static void PaintSpaceRings( */ TrackPaintFunction GetTrackPaintFunctionSpaceRings(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/gentle/SpiralSlide.cpp b/src/openrct2/paint/track/gentle/SpiralSlide.cpp index ef2117f25184..596b9a05e0ec 100644 --- a/src/openrct2/paint/track/gentle/SpiralSlide.cpp +++ b/src/openrct2/paint/track/gentle/SpiralSlide.cpp @@ -255,7 +255,7 @@ static void PaintSpiralSlide( */ TrackPaintFunction GetTrackPaintFunctionSpiralSlide(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack2x2) + if (trackType != TrackElemType::flatTrack2x2) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/shops/Facility.cpp b/src/openrct2/paint/track/shops/Facility.cpp index f33f0ea04b9a..49c81b5a2d03 100644 --- a/src/openrct2/paint/track/shops/Facility.cpp +++ b/src/openrct2/paint/track/shops/Facility.cpp @@ -30,7 +30,7 @@ static void PaintFacility( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - bool hasSupports = DrawSupportForSequenceA( + bool hasSupports = DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, GetShopSupportColourScheme(session, trackElement)); auto rideEntry = ride.getRideEntry(); @@ -84,7 +84,7 @@ TrackPaintFunction GetTrackPaintFunctionFacility(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::FlatTrack1x1A: + case TrackElemType::flatTrack1x1A: return PaintFacility; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/shops/Shop.cpp b/src/openrct2/paint/track/shops/Shop.cpp index acbaf335a1a0..a69c8be74eef 100644 --- a/src/openrct2/paint/track/shops/Shop.cpp +++ b/src/openrct2/paint/track/shops/Shop.cpp @@ -29,7 +29,7 @@ static void PaintShop( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - bool hasSupports = DrawSupportForSequenceA( + bool hasSupports = DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, GetShopSupportColourScheme(session, trackElement)); auto rideEntry = ride.getRideEntry(); @@ -69,8 +69,8 @@ TrackPaintFunction GetTrackPaintFunctionShop(OpenRCT2::TrackElemType trackType) { switch (trackType) { - case TrackElemType::FlatTrack1x1A: - case TrackElemType::FlatTrack1x1B: + case TrackElemType::flatTrack1x1A: + case TrackElemType::flatTrack1x1B: return PaintShop; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/thrill/3dCinema.cpp b/src/openrct2/paint/track/thrill/3dCinema.cpp index 1f2ac60b0f2f..4ccca5d5fd03 100644 --- a/src/openrct2/paint/track/thrill/3dCinema.cpp +++ b/src/openrct2/paint/track/thrill/3dCinema.cpp @@ -123,7 +123,7 @@ static void Paint3dCinema( TrackPaintFunction GetTrackPaintFunction3dCinema(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/thrill/Enterprise.cpp b/src/openrct2/paint/track/thrill/Enterprise.cpp index 6ca32d7ce587..d86e06902802 100644 --- a/src/openrct2/paint/track/thrill/Enterprise.cpp +++ b/src/openrct2/paint/track/thrill/Enterprise.cpp @@ -177,7 +177,7 @@ static void PaintEnterprise( TrackPaintFunction GetTrackPaintFunctionEnterprise(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack4x4) + if (trackType != TrackElemType::flatTrack4x4) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/thrill/GoKarts.cpp b/src/openrct2/paint/track/thrill/GoKarts.cpp index 3c736db264f9..1d42d6f87f82 100644 --- a/src/openrct2/paint/track/thrill/GoKarts.cpp +++ b/src/openrct2/paint/track/thrill/GoKarts.cpp @@ -1367,7 +1367,7 @@ static void PaintGoKartsTrackFlat( PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1404,7 +1404,7 @@ static void PaintGoKartsTrack25DegUp( session.WoodenSupportsPrependTo = ps; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) @@ -1457,7 +1457,7 @@ static void PaintGoKartsTrackFlatTo25DegUp( session.WoodenSupportsPrependTo = ps; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) @@ -1510,7 +1510,7 @@ static void PaintGoKartsTrack25DegUpToFlat( session.WoodenSupportsPrependTo = ps; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) @@ -1569,7 +1569,7 @@ static void PaintGoKartsStation( ImageId imageId; const uint32_t (*sprites)[2] = go_karts_track_pieces_starting_grid; - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { sprites = go_karts_track_pieces_starting_grid_end; } @@ -1621,7 +1621,7 @@ static void PaintGoKartsStation( TrackPaintUtilDrawStationCovers(session, EDGE_SW, hasFence, stationObj, height, stationColour); } - if (trackElement.GetTrackType() == TrackElemType::EndStation) + if (trackElement.GetTrackType() == TrackElemType::endStation) { const bool hasGreenLight = trackElement.HasGreenLight(); @@ -1662,7 +1662,7 @@ static void PaintGoKartsStation( } } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -1858,7 +1858,7 @@ static void TrackFlatToUp60LongBase( session, session.TrackColours.WithIndex(kGoKartsFlatToUp60LongBaseSprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsFlatToUp60LongBaseBoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -1884,7 +1884,7 @@ static void TrackUp60ToFlatLongBase( session, session.TrackColours.WithIndex(kGoKartsUp60ToFlatLongBaseSprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsUp60ToFlatLongBaseBoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -1971,7 +1971,7 @@ static void TrackLeftQuarterTurn5Tiles( session, session.TrackColours.WithIndex(kGoKartsLeftQuarterTurn5TilesSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsLeftQuarterTurn5TilesBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -2023,7 +2023,7 @@ static void TrackLeftEighthToDiag( session, session.TrackColours.WithIndex(kGoKartsLeftEighthToDiagSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsLeftEighthToDiagBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -2047,7 +2047,7 @@ static void TrackRightEighthToDiag( session, session.TrackColours.WithIndex(kGoKartsRightEighthToDiagSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsRightEighthToDiagBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -2086,7 +2086,7 @@ static void TrackDiagFlat( session, session.TrackColours.WithIndex(kGoKartsDiagFlatSprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagFlatBoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -2103,7 +2103,7 @@ static void TrackDiagFlatToUp25( session, session.TrackColours.WithIndex(kGoKartsDiagFlatToUp25Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagFlatToUp25BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -2120,7 +2120,7 @@ static void TrackDiagUp25ToFlat( session, session.TrackColours.WithIndex(kGoKartsDiagUp25ToFlatSprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp25ToFlatBoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2137,7 +2137,7 @@ static void TrackDiagUp25( session, session.TrackColours.WithIndex(kGoKartsDiagUp25Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp25BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2181,7 +2181,7 @@ static void TrackDiagUp25ToUp60( session, session.TrackColours.WithIndex(kGoKartsDiagUp25ToUp60Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp25ToUp60BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 72); @@ -2198,7 +2198,7 @@ static void TrackDiagUp60ToUp25( session, session.TrackColours.WithIndex(kGoKartsDiagUp60ToUp25Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp60ToUp25BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 72); @@ -2215,7 +2215,7 @@ static void TrackDiagUp60( session, session.TrackColours.WithIndex(kGoKartsDiagUp60Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp60BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 104); @@ -2708,7 +2708,7 @@ static void TrackSBendLeft( session, session.TrackColours.WithIndex(kGoKartsSBendLeftSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsSBendLeftBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if ((trackSequence == 0 && (direction == 0 || direction == 3)) || (trackSequence == 3 && (direction == 1 || direction == 2))) @@ -2743,7 +2743,7 @@ static void TrackSBendRight( session, session.TrackColours.WithIndex(kGoKartsSBendRightSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsSBendRightBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if ((trackSequence == 0 && (direction == 0 || direction == 3)) || (trackSequence == 3 && (direction == 1 || direction == 2))) @@ -2771,151 +2771,151 @@ TrackPaintFunction GetTrackPaintFunctionGoKarts(OpenRCT2::TrackElemType trackTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintGoKartsTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintGoKartsStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintGoKartsTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintGoKartsTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintGoKartsTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintGoKartsTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintGoKartsTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintGoKartsTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintGoKartsTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintGoKartsTrackRightQuarterTurn1Tile; // Added by OpenRCT2 // Steep - case TrackElemType::Up60: + case TrackElemType::up60: return TrackUp60; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return TrackUp25ToUp60; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return TrackUp60ToUp25; - case TrackElemType::Down60: + case TrackElemType::down60: return TrackDown60; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return TrackDown25ToDown60; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return TrackDown60ToDown25; // Flat to steep - case TrackElemType::FlatToUp60LongBase: + case TrackElemType::flatToUp60LongBase: return TrackFlatToUp60LongBase; - case TrackElemType::Up60ToFlatLongBase: + case TrackElemType::up60ToFlatLongBase: return TrackUp60ToFlatLongBase; - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::flatToDown60LongBase: return TrackFlatToDown60LongBase; - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: return TrackDown60ToFlatLongBase; // Small turns - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return TrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return TrackRightQuarterTurn3Tiles; // Medium turns - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return TrackLeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return TrackRightQuarterTurn5Tiles; // Large turns - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return TrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return TrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return TrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return TrackRightEighthToOrthogonal; // Diagonal - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return TrackDiagFlat; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return TrackDiagFlatToUp25; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return TrackDiagUp25ToFlat; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return TrackDiagFlatToDown25; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return TrackDiagDown25ToFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return TrackDiagUp25; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return TrackDiagDown25; - case TrackElemType::DiagUp25ToUp60: + case TrackElemType::diagUp25ToUp60: return TrackDiagUp25ToUp60; - case TrackElemType::DiagUp60ToUp25: + case TrackElemType::diagUp60ToUp25: return TrackDiagUp60ToUp25; - case TrackElemType::DiagUp60: + case TrackElemType::diagUp60: return TrackDiagUp60; - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagDown25ToDown60: return TrackDiagDown25ToDown60; - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagDown60ToDown25: return TrackDiagDown60ToDown25; - case TrackElemType::DiagDown60: + case TrackElemType::diagDown60: return TrackDiagDown60; // Small gentle turns - case TrackElemType::LeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesUp25: return TrackLeftQuarterTurn3TilesUp25; - case TrackElemType::RightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: return TrackRightQuarterTurn3TilesUp25; - case TrackElemType::LeftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesDown25: return TrackLeftQuarterTurn3TilesDown25; - case TrackElemType::RightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: return TrackRightQuarterTurn3TilesDown25; // Medium gentle turns - case TrackElemType::LeftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesUp25: return TrackLeftQuarterTurn5TilesUp25; - case TrackElemType::RightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: return TrackRightQuarterTurn5TilesUp25; - case TrackElemType::LeftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesDown25: return TrackLeftQuarterTurn5TilesDown25; - case TrackElemType::RightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: return TrackRightQuarterTurn5TilesDown25; // Large gentle turns - case TrackElemType::LeftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagUp25: return TrackLeftEighthToDiagUp25; - case TrackElemType::RightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: return TrackRightEighthToDiagUp25; - case TrackElemType::LeftEighthToDiagDown25: + case TrackElemType::leftEighthToDiagDown25: return TrackLeftEighthToDiagDown25; - case TrackElemType::RightEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: return TrackRightEighthToDiagDown25; - case TrackElemType::LeftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalUp25: return TrackLeftEighthToOrthogonalUp25; - case TrackElemType::RightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: return TrackRightEighthToOrthogonalUp25; - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToOrthogonalDown25: return TrackLeftEighthToOrthogonalDown25; - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: return TrackRightEighthToOrthogonalDown25; // S bends - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return TrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return TrackSBendRight; default: diff --git a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp index 820aa4bef931..96df8a54603f 100644 --- a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp +++ b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp @@ -145,10 +145,10 @@ TrackPaintFunction GetTrackPaintFunctionLaunchedFreefall(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::TowerBase: + case TrackElemType::towerBase: return PaintLaunchedFreefallBase; - case TrackElemType::TowerSection: + case TrackElemType::towerSection: return PaintLaunchedFreefallTowerSection; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/thrill/MagicCarpet.cpp b/src/openrct2/paint/track/thrill/MagicCarpet.cpp index 41e417a62ed1..26cfde7054ff 100644 --- a/src/openrct2/paint/track/thrill/MagicCarpet.cpp +++ b/src/openrct2/paint/track/thrill/MagicCarpet.cpp @@ -260,7 +260,7 @@ TrackPaintFunction GetTrackPaintFunctionMagicCarpet(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::FlatTrack1x4A: + case TrackElemType::flatTrack1x4A: return PaintMagicCarpet; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/thrill/MotionSimulator.cpp b/src/openrct2/paint/track/thrill/MotionSimulator.cpp index 39638b4fc53f..ad0bed60331e 100644 --- a/src/openrct2/paint/track/thrill/MotionSimulator.cpp +++ b/src/openrct2/paint/track/thrill/MotionSimulator.cpp @@ -150,7 +150,7 @@ TrackPaintFunction GetTrackPaintFunctionMotionsimulator(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::FlatTrack2x2: + case TrackElemType::flatTrack2x2: return PaintMotionSimulator; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/thrill/RotoDrop.cpp b/src/openrct2/paint/track/thrill/RotoDrop.cpp index c73273549ece..972bcb5ac546 100644 --- a/src/openrct2/paint/track/thrill/RotoDrop.cpp +++ b/src/openrct2/paint/track/thrill/RotoDrop.cpp @@ -158,10 +158,10 @@ TrackPaintFunction GetTrackPaintFunctionRotoDrop(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::TowerBase: + case TrackElemType::towerBase: return PaintRotoDropBase; - case TrackElemType::TowerSection: + case TrackElemType::towerSection: return PaintRotoDropTowerSection; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp index d20b7078c78b..f775c1a2feb6 100644 --- a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp @@ -191,7 +191,7 @@ static void PaintSwingingInverterShip( TrackPaintFunction GetTrackPaintFunctionSwingingInverterShip(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack1x4B) + if (trackType != TrackElemType::flatTrack1x4B) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/thrill/SwingingShip.cpp b/src/openrct2/paint/track/thrill/SwingingShip.cpp index 57e3a4fcd085..373540b44d67 100644 --- a/src/openrct2/paint/track/thrill/SwingingShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingShip.cpp @@ -301,7 +301,7 @@ static void PaintSwingingShip( TrackPaintFunction GetTrackPaintFunctionSwingingShip(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack1x5) + if (trackType != TrackElemType::flatTrack1x5) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/thrill/TopSpin.cpp b/src/openrct2/paint/track/thrill/TopSpin.cpp index 58fa7d81d251..ef7841ebc94d 100644 --- a/src/openrct2/paint/track/thrill/TopSpin.cpp +++ b/src/openrct2/paint/track/thrill/TopSpin.cpp @@ -251,7 +251,7 @@ static void PaintTopSpin( TrackPaintFunction GetTrackPaintFunctionTopspin(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/thrill/Twist.cpp b/src/openrct2/paint/track/thrill/Twist.cpp index 406ddaa469ba..f9d1105f49ff 100644 --- a/src/openrct2/paint/track/thrill/Twist.cpp +++ b/src/openrct2/paint/track/thrill/Twist.cpp @@ -172,7 +172,7 @@ static void PaintTwist( */ TrackPaintFunction GetTrackPaintFunctionTwist(OpenRCT2::TrackElemType trackType) { - if (trackType != TrackElemType::FlatTrack3x3) + if (trackType != TrackElemType::flatTrack3x3) { return TrackPaintFunctionDummy; } diff --git a/src/openrct2/paint/track/transport/Chairlift.cpp b/src/openrct2/paint/track/transport/Chairlift.cpp index e0722d581b29..cafe1377c9f1 100644 --- a/src/openrct2/paint/track/transport/Chairlift.cpp +++ b/src/openrct2/paint/track/transport/Chairlift.cpp @@ -152,7 +152,7 @@ static const TrackElement* ChairliftPaintUtilMapGetTrackElementAtFromRideFuzzy( static bool ChairliftPaintUtilIsFirstTrack( const Ride& ride, const TrackElement& trackElement, const CoordsXY& pos, OpenRCT2::TrackElemType trackType) { - if (trackElement.GetTrackType() != TrackElemType::BeginStation) + if (trackElement.GetTrackType() != TrackElemType::beginStation) { return false; } @@ -172,7 +172,7 @@ static bool ChairliftPaintUtilIsFirstTrack( static bool ChairliftPaintUtilIsLastTrack( const Ride& ride, const TrackElement& trackElement, const CoordsXY& pos, OpenRCT2::TrackElemType trackType) { - if (trackElement.GetTrackType() != TrackElemType::EndStation) + if (trackElement.GetTrackType() != TrackElemType::endStation) { return false; } @@ -666,31 +666,31 @@ TrackPaintFunction GetTrackPaintFunctionChairlift(OpenRCT2::TrackElemType trackT { switch (trackType) { - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: - case TrackElemType::EndStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: + case TrackElemType::endStation: return ChairliftPaintStation; - case TrackElemType::Flat: + case TrackElemType::flat: return ChairliftPaintFlat; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return ChairliftPaintFlatTo25DegUp; - case TrackElemType::Up25: + case TrackElemType::up25: return ChairliftPaint25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return ChairliftPaint25DegUpToFlat; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return ChairliftPaintFlatTo25DegDown; - case TrackElemType::Down25: + case TrackElemType::down25: return ChairliftPaint25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return ChairliftPaint25DegDownToFlat; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return ChairliftPaintLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return ChairliftPaintRightQuarterTurn1Tile; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/transport/Lift.cpp b/src/openrct2/paint/track/transport/Lift.cpp index b8047e9c421d..0d6babd2c3d3 100644 --- a/src/openrct2/paint/track/transport/Lift.cpp +++ b/src/openrct2/paint/track/transport/Lift.cpp @@ -145,10 +145,10 @@ TrackPaintFunction GetTrackPaintFunctionLift(OpenRCT2::TrackElemType trackType) { switch (trackType) { - case TrackElemType::TowerBase: + case TrackElemType::towerBase: return PaintLiftBase; - case TrackElemType::TowerSection: + case TrackElemType::towerSection: return PaintLiftTowerSection; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/transport/MiniatureRailway.cpp b/src/openrct2/paint/track/transport/MiniatureRailway.cpp index df10fd4b4ff9..e3517fa88246 100644 --- a/src/openrct2/paint/track/transport/MiniatureRailway.cpp +++ b/src/openrct2/paint/track/transport/MiniatureRailway.cpp @@ -1547,7 +1547,7 @@ static void PaintMiniatureRailwayTrackLeftEighthToDiag( }; bool isSupported = false; - bool isRightEighthToOrthog = trackElement.GetTrackType() == TrackElemType::RightEighthToOrthogonal; + bool isRightEighthToOrthog = trackElement.GetTrackType() == TrackElemType::rightEighthToOrthogonal; // Right eighth to orthogonal calls this function but we do not want to have a support call for it // for track sequence 4 if (trackSequence != 4 || !isRightEighthToOrthog) @@ -1715,7 +1715,7 @@ static void PaintMiniatureRailwayTrackRightEighthToDiag( }; bool isSupported = false; - bool isLeftEighthToOrthog = trackElement.GetTrackType() == TrackElemType::LeftEighthToOrthogonal; + bool isLeftEighthToOrthog = trackElement.GetTrackType() == TrackElemType::leftEighthToOrthogonal; // Right eighth to orthogonal calls this function but we do not want to have a support call for it // for track sequence 4 if (trackSequence != 4 || !isLeftEighthToOrthog) @@ -2309,65 +2309,65 @@ TrackPaintFunction GetTrackPaintFunctionMiniatureRailway(OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintMiniatureRailwayTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintMiniatureRailwayStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintMiniatureRailwayTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintMiniatureRailwayTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintMiniatureRailwayTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintMiniatureRailwayTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintMiniatureRailwayTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintMiniatureRailwayTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return PaintMiniatureRailwayTrackLeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return PaintMiniatureRailwayTrackRightQuarterTurn5Tiles; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return PaintMiniatureRailwayTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return PaintMiniatureRailwayTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintMiniatureRailwayTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintMiniatureRailwayTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return PaintMiniatureRailwayTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return PaintMiniatureRailwayTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return PaintMiniatureRailwayTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return PaintMiniatureRailwayTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return MiniatureRailwayTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return MiniatureRailwayTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return MiniatureRailwayTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return MiniatureRailwayTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return MiniatureRailwayTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return MiniatureRailwayTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return MiniatureRailwayTrackDiag25DegDownToFlat; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/transport/Monorail.cpp b/src/openrct2/paint/track/transport/Monorail.cpp index 7bebc08ac39d..dcf6e7a7870f 100644 --- a/src/openrct2/paint/track/transport/Monorail.cpp +++ b/src/openrct2/paint/track/transport/Monorail.cpp @@ -1216,67 +1216,67 @@ TrackPaintFunction GetTrackPaintFunctionMonorail(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintMonorailTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintMonorailStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintMonorailTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintMonorailTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintMonorailTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintMonorailTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintMonorailTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintMonorailTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return PaintMonorailTrackLeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return PaintMonorailTrackRightQuarterTurn5Tiles; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return PaintMonorailTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return PaintMonorailTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintMonorailTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintMonorailTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return PaintMonorailTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return PaintMonorailTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return PaintMonorailTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return PaintMonorailTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return PaintMonorailTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return PaintMonorailTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return PaintMonorailTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return PaintMonorailTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return PaintMonorailTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return PaintMonorailTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return PaintMonorailTrackDiag25DegDownToFlat; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp index 16b9779fd2e0..1940f414f5b7 100644 --- a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp +++ b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp @@ -1975,57 +1975,57 @@ TrackPaintFunction GetTrackPaintFunctionSuspendedMonorail(OpenRCT2::TrackElemTyp { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return SuspendedMonorailTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return SuspendedMonorailTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return SuspendedMonorailTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return SuspendedMonorailTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return SuspendedMonorailTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return SuspendedMonorailTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return SuspendedMonorailTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return SuspendedMonorailTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return SuspendedMonorailTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return SuspendedMonorailTrackRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return SuspendedMonorailTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return SuspendedMonorailTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return SuspendedMonorailTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return SuspendedMonorailTrackRightQuarterTurn3; - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return SuspendedMonorailTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return SuspendedMonorailTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return SuspendedMonorailTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return SuspendedMonorailTrackRightEighthToOrthogonal; - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return SuspendedMonorailTrackDiagFlat; - case TrackElemType::DiagUp25: + case TrackElemType::diagUp25: return SuspendedMonorailTrackDiag25DegUp; - case TrackElemType::DiagFlatToUp25: + case TrackElemType::diagFlatToUp25: return SuspendedMonorailTrackDiagFlatTo25DegUp; - case TrackElemType::DiagUp25ToFlat: + case TrackElemType::diagUp25ToFlat: return SuspendedMonorailTrackDiag25DegUpToFlat; - case TrackElemType::DiagDown25: + case TrackElemType::diagDown25: return SuspendedMonorailTrackDiag25DegDown; - case TrackElemType::DiagFlatToDown25: + case TrackElemType::diagFlatToDown25: return SuspendedMonorailTrackDiagFlatTo25DegDown; - case TrackElemType::DiagDown25ToFlat: + case TrackElemType::diagDown25ToFlat: return SuspendedMonorailTrackDiag25DegDownToFlat; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/water/BoatHire.cpp b/src/openrct2/paint/track/water/BoatHire.cpp index cfc23b7b7124..9f2a882f4782 100644 --- a/src/openrct2/paint/track/water/BoatHire.cpp +++ b/src/openrct2/paint/track/water/BoatHire.cpp @@ -1235,51 +1235,51 @@ TrackPaintFunction GetTrackPaintFunctionBoatHire(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintBoatHireTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintBoatHireStation; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintBoatHireTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintBoatHireTrackRightQuarterTurn1Tile; // Added by OpenRCT2 // Small turns - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintBoatHireTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintBoatHireTrackRightQuarterTurn3Tiles; // Medium turns - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return PaintBoatHireTrackLeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return PaintBoatHireTrackRightQuarterTurn5Tiles; // Large turns - case TrackElemType::LeftEighthToDiag: + case TrackElemType::leftEighthToDiag: return PaintBoatHireTrackLeftEighthToDiag; - case TrackElemType::RightEighthToDiag: + case TrackElemType::rightEighthToDiag: return PaintBoatHireTrackRightEighthToDiag; - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToOrthogonal: return PaintBoatHireTrackLeftEighthToOrthogonal; - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: return PaintBoatHireTrackRightEighthToOrthogonal; // Diagonal - case TrackElemType::DiagFlat: + case TrackElemType::diagFlat: return PaintBoatHireTrackDiagFlat; // S bends - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return PaintBoatHireTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return PaintBoatHireTrackSBendRight; default: diff --git a/src/openrct2/paint/track/water/DinghySlide.cpp b/src/openrct2/paint/track/water/DinghySlide.cpp index b1bb091f361f..ddf22b05a9ae 100644 --- a/src/openrct2/paint/track/water/DinghySlide.cpp +++ b/src/openrct2/paint/track/water/DinghySlide.cpp @@ -1062,47 +1062,47 @@ TrackPaintFunction GetTrackPaintFunctionDinghySlide(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return DinghySlideTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return DinghySlideTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return DinghySlideTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return DinghySlideTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return DinghySlideTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return DinghySlideTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return DinghySlideTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return DinghySlideTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return DinghySlideTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return DinghySlideTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return DinghySlideTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return DinghySlideTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return DinghySlideTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return DinghySlideTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return DinghySlideTrackLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return DinghySlideTrackRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return DinghySlideTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return DinghySlideTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return DinghySlideTrackLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return DinghySlideTrackRightQuarterTurn3; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/water/DinghySlideCovered.cpp b/src/openrct2/paint/track/water/DinghySlideCovered.cpp index 7bdd0c3e6891..dbafb20388d1 100644 --- a/src/openrct2/paint/track/water/DinghySlideCovered.cpp +++ b/src/openrct2/paint/track/water/DinghySlideCovered.cpp @@ -955,43 +955,43 @@ TrackPaintFunction GetTrackPaintFunctionDinghySlideCovered(OpenRCT2::TrackElemTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return DinghySlideTrackCoveredFlat; - case TrackElemType::Up25: + case TrackElemType::up25: return DinghySlideTrackCovered25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return DinghySlideTrackCovered60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return DinghySlideTrackCoveredFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return DinghySlideTrackCovered25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return DinghySlideTrackCovered60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return DinghySlideTrackCovered25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return DinghySlideTrackCovered25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return DinghySlideTrackCovered60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return DinghySlideTrackCoveredFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return DinghySlideTrackCovered25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return DinghySlideTrackCovered60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return DinghySlideTrackCovered25DegDownToFlat; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return DinghySlideTrackCoveredLeftQuarterTurn5; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return DinghySlideTrackCoveredRightQuarterTurn5; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return DinghySlideTrackCoveredSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return DinghySlideTrackCoveredSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return DinghySlideTrackCoveredLeftQuarterTurn3; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return DinghySlideTrackCoveredRightQuarterTurn3; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/water/LogFlume.cpp b/src/openrct2/paint/track/water/LogFlume.cpp index abe039ee73aa..39975870c6b7 100644 --- a/src/openrct2/paint/track/water/LogFlume.cpp +++ b/src/openrct2/paint/track/water/LogFlume.cpp @@ -989,44 +989,44 @@ TrackPaintFunction GetTrackPaintFunctionLogFlume(OpenRCT2::TrackElemType trackTy { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintLogFlumeTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintLogFlumeTrackStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintLogFlumeTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintLogFlumeTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintLogFlumeTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintLogFlumeTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintLogFlumeTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintLogFlumeTrack25DegDownToFlat; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return PaintLogFlumeTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return PaintLogFlumeTrackSBendRight; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return PaintLogFlumeTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return PaintLogFlumeTrackRightQuarterTurn3Tiles; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return PaintLogFlumeTrackOnRidePhoto; - case TrackElemType::LogFlumeReverser: + case TrackElemType::logFlumeReverser: return PaintLogFlumeTrackReverser; // Added by OpenRCT2 - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return LogFlumeTrack25Down60; - case TrackElemType::Down60: + case TrackElemType::down60: return LogFlumeTrack60Down; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return LogFlumeTrack60Down25; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/water/RiverRapids.cpp b/src/openrct2/paint/track/water/RiverRapids.cpp index db2393b374cf..37baf502fdb7 100644 --- a/src/openrct2/paint/track/water/RiverRapids.cpp +++ b/src/openrct2/paint/track/water/RiverRapids.cpp @@ -195,7 +195,7 @@ static void PaintRiverRapidsTrackFlat( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 10, 10, height }, { 1, 2, 5 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction & 1) @@ -237,7 +237,7 @@ static void PaintRiverRapidsTrack25Deg( imageId = session.TrackColours.WithIndex(sprites[direction][1]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 34 } }); - DrawSupportForSequenceA(session, supportType.wooden, 0, direction, height, session.SupportColours); + DrawSupportForSequenceA(session, supportType.wooden, 0, direction, height, session.SupportColours); int8_t tunnelHeightOffset = isStart ? -8 : 8; auto tunnelSubType = isStart ? TunnelSubType::SlopeStart : TunnelSubType::SlopeEnd; @@ -291,7 +291,7 @@ static void PaintRiverRapidsTrack25DegToFlatA( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 18 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, 0, direction, height, session.SupportColours); int8_t heightOffset = isStart ? -8 : 8; @@ -344,7 +344,7 @@ static void PaintRiverRapidsTrack25DegToFlatB( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 26 } }); break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, 0, direction, height, session.SupportColours); const auto tunnelType = direction == 0 || direction == 3 ? TunnelSubType::Flat : TunnelSubType::SlopeEnd; @@ -574,7 +574,7 @@ static void PaintRiverRapidsTrackWaterfall( PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction & 1) @@ -616,7 +616,7 @@ static void PaintRiverRapidsTrackRapids( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 17 }, { 32, 1, 11 } }); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction & 1) @@ -686,7 +686,7 @@ static void PaintRiverRapidsTrackWhirlpool( PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb); } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction & 1) @@ -709,43 +709,43 @@ TrackPaintFunction GetTrackPaintFunctionRiverRapids(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::Flat: + case TrackElemType::flat: return PaintRiverRapidsTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintRiverRapidsStation; - case TrackElemType::Up25: + case TrackElemType::up25: return PaintRiverRapidsTrack25DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintRiverRapidsTrackFlatTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintRiverRapidsTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintRiverRapidsTrack25DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintRiverRapidsTrackFlatTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintRiverRapidsTrack25DegDownToFlat; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return PaintRiverRapidsTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return PaintRiverRapidsTrackRightQuarterTurn1Tile; - case TrackElemType::Waterfall: + case TrackElemType::waterfall: return PaintRiverRapidsTrackWaterfall; - case TrackElemType::Rapids: + case TrackElemType::rapids: return PaintRiverRapidsTrackRapids; - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return PaintRiverRapidsTrackOnRidePhoto; - case TrackElemType::Whirlpool: + case TrackElemType::whirlpool: return PaintRiverRapidsTrackWhirlpool; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/water/SplashBoats.cpp b/src/openrct2/paint/track/water/SplashBoats.cpp index 16da6f10c1f2..ca8b84d44ee3 100644 --- a/src/openrct2/paint/track/water/SplashBoats.cpp +++ b/src/openrct2/paint/track/water/SplashBoats.cpp @@ -496,7 +496,7 @@ static void PaintSplashBoatsTrack25DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -522,7 +522,7 @@ static void PaintSplashBoatsTrack60DegUp( session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -547,7 +547,7 @@ static void PaintSplashBoatsTrackFlatTo25DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -572,7 +572,7 @@ static void PaintSplashBoatsTrack25DegUpToFlat( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -598,7 +598,7 @@ static void PaintSplashBoatsTrack25DegUpTo60DegUp( session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -624,7 +624,7 @@ static void PaintSplashBoatsTrack60DegUpTo25DegUp( session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -649,7 +649,7 @@ static void PaintSplashBoatsTrack25DegDown( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -681,7 +681,7 @@ static void PaintSplashBoatsTrackFlatTo25DegDown( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -720,7 +720,7 @@ static void PaintSplashBoatsTrack25DegDownToFlat( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction == 0 || direction == 3) @@ -746,7 +746,7 @@ static void PaintSplashBoatsTrackFlat( const ImageId frontId = session.TrackColours.WithIndex(kSplashBoatsFlatImageIndexes[direction][1]); PaintAddImageAsParentRotated(session, direction, frontId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (direction & 1) @@ -770,7 +770,7 @@ static void PaintSplashBoatsStation( const ImageId trackId = session.TrackColours.WithIndex(kSplashBoatsFlatImageIndexes[direction][0]); PaintAddImageAsParentRotated(session, direction, trackId, { 0, 0, height }, { { 0, 6, height + 3 }, { 32, 20, 1 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (!TrackPaintUtilDrawNarrowStationPlatform(session, ride, direction, height, 7, trackElement, StationBaseType::b, 0)) @@ -795,7 +795,7 @@ static void PaintSplashBoatsTrackLeftQuarterTurn5Tiles( TrackPaintUtilRightQuarterTurn5TilesPaint2( session, height, direction, trackSequence, session.TrackColours, kSplashBoatsLeftQuarterTurn5_Side); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (trackSequence) @@ -881,7 +881,7 @@ static void PaintSplashBoatsTrackRightQuarterTurn5Tiles( TrackPaintUtilRightQuarterTurn5TilesPaint2( session, height, direction, trackSequence, session.TrackColours, kSplashBoatsRightQuarterTurn5_Side); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (trackSequence) @@ -999,7 +999,7 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); break; @@ -1009,7 +1009,7 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( @@ -1027,7 +1027,7 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( @@ -1043,7 +1043,7 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); break; @@ -1109,7 +1109,7 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); break; @@ -1119,7 +1119,7 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( @@ -1137,7 +1137,7 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight( @@ -1153,7 +1153,7 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); break; @@ -1210,49 +1210,49 @@ TrackPaintFunction GetTrackPaintFunctionSplashBoats(OpenRCT2::TrackElemType trac { switch (trackType) { - case TrackElemType::Up25: + case TrackElemType::up25: return PaintSplashBoatsTrack25DegUp; - case TrackElemType::Up60: + case TrackElemType::up60: return PaintSplashBoatsTrack60DegUp; - case TrackElemType::FlatToUp25: + case TrackElemType::flatToUp25: return PaintSplashBoatsTrackFlatTo25DegUp; - case TrackElemType::Up25ToUp60: + case TrackElemType::up25ToUp60: return PaintSplashBoatsTrack25DegUpTo60DegUp; - case TrackElemType::Up60ToUp25: + case TrackElemType::up60ToUp25: return PaintSplashBoatsTrack60DegUpTo25DegUp; - case TrackElemType::Up25ToFlat: + case TrackElemType::up25ToFlat: return PaintSplashBoatsTrack25DegUpToFlat; - case TrackElemType::Down25: + case TrackElemType::down25: return PaintSplashBoatsTrack25DegDown; - case TrackElemType::Down60: + case TrackElemType::down60: return PaintSplashBoatsTrack60DegDown; - case TrackElemType::FlatToDown25: + case TrackElemType::flatToDown25: return PaintSplashBoatsTrackFlatTo25DegDown; - case TrackElemType::Down25ToDown60: + case TrackElemType::down25ToDown60: return PaintSplashBoatsTrack25DegDownTo60DegDown; - case TrackElemType::Down60ToDown25: + case TrackElemType::down60ToDown25: return PaintSplashBoatsTrack60DegDownTo25DegDown; - case TrackElemType::Down25ToFlat: + case TrackElemType::down25ToFlat: return PaintSplashBoatsTrack25DegDownToFlat; // Originally taken from River Rafts - case TrackElemType::Flat: + case TrackElemType::flat: return PaintSplashBoatsTrackFlat; - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return PaintSplashBoatsStation; - case TrackElemType::LeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5Tiles: return PaintSplashBoatsTrackLeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: return PaintSplashBoatsTrackRightQuarterTurn5Tiles; - case TrackElemType::SBendLeft: + case TrackElemType::sBendLeft: return PaintSplashBoatsTrackSBendLeft; - case TrackElemType::SBendRight: + case TrackElemType::sBendRight: return PaintSplashBoatsTrackSBendRight; // Added by OpenRCT2 - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: return PaintSplashBoatsTrackOnRidePhoto; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/water/SubmarineRide.cpp b/src/openrct2/paint/track/water/SubmarineRide.cpp index dac84f48b3d8..663b3dc5f479 100644 --- a/src/openrct2/paint/track/water/SubmarineRide.cpp +++ b/src/openrct2/paint/track/water/SubmarineRide.cpp @@ -176,22 +176,22 @@ TrackPaintFunction GetTrackPaintFunctionSubmarineRide(OpenRCT2::TrackElemType tr { switch (trackType) { - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: - case TrackElemType::EndStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: + case TrackElemType::endStation: return SubmarineRidePaintTrackStation; - case TrackElemType::Flat: + case TrackElemType::flat: return SubmarineRidePaintTrackFlat; - case TrackElemType::LeftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: return SubmarineRidePaintTrackLeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: return SubmarineRidePaintTrackRightQuarterTurn3Tiles; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return SubmarineRidePaintTrackLeftQuarterTurn1Tile; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return SubmarineRidePaintTrackRightQuarterTurn1Tile; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/vehicle/VehiclePaint.cpp b/src/openrct2/paint/vehicle/VehiclePaint.cpp index 3bd6dc3ab094..c16d1428121b 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.cpp +++ b/src/openrct2/paint/vehicle/VehiclePaint.cpp @@ -3396,8 +3396,8 @@ static void VehiclePitchDown75( { if (vehicle->HasFlag(VehicleFlags::CarIsInverted)) { - if (vehicle->GetTrackType() != TrackElemType::Down90ToDown60 - && (vehicle->GetTrackType()) != TrackElemType::Down60ToDown90) + if (vehicle->GetTrackType() != TrackElemType::down90ToDown60 + && (vehicle->GetTrackType()) != TrackElemType::down60ToDown90) { carEntry--; } @@ -3422,8 +3422,8 @@ static void VehiclePitchDown90( { if (vehicle->HasFlag(VehicleFlags::CarIsInverted)) { - if (vehicle->GetTrackType() != TrackElemType::Down90 && (vehicle->GetTrackType()) != TrackElemType::Down90ToDown60 - && (vehicle->GetTrackType()) != TrackElemType::Down60ToDown90) + if (vehicle->GetTrackType() != TrackElemType::down90 && (vehicle->GetTrackType()) != TrackElemType::down90ToDown60 + && (vehicle->GetTrackType()) != TrackElemType::down60ToDown90) { carEntry--; } @@ -4536,7 +4536,7 @@ static_assert(std::size(PaintFunctionsByPitch) == EnumValue(VehiclePitch::pitchC */ static void vehicle_visual_splash1_effect(PaintSession& session, const int32_t z, const Vehicle* vehicle) { - if (vehicle->GetTrackType() != TrackElemType::Watersplash) + if (vehicle->GetTrackType() != TrackElemType::watersplash) { return; } diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp index 162020dda698..9943e2f367b3 100644 --- a/src/openrct2/park/Legacy.cpp +++ b/src/openrct2/park/Legacy.cpp @@ -2395,8 +2395,8 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType // to be. if (rideType == RIDE_TYPE_LOG_FLUME && parkFileVersion < kLogFlumeSteepSlopeVersion) { - if (trackType == TrackElemType::Down25ToDown60 || trackType == TrackElemType::Down60 - || trackType == TrackElemType::Down60ToDown25) + if (trackType == TrackElemType::down25ToDown60 || trackType == TrackElemType::down60 + || trackType == TrackElemType::down60ToDown25) { return true; } @@ -2405,106 +2405,106 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Up90: - case TrackElemType::Down90: - case TrackElemType::Up60ToUp90: - case TrackElemType::Down90ToDown60: - case TrackElemType::Up90ToUp60: - case TrackElemType::Down60ToDown90: - case TrackElemType::LeftQuarterTurn1TileUp90: - case TrackElemType::RightQuarterTurn1TileUp90: - case TrackElemType::LeftQuarterTurn1TileDown90: - case TrackElemType::RightQuarterTurn1TileDown90: - case TrackElemType::LeftBarrelRollUpToDown: - case TrackElemType::RightBarrelRollUpToDown: - case TrackElemType::LeftBarrelRollDownToUp: - case TrackElemType::RightBarrelRollDownToUp: - case TrackElemType::HalfLoopUp: - case TrackElemType::HalfLoopDown: - case TrackElemType::LeftVerticalLoop: - case TrackElemType::RightVerticalLoop: - case TrackElemType::LeftCorkscrewUp: - case TrackElemType::RightCorkscrewUp: - case TrackElemType::LeftCorkscrewDown: - case TrackElemType::RightCorkscrewDown: - case TrackElemType::LeftLargeCorkscrewUp: - case TrackElemType::RightLargeCorkscrewUp: - case TrackElemType::LeftLargeCorkscrewDown: - case TrackElemType::RightLargeCorkscrewDown: - case TrackElemType::LeftZeroGRollUp: - case TrackElemType::RightZeroGRollUp: - case TrackElemType::LeftZeroGRollDown: - case TrackElemType::RightZeroGRollDown: - case TrackElemType::LeftLargeZeroGRollUp: - case TrackElemType::RightLargeZeroGRollUp: - case TrackElemType::LeftLargeZeroGRollDown: - case TrackElemType::RightLargeZeroGRollDown: - case TrackElemType::Up90ToInvertedFlatQuarterLoop: - case TrackElemType::InvertedFlatToDown90QuarterLoop: - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: - case TrackElemType::LeftMediumHalfLoopUp: - case TrackElemType::RightMediumHalfLoopUp: - case TrackElemType::LeftMediumHalfLoopDown: - case TrackElemType::RightMediumHalfLoopDown: - case TrackElemType::LeftLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopDown: - case TrackElemType::LeftLargeHalfLoopDown: - case TrackElemType::FlatToUp60: - case TrackElemType::Up60ToFlat: - case TrackElemType::FlatToDown60: - case TrackElemType::Down60ToFlat: - case TrackElemType::DiagFlatToUp60: - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::DiagFlatToDown60: - case TrackElemType::DiagDown60ToFlat: - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: - case TrackElemType::RightEighthToOrthogonalDown25: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::up90: + case TrackElemType::down90: + case TrackElemType::up60ToUp90: + case TrackElemType::down90ToDown60: + case TrackElemType::up90ToUp60: + case TrackElemType::down60ToDown90: + case TrackElemType::leftQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: + case TrackElemType::leftBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: + case TrackElemType::leftBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: + case TrackElemType::halfLoopUp: + case TrackElemType::halfLoopDown: + case TrackElemType::leftVerticalLoop: + case TrackElemType::rightVerticalLoop: + case TrackElemType::leftCorkscrewUp: + case TrackElemType::rightCorkscrewUp: + case TrackElemType::leftCorkscrewDown: + case TrackElemType::rightCorkscrewDown: + case TrackElemType::leftLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: + case TrackElemType::leftZeroGRollUp: + case TrackElemType::rightZeroGRollUp: + case TrackElemType::leftZeroGRollDown: + case TrackElemType::rightZeroGRollDown: + case TrackElemType::leftLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: + case TrackElemType::up90ToInvertedFlatQuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::leftMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: + case TrackElemType::leftLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: + case TrackElemType::flatToUp60: + case TrackElemType::up60ToFlat: + case TrackElemType::flatToDown60: + case TrackElemType::down60ToFlat: + case TrackElemType::diagFlatToUp60: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::diagFlatToDown60: + case TrackElemType::diagDown60ToFlat: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return true; default: break; @@ -2517,10 +2517,10 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::FlatToUp60LongBase: - case TrackElemType::Up60ToFlatLongBase: - case TrackElemType::FlatToDown60LongBase: - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::flatToUp60LongBase: + case TrackElemType::up60ToFlatLongBase: + case TrackElemType::flatToDown60LongBase: + case TrackElemType::down60ToFlatLongBase: return true; default: break; @@ -2532,14 +2532,14 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::LeftMediumHalfLoopUp: - case TrackElemType::RightMediumHalfLoopUp: - case TrackElemType::LeftMediumHalfLoopDown: - case TrackElemType::RightMediumHalfLoopDown: - case TrackElemType::LeftLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopUp: - case TrackElemType::LeftLargeHalfLoopDown: - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::leftMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: + case TrackElemType::leftLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return true; default: break; @@ -2552,134 +2552,134 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::FlatToUp60: - case TrackElemType::Up60ToFlat: - case TrackElemType::FlatToDown60: - case TrackElemType::Down60ToFlat: - case TrackElemType::DiagFlatToUp60: - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::DiagFlatToDown60: - case TrackElemType::DiagDown60ToFlat: - case TrackElemType::Up90: - case TrackElemType::Down90: - case TrackElemType::Up60ToUp90: - case TrackElemType::Down90ToDown60: - case TrackElemType::Up90ToUp60: - case TrackElemType::Down60ToDown90: - case TrackElemType::LeftQuarterTurn1TileUp90: - case TrackElemType::RightQuarterTurn1TileUp90: - case TrackElemType::LeftQuarterTurn1TileDown90: - case TrackElemType::RightQuarterTurn1TileDown90: - case TrackElemType::Up25ToLeftBankedUp25: - case TrackElemType::Up25ToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToUp25: - case TrackElemType::RightBankedUp25ToUp25: - case TrackElemType::Down25ToLeftBankedDown25: - case TrackElemType::Down25ToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToDown25: - case TrackElemType::RightBankedDown25ToDown25: - case TrackElemType::LeftBankedFlatToLeftBankedUp25: - case TrackElemType::RightBankedFlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: - case TrackElemType::RightBankedUp25ToRightBankedFlat: - case TrackElemType::LeftBankedFlatToLeftBankedDown25: - case TrackElemType::RightBankedFlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: - case TrackElemType::RightBankedDown25ToRightBankedFlat: - case TrackElemType::Down25LeftBanked: - case TrackElemType::Down25RightBanked: - case TrackElemType::FlatToLeftBankedUp25: - case TrackElemType::FlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToFlat: - case TrackElemType::RightBankedUp25ToFlat: - case TrackElemType::FlatToLeftBankedDown25: - case TrackElemType::FlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToFlat: - case TrackElemType::RightBankedDown25ToFlat: - case TrackElemType::Up25LeftBanked: - case TrackElemType::Up25RightBanked: - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: - case TrackElemType::RightEighthToOrthogonalDown25: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: - case TrackElemType::RightEighthBankToOrthogonalDown25: - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: - case TrackElemType::LeftLargeCorkscrewUp: - case TrackElemType::RightLargeCorkscrewUp: - case TrackElemType::LeftLargeCorkscrewDown: - case TrackElemType::RightLargeCorkscrewDown: - case TrackElemType::Up90ToInvertedFlatQuarterLoop: - case TrackElemType::InvertedFlatToDown90QuarterLoop: - case TrackElemType::LeftMediumHalfLoopUp: - case TrackElemType::RightMediumHalfLoopUp: - case TrackElemType::LeftMediumHalfLoopDown: - case TrackElemType::RightMediumHalfLoopDown: - case TrackElemType::LeftLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopUp: - case TrackElemType::LeftLargeHalfLoopDown: - case TrackElemType::RightLargeHalfLoopDown: - case TrackElemType::LeftBarrelRollUpToDown: - case TrackElemType::RightBarrelRollUpToDown: - case TrackElemType::LeftBarrelRollDownToUp: - case TrackElemType::RightBarrelRollDownToUp: - case TrackElemType::LeftZeroGRollUp: - case TrackElemType::RightZeroGRollUp: - case TrackElemType::LeftZeroGRollDown: - case TrackElemType::RightZeroGRollDown: - case TrackElemType::LeftLargeZeroGRollUp: - case TrackElemType::RightLargeZeroGRollUp: - case TrackElemType::LeftLargeZeroGRollDown: - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::flatToUp60: + case TrackElemType::up60ToFlat: + case TrackElemType::flatToDown60: + case TrackElemType::down60ToFlat: + case TrackElemType::diagFlatToUp60: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::diagFlatToDown60: + case TrackElemType::diagDown60ToFlat: + case TrackElemType::up90: + case TrackElemType::down90: + case TrackElemType::up60ToUp90: + case TrackElemType::down90ToDown60: + case TrackElemType::up90ToUp60: + case TrackElemType::down60ToDown90: + case TrackElemType::leftQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: + case TrackElemType::up25ToLeftBankedUp25: + case TrackElemType::up25ToRightBankedUp25: + case TrackElemType::leftBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: + case TrackElemType::down25ToLeftBankedDown25: + case TrackElemType::down25ToRightBankedDown25: + case TrackElemType::leftBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: + case TrackElemType::leftBankedFlatToLeftBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: + case TrackElemType::down25LeftBanked: + case TrackElemType::down25RightBanked: + case TrackElemType::flatToLeftBankedUp25: + case TrackElemType::flatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: + case TrackElemType::flatToLeftBankedDown25: + case TrackElemType::flatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: + case TrackElemType::up25LeftBanked: + case TrackElemType::up25RightBanked: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::leftLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: + case TrackElemType::up90ToInvertedFlatQuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: + case TrackElemType::leftMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: + case TrackElemType::leftLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: + case TrackElemType::leftBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: + case TrackElemType::leftBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: + case TrackElemType::leftZeroGRollUp: + case TrackElemType::rightZeroGRollUp: + case TrackElemType::leftZeroGRollDown: + case TrackElemType::rightZeroGRollDown: + case TrackElemType::leftLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return true; default: break; @@ -2692,66 +2692,66 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: - case TrackElemType::RightEighthToOrthogonalDown25: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: - case TrackElemType::RightEighthBankToOrthogonalDown25: - case TrackElemType::LeftLargeCorkscrewUp: - case TrackElemType::RightLargeCorkscrewUp: - case TrackElemType::LeftLargeCorkscrewDown: - case TrackElemType::RightLargeCorkscrewDown: - case TrackElemType::LeftMediumHalfLoopUp: - case TrackElemType::RightMediumHalfLoopUp: - case TrackElemType::LeftMediumHalfLoopDown: - case TrackElemType::RightMediumHalfLoopDown: - case TrackElemType::LeftZeroGRollUp: - case TrackElemType::RightZeroGRollUp: - case TrackElemType::LeftZeroGRollDown: - case TrackElemType::RightZeroGRollDown: - case TrackElemType::LeftLargeZeroGRollUp: - case TrackElemType::RightLargeZeroGRollUp: - case TrackElemType::LeftLargeZeroGRollDown: - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: + case TrackElemType::leftLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: + case TrackElemType::leftMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: + case TrackElemType::leftZeroGRollUp: + case TrackElemType::rightZeroGRollUp: + case TrackElemType::leftZeroGRollDown: + case TrackElemType::rightZeroGRollDown: + case TrackElemType::leftLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return true; default: break; @@ -2761,17 +2761,17 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn5Tiles: - case TrackElemType::RightQuarterTurn5Tiles: - case TrackElemType::LeftEighthToDiag: - case TrackElemType::RightEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: - case TrackElemType::RightEighthToOrthogonal: - case TrackElemType::DiagFlat: - case TrackElemType::SBendLeft: - case TrackElemType::SBendRight: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: + case TrackElemType::leftEighthToDiag: + case TrackElemType::rightEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: + case TrackElemType::diagFlat: + case TrackElemType::sBendLeft: + case TrackElemType::sBendRight: return true; default: break; @@ -2783,142 +2783,142 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::FlatToUp60: - case TrackElemType::Up60ToFlat: - case TrackElemType::FlatToDown60: - case TrackElemType::Down60ToFlat: - case TrackElemType::DiagFlatToUp60: - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::DiagFlatToDown60: - case TrackElemType::DiagDown60ToFlat: - case TrackElemType::FlatToUp60LongBase: - case TrackElemType::Up60ToFlatLongBase: - case TrackElemType::Down60ToFlatLongBase: - case TrackElemType::FlatToDown60LongBase: - case TrackElemType::Up90: - case TrackElemType::Down90: - case TrackElemType::Up60ToUp90: - case TrackElemType::Down90ToDown60: - case TrackElemType::Up90ToUp60: - case TrackElemType::Down60ToDown90: - case TrackElemType::LeftQuarterTurn1TileUp60: - case TrackElemType::RightQuarterTurn1TileUp60: - case TrackElemType::LeftQuarterTurn1TileDown60: - case TrackElemType::RightQuarterTurn1TileDown60: - case TrackElemType::LeftQuarterTurn1TileUp90: - case TrackElemType::RightQuarterTurn1TileUp90: - case TrackElemType::LeftQuarterTurn1TileDown90: - case TrackElemType::RightQuarterTurn1TileDown90: - case TrackElemType::Up25ToLeftBankedUp25: - case TrackElemType::Up25ToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToUp25: - case TrackElemType::RightBankedUp25ToUp25: - case TrackElemType::Down25ToLeftBankedDown25: - case TrackElemType::Down25ToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToDown25: - case TrackElemType::RightBankedDown25ToDown25: - case TrackElemType::LeftBankedFlatToLeftBankedUp25: - case TrackElemType::RightBankedFlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: - case TrackElemType::RightBankedUp25ToRightBankedFlat: - case TrackElemType::LeftBankedFlatToLeftBankedDown25: - case TrackElemType::RightBankedFlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: - case TrackElemType::RightBankedDown25ToRightBankedFlat: - case TrackElemType::Down25LeftBanked: - case TrackElemType::Down25RightBanked: - case TrackElemType::FlatToLeftBankedUp25: - case TrackElemType::FlatToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToFlat: - case TrackElemType::RightBankedUp25ToFlat: - case TrackElemType::FlatToLeftBankedDown25: - case TrackElemType::FlatToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToFlat: - case TrackElemType::RightBankedDown25ToFlat: - case TrackElemType::Up25LeftBanked: - case TrackElemType::Up25RightBanked: - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: - case TrackElemType::RightEighthToOrthogonalDown25: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: - case TrackElemType::RightEighthBankToOrthogonalDown25: - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: - case TrackElemType::LeftLargeCorkscrewUp: - case TrackElemType::RightLargeCorkscrewUp: - case TrackElemType::LeftLargeCorkscrewDown: - case TrackElemType::RightLargeCorkscrewDown: - case TrackElemType::Up90ToInvertedFlatQuarterLoop: - case TrackElemType::InvertedFlatToDown90QuarterLoop: - case TrackElemType::LeftMediumHalfLoopUp: - case TrackElemType::RightMediumHalfLoopUp: - case TrackElemType::LeftMediumHalfLoopDown: - case TrackElemType::RightMediumHalfLoopDown: - case TrackElemType::LeftLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopDown: - case TrackElemType::LeftLargeHalfLoopDown: - case TrackElemType::LeftBarrelRollUpToDown: - case TrackElemType::RightBarrelRollUpToDown: - case TrackElemType::LeftBarrelRollDownToUp: - case TrackElemType::RightBarrelRollDownToUp: - case TrackElemType::LeftZeroGRollUp: - case TrackElemType::RightZeroGRollUp: - case TrackElemType::LeftZeroGRollDown: - case TrackElemType::RightZeroGRollDown: - case TrackElemType::LeftLargeZeroGRollUp: - case TrackElemType::RightLargeZeroGRollUp: - case TrackElemType::LeftLargeZeroGRollDown: - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::flatToUp60: + case TrackElemType::up60ToFlat: + case TrackElemType::flatToDown60: + case TrackElemType::down60ToFlat: + case TrackElemType::diagFlatToUp60: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::diagFlatToDown60: + case TrackElemType::diagDown60ToFlat: + case TrackElemType::flatToUp60LongBase: + case TrackElemType::up60ToFlatLongBase: + case TrackElemType::down60ToFlatLongBase: + case TrackElemType::flatToDown60LongBase: + case TrackElemType::up90: + case TrackElemType::down90: + case TrackElemType::up60ToUp90: + case TrackElemType::down90ToDown60: + case TrackElemType::up90ToUp60: + case TrackElemType::down60ToDown90: + case TrackElemType::leftQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: + case TrackElemType::up25ToLeftBankedUp25: + case TrackElemType::up25ToRightBankedUp25: + case TrackElemType::leftBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: + case TrackElemType::down25ToLeftBankedDown25: + case TrackElemType::down25ToRightBankedDown25: + case TrackElemType::leftBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: + case TrackElemType::leftBankedFlatToLeftBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: + case TrackElemType::leftBankedFlatToLeftBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: + case TrackElemType::down25LeftBanked: + case TrackElemType::down25RightBanked: + case TrackElemType::flatToLeftBankedUp25: + case TrackElemType::flatToRightBankedUp25: + case TrackElemType::leftBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: + case TrackElemType::flatToLeftBankedDown25: + case TrackElemType::flatToRightBankedDown25: + case TrackElemType::leftBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: + case TrackElemType::up25LeftBanked: + case TrackElemType::up25RightBanked: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToOrthogonalDown25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::leftLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewDown: + case TrackElemType::up90ToInvertedFlatQuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: + case TrackElemType::leftMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: + case TrackElemType::leftLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: + case TrackElemType::leftBarrelRollUpToDown: + case TrackElemType::rightBarrelRollUpToDown: + case TrackElemType::leftBarrelRollDownToUp: + case TrackElemType::rightBarrelRollDownToUp: + case TrackElemType::leftZeroGRollUp: + case TrackElemType::rightZeroGRollUp: + case TrackElemType::leftZeroGRollDown: + case TrackElemType::rightZeroGRollDown: + case TrackElemType::leftLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return true; default: break; @@ -2928,55 +2928,55 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, OpenRCT2::TrackElemType { switch (trackType) { - case TrackElemType::Up60: - case TrackElemType::Up25ToUp60: - case TrackElemType::Up60ToUp25: - case TrackElemType::Down60: - case TrackElemType::Down25ToDown60: - case TrackElemType::Down60ToDown25: - case TrackElemType::FlatToUp60LongBase: - case TrackElemType::Up60ToFlatLongBase: - case TrackElemType::FlatToDown60LongBase: - case TrackElemType::Down60ToFlatLongBase: - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn5Tiles: - case TrackElemType::RightQuarterTurn5Tiles: - case TrackElemType::LeftEighthToDiag: - case TrackElemType::RightEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: - case TrackElemType::RightEighthToOrthogonal: - case TrackElemType::DiagFlat: - case TrackElemType::DiagFlatToUp25: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagFlatToDown25: - case TrackElemType::DiagDown25ToFlat: - case TrackElemType::DiagUp25: - case TrackElemType::DiagDown25: - case TrackElemType::DiagUp25ToUp60: - case TrackElemType::DiagUp60ToUp25: - case TrackElemType::DiagUp60: - case TrackElemType::DiagDown25ToDown60: - case TrackElemType::DiagDown60ToDown25: - case TrackElemType::DiagDown60: - case TrackElemType::LeftQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25: - case TrackElemType::RightQuarterTurn3TilesDown25: - case TrackElemType::LeftQuarterTurn5TilesUp25: - case TrackElemType::RightQuarterTurn5TilesUp25: - case TrackElemType::LeftQuarterTurn5TilesDown25: - case TrackElemType::RightQuarterTurn5TilesDown25: - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: - case TrackElemType::RightEighthToOrthogonalDown25: - case TrackElemType::SBendLeft: - case TrackElemType::SBendRight: + case TrackElemType::up60: + case TrackElemType::up25ToUp60: + case TrackElemType::up60ToUp25: + case TrackElemType::down60: + case TrackElemType::down25ToDown60: + case TrackElemType::down60ToDown25: + case TrackElemType::flatToUp60LongBase: + case TrackElemType::up60ToFlatLongBase: + case TrackElemType::flatToDown60LongBase: + case TrackElemType::down60ToFlatLongBase: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: + case TrackElemType::leftEighthToDiag: + case TrackElemType::rightEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: + case TrackElemType::diagFlat: + case TrackElemType::diagFlatToUp25: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagFlatToDown25: + case TrackElemType::diagDown25ToFlat: + case TrackElemType::diagUp25: + case TrackElemType::diagDown25: + case TrackElemType::diagUp25ToUp60: + case TrackElemType::diagUp60ToUp25: + case TrackElemType::diagUp60: + case TrackElemType::diagDown25ToDown60: + case TrackElemType::diagDown60ToDown25: + case TrackElemType::diagDown60: + case TrackElemType::leftQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: + case TrackElemType::sBendLeft: + case TrackElemType::sBendRight: return true; default: break; diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index d41e1119ebdc..a79402977a05 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -1236,9 +1236,9 @@ namespace OpenRCT2 } if (os.getHeader().targetVersion < kBlockBrakeImprovementsVersion) { - if (trackType == TrackElemType::Brakes) + if (trackType == TrackElemType::brakes) trackElement->SetBrakeClosed(true); - if (trackType == TrackElemType::BlockBrakes) + if (trackType == TrackElemType::blockBrakes) trackElement->SetBrakeBoosterSpeed(kRCT2DefaultBlockBrakeSpeed); } } @@ -2280,7 +2280,7 @@ namespace OpenRCT2 { uint8_t brakeSpeed; cs.readWrite(brakeSpeed); - if (entity.GetTrackType() == TrackElemType::BlockBrakes) + if (entity.GetTrackType() == TrackElemType::blockBrakes) brakeSpeed = kRCT2DefaultBlockBrakeSpeed; entity.brake_speed = brakeSpeed; } diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 3e598fbbf158..52934dc5770a 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1759,12 +1759,12 @@ namespace OpenRCT2::RCT1 auto trackType = dst2->GetTrackType(); // Brakes import as closed to preserve legacy behaviour - dst2->SetBrakeClosed(trackType == TrackElemType::Brakes); + dst2->SetBrakeClosed(trackType == TrackElemType::brakes); if (TrackTypeHasSpeedSetting(trackType)) { dst2->SetBrakeBoosterSpeed(src2->GetBrakeBoosterSpeed()); } - else if (trackType == TrackElemType::OnRidePhoto) + else if (trackType == TrackElemType::onRidePhoto) { dst2->SetPhotoTimeout(src2->GetPhotoTimeout()); } @@ -2677,10 +2677,10 @@ namespace OpenRCT2::RCT1 auto trackType = tileElement->AsTrack()->GetTrackType(); switch (trackType) { - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: break; default: continue; @@ -2896,7 +2896,7 @@ namespace OpenRCT2::RCT1 { dst->BoatLocation = TileCoordsXY{ src->BoatLocation.x, src->BoatLocation.y }.ToCoordsXY(); dst->SetTrackDirection(0); - dst->SetTrackType(OpenRCT2::TrackElemType::Flat); + dst->SetTrackType(OpenRCT2::TrackElemType::flat); } dst->track_progress = src->TrackProgress; dst->vertical_drop_countdown = src->VerticalDropCountdown; diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index ce1e330e1972..db73507e3f23 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -666,25 +666,25 @@ OpenRCT2::TrackElemType RCT12FlatTrackTypeToOpenRCT2(OpenRCT2::RCT12::TrackElemT switch (origTrackType) { case OpenRCT2::RCT12::TrackElemType::flatTrack1x4A_Alias: - return TrackElemType::FlatTrack1x4A; + return TrackElemType::flatTrack1x4A; case OpenRCT2::RCT12::TrackElemType::flatTrack2x2_Alias: - return TrackElemType::FlatTrack2x2; + return TrackElemType::flatTrack2x2; case OpenRCT2::RCT12::TrackElemType::flatTrack4x4_Alias: - return TrackElemType::FlatTrack4x4; + return TrackElemType::flatTrack4x4; case OpenRCT2::RCT12::TrackElemType::flatTrack2x4_Alias: - return TrackElemType::FlatTrack2x4; + return TrackElemType::flatTrack2x4; case OpenRCT2::RCT12::TrackElemType::flatTrack1x5_Alias: - return TrackElemType::FlatTrack1x5; + return TrackElemType::flatTrack1x5; case OpenRCT2::RCT12::TrackElemType::flatTrack1x1A_Alias: - return TrackElemType::FlatTrack1x1A; + return TrackElemType::flatTrack1x1A; case OpenRCT2::RCT12::TrackElemType::flatTrack1x4B_Alias: - return TrackElemType::FlatTrack1x4B; + return TrackElemType::flatTrack1x4B; case OpenRCT2::RCT12::TrackElemType::flatTrack1x1B_Alias: - return TrackElemType::FlatTrack1x1B; + return TrackElemType::flatTrack1x1B; case OpenRCT2::RCT12::TrackElemType::flatTrack1x4C_Alias: - return TrackElemType::FlatTrack1x4C; + return TrackElemType::flatTrack1x4C; case OpenRCT2::RCT12::TrackElemType::flatTrack3x3_Alias: - return TrackElemType::FlatTrack3x3; + return TrackElemType::flatTrack3x3; default: return static_cast(origTrackType); } @@ -694,25 +694,25 @@ OpenRCT2::RCT12::TrackElemType OpenRCT2FlatTrackTypeToRCT12(OpenRCT2::TrackElemT { switch (origTrackType) { - case TrackElemType::FlatTrack1x4A: + case TrackElemType::flatTrack1x4A: return OpenRCT2::RCT12::TrackElemType::flatTrack1x4A_Alias; - case TrackElemType::FlatTrack2x2: + case TrackElemType::flatTrack2x2: return OpenRCT2::RCT12::TrackElemType::flatTrack2x2_Alias; - case TrackElemType::FlatTrack4x4: + case TrackElemType::flatTrack4x4: return OpenRCT2::RCT12::TrackElemType::flatTrack4x4_Alias; - case TrackElemType::FlatTrack2x4: + case TrackElemType::flatTrack2x4: return OpenRCT2::RCT12::TrackElemType::flatTrack2x4_Alias; - case TrackElemType::FlatTrack1x5: + case TrackElemType::flatTrack1x5: return OpenRCT2::RCT12::TrackElemType::flatTrack1x5_Alias; - case TrackElemType::FlatTrack1x1A: + case TrackElemType::flatTrack1x1A: return OpenRCT2::RCT12::TrackElemType::flatTrack1x1A_Alias; - case TrackElemType::FlatTrack1x4B: + case TrackElemType::flatTrack1x4B: return OpenRCT2::RCT12::TrackElemType::flatTrack1x4B_Alias; - case TrackElemType::FlatTrack1x1B: + case TrackElemType::flatTrack1x1B: return OpenRCT2::RCT12::TrackElemType::flatTrack1x1B_Alias; - case TrackElemType::FlatTrack1x4C: + case TrackElemType::flatTrack1x4C: return OpenRCT2::RCT12::TrackElemType::flatTrack1x4C_Alias; - case TrackElemType::FlatTrack3x3: + case TrackElemType::flatTrack3x3: return OpenRCT2::RCT12::TrackElemType::flatTrack3x3_Alias; default: return static_cast(origTrackType); diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/rct12/ScenarioPatcher.cpp index 1b2ba8217255..3c8f25d3d3b5 100644 --- a/src/openrct2/rct12/ScenarioPatcher.cpp +++ b/src/openrct2/rct12/ScenarioPatcher.cpp @@ -285,13 +285,13 @@ static void ApplyWaterFixes(const json_t& scenarioPatch) static TrackElemType toTrackType(const u8string_view trackTypeString) { if (trackTypeString == "flat") - return TrackElemType::Flat; + return TrackElemType::flat; else if (trackTypeString == "flat_covered") - return TrackElemType::FlatCovered; + return TrackElemType::flatCovered; else { Guard::Assert(0, "Unsupported track type conversion"); - return TrackElemType::None; + return TrackElemType::none; } } diff --git a/src/openrct2/rct12/TD46.cpp b/src/openrct2/rct12/TD46.cpp index d5d5ebd1d2e2..a8bb16d87ec7 100644 --- a/src/openrct2/rct12/TD46.cpp +++ b/src/openrct2/rct12/TD46.cpp @@ -25,7 +25,7 @@ namespace OpenRCT2::RCT12 else { auto speedOrSeatRotation = flags & EnumValue(TD46Flags::speedOrSeatRotation); - if (::TrackTypeHasSpeedSetting(target.type) && target.type != OpenRCT2::TrackElemType::BlockBrakes) + if (::TrackTypeHasSpeedSetting(target.type) && target.type != OpenRCT2::TrackElemType::blockBrakes) { target.brakeBoosterSpeed = speedOrSeatRotation << 1; } @@ -49,7 +49,7 @@ namespace OpenRCT2::RCT12 { trackFlags = (source.stationIndex.ToUnderlying() & EnumValue(TD46Flags::stationId)); } - else if (::TrackTypeHasSpeedSetting(source.type) && source.type != OpenRCT2::TrackElemType::BlockBrakes) + else if (::TrackTypeHasSpeedSetting(source.type) && source.type != OpenRCT2::TrackElemType::blockBrakes) { trackFlags = (source.brakeBoosterSpeed >> 1); } diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/rct2/RCT2.cpp index 2dce7aab212b..e01bb4e82bef 100644 --- a/src/openrct2/rct2/RCT2.cpp +++ b/src/openrct2/rct2/RCT2.cpp @@ -119,7 +119,7 @@ namespace OpenRCT2::RCT2 case OriginalRideClass::wildMouse: // Boosters share their ID with the Spinning Control track. if (origTrackType == OpenRCT2::RCT12::TrackElemType::rotationControlToggleAlias) - return OpenRCT2::TrackElemType::RotationControlToggle; + return OpenRCT2::TrackElemType::rotationControlToggle; return static_cast(origTrackType); case OriginalRideClass::regular: default: @@ -129,7 +129,7 @@ namespace OpenRCT2::RCT2 OpenRCT2::RCT12::TrackElemType OpenRCT2TrackTypeToRCT2(OpenRCT2::TrackElemType origTrackType) { - if (origTrackType == TrackElemType::RotationControlToggle) + if (origTrackType == TrackElemType::rotationControlToggle) return OpenRCT2::RCT12::TrackElemType::rotationControlToggleAlias; // This function is safe to run this way round. diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index c11889e58705..df9e3047022a 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1059,7 +1059,7 @@ namespace OpenRCT2::RCT2 } else { - dst.ProximityTrackType = TrackElemType::None; + dst.ProximityTrackType = TrackElemType::none; } dst.ProximityBaseHeight = src.ProximityBaseHeight; dst.ProximityTotal = src.ProximityTotal; @@ -1394,12 +1394,12 @@ namespace OpenRCT2::RCT2 dst2->SetStationIndex(StationIndex::FromUnderlying(src2->GetStationIndex())); dst2->SetHasGreenLight(src2->HasGreenLight()); // Brakes import as closed to preserve legacy behaviour - dst2->SetBrakeClosed(src2->BlockBrakeClosed() || (trackType == TrackElemType::Brakes)); + dst2->SetBrakeClosed(src2->BlockBrakeClosed() || (trackType == TrackElemType::brakes)); dst2->SetIsIndestructible(src2->IsIndestructible()); // Skipping IsHighlighted() // Import block brakes to keep legacy behaviour - if (trackType == TrackElemType::BlockBrakes) + if (trackType == TrackElemType::blockBrakes) { dst2->SetBrakeBoosterSpeed(kRCT2DefaultBlockBrakeSpeed); } @@ -1407,7 +1407,7 @@ namespace OpenRCT2::RCT2 { dst2->SetBrakeBoosterSpeed(src2->GetBrakeBoosterSpeed()); } - else if (trackType == TrackElemType::OnRidePhoto) + else if (trackType == TrackElemType::onRidePhoto) { dst2->SetPhotoTimeout(src2->GetPhotoTimeout()); } @@ -2002,10 +2002,10 @@ namespace OpenRCT2::RCT2 // booster track but this is unlikely since only two rides have spinning control track - by default they load as // booster. TileElement* tileElement2 = MapGetTrackElementAtOfTypeSeq( - dst->TrackLocation, TrackElemType::RotationControlToggle, 0); + dst->TrackLocation, TrackElemType::rotationControlToggle, 0); if (tileElement2 != nullptr) - dst->SetTrackType(TrackElemType::RotationControlToggle); + dst->SetTrackType(TrackElemType::rotationControlToggle); } else if (src->GetTrackType() == OpenRCT2::RCT12::TrackElemType::blockBrakes) { @@ -2016,7 +2016,7 @@ namespace OpenRCT2::RCT2 { dst->BoatLocation = TileCoordsXY{ src->BoatLocation.x, src->BoatLocation.y }.ToCoordsXY(); dst->SetTrackDirection(0); - dst->SetTrackType(OpenRCT2::TrackElemType::Flat); + dst->SetTrackType(OpenRCT2::TrackElemType::flat); } dst->next_vehicle_on_train = EntityId::FromUnderlying(src->NextVehicleOnTrain); diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/rct2/T6Exporter.cpp index c577e8ffe52a..0d321c3a9e7b 100644 --- a/src/openrct2/rct2/T6Exporter.cpp +++ b/src/openrct2/rct2/T6Exporter.cpp @@ -153,7 +153,7 @@ namespace OpenRCT2::RCT2 for (const auto& trackElement : _trackDesign.trackElements) { auto trackType = OpenRCT2TrackTypeToRCT2(trackElement.type); - if (trackElement.type == TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop) + if (trackElement.type == TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop) { trackType = OpenRCT2::RCT12::TrackElemType::invertedUp90ToFlatQuarterLoopAlias; } diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index 9b8ea4b284f3..299022875104 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -162,7 +162,7 @@ namespace OpenRCT2::RCT2 OpenRCT2::TrackElemType trackType; if (t6TrackElement.Type == OpenRCT2::RCT12::TrackElemType::invertedUp90ToFlatQuarterLoopAlias) { - trackType = TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop; + trackType = TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop; } else { diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index b0fe1b0cdc79..4c6ee665fbcc 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -75,7 +75,7 @@ Vehicle* CableLiftSegmentCreate( z += ride.getRideTypeDescriptor().Heights.VehicleZOffset; current->MoveTo({ 16, 16, z }); - current->SetTrackType(TrackElemType::CableLiftHill); + current->SetTrackType(TrackElemType::cableLiftHill); current->SetTrackDirection(current->Orientation >> 3); current->track_progress = 164; current->Flags = VehicleFlags::CollisionDisabled; @@ -242,7 +242,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() for (; remaining_distance >= 13962; _vehicleUnkF64E10++) { auto trackType = GetTrackType(); - if (trackType == TrackElemType::CableLiftHill && track_progress == 160) + if (trackType == TrackElemType::cableLiftHill && track_progress == 160) { _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_1; } @@ -323,8 +323,8 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() // Doesn't check for diagonal block brakes because there is no diagonal cable lift piece, // no way for a cable lift to start from a diagonal brake. - if (output.begin_element->AsTrack()->GetTrackType() == TrackElemType::EndStation - || output.begin_element->AsTrack()->GetTrackType() == TrackElemType::BlockBrakes) + if (output.begin_element->AsTrack()->GetTrackType() == TrackElemType::endStation + || output.begin_element->AsTrack()->GetTrackType() == TrackElemType::blockBrakes) { _vehicleMotionTrackFlags = VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_STATION; } diff --git a/src/openrct2/ride/MazeCost.cpp b/src/openrct2/ride/MazeCost.cpp index 73dbb2f9a6cf..406cf3018b1b 100644 --- a/src/openrct2/ride/MazeCost.cpp +++ b/src/openrct2/ride/MazeCost.cpp @@ -23,7 +23,7 @@ namespace OpenRCT2 { money64 MazeCalculateCost(money64 constructionCost, const Ride& ride, const CoordsXYZ& loc) { - const auto& ted = GetTrackElementDescriptor(TrackElemType::Maze); + const auto& ted = GetTrackElementDescriptor(TrackElemType::maze); money64 price = (ride.getRideTypeDescriptor().BuildCosts.TrackPrice * ted.priceModifier) >> 16; auto surfaceElement = MapGetSurfaceElementAt(loc); diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 927a99dce0b2..ff4ce46e9ff8 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -505,8 +505,8 @@ bool RideTryGetOriginElement(const Ride& ride, CoordsXYE* output) // Check if it's not the station or ??? (but allow end piece of station) const auto& ted = GetTrackElementDescriptor(it.element->AsTrack()->GetTrackType()); bool specialTrackPiece - = (it.element->AsTrack()->GetTrackType() != TrackElemType::BeginStation - && it.element->AsTrack()->GetTrackType() != TrackElemType::MiddleStation + = (it.element->AsTrack()->GetTrackType() != TrackElemType::beginStation + && it.element->AsTrack()->GetTrackType() != TrackElemType::middleStation && ted.sequences[0].flags.has(SequenceFlag::trackOrigin)); // Set result tile to this track piece if first found track or a ??? @@ -2044,10 +2044,10 @@ static void RideMeasurementUpdate(Ride& ride, RideMeasurement& measurement) } auto trackType = vehicle->GetTrackType(); - if (trackType == TrackElemType::BlockBrakes || trackType == TrackElemType::CableLiftHill - || trackType == TrackElemType::Up25ToFlat || trackType == TrackElemType::Up60ToFlat - || trackType == TrackElemType::DiagUp25ToFlat || trackType == TrackElemType::DiagUp60ToFlat - || trackType == TrackElemType::DiagBlockBrakes) + if (trackType == TrackElemType::blockBrakes || trackType == TrackElemType::cableLiftHill + || trackType == TrackElemType::up25ToFlat || trackType == TrackElemType::up60ToFlat + || trackType == TrackElemType::diagUp25ToFlat || trackType == TrackElemType::diagUp60ToFlat + || trackType == TrackElemType::diagBlockBrakes) if (vehicle->velocity == 0) return; @@ -2755,7 +2755,7 @@ static ResultWithMessage RideCheckBlockBrakes(const CoordsXYE& input, CoordsXYE* if (TrackTypeIsBlockBrakes(it.current.element->AsTrack()->GetTrackType())) { auto type = it.last.element->AsTrack()->GetTrackType(); - if (type == TrackElemType::EndStation) + if (type == TrackElemType::endStation) { *output = it.current; return { false, STR_BLOCK_BRAKES_CANNOT_BE_USED_DIRECTLY_AFTER_STATION }; @@ -2765,8 +2765,8 @@ static ResultWithMessage RideCheckBlockBrakes(const CoordsXYE& input, CoordsXYE* *output = it.current; return { false, STR_BLOCK_BRAKES_CANNOT_BE_USED_DIRECTLY_AFTER_EACH_OTHER }; } - if (it.last.element->AsTrack()->HasChain() && type != TrackElemType::LeftCurvedLiftHill - && type != TrackElemType::RightCurvedLiftHill) + if (it.last.element->AsTrack()->HasChain() && type != TrackElemType::leftCurvedLiftHill + && type != TrackElemType::rightCurvedLiftHill) { *output = it.current; return { false, STR_BLOCK_BRAKES_CANNOT_BE_USED_DIRECTLY_AFTER_THE_TOP_OF_THIS_LIFT_HILL }; @@ -3011,7 +3011,7 @@ static bool RideCheckStartAndEndIsStation(const CoordsXYE& input) */ static void RideSetBoatHireReturnPoint(Ride& ride, const CoordsXYE& startElement) { - auto trackType = TrackElemType::None; + auto trackType = TrackElemType::none; auto returnPos = startElement; int32_t startX = returnPos.x; int32_t startY = returnPos.y; @@ -3019,7 +3019,7 @@ static void RideSetBoatHireReturnPoint(Ride& ride, const CoordsXYE& startElement while (TrackBlockGetPrevious(returnPos, &trackBeginEnd)) { // If previous track is back to the starting x, y, then break loop (otherwise possible infinite loop) - if (trackType != TrackElemType::None && startX == trackBeginEnd.begin_x && startY == trackBeginEnd.begin_y) + if (trackType != TrackElemType::none && startX == trackBeginEnd.begin_x && startY == trackBeginEnd.begin_y) break; auto trackCoords = CoordsXYZ{ trackBeginEnd.begin_x, trackBeginEnd.begin_y, trackBeginEnd.begin_z }; @@ -3091,11 +3091,11 @@ void SetBrakeClosedMultiTile(TrackElement& trackElement, const CoordsXY& trackLo { switch (trackElement.GetTrackType()) { - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::CableLiftHill: - case TrackElemType::DiagBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::cableLiftHill: + case TrackElemType::diagBrakes: + case TrackElemType::diagBlockBrakes: GetTrackElementOriginAndApplyChanges( { trackLocation, trackElement.GetBaseZ(), trackElement.GetDirection() }, trackElement.GetTrackType(), isClosed, nullptr, { TrackElementSetFlag::brakeClosed }); @@ -3117,18 +3117,18 @@ static void RideOpenBlockBrakes(const CoordsXYE& startElement) auto trackType = currentElement.element->AsTrack()->GetTrackType(); switch (trackType) { - case TrackElemType::BlockBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::blockBrakes: + case TrackElemType::diagBlockBrakes: BlockBrakeSetLinkedBrakesClosed( CoordsXYZ(currentElement.x, currentElement.y, currentElement.element->GetBaseZ()), *currentElement.element->AsTrack(), false); [[fallthrough]]; - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::CableLiftHill: - case TrackElemType::EndStation: - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::cableLiftHill: + case TrackElemType::endStation: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: SetBrakeClosedMultiTile(*currentElement.element->AsTrack(), { currentElement.x, currentElement.y }, false); break; default: @@ -3404,9 +3404,9 @@ static Vehicle* VehicleCreateCar( { if (rtd.HasFlag(RtdFlag::vehicleIsIntegral)) { - if (rtd.StartTrackPiece != TrackElemType::FlatTrack1x4B) + if (rtd.StartTrackPiece != TrackElemType::flatTrack1x4B) { - if (rtd.StartTrackPiece != TrackElemType::FlatTrack1x4A) + if (rtd.StartTrackPiece != TrackElemType::flatTrack1x4A) { if (ride.getRideTypeDescriptor().specialType == RtdSpecialType::enterprise) { @@ -3574,14 +3574,14 @@ static void RidecreateVehiclesFindFirstBlock(const Ride& ride, CoordsXYE* outXYE auto trackType = trackElement->GetTrackType(); switch (trackType) { - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: if (!trackElement->HasChain()) { break; } [[fallthrough]]; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: { TileElement* tileElement = MapGetTrackElementAtOfTypeSeq( { trackBeginEnd.begin_x, trackBeginEnd.begin_y, trackBeginEnd.begin_z }, trackType, 0); @@ -3595,15 +3595,15 @@ static void RidecreateVehiclesFindFirstBlock(const Ride& ride, CoordsXYE* outXYE } break; } - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: if (!trackElement->HasChain()) { break; } [[fallthrough]]; - case TrackElemType::EndStation: - case TrackElemType::BlockBrakes: + case TrackElemType::endStation: + case TrackElemType::blockBrakes: *outXYElement = { trackPos, reinterpret_cast(trackElement) }; return; default: @@ -3791,7 +3791,7 @@ void Ride::moveTrainsToBlockBrakes(const CoordsXYZ& firstBlockPosition, TrackEle { car->ClearFlag(VehicleFlags::CollisionDisabled); car->SetState(Vehicle::Status::travelling, car->sub_state); - if ((car->GetTrackType()) == TrackElemType::EndStation) + if ((car->GetTrackType()) == TrackElemType::endStation) { car->SetState(Vehicle::Status::movingToEndOfStation, car->sub_state); } @@ -3813,7 +3813,7 @@ static bool RideGetStationTile(const Ride& ride, CoordsXYE* output) if (trackStart.IsNull()) continue; - TileElement* tileElement = MapGetTrackElementAtOfType(trackStart, TrackElemType::EndStation); + TileElement* tileElement = MapGetTrackElementAtOfType(trackStart, TrackElemType::endStation); if (tileElement == nullptr) continue; @@ -3866,14 +3866,14 @@ static ResultWithMessage RideInitialiseCableLiftTrack(const Ride& ride, bool isA auto trackType = tileElement->AsTrack()->GetTrackType(); switch (trackType) { - case TrackElemType::Up25: - case TrackElemType::Up60: - case TrackElemType::FlatToUp25: - case TrackElemType::Up25ToFlat: - case TrackElemType::Up25ToUp60: - case TrackElemType::Up60ToUp25: - case TrackElemType::FlatToUp60LongBase: - case TrackElemType::Flat: + case TrackElemType::up25: + case TrackElemType::up60: + case TrackElemType::flatToUp25: + case TrackElemType::up25ToFlat: + case TrackElemType::up25ToUp60: + case TrackElemType::up60ToUp25: + case TrackElemType::flatToUp60LongBase: + case TrackElemType::flat: if (isApplying) { GetTrackElementOriginAndApplyChanges( @@ -3881,8 +3881,8 @@ static ResultWithMessage RideInitialiseCableLiftTrack(const Ride& ride, bool isA { TrackElementSetFlag::cableLiftOn }); } break; - case TrackElemType::EndStation: - case TrackElemType::BlockBrakes: + case TrackElemType::endStation: + case TrackElemType::blockBrakes: return { true }; default: return { false, STR_CABLE_LIFT_HILL_MUST_START_IMMEDIATELY_AFTER_STATION_OR_BLOCK_BRAKE }; diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index de473eba302a..7e18f16572b2 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -569,7 +569,7 @@ static void ride_construction_reset_current_piece() } else { - _currentlySelectedTrack = TrackElemType::None; + _currentlySelectedTrack = TrackElemType::none; _rideConstructionState = RideConstructionState::State0; } } @@ -1373,7 +1373,7 @@ void Ride::validateStations() // get the StationIndex for the station StationIndex stationId = StationIndex::FromUnderlying(0); - if (trackType != TrackElemType::Maze) + if (trackType != TrackElemType::maze) { uint8_t trackSequence = trackElement->AsTrack()->GetSequenceIndex(); @@ -1540,5 +1540,5 @@ OpenRCT2::TrackElemType GetTrackTypeFromCurve( return trackDescriptor->trackElement; } - return TrackElemType::None; + return TrackElemType::none; } diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index 29fdbb061da3..2f91fd0e1c91 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -618,7 +618,7 @@ extern const StringId kRideModeNames[EnumValue(RideMode::count)]; constexpr RideTypeDescriptor kDummyRTD = { .Category = RideCategory::none, - .StartTrackPiece = OpenRCT2::TrackElemType::EndStation, + .StartTrackPiece = OpenRCT2::TrackElemType::endStation, .TrackPaintFunctions = {}, .InvertedTrackPaintFunctions = {}, .Flags = 0, diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index 23714254c87f..c9009d23ed9a 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -385,10 +385,10 @@ static void ride_ratings_update_state_2(RideRating::UpdateState& state) continue; } - if (trackType == TrackElemType::None + if (trackType == TrackElemType::none || (tileElement->AsTrack()->GetSequenceIndex() == 0 && trackType == tileElement->AsTrack()->GetTrackType())) { - if (trackType == TrackElemType::EndStation) + if (trackType == TrackElemType::endStation) { auto entranceIndex = tileElement->AsTrack()->GetStationIndex(); state.StationFlags &= ~RIDE_RATING_STATION_FLAG_NO_ENTRANCE; @@ -490,7 +490,7 @@ static void ride_ratings_update_state_5(RideRating::UpdateState& state) continue; } - if (trackType == TrackElemType::None || trackType == tileElement->AsTrack()->GetTrackType()) + if (trackType == TrackElemType::none || trackType == tileElement->AsTrack()->GetTrackType()) { ride_ratings_score_close_proximity(state, tileElement); @@ -550,7 +550,7 @@ static void ride_ratings_begin_proximity_loop(RideRating::UpdateState& state) auto location = station.GetStart(); state.Proximity = location; - state.ProximityTrackType = TrackElemType::None; + state.ProximityTrackType = TrackElemType::none; state.ProximityStart = location; return; } @@ -659,8 +659,8 @@ static void ride_ratings_score_close_proximity_loops_helper(RideRating::UpdateSt if (zDiff >= 0 && zDiff <= 16) { proximity_score_increment(state, PROXIMITY_TRACK_THROUGH_VERTICAL_LOOP); - if (tileElement->AsTrack()->GetTrackType() == TrackElemType::LeftVerticalLoop - || tileElement->AsTrack()->GetTrackType() == TrackElemType::RightVerticalLoop) + if (tileElement->AsTrack()->GetTrackType() == TrackElemType::leftVerticalLoop + || tileElement->AsTrack()->GetTrackType() == TrackElemType::rightVerticalLoop) { proximity_score_increment(state, PROXIMITY_INTERSECTING_VERTICAL_LOOP); } @@ -677,7 +677,7 @@ static void ride_ratings_score_close_proximity_loops_helper(RideRating::UpdateSt static void ride_ratings_score_close_proximity_loops(RideRating::UpdateState& state, TileElement* inputTileElement) { auto trackType = inputTileElement->AsTrack()->GetTrackType(); - if (trackType == TrackElemType::LeftVerticalLoop || trackType == TrackElemType::RightVerticalLoop) + if (trackType == TrackElemType::leftVerticalLoop || trackType == TrackElemType::rightVerticalLoop) { ride_ratings_score_close_proximity_loops_helper(state, { state.Proximity, inputTileElement }); @@ -771,7 +771,7 @@ static void ride_ratings_score_close_proximity(RideRating::UpdateState& state, T case TileElementType::Track: { auto trackType = tileElement->AsTrack()->GetTrackType(); - if (trackType == TrackElemType::LeftVerticalLoop || trackType == TrackElemType::RightVerticalLoop) + if (trackType == TrackElemType::leftVerticalLoop || trackType == TrackElemType::rightVerticalLoop) { int32_t sequence = tileElement->AsTrack()->GetSequenceIndex(); if (sequence == 3 || sequence == 6) @@ -865,11 +865,11 @@ static void ride_ratings_score_close_proximity(RideRating::UpdateState& state, T switch (state.ProximityTrackType) { - case TrackElemType::Brakes: + case TrackElemType::brakes: state.AmountOfBrakes++; break; - case TrackElemType::LeftReverser: - case TrackElemType::RightReverser: + case TrackElemType::leftReverser: + case TrackElemType::rightReverser: state.AmountOfReversers++; break; default: diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 9bca4b496b6c..080fbac084b7 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -159,7 +159,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, Comma stationElement = find_station_element(loc, rideIndex); if (stationElement != nullptr) { - if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) + if (stationElement->AsTrack()->GetTrackType() == TrackElemType::endStation) { if (flags.has(CommandFlag::apply)) { @@ -181,7 +181,7 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, Comma stationElement = find_station_element(loc, rideIndex); if (stationElement != nullptr) { - if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) + if (stationElement->AsTrack()->GetTrackType() == TrackElemType::endStation) { if (flags.has(CommandFlag::apply)) { @@ -237,15 +237,15 @@ ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, Comma ride->numStations++; } - targetTrackType = TrackElemType::EndStation; + targetTrackType = TrackElemType::endStation; } else if (stationBackLoc == loc) { - targetTrackType = TrackElemType::BeginStation; + targetTrackType = TrackElemType::beginStation; } else { - targetTrackType = TrackElemType::MiddleStation; + targetTrackType = TrackElemType::middleStation; } stationElement->AsTrack()->SetTrackType(targetTrackType); @@ -297,7 +297,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn CoordsXYZD currentLoc = stationBackLoc; while ((stationElement = find_station_element(currentLoc, rideIndex)) != nullptr) { - if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) + if (stationElement->AsTrack()->GetTrackType() == TrackElemType::endStation) { if (flags.has(CommandFlag::apply)) { @@ -320,7 +320,7 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn stationElement = find_station_element(currentLoc, rideIndex); if (stationElement != nullptr) { - if (stationElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) + if (stationElement->AsTrack()->GetTrackType() == TrackElemType::endStation) { if (flags.has(CommandFlag::apply)) { @@ -372,23 +372,23 @@ ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIn } stationLength = 0; - targetTrackType = TrackElemType::EndStation; + targetTrackType = TrackElemType::endStation; } else { if (currentLoc - CoordsDirectionDelta[currentLoc.direction] == removeLoc) { - targetTrackType = TrackElemType::BeginStation; + targetTrackType = TrackElemType::beginStation; } else { if (currentLoc == stationBackLoc) { - targetTrackType = TrackElemType::BeginStation; + targetTrackType = TrackElemType::beginStation; } else { - targetTrackType = TrackElemType::MiddleStation; + targetTrackType = TrackElemType::middleStation; } } } @@ -623,9 +623,9 @@ bool TrackTypeIsStation(OpenRCT2::TrackElemType trackType) { switch (trackType) { - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: return true; default: return false; @@ -636,10 +636,10 @@ bool TrackTypeIsBrakes(OpenRCT2::TrackElemType trackType) { switch (trackType) { - case TrackElemType::Brakes: - case TrackElemType::DiagBrakes: - case TrackElemType::Down25Brakes: - case TrackElemType::DiagDown25Brakes: + case TrackElemType::brakes: + case TrackElemType::diagBrakes: + case TrackElemType::down25Brakes: + case TrackElemType::diagDown25Brakes: return true; default: return false; @@ -648,15 +648,15 @@ bool TrackTypeIsBrakes(OpenRCT2::TrackElemType trackType) bool TrackTypeIsBlockBrakes(OpenRCT2::TrackElemType trackType) { - return (trackType == TrackElemType::BlockBrakes) || (trackType == TrackElemType::DiagBlockBrakes); + return (trackType == TrackElemType::blockBrakes) || (trackType == TrackElemType::diagBlockBrakes); } bool TrackTypeIsBooster(OpenRCT2::TrackElemType trackType) { switch (trackType) { - case TrackElemType::Booster: - case TrackElemType::DiagBooster: + case TrackElemType::booster: + case TrackElemType::diagBooster: return true; default: return false; @@ -667,25 +667,25 @@ bool TrackElementIsCovered(OpenRCT2::TrackElemType trackElementType) { switch (trackElementType) { - case TrackElemType::FlatCovered: - case TrackElemType::Up25Covered: - case TrackElemType::Up60Covered: - case TrackElemType::FlatToUp25Covered: - case TrackElemType::Up25ToUp60Covered: - case TrackElemType::Up60ToUp25Covered: - case TrackElemType::Up25ToFlatCovered: - case TrackElemType::Down25Covered: - case TrackElemType::Down60Covered: - case TrackElemType::FlatToDown25Covered: - case TrackElemType::Down25ToDown60Covered: - case TrackElemType::Down60ToDown25Covered: - case TrackElemType::Down25ToFlatCovered: - case TrackElemType::LeftQuarterTurn5TilesCovered: - case TrackElemType::RightQuarterTurn5TilesCovered: - case TrackElemType::SBendLeftCovered: - case TrackElemType::SBendRightCovered: - case TrackElemType::LeftQuarterTurn3TilesCovered: - case TrackElemType::RightQuarterTurn3TilesCovered: + case TrackElemType::flatCovered: + case TrackElemType::up25Covered: + case TrackElemType::up60Covered: + case TrackElemType::flatToUp25Covered: + case TrackElemType::up25ToUp60Covered: + case TrackElemType::up60ToUp25Covered: + case TrackElemType::up25ToFlatCovered: + case TrackElemType::down25Covered: + case TrackElemType::down60Covered: + case TrackElemType::flatToDown25Covered: + case TrackElemType::down25ToDown60Covered: + case TrackElemType::down60ToDown25Covered: + case TrackElemType::down25ToFlatCovered: + case TrackElemType::leftQuarterTurn5TilesCovered: + case TrackElemType::rightQuarterTurn5TilesCovered: + case TrackElemType::sBendLeftCovered: + case TrackElemType::sBendRightCovered: + case TrackElemType::leftQuarterTurn3TilesCovered: + case TrackElemType::rightQuarterTurn3TilesCovered: return true; default: return false; @@ -696,44 +696,44 @@ OpenRCT2::TrackElemType UncoverTrackElement(OpenRCT2::TrackElemType trackElement { switch (trackElementType) { - case TrackElemType::FlatCovered: - return TrackElemType::Flat; - case TrackElemType::Up25Covered: - return TrackElemType::Up25; - case TrackElemType::Up60Covered: - return TrackElemType::Up60; - case TrackElemType::FlatToUp25Covered: - return TrackElemType::FlatToUp25; - case TrackElemType::Up25ToUp60Covered: - return TrackElemType::Up25ToUp60; - case TrackElemType::Up60ToUp25Covered: - return TrackElemType::Up60ToUp25; - case TrackElemType::Up25ToFlatCovered: - return TrackElemType::Up25ToFlat; - case TrackElemType::Down25Covered: - return TrackElemType::Down25; - case TrackElemType::Down60Covered: - return TrackElemType::Down60; - case TrackElemType::FlatToDown25Covered: - return TrackElemType::FlatToDown25; - case TrackElemType::Down25ToDown60Covered: - return TrackElemType::Down25ToDown60; - case TrackElemType::Down60ToDown25Covered: - return TrackElemType::Down60ToDown25; - case TrackElemType::Down25ToFlatCovered: - return TrackElemType::Down25ToFlat; - case TrackElemType::LeftQuarterTurn5TilesCovered: - return TrackElemType::LeftQuarterTurn5Tiles; - case TrackElemType::RightQuarterTurn5TilesCovered: - return TrackElemType::RightQuarterTurn5Tiles; - case TrackElemType::SBendLeftCovered: - return TrackElemType::SBendLeft; - case TrackElemType::SBendRightCovered: - return TrackElemType::SBendRight; - case TrackElemType::LeftQuarterTurn3TilesCovered: - return TrackElemType::LeftQuarterTurn3Tiles; - case TrackElemType::RightQuarterTurn3TilesCovered: - return TrackElemType::RightQuarterTurn3Tiles; + case TrackElemType::flatCovered: + return TrackElemType::flat; + case TrackElemType::up25Covered: + return TrackElemType::up25; + case TrackElemType::up60Covered: + return TrackElemType::up60; + case TrackElemType::flatToUp25Covered: + return TrackElemType::flatToUp25; + case TrackElemType::up25ToUp60Covered: + return TrackElemType::up25ToUp60; + case TrackElemType::up60ToUp25Covered: + return TrackElemType::up60ToUp25; + case TrackElemType::up25ToFlatCovered: + return TrackElemType::up25ToFlat; + case TrackElemType::down25Covered: + return TrackElemType::down25; + case TrackElemType::down60Covered: + return TrackElemType::down60; + case TrackElemType::flatToDown25Covered: + return TrackElemType::flatToDown25; + case TrackElemType::down25ToDown60Covered: + return TrackElemType::down25ToDown60; + case TrackElemType::down60ToDown25Covered: + return TrackElemType::down60ToDown25; + case TrackElemType::down25ToFlatCovered: + return TrackElemType::down25ToFlat; + case TrackElemType::leftQuarterTurn5TilesCovered: + return TrackElemType::leftQuarterTurn5Tiles; + case TrackElemType::rightQuarterTurn5TilesCovered: + return TrackElemType::rightQuarterTurn5Tiles; + case TrackElemType::sBendLeftCovered: + return TrackElemType::sBendLeft; + case TrackElemType::sBendRightCovered: + return TrackElemType::sBendRight; + case TrackElemType::leftQuarterTurn3TilesCovered: + return TrackElemType::leftQuarterTurn3Tiles; + case TrackElemType::rightQuarterTurn3TilesCovered: + return TrackElemType::rightQuarterTurn3Tiles; default: return trackElementType; } @@ -746,10 +746,10 @@ bool TrackTypeHasSpeedSetting(OpenRCT2::TrackElemType trackType) bool TrackTypeIsHelix(OpenRCT2::TrackElemType trackType) { - if (trackType >= TrackElemType::LeftHalfBankedHelixUpSmall && trackType <= TrackElemType::RightHalfBankedHelixDownLarge) + if (trackType >= TrackElemType::leftHalfBankedHelixUpSmall && trackType <= TrackElemType::rightHalfBankedHelixDownLarge) return true; - if (trackType >= TrackElemType::LeftQuarterBankedHelixLargeUp && trackType <= TrackElemType::RightQuarterHelixLargeDown) + if (trackType >= TrackElemType::leftQuarterBankedHelixLargeUp && trackType <= TrackElemType::rightQuarterHelixLargeDown) return true; return false; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 047b950bfbc6..f96c230995b2 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -267,375 +267,375 @@ namespace OpenRCT2 { enum class TrackElemType : uint16_t { - Flat = 0, - EndStation = 1, - BeginStation = 2, - MiddleStation = 3, - Up25 = 4, - Up60 = 5, - FlatToUp25 = 6, - Up25ToUp60 = 7, - Up60ToUp25 = 8, - Up25ToFlat = 9, - Down25 = 10, - Down60 = 11, - FlatToDown25 = 12, - Down25ToDown60 = 13, - Down60ToDown25 = 14, - Down25ToFlat = 15, - LeftQuarterTurn5Tiles = 16, - RightQuarterTurn5Tiles = 17, - FlatToLeftBank = 18, - FlatToRightBank = 19, - LeftBankToFlat = 20, - RightBankToFlat = 21, - BankedLeftQuarterTurn5Tiles = 22, - BankedRightQuarterTurn5Tiles = 23, - LeftBankToUp25 = 24, - RightBankToUp25 = 25, - Up25ToLeftBank = 26, - Up25ToRightBank = 27, - LeftBankToDown25 = 28, - RightBankToDown25 = 29, - Down25ToLeftBank = 30, - Down25ToRightBank = 31, - LeftBank = 32, - RightBank = 33, - LeftQuarterTurn5TilesUp25 = 34, - RightQuarterTurn5TilesUp25 = 35, - LeftQuarterTurn5TilesDown25 = 36, - RightQuarterTurn5TilesDown25 = 37, - SBendLeft = 38, - SBendRight = 39, - LeftVerticalLoop = 40, - RightVerticalLoop = 41, - LeftQuarterTurn3Tiles = 42, - RightQuarterTurn3Tiles = 43, - LeftBankedQuarterTurn3Tiles = 44, - RightBankedQuarterTurn3Tiles = 45, - LeftQuarterTurn3TilesUp25 = 46, - RightQuarterTurn3TilesUp25 = 47, - LeftQuarterTurn3TilesDown25 = 48, - RightQuarterTurn3TilesDown25 = 49, - LeftQuarterTurn1Tile = 50, - RightQuarterTurn1Tile = 51, - LeftTwistDownToUp = 52, - RightTwistDownToUp = 53, - LeftTwistUpToDown = 54, - RightTwistUpToDown = 55, - HalfLoopUp = 56, - HalfLoopDown = 57, - LeftCorkscrewUp = 58, - RightCorkscrewUp = 59, - LeftCorkscrewDown = 60, - RightCorkscrewDown = 61, - FlatToUp60 = 62, - Up60ToFlat = 63, - FlatToDown60 = 64, - Down60ToFlat = 65, - TowerBase = 66, - TowerSection = 67, - FlatCovered = 68, - Up25Covered = 69, - Up60Covered = 70, - FlatToUp25Covered = 71, - Up25ToUp60Covered = 72, - Up60ToUp25Covered = 73, - Up25ToFlatCovered = 74, - Down25Covered = 75, - Down60Covered = 76, - FlatToDown25Covered = 77, - Down25ToDown60Covered = 78, - Down60ToDown25Covered = 79, - Down25ToFlatCovered = 80, - LeftQuarterTurn5TilesCovered = 81, - RightQuarterTurn5TilesCovered = 82, - SBendLeftCovered = 83, - SBendRightCovered = 84, - LeftQuarterTurn3TilesCovered = 85, - RightQuarterTurn3TilesCovered = 86, - LeftHalfBankedHelixUpSmall = 87, - RightHalfBankedHelixUpSmall = 88, - LeftHalfBankedHelixDownSmall = 89, - RightHalfBankedHelixDownSmall = 90, - LeftHalfBankedHelixUpLarge = 91, - RightHalfBankedHelixUpLarge = 92, - LeftHalfBankedHelixDownLarge = 93, - RightHalfBankedHelixDownLarge = 94, - LeftQuarterTurn1TileUp60 = 95, - RightQuarterTurn1TileUp60 = 96, - LeftQuarterTurn1TileDown60 = 97, - RightQuarterTurn1TileDown60 = 98, - Brakes = 99, - Booster = 100, - Maze = 101, - LeftQuarterBankedHelixLargeUp = 102, - RightQuarterBankedHelixLargeUp = 103, - LeftQuarterBankedHelixLargeDown = 104, - RightQuarterBankedHelixLargeDown = 105, - LeftQuarterHelixLargeUp = 106, - RightQuarterHelixLargeUp = 107, - LeftQuarterHelixLargeDown = 108, - RightQuarterHelixLargeDown = 109, - Up25LeftBanked = 110, - Up25RightBanked = 111, - Waterfall = 112, - Rapids = 113, - OnRidePhoto = 114, - Down25LeftBanked = 115, - Down25RightBanked = 116, - Watersplash = 117, - FlatToUp60LongBase = 118, - Up60ToFlatLongBase = 119, - Whirlpool = 120, - Down60ToFlatLongBase = 121, - FlatToDown60LongBase = 122, - CableLiftHill = 123, - ReverseFreefallSlope = 124, - ReverseFreefallVertical = 125, - Up90 = 126, - Down90 = 127, - Up60ToUp90 = 128, - Down90ToDown60 = 129, - Up90ToUp60 = 130, - Down60ToDown90 = 131, - BrakeForDrop = 132, - LeftEighthToDiag = 133, - RightEighthToDiag = 134, - LeftEighthToOrthogonal = 135, - RightEighthToOrthogonal = 136, - LeftEighthBankToDiag = 137, - RightEighthBankToDiag = 138, - LeftEighthBankToOrthogonal = 139, - RightEighthBankToOrthogonal = 140, - DiagFlat = 141, - DiagUp25 = 142, - DiagUp60 = 143, - DiagFlatToUp25 = 144, - DiagUp25ToUp60 = 145, - DiagUp60ToUp25 = 146, - DiagUp25ToFlat = 147, - DiagDown25 = 148, - DiagDown60 = 149, - DiagFlatToDown25 = 150, - DiagDown25ToDown60 = 151, - DiagDown60ToDown25 = 152, - DiagDown25ToFlat = 153, - DiagFlatToUp60 = 154, - DiagUp60ToFlat = 155, - DiagFlatToDown60 = 156, - DiagDown60ToFlat = 157, - DiagFlatToLeftBank = 158, - DiagFlatToRightBank = 159, - DiagLeftBankToFlat = 160, - DiagRightBankToFlat = 161, - DiagLeftBankToUp25 = 162, - DiagRightBankToUp25 = 163, - DiagUp25ToLeftBank = 164, - DiagUp25ToRightBank = 165, - DiagLeftBankToDown25 = 166, - DiagRightBankToDown25 = 167, - DiagDown25ToLeftBank = 168, - DiagDown25ToRightBank = 169, - DiagLeftBank = 170, - DiagRightBank = 171, - LogFlumeReverser = 172, - SpinningTunnel = 173, - LeftBarrelRollUpToDown = 174, - RightBarrelRollUpToDown = 175, - LeftBarrelRollDownToUp = 176, - RightBarrelRollDownToUp = 177, - LeftBankToLeftQuarterTurn3TilesUp25 = 178, - RightBankToRightQuarterTurn3TilesUp25 = 179, - LeftQuarterTurn3TilesDown25ToLeftBank = 180, - RightQuarterTurn3TilesDown25ToRightBank = 181, - PoweredLift = 182, - LeftLargeHalfLoopUp = 183, - RightLargeHalfLoopUp = 184, - LeftLargeHalfLoopDown = 185, - RightLargeHalfLoopDown = 186, - LeftFlyerTwistUp = 187, - RightFlyerTwistUp = 188, - LeftFlyerTwistDown = 189, - RightFlyerTwistDown = 190, - FlyerHalfLoopUninvertedUp = 191, - FlyerHalfLoopInvertedDown = 192, - LeftFlyerCorkscrewUp = 193, - RightFlyerCorkscrewUp = 194, - LeftFlyerCorkscrewDown = 195, - RightFlyerCorkscrewDown = 196, - HeartLineTransferUp = 197, - HeartLineTransferDown = 198, - LeftHeartLineRoll = 199, - RightHeartLineRoll = 200, - MinigolfHoleA = 201, - MinigolfHoleB = 202, - MinigolfHoleC = 203, - MinigolfHoleD = 204, - MinigolfHoleE = 205, - MultiDimInvertedFlatToDown90QuarterLoop = 206, - Up90ToInvertedFlatQuarterLoop = 207, - InvertedFlatToDown90QuarterLoop = 208, - LeftCurvedLiftHill = 209, - RightCurvedLiftHill = 210, - LeftReverser = 211, - RightReverser = 212, - AirThrustTopCap = 213, - AirThrustVerticalDown = 214, - AirThrustVerticalDownToLevel = 215, - BlockBrakes = 216, - LeftBankedQuarterTurn3TileUp25 = 217, - RightBankedQuarterTurn3TileUp25 = 218, - LeftBankedQuarterTurn3TileDown25 = 219, - RightBankedQuarterTurn3TileDown25 = 220, - LeftBankedQuarterTurn5TileUp25 = 221, - RightBankedQuarterTurn5TileUp25 = 222, - LeftBankedQuarterTurn5TileDown25 = 223, - RightBankedQuarterTurn5TileDown25 = 224, - Up25ToLeftBankedUp25 = 225, - Up25ToRightBankedUp25 = 226, - LeftBankedUp25ToUp25 = 227, - RightBankedUp25ToUp25 = 228, - Down25ToLeftBankedDown25 = 229, - Down25ToRightBankedDown25 = 230, - LeftBankedDown25ToDown25 = 231, - RightBankedDown25ToDown25 = 232, - LeftBankedFlatToLeftBankedUp25 = 233, - RightBankedFlatToRightBankedUp25 = 234, - LeftBankedUp25ToLeftBankedFlat = 235, - RightBankedUp25ToRightBankedFlat = 236, - LeftBankedFlatToLeftBankedDown25 = 237, - RightBankedFlatToRightBankedDown25 = 238, - LeftBankedDown25ToLeftBankedFlat = 239, - RightBankedDown25ToRightBankedFlat = 240, - FlatToLeftBankedUp25 = 241, - FlatToRightBankedUp25 = 242, - LeftBankedUp25ToFlat = 243, - RightBankedUp25ToFlat = 244, - FlatToLeftBankedDown25 = 245, - FlatToRightBankedDown25 = 246, - LeftBankedDown25ToFlat = 247, - RightBankedDown25ToFlat = 248, - LeftQuarterTurn1TileUp90 = 249, - RightQuarterTurn1TileUp90 = 250, - LeftQuarterTurn1TileDown90 = 251, - RightQuarterTurn1TileDown90 = 252, - MultiDimUp90ToInvertedFlatQuarterLoop = 253, - MultiDimFlatToDown90QuarterLoop = 254, - MultiDimInvertedUp90ToFlatQuarterLoop = 255, + flat = 0, + endStation = 1, + beginStation = 2, + middleStation = 3, + up25 = 4, + up60 = 5, + flatToUp25 = 6, + up25ToUp60 = 7, + up60ToUp25 = 8, + up25ToFlat = 9, + down25 = 10, + down60 = 11, + flatToDown25 = 12, + down25ToDown60 = 13, + down60ToDown25 = 14, + down25ToFlat = 15, + leftQuarterTurn5Tiles = 16, + rightQuarterTurn5Tiles = 17, + flatToLeftBank = 18, + flatToRightBank = 19, + leftBankToFlat = 20, + rightBankToFlat = 21, + bankedLeftQuarterTurn5Tiles = 22, + bankedRightQuarterTurn5Tiles = 23, + leftBankToUp25 = 24, + rightBankToUp25 = 25, + up25ToLeftBank = 26, + up25ToRightBank = 27, + leftBankToDown25 = 28, + rightBankToDown25 = 29, + down25ToLeftBank = 30, + down25ToRightBank = 31, + leftBank = 32, + rightBank = 33, + leftQuarterTurn5TilesUp25 = 34, + rightQuarterTurn5TilesUp25 = 35, + leftQuarterTurn5TilesDown25 = 36, + rightQuarterTurn5TilesDown25 = 37, + sBendLeft = 38, + sBendRight = 39, + leftVerticalLoop = 40, + rightVerticalLoop = 41, + leftQuarterTurn3Tiles = 42, + rightQuarterTurn3Tiles = 43, + leftBankedQuarterTurn3Tiles = 44, + rightBankedQuarterTurn3Tiles = 45, + leftQuarterTurn3TilesUp25 = 46, + rightQuarterTurn3TilesUp25 = 47, + leftQuarterTurn3TilesDown25 = 48, + rightQuarterTurn3TilesDown25 = 49, + leftQuarterTurn1Tile = 50, + rightQuarterTurn1Tile = 51, + leftTwistDownToUp = 52, + rightTwistDownToUp = 53, + leftTwistUpToDown = 54, + rightTwistUpToDown = 55, + halfLoopUp = 56, + halfLoopDown = 57, + leftCorkscrewUp = 58, + rightCorkscrewUp = 59, + leftCorkscrewDown = 60, + rightCorkscrewDown = 61, + flatToUp60 = 62, + up60ToFlat = 63, + flatToDown60 = 64, + down60ToFlat = 65, + towerBase = 66, + towerSection = 67, + flatCovered = 68, + up25Covered = 69, + up60Covered = 70, + flatToUp25Covered = 71, + up25ToUp60Covered = 72, + up60ToUp25Covered = 73, + up25ToFlatCovered = 74, + down25Covered = 75, + down60Covered = 76, + flatToDown25Covered = 77, + down25ToDown60Covered = 78, + down60ToDown25Covered = 79, + down25ToFlatCovered = 80, + leftQuarterTurn5TilesCovered = 81, + rightQuarterTurn5TilesCovered = 82, + sBendLeftCovered = 83, + sBendRightCovered = 84, + leftQuarterTurn3TilesCovered = 85, + rightQuarterTurn3TilesCovered = 86, + leftHalfBankedHelixUpSmall = 87, + rightHalfBankedHelixUpSmall = 88, + leftHalfBankedHelixDownSmall = 89, + rightHalfBankedHelixDownSmall = 90, + leftHalfBankedHelixUpLarge = 91, + rightHalfBankedHelixUpLarge = 92, + leftHalfBankedHelixDownLarge = 93, + rightHalfBankedHelixDownLarge = 94, + leftQuarterTurn1TileUp60 = 95, + rightQuarterTurn1TileUp60 = 96, + leftQuarterTurn1TileDown60 = 97, + rightQuarterTurn1TileDown60 = 98, + brakes = 99, + booster = 100, + maze = 101, + leftQuarterBankedHelixLargeUp = 102, + rightQuarterBankedHelixLargeUp = 103, + leftQuarterBankedHelixLargeDown = 104, + rightQuarterBankedHelixLargeDown = 105, + leftQuarterHelixLargeUp = 106, + rightQuarterHelixLargeUp = 107, + leftQuarterHelixLargeDown = 108, + rightQuarterHelixLargeDown = 109, + up25LeftBanked = 110, + up25RightBanked = 111, + waterfall = 112, + rapids = 113, + onRidePhoto = 114, + down25LeftBanked = 115, + down25RightBanked = 116, + watersplash = 117, + flatToUp60LongBase = 118, + up60ToFlatLongBase = 119, + whirlpool = 120, + down60ToFlatLongBase = 121, + flatToDown60LongBase = 122, + cableLiftHill = 123, + reverseFreefallSlope = 124, + reverseFreefallVertical = 125, + up90 = 126, + down90 = 127, + up60ToUp90 = 128, + down90ToDown60 = 129, + up90ToUp60 = 130, + down60ToDown90 = 131, + brakeForDrop = 132, + leftEighthToDiag = 133, + rightEighthToDiag = 134, + leftEighthToOrthogonal = 135, + rightEighthToOrthogonal = 136, + leftEighthBankToDiag = 137, + rightEighthBankToDiag = 138, + leftEighthBankToOrthogonal = 139, + rightEighthBankToOrthogonal = 140, + diagFlat = 141, + diagUp25 = 142, + diagUp60 = 143, + diagFlatToUp25 = 144, + diagUp25ToUp60 = 145, + diagUp60ToUp25 = 146, + diagUp25ToFlat = 147, + diagDown25 = 148, + diagDown60 = 149, + diagFlatToDown25 = 150, + diagDown25ToDown60 = 151, + diagDown60ToDown25 = 152, + diagDown25ToFlat = 153, + diagFlatToUp60 = 154, + diagUp60ToFlat = 155, + diagFlatToDown60 = 156, + diagDown60ToFlat = 157, + diagFlatToLeftBank = 158, + diagFlatToRightBank = 159, + diagLeftBankToFlat = 160, + diagRightBankToFlat = 161, + diagLeftBankToUp25 = 162, + diagRightBankToUp25 = 163, + diagUp25ToLeftBank = 164, + diagUp25ToRightBank = 165, + diagLeftBankToDown25 = 166, + diagRightBankToDown25 = 167, + diagDown25ToLeftBank = 168, + diagDown25ToRightBank = 169, + diagLeftBank = 170, + diagRightBank = 171, + logFlumeReverser = 172, + spinningTunnel = 173, + leftBarrelRollUpToDown = 174, + rightBarrelRollUpToDown = 175, + leftBarrelRollDownToUp = 176, + rightBarrelRollDownToUp = 177, + leftBankToLeftQuarterTurn3TilesUp25 = 178, + rightBankToRightQuarterTurn3TilesUp25 = 179, + leftQuarterTurn3TilesDown25ToLeftBank = 180, + rightQuarterTurn3TilesDown25ToRightBank = 181, + poweredLift = 182, + leftLargeHalfLoopUp = 183, + rightLargeHalfLoopUp = 184, + leftLargeHalfLoopDown = 185, + rightLargeHalfLoopDown = 186, + leftFlyerTwistUp = 187, + rightFlyerTwistUp = 188, + leftFlyerTwistDown = 189, + rightFlyerTwistDown = 190, + flyerHalfLoopUninvertedUp = 191, + flyerHalfLoopInvertedDown = 192, + leftFlyerCorkscrewUp = 193, + rightFlyerCorkscrewUp = 194, + leftFlyerCorkscrewDown = 195, + rightFlyerCorkscrewDown = 196, + heartLineTransferUp = 197, + heartLineTransferDown = 198, + leftHeartLineRoll = 199, + rightHeartLineRoll = 200, + minigolfHoleA = 201, + minigolfHoleB = 202, + minigolfHoleC = 203, + minigolfHoleD = 204, + minigolfHoleE = 205, + multiDimInvertedFlatToDown90QuarterLoop = 206, + up90ToInvertedFlatQuarterLoop = 207, + invertedFlatToDown90QuarterLoop = 208, + leftCurvedLiftHill = 209, + rightCurvedLiftHill = 210, + leftReverser = 211, + rightReverser = 212, + airThrustTopCap = 213, + airThrustVerticalDown = 214, + airThrustVerticalDownToLevel = 215, + blockBrakes = 216, + leftBankedQuarterTurn3TileUp25 = 217, + rightBankedQuarterTurn3TileUp25 = 218, + leftBankedQuarterTurn3TileDown25 = 219, + rightBankedQuarterTurn3TileDown25 = 220, + leftBankedQuarterTurn5TileUp25 = 221, + rightBankedQuarterTurn5TileUp25 = 222, + leftBankedQuarterTurn5TileDown25 = 223, + rightBankedQuarterTurn5TileDown25 = 224, + up25ToLeftBankedUp25 = 225, + up25ToRightBankedUp25 = 226, + leftBankedUp25ToUp25 = 227, + rightBankedUp25ToUp25 = 228, + down25ToLeftBankedDown25 = 229, + down25ToRightBankedDown25 = 230, + leftBankedDown25ToDown25 = 231, + rightBankedDown25ToDown25 = 232, + leftBankedFlatToLeftBankedUp25 = 233, + rightBankedFlatToRightBankedUp25 = 234, + leftBankedUp25ToLeftBankedFlat = 235, + rightBankedUp25ToRightBankedFlat = 236, + leftBankedFlatToLeftBankedDown25 = 237, + rightBankedFlatToRightBankedDown25 = 238, + leftBankedDown25ToLeftBankedFlat = 239, + rightBankedDown25ToRightBankedFlat = 240, + flatToLeftBankedUp25 = 241, + flatToRightBankedUp25 = 242, + leftBankedUp25ToFlat = 243, + rightBankedUp25ToFlat = 244, + flatToLeftBankedDown25 = 245, + flatToRightBankedDown25 = 246, + leftBankedDown25ToFlat = 247, + rightBankedDown25ToFlat = 248, + leftQuarterTurn1TileUp90 = 249, + rightQuarterTurn1TileUp90 = 250, + leftQuarterTurn1TileDown90 = 251, + rightQuarterTurn1TileDown90 = 252, + multiDimUp90ToInvertedFlatQuarterLoop = 253, + multiDimFlatToDown90QuarterLoop = 254, + multiDimInvertedUp90ToFlatQuarterLoop = 255, // Elements that shared an ID with another piece in RCT1/2. - RotationControlToggle = 256, - FlatTrack1x4A = 257, - FlatTrack2x2 = 258, - FlatTrack4x4 = 259, - FlatTrack2x4 = 260, - FlatTrack1x5 = 261, - FlatTrack1x1A = 262, - FlatTrack1x4B = 263, - FlatTrack1x1B = 264, - FlatTrack1x4C = 265, - FlatTrack3x3 = 266, + rotationControlToggle = 256, + flatTrack1x4A = 257, + flatTrack2x2 = 258, + flatTrack4x4 = 259, + flatTrack2x4 = 260, + flatTrack1x5 = 261, + flatTrack1x1A = 262, + flatTrack1x4B = 263, + flatTrack1x1B = 264, + flatTrack1x4C = 265, + flatTrack3x3 = 266, // Highest track element ID that has a TD6 alias - HighestAlias = 266, + highestAlias = 266, // Track Elements specific to OpenRCT2 - LeftLargeCorkscrewUp = 267, - RightLargeCorkscrewUp = 268, - LeftLargeCorkscrewDown = 269, - RightLargeCorkscrewDown = 270, - LeftMediumHalfLoopUp = 271, - RightMediumHalfLoopUp = 272, - LeftMediumHalfLoopDown = 273, - RightMediumHalfLoopDown = 274, - LeftZeroGRollUp = 275, - RightZeroGRollUp = 276, - LeftZeroGRollDown = 277, - RightZeroGRollDown = 278, - LeftLargeZeroGRollUp = 279, - RightLargeZeroGRollUp = 280, - LeftLargeZeroGRollDown = 281, - RightLargeZeroGRollDown = 282, - - LeftFlyerLargeHalfLoopUninvertedUp = 283, - RightFlyerLargeHalfLoopUninvertedUp = 284, - LeftFlyerLargeHalfLoopInvertedDown = 285, - RightFlyerLargeHalfLoopInvertedDown = 286, - LeftFlyerLargeHalfLoopInvertedUp = 287, - RightFlyerLargeHalfLoopInvertedUp = 288, - LeftFlyerLargeHalfLoopUninvertedDown = 289, - RightFlyerLargeHalfLoopUninvertedDown = 290, - - FlyerHalfLoopInvertedUp = 291, - FlyerHalfLoopUninvertedDown = 292, - - LeftEighthToDiagUp25 = 293, - RightEighthToDiagUp25 = 294, - LeftEighthToDiagDown25 = 295, - RightEighthToDiagDown25 = 296, - LeftEighthToOrthogonalUp25 = 297, - RightEighthToOrthogonalUp25 = 298, - LeftEighthToOrthogonalDown25 = 299, - RightEighthToOrthogonalDown25 = 300, - - DiagUp25ToLeftBankedUp25 = 301, - DiagUp25ToRightBankedUp25 = 302, - DiagLeftBankedUp25ToUp25 = 303, - DiagRightBankedUp25ToUp25 = 304, - DiagDown25ToLeftBankedDown25 = 305, - DiagDown25ToRightBankedDown25 = 306, - DiagLeftBankedDown25ToDown25 = 307, - DiagRightBankedDown25ToDown25 = 308, - DiagLeftBankedFlatToLeftBankedUp25 = 309, - DiagRightBankedFlatToRightBankedUp25 = 310, - DiagLeftBankedUp25ToLeftBankedFlat = 311, - DiagRightBankedUp25ToRightBankedFlat = 312, - DiagLeftBankedFlatToLeftBankedDown25 = 313, - DiagRightBankedFlatToRightBankedDown25 = 314, - DiagLeftBankedDown25ToLeftBankedFlat = 315, - DiagRightBankedDown25ToRightBankedFlat = 316, - DiagFlatToLeftBankedUp25 = 317, - DiagFlatToRightBankedUp25 = 318, - DiagLeftBankedUp25ToFlat = 319, - DiagRightBankedUp25ToFlat = 320, - DiagFlatToLeftBankedDown25 = 321, - DiagFlatToRightBankedDown25 = 322, - DiagLeftBankedDown25ToFlat = 323, - DiagRightBankedDown25ToFlat = 324, - DiagUp25LeftBanked = 325, - DiagUp25RightBanked = 326, - DiagDown25LeftBanked = 327, - DiagDown25RightBanked = 328, - - LeftEighthBankToDiagUp25 = 329, - RightEighthBankToDiagUp25 = 330, - LeftEighthBankToDiagDown25 = 331, - RightEighthBankToDiagDown25 = 332, - LeftEighthBankToOrthogonalUp25 = 333, - RightEighthBankToOrthogonalUp25 = 334, - LeftEighthBankToOrthogonalDown25 = 335, - RightEighthBankToOrthogonalDown25 = 336, - - DiagBrakes = 337, - DiagBlockBrakes = 338, - Down25Brakes = 339, - DiagBooster = 340, - - DiagFlatToUp60LongBase = 341, - DiagUp60ToFlatLongBase = 342, - DiagFlatToDown60LongBase = 343, - DiagDown60ToFlatLongBase = 344, - LeftEighthDiveLoopUpToOrthogonal = 345, - RightEighthDiveLoopUpToOrthogonal = 346, - LeftEighthDiveLoopDownToDiag = 347, - RightEighthDiveLoopDownToDiag = 348, - - DiagDown25Brakes = 349, - - Count = 350, - - None = 65535, + leftLargeCorkscrewUp = 267, + rightLargeCorkscrewUp = 268, + leftLargeCorkscrewDown = 269, + rightLargeCorkscrewDown = 270, + leftMediumHalfLoopUp = 271, + rightMediumHalfLoopUp = 272, + leftMediumHalfLoopDown = 273, + rightMediumHalfLoopDown = 274, + leftZeroGRollUp = 275, + rightZeroGRollUp = 276, + leftZeroGRollDown = 277, + rightZeroGRollDown = 278, + leftLargeZeroGRollUp = 279, + rightLargeZeroGRollUp = 280, + leftLargeZeroGRollDown = 281, + rightLargeZeroGRollDown = 282, + + leftFlyerLargeHalfLoopUninvertedUp = 283, + rightFlyerLargeHalfLoopUninvertedUp = 284, + leftFlyerLargeHalfLoopInvertedDown = 285, + rightFlyerLargeHalfLoopInvertedDown = 286, + leftFlyerLargeHalfLoopInvertedUp = 287, + rightFlyerLargeHalfLoopInvertedUp = 288, + leftFlyerLargeHalfLoopUninvertedDown = 289, + rightFlyerLargeHalfLoopUninvertedDown = 290, + + flyerHalfLoopInvertedUp = 291, + flyerHalfLoopUninvertedDown = 292, + + leftEighthToDiagUp25 = 293, + rightEighthToDiagUp25 = 294, + leftEighthToDiagDown25 = 295, + rightEighthToDiagDown25 = 296, + leftEighthToOrthogonalUp25 = 297, + rightEighthToOrthogonalUp25 = 298, + leftEighthToOrthogonalDown25 = 299, + rightEighthToOrthogonalDown25 = 300, + + diagUp25ToLeftBankedUp25 = 301, + diagUp25ToRightBankedUp25 = 302, + diagLeftBankedUp25ToUp25 = 303, + diagRightBankedUp25ToUp25 = 304, + diagDown25ToLeftBankedDown25 = 305, + diagDown25ToRightBankedDown25 = 306, + diagLeftBankedDown25ToDown25 = 307, + diagRightBankedDown25ToDown25 = 308, + diagLeftBankedFlatToLeftBankedUp25 = 309, + diagRightBankedFlatToRightBankedUp25 = 310, + diagLeftBankedUp25ToLeftBankedFlat = 311, + diagRightBankedUp25ToRightBankedFlat = 312, + diagLeftBankedFlatToLeftBankedDown25 = 313, + diagRightBankedFlatToRightBankedDown25 = 314, + diagLeftBankedDown25ToLeftBankedFlat = 315, + diagRightBankedDown25ToRightBankedFlat = 316, + diagFlatToLeftBankedUp25 = 317, + diagFlatToRightBankedUp25 = 318, + diagLeftBankedUp25ToFlat = 319, + diagRightBankedUp25ToFlat = 320, + diagFlatToLeftBankedDown25 = 321, + diagFlatToRightBankedDown25 = 322, + diagLeftBankedDown25ToFlat = 323, + diagRightBankedDown25ToFlat = 324, + diagUp25LeftBanked = 325, + diagUp25RightBanked = 326, + diagDown25LeftBanked = 327, + diagDown25RightBanked = 328, + + leftEighthBankToDiagUp25 = 329, + rightEighthBankToDiagUp25 = 330, + leftEighthBankToDiagDown25 = 331, + rightEighthBankToDiagDown25 = 332, + leftEighthBankToOrthogonalUp25 = 333, + rightEighthBankToOrthogonalUp25 = 334, + leftEighthBankToOrthogonalDown25 = 335, + rightEighthBankToOrthogonalDown25 = 336, + + diagBrakes = 337, + diagBlockBrakes = 338, + down25Brakes = 339, + diagBooster = 340, + + diagFlatToUp60LongBase = 341, + diagUp60ToFlatLongBase = 342, + diagFlatToDown60LongBase = 343, + diagDown60ToFlatLongBase = 344, + leftEighthDiveLoopUpToOrthogonal = 345, + rightEighthDiveLoopUpToOrthogonal = 346, + leftEighthDiveLoopDownToDiag = 347, + rightEighthDiveLoopDownToDiag = 348, + + diagDown25Brakes = 349, + + count = 350, + + none = 65535, }; } @@ -674,7 +674,7 @@ struct TypeOrCurve bool isTrackType = true; // true if a OpenRCT2::TrackElemType is selected, false if a TrackCurve is selected; union { - OpenRCT2::TrackElemType trackType = OpenRCT2::TrackElemType::None; + OpenRCT2::TrackElemType trackType = OpenRCT2::TrackElemType::none; TrackCurve curve; }; diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index a34c27eab51c..9d3a0c53e768 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -286,463 +286,463 @@ namespace OpenRCT2::TrackMetaData { 0, 2, 0, -128, -96, 0 }, { 0, 2, 0, 128, 64, 0 }, { 0, 0, 0, 0, 0, 0 }, - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4A - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x2 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack4x4 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x4 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x5 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1A - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4B - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1B - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4C - { 0, 0, 0, 96, 32, 0 }, // TrackElemType::FlatTrack3x3 - { 0, 3, 0, 112, -64, -64 }, // TrackElemType::LeftCorkscrewUp - { 0, 1, 0, 112, -64, 64 }, // TrackElemType::RightCorkscrewUp - { 0, 3, 0, -112, -64, -64 }, // TrackElemType::LeftCorkscrewDown - { 0, 1, 0, -112, -64, 64 }, // TrackElemType::RightCorkscrewDown - { 0, 2, 0, 216, -32, -32 }, // TrackElemType::LeftMediumHalfLoopUp - { 0, 2, 0, 216, -32, 32 }, // TrackElemType::RightMediumHalfLoopUp - { 0, 2, 0, -216, 32, -32 }, // TrackElemType::LeftMediumHalfLoopDown - { 0, 2, 0, -216, 32, 32 }, // TrackElemType::RightMediumHalfLoopDown - { 0, 0, 0, 56, -64, 0 }, // TrackElemType::LeftZeroGRollUp - { 0, 0, 0, 56, -64, 0 }, // TrackElemType::RightZeroGRollUp - { 0, 0, 0, -56,-64, 0 }, // TrackElemType::LeftZeroGRollDown - { 0, 0, 0, -56,-64, 0 }, // TrackElemType::RightZeroGRollDown - { 0, 0, 0, 152, -96, 0 }, // TrackElemType::LeftLargeZeroGRollUp - { 0, 0, 0, 152, -96, 0 }, // TrackElemType::RightLargeZeroGRollUp - { 0, 0, 0, -152,-96, 0 }, // TrackElemType::LeftLargeZeroGRollDown - { 0, 0, 0, -152,-96, 0 }, // TrackElemType::RightLargeZeroGRollDown - { 0, 2, 0, 248, -64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - { 0, 2, 0, 248, -64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - { 0, 2, 0, -248, 64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - { 0, 2, 0, -248, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - { 0, 2, 0, 280, -64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - { 0, 2, 0, 280, -64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - { 0, 2, 0, -280, 64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - { 0, 2, 0, -280, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - { 0, 2, 0, 152, -32, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp - { 0, 2, 0, -152, 32, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthToDiagUp25 - { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthToDiagUp25 - { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthToDiagDown25 - { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthToDiagDown25 - { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalUp25 - { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalDown25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagFlatToRightBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagFlatToRightBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToFlat - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25LeftBanked - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25RightBanked - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25LeftBanked - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25RightBanked - { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagUp25 - { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthBankToDiagUp25 - { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagDown25 - { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthBankToDiagDown25 - { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBrakes - { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBlockBrakes - { 0, 0, 16, 0, 0, 0 }, // TrackElemType::Down25Brakes - { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBooster - { 4, 4, 0, 88, -96, 96 }, // TrackElemType::DiagFlatToUp60LongBase, - { 4, 4, 0, 88, -96, 96 }, // TrackElemType::DiagUp60ToFlatLongBase, - { 4, 4, 88, 0, -96, 96 }, // TrackElemType::DiagFlatToDown60LongBase, - { 4, 4, 88, 0, -96, 96 }, // TrackElemType::DiagDown60ToFlatLongBase, - { 4, 0, 0,152, -96, 32 }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - { 4, 1, 0,152, -32, 96 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - { 0, 7,152, 0, -96, -32 }, // TrackElemType::LeftEighthDiveLoopDownToDiag - { 0, 4,152, 0, -96, 32 }, // TrackElemType::RightEighthDiveLoopDownToDiag - { 4, 4, 16, 0, -32, 32 } // TrackElemType::DiagDown25Brakes - }; - static_assert(std::size(kTrackCoordinates) == EnumValue(TrackElemType::Count)); + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack1x4A + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack2x2 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack4x4 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack2x4 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack1x5 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack1x1A + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack1x4B + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack1x1B + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::flatTrack1x4C + { 0, 0, 0, 96, 32, 0 }, // TrackElemType::flatTrack3x3 + { 0, 3, 0, 112, -64, -64 }, // TrackElemType::leftCorkscrewUp + { 0, 1, 0, 112, -64, 64 }, // TrackElemType::rightCorkscrewUp + { 0, 3, 0, -112, -64, -64 }, // TrackElemType::leftCorkscrewDown + { 0, 1, 0, -112, -64, 64 }, // TrackElemType::rightCorkscrewDown + { 0, 2, 0, 216, -32, -32 }, // TrackElemType::leftMediumHalfLoopUp + { 0, 2, 0, 216, -32, 32 }, // TrackElemType::rightMediumHalfLoopUp + { 0, 2, 0, -216, 32, -32 }, // TrackElemType::leftMediumHalfLoopDown + { 0, 2, 0, -216, 32, 32 }, // TrackElemType::rightMediumHalfLoopDown + { 0, 0, 0, 56, -64, 0 }, // TrackElemType::leftZeroGRollUp + { 0, 0, 0, 56, -64, 0 }, // TrackElemType::rightZeroGRollUp + { 0, 0, 0, -56,-64, 0 }, // TrackElemType::leftZeroGRollDown + { 0, 0, 0, -56,-64, 0 }, // TrackElemType::rightZeroGRollDown + { 0, 0, 0, 152, -96, 0 }, // TrackElemType::leftLargeZeroGRollUp + { 0, 0, 0, 152, -96, 0 }, // TrackElemType::rightLargeZeroGRollUp + { 0, 0, 0, -152,-96, 0 }, // TrackElemType::leftLargeZeroGRollDown + { 0, 0, 0, -152,-96, 0 }, // TrackElemType::rightLargeZeroGRollDown + { 0, 2, 0, 248, -64, -32 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + { 0, 2, 0, 248, -64, 32 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + { 0, 2, 0, -248, 64, -32 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + { 0, 2, 0, -248, 64, 32 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + { 0, 2, 0, 280, -64, -32 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + { 0, 2, 0, 280, -64, 32 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + { 0, 2, 0, -280, 64, -32 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + { 0, 2, 0, -280, 64, 32 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + { 0, 2, 0, 152, -32, 0 }, // TrackElemType::flyerHalfLoopInvertedUp + { 0, 2, 0, -152, 32, 0 }, // TrackElemType::flyerHalfLoopUninvertedDown + { 0, 7, 0, 48, -64, -32 }, // TrackElemType::leftEighthToDiagUp25 + { 0, 4, 0, 48, -64, 32 }, // TrackElemType::rightEighthToDiagUp25 + { 0, 7, 0,-48, -64, -32 }, // TrackElemType::leftEighthToDiagDown25 + { 0, 4, 0,-48, -64, 32 }, // TrackElemType::rightEighthToDiagDown25 + { 4, 0, 0, 48, -64, 32 }, // TrackElemType::leftEighthToOrthogonalUp25 + { 4, 1, 0, 48, -32, 64 }, // TrackElemType::rightEighthToOrthogonalUp25 + { 4, 0, 0,-48, -64, 32 }, // TrackElemType::leftEighthToOrthogonalDown25 + { 4, 1, 0,-48, -32, 64 }, // TrackElemType::rightEighthToOrthogonalDown25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::diagUp25ToLeftBankedUp25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::diagUp25ToRightBankedUp25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::diagLeftBankedUp25ToUp25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::diagRightBankedUp25ToUp25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::diagDown25ToLeftBankedDown25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::diagDown25ToRightBankedDown25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::diagLeftBankedDown25ToDown25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::diagRightBankedDown25ToDown25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagFlatToLeftBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagFlatToRightBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagLeftBankedUp25ToFlat + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::diagRightBankedUp25ToFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagFlatToLeftBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagFlatToRightBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagLeftBankedDown25ToFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::diagRightBankedDown25ToFlat + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::diagUp25LeftBanked + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::diagUp25RightBanked + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::diagDown25LeftBanked + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::diagDown25RightBanked + { 0, 7, 0, 48, -64, -32 }, // TrackElemType::leftEighthBankToDiagUp25 + { 0, 4, 0, 48, -64, 32 }, // TrackElemType::rightEighthBankToDiagUp25 + { 0, 7, 0,-48, -64, -32 }, // TrackElemType::leftEighthBankToDiagDown25 + { 0, 4, 0,-48, -64, 32 }, // TrackElemType::rightEighthBankToDiagDown25 + { 4, 0, 0, 48, -64, 32 }, // TrackElemType::leftEighthBankToOrthogonalUp25 + { 4, 1, 0, 48, -32, 64 }, // TrackElemType::rightEighthBankToOrthogonalUp25 + { 4, 0, 0,-48, -64, 32 }, // TrackElemType::leftEighthBankToOrthogonalDown25 + { 4, 1, 0,-48, -32, 64 }, // TrackElemType::rightEighthBankToOrthogonalDown25 + { 4, 4, 0, 0, -32, 32 }, // TrackElemType::diagBrakes + { 4, 4, 0, 0, -32, 32 }, // TrackElemType::diagBlockBrakes + { 0, 0, 16, 0, 0, 0 }, // TrackElemType::down25Brakes + { 4, 4, 0, 0, -32, 32 }, // TrackElemType::diagBooster + { 4, 4, 0, 88, -96, 96 }, // TrackElemType::diagFlatToUp60LongBase, + { 4, 4, 0, 88, -96, 96 }, // TrackElemType::diagUp60ToFlatLongBase, + { 4, 4, 88, 0, -96, 96 }, // TrackElemType::diagFlatToDown60LongBase, + { 4, 4, 88, 0, -96, 96 }, // TrackElemType::diagDown60ToFlatLongBase, + { 4, 0, 0,152, -96, 32 }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + { 4, 1, 0,152, -32, 96 }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + { 0, 7,152, 0, -96, -32 }, // TrackElemType::leftEighthDiveLoopDownToDiag + { 0, 4,152, 0, -96, 32 }, // TrackElemType::rightEighthDiveLoopDownToDiag + { 4, 4, 16, 0, -32, 32 } // TrackElemType::diagDown25Brakes + }; + static_assert(std::size(kTrackCoordinates) == EnumValue(TrackElemType::count)); static constexpr uint8_t kTrackPieceLengths[] = { - 32, // TrackElemType::Flat - 32, // TrackElemType::EndStation - 32, // TrackElemType::BeginStation - 32, // TrackElemType::MiddleStation - 33, // TrackElemType::Up25 - 40, // TrackElemType::Up60 - 32, // TrackElemType::FlatToUp25 - 34, // TrackElemType::Up25ToUp60 - 34, // TrackElemType::Up60ToUp25 - 32, // TrackElemType::Up25ToFlat - 33, // TrackElemType::Down25 - 40, // TrackElemType::Down60 - 32, // TrackElemType::FlatToDown25 - 34, // TrackElemType::Down25ToDown60 - 34, // TrackElemType::Down60ToDown25 - 32, // TrackElemType::Down25ToFlat - 124, // TrackElemType::LeftQuarterTurn5Tiles - 124, // TrackElemType::RightQuarterTurn5Tiles - 32, // TrackElemType::FlatToLeftBank - 32, // TrackElemType::FlatToRightBank - 32, // TrackElemType::LeftBankToFlat - 32, // TrackElemType::RightBankToFlat - 124, // TrackElemType::BankedLeftQuarterTurn5Tiles - 124, // TrackElemType::BankedRightQuarterTurn5Tiles - 32, // TrackElemType::LeftBankToUp25 - 32, // TrackElemType::RightBankToUp25 - 32, // TrackElemType::Up25ToLeftBank - 32, // TrackElemType::Up25ToRightBank - 32, // TrackElemType::LeftBankToDown25 - 32, // TrackElemType::RightBankToDown25 - 32, // TrackElemType::Down25ToLeftBank - 32, // TrackElemType::Down25ToRightBank - 32, // TrackElemType::LeftBank - 32, // TrackElemType::RightBank - 130, // TrackElemType::LeftQuarterTurn5TilesUp25 - 130, // TrackElemType::RightQuarterTurn5TilesUp25 - 130, // TrackElemType::LeftQuarterTurn5TilesDown25 - 130, // TrackElemType::RightQuarterTurn5TilesDown25 - 96, // TrackElemType::SBendLeft - 96, // TrackElemType::SBendRight - 120, // TrackElemType::LeftVerticalLoop - 120, // TrackElemType::RightVerticalLoop - 75, // TrackElemType::LeftQuarterTurn3Tiles - 75, // TrackElemType::RightQuarterTurn3Tiles - 75, // TrackElemType::LeftBankedQuarterTurn3Tiles - 75, // TrackElemType::RightBankedQuarterTurn3Tiles - 77, // TrackElemType::LeftQuarterTurn3TilesUp25 - 77, // TrackElemType::RightQuarterTurn3TilesUp25 - 77, // TrackElemType::LeftQuarterTurn3TilesDown25 - 77, // TrackElemType::RightQuarterTurn3TilesDown25 - 24, // TrackElemType::LeftQuarterTurn1Tile - 24, // TrackElemType::RightQuarterTurn1Tile - 96, // TrackElemType::LeftTwistDownToUp - 96, // TrackElemType::RightTwistDownToUp - 96, // TrackElemType::LeftTwistUpToDown - 96, // TrackElemType::RightTwistUpToDown - 60, // TrackElemType::HalfLoopUp - 60, // TrackElemType::HalfLoopDown - 55, // TrackElemType::LeftCorkscrewUp - 55, // TrackElemType::RightCorkscrewUp - 55, // TrackElemType::LeftCorkscrewDown - 55, // TrackElemType::RightCorkscrewDown - 36, // TrackElemType::FlatToUp60 - 36, // TrackElemType::Up60ToFlat - 36, // TrackElemType::FlatToDown60 - 36, // TrackElemType::Down60ToFlat - 32, // TrackElemType::TowerBase - 32, // TrackElemType::TowerSection - 32, // TrackElemType::FlatCovered - 33, // TrackElemType::Up25Covered - 40, // TrackElemType::Up60Covered - 32, // TrackElemType::FlatToUp25Covered - 34, // TrackElemType::Up25ToUp60Covered - 34, // TrackElemType::Up60ToUp25Covered - 32, // TrackElemType::Up25ToFlatCovered - 33, // TrackElemType::Down25Covered - 40, // TrackElemType::Down60Covered - 32, // TrackElemType::FlatToDown25Covered - 34, // TrackElemType::Down25ToDown60Covered - 34, // TrackElemType::Down60ToDown25Covered - 32, // TrackElemType::Down25ToFlatCovered - 124, // TrackElemType::LeftQuarterTurn5TilesCovered - 124, // TrackElemType::RightQuarterTurn5TilesCovered - 96, // TrackElemType::SBendLeftCovered - 96, // TrackElemType::SBendRightCovered - 75, // TrackElemType::LeftQuarterTurn3TilesCovered - 75, // TrackElemType::RightQuarterTurn3TilesCovered - 150, // TrackElemType::LeftHalfBankedHelixUpSmall - 150, // TrackElemType::RightHalfBankedHelixUpSmall - 150, // TrackElemType::LeftHalfBankedHelixDownSmall - 150, // TrackElemType::RightHalfBankedHelixDownSmall - 248, // TrackElemType::LeftHalfBankedHelixUpLarge - 248, // TrackElemType::RightHalfBankedHelixUpLarge - 248, // TrackElemType::LeftHalfBankedHelixDownLarge - 248, // TrackElemType::RightHalfBankedHelixDownLarge - 64, // TrackElemType::LeftQuarterTurn1TileUp60 - 64, // TrackElemType::RightQuarterTurn1TileUp60 - 64, // TrackElemType::LeftQuarterTurn1TileDown60 - 64, // TrackElemType::RightQuarterTurn1TileDown60 - 32, // TrackElemType::Brakes - 32, // TrackElemType::Booster - 32, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze - 124, // TrackElemType::LeftQuarterBankedHelixLargeUp - 124, // TrackElemType::RightQuarterBankedHelixLargeUp - 124, // TrackElemType::LeftQuarterBankedHelixLargeDown - 124, // TrackElemType::RightQuarterBankedHelixLargeDown - 124, // TrackElemType::LeftQuarterHelixLargeUp - 124, // TrackElemType::RightQuarterHelixLargeUp - 124, // TrackElemType::LeftQuarterHelixLargeDown - 124, // TrackElemType::RightQuarterHelixLargeDown - 33, // TrackElemType::Up25LeftBanked - 33, // TrackElemType::Up25RightBanked - 32, // TrackElemType::Waterfall - 32, // TrackElemType::Rapids - 32, // TrackElemType::OnRidePhoto - 33, // TrackElemType::Down25LeftBanked - 33, // TrackElemType::Down25RightBanked - 128, // TrackElemType::Watersplash - 165, // TrackElemType::FlatToUp60LongBase - 165, // TrackElemType::Up60ToFlatLongBase - 32, // TrackElemType::Whirlpool - 165, // TrackElemType::Down60ToFlatLongBase - 165, // TrackElemType::FlatToDown60LongBase - 138, // TrackElemType::CableLiftHill - 32, // TrackElemType::ReverseFreefallSlope - 32, // TrackElemType::ReverseFreefallVertical - 32, // TrackElemType::Up90 - 32, // TrackElemType::Down90 - 32, // TrackElemType::Up60ToUp90 - 32, // TrackElemType::Down90ToDown60 - 32, // TrackElemType::Up90ToUp60 - 32, // TrackElemType::Down60ToDown90 - 32, // TrackElemType::BrakeForDrop - 87, // TrackElemType::LeftEighthToDiag - 87, // TrackElemType::RightEighthToDiag - 87, // TrackElemType::LeftEighthToOrthogonal - 87, // TrackElemType::RightEighthToOrthogonal - 87, // TrackElemType::LeftEighthBankToDiag - 87, // TrackElemType::RightEighthBankToDiag - 87, // TrackElemType::LeftEighthBankToOrthogonal - 87, // TrackElemType::RightEighthBankToOrthogonal - 45, // TrackElemType::DiagFlat - 45, // TrackElemType::DiagUp25 - 45, // TrackElemType::DiagUp60 - 45, // TrackElemType::DiagFlatToUp25 - 45, // TrackElemType::DiagUp25ToUp60 - 45, // TrackElemType::DiagUp60ToUp25 - 45, // TrackElemType::DiagUp25ToFlat - 45, // TrackElemType::DiagDown25 - 45, // TrackElemType::DiagDown60 - 45, // TrackElemType::DiagFlatToDown25 - 45, // TrackElemType::DiagDown25ToDown60 - 45, // TrackElemType::DiagDown60ToDown25 - 45, // TrackElemType::DiagDown25ToFlat - 45, // TrackElemType::DiagFlatToUp60 - 45, // TrackElemType::DiagUp60ToFlat - 45, // TrackElemType::DiagFlatToDown60 - 45, // TrackElemType::DiagDown60ToFlat - 45, // TrackElemType::DiagFlatToLeftBank - 45, // TrackElemType::DiagFlatToRightBank - 45, // TrackElemType::DiagLeftBankToFlat - 45, // TrackElemType::DiagRightBankToFlat - 45, // TrackElemType::DiagLeftBankToUp25 - 45, // TrackElemType::DiagRightBankToUp25 - 45, // TrackElemType::DiagUp25ToLeftBank - 45, // TrackElemType::DiagUp25ToRightBank - 45, // TrackElemType::DiagLeftBankToDown25 - 45, // TrackElemType::DiagRightBankToDown25 - 45, // TrackElemType::DiagDown25ToLeftBank - 45, // TrackElemType::DiagDown25ToRightBank - 45, // TrackElemType::DiagLeftBank - 45, // TrackElemType::DiagRightBank - 16, // TrackElemType::LogFlumeReverser - 32, // TrackElemType::SpinningTunnel - 96, // TrackElemType::LeftBarrelRollUpToDown - 96, // TrackElemType::RightBarrelRollUpToDown - 96, // TrackElemType::LeftBarrelRollDownToUp - 96, // TrackElemType::RightBarrelRollDownToUp - 64, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - 64, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - 64, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - 64, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - 32, // TrackElemType::PoweredLift - 100, // TrackElemType::LeftLargeHalfLoopUp - 100, // TrackElemType::RightLargeHalfLoopUp - 100, // TrackElemType::LeftLargeHalfLoopDown - 100, // TrackElemType::RightLargeHalfLoopDown - 96, // TrackElemType::LeftFlyerTwistUp - 96, // TrackElemType::RightFlyerTwistUp - 96, // TrackElemType::LeftFlyerTwistDown - 96, // TrackElemType::RightFlyerTwistDown - 64, // TrackElemType::FlyerHalfLoopUninvertedUp - 64, // TrackElemType::FlyerHalfLoopInvertedDown - 64, // TrackElemType::LeftFlyerCorkscrewUp - 64, // TrackElemType::RightFlyerCorkscrewUp - 64, // TrackElemType::LeftFlyerCorkscrewDown - 64, // TrackElemType::RightFlyerCorkscrewDown - 16, // TrackElemType::HeartLineTransferUp - 16, // TrackElemType::HeartLineTransferDown - 64, // TrackElemType::LeftHeartLineRoll - 64, // TrackElemType::RightHeartLineRoll - 32, // TrackElemType::MinigolfHoleA - 32, // TrackElemType::MinigolfHoleB - 32, // TrackElemType::MinigolfHoleC - 32, // TrackElemType::MinigolfHoleD - 32, // TrackElemType::MinigolfHoleE - 80, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - 80, // TrackElemType::Up90ToInvertedFlatQuarterLoop - 80, // TrackElemType::InvertedFlatToDown90QuarterLoop - 64, // TrackElemType::LeftCurvedLiftHill - 64, // TrackElemType::RightCurvedLiftHill - 32, // TrackElemType::LeftReverser - 32, // TrackElemType::RightReverser - 32, // TrackElemType::AirThrustTopCap - 32, // TrackElemType::AirThrustVerticalDown - 32, // TrackElemType::AirThrustVerticalDownToLevel - 32, // TrackElemType::BlockBrakes - 32, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - 32, // TrackElemType::RightBankedQuarterTurn3TileUp25 - 32, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - 32, // TrackElemType::RightBankedQuarterTurn3TileDown25 - 32, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - 32, // TrackElemType::RightBankedQuarterTurn5TileUp25 - 32, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - 32, // TrackElemType::RightBankedQuarterTurn5TileDown25 - 32, // TrackElemType::Up25ToLeftBankedUp25 - 32, // TrackElemType::Up25ToRightBankedUp25 - 32, // TrackElemType::LeftBankedUp25ToUp25 - 32, // TrackElemType::RightBankedUp25ToUp25 - 32, // TrackElemType::Down25ToLeftBankedDown25 - 32, // TrackElemType::Down25ToRightBankedDown25 - 32, // TrackElemType::LeftBankedDown25ToDown25 - 32, // TrackElemType::RightBankedDown25ToDown25 - 32, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - 32, // TrackElemType::RightBankedFlatToRightBankedUp25 - 32, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - 32, // TrackElemType::RightBankedUp25ToRightBankedFlat - 32, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - 32, // TrackElemType::RightBankedFlatToRightBankedDown25 - 32, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - 32, // TrackElemType::RightBankedDown25ToRightBankedFlat - 32, // TrackElemType::FlatToLeftBankedUp25 - 32, // TrackElemType::FlatToRightBankedUp25 - 32, // TrackElemType::LeftBankedUp25ToFlat - 32, // TrackElemType::RightBankedUp25ToFlat - 32, // TrackElemType::FlatToLeftBankedDown25 - 32, // TrackElemType::FlatToRightBankedDown25 - 32, // TrackElemType::LeftBankedDown25ToFlat - 32, // TrackElemType::RightBankedDown25ToFlat - 32, // TrackElemType::LeftQuarterTurn1TileUp90 - 32, // TrackElemType::RightQuarterTurn1TileUp90 - 32, // TrackElemType::LeftQuarterTurn1TileDown90 - 32, // TrackElemType::RightQuarterTurn1TileDown90 - 80, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - 80, // TrackElemType::MultiDimFlatToDown90QuarterLoop - 80, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - 32, // TrackElemType::RotationControlToggle - 0, // TrackElemType::FlatTrack1x4A - 0, // TrackElemType::FlatTrack2x2 - 0, // TrackElemType::FlatTrack4x4 - 0, // TrackElemType::FlatTrack2x4 - 0, // TrackElemType::FlatTrack1x5 - 0, // TrackElemType::FlatTrack1x1A - 0, // TrackElemType::FlatTrack1x4B - 0, // TrackElemType::FlatTrack1x1B - 0, // TrackElemType::FlatTrack1x4C - 0, // TrackElemType::FlatTrack3x3 - 96, // TrackElemType::LeftCorkscrewUp - 96, // TrackElemType::RightCorkscrewUp - 96, // TrackElemType::LeftCorkscrewDown - 96, // TrackElemType::RightCorkscrewDown - 80, // TrackElemType::LeftMediumHalfLoopUp - 80, // TrackElemType::RightMediumHalfLoopUp - 80, // TrackElemType::LeftMediumHalfLoopDown - 80, // TrackElemType::RightMediumHalfLoopDown - 96, // TrackElemType::LeftZeroGRollUp - 96, // TrackElemType::RightZeroGRollUp - 96, // TrackElemType::LeftZeroGRollDown - 96, // TrackElemType::RightZeroGRollDown - 165, // TrackElemType::LeftLargeZeroGRollUp - 165, // TrackElemType::RightLargeZeroGRollUp - 165, // TrackElemType::LeftLargeZeroGRollDown - 165, // TrackElemType::RightLargeZeroGRollDown - 100, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - 100, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - 100, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - 100, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - 100, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - 100, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - 64, // TrackElemType::FlyerHalfLoopInvertedUp - 64, // TrackElemType::FlyerHalfLoopUninvertedDown - 92, // TrackElemType::LeftEighthToDiagUp25 - 92, // TrackElemType::RightEighthToDiagUp25 - 92, // TrackElemType::LeftEighthToDiagDown25 - 92, // TrackElemType::RightEighthToDiagDown25 - 92, // TrackElemType::LeftEighthToOrthogonalUp25 - 92, // TrackElemType::RightEighthToOrthogonalUp25 - 92, // TrackElemType::LeftEighthToOrthogonalDown25 - 92, // TrackElemType::RightEighthToOrthogonalDown25 - 45, // TrackElemType::DiagUp25ToLeftBankedUp25 - 45, // TrackElemType::DiagUp25ToRightBankedUp25 - 45, // TrackElemType::DiagLeftBankedUp25ToUp25 - 45, // TrackElemType::DiagRightBankedUp25ToUp25 - 45, // TrackElemType::DiagDown25ToLeftBankedDown25 - 45, // TrackElemType::DiagDown25ToRightBankedDown25 - 45, // TrackElemType::DiagLeftBankedDown25ToDown25 - 45, // TrackElemType::DiagRightBankedDown25ToDown25 - 45, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - 45, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - 45, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - 45, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - 45, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - 45, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - 45, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - 45, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - 45, // TrackElemType::DiagFlatToLeftBankedUp25 - 45, // TrackElemType::DiagFlatToRightBankedUp25 - 45, // TrackElemType::DiagLeftBankedUp25ToFlat - 45, // TrackElemType::DiagRightBankedUp25ToFlat - 45, // TrackElemType::DiagFlatToLeftBankedDown25 - 45, // TrackElemType::DiagFlatToRightBankedDown25 - 45, // TrackElemType::DiagLeftBankedDown25ToFlat - 45, // TrackElemType::DiagRightBankedDown25ToFlat - 45, // TrackElemType::DiagUp25LeftBanked - 45, // TrackElemType::DiagUp25RightBanked - 45, // TrackElemType::DiagDown25LeftBanked - 45, // TrackElemType::DiagDown25RightBanked - 92, // TrackElemType::LeftEighthBankToDiagUp25 - 92, // TrackElemType::RightEighthBankToDiagUp25 - 92, // TrackElemType::LeftEighthBankToDiagDown25 - 92, // TrackElemType::RightEighthBankToDiagDown25 - 92, // TrackElemType::LeftEighthBankToOrthogonalUp25 - 92, // TrackElemType::RightEighthBankToOrthogonalUp25 - 92, // TrackElemType::LeftEighthBankToOrthogonalDown25 - 92, // TrackElemType::RightEighthBankToOrthogonalDown25 - 45, // TrackElemType::DiagBrakes - 45, // TrackElemType::DiagBlockBrakes - 33, // TrackElemType::Down25Brakes - 45, // TrackElemType::DiagBooster - 165, // TrackElemType::DiagFlatToUp60LongBase, - 165, // TrackElemType::DiagUp60ToFlatLongBase, - 165, // TrackElemType::DiagFlatToDown60LongBase, - 165, // TrackElemType::DiagDown60ToFlatLongBase, - 165, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - 165, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - 165, // TrackElemType::LeftEighthDiveLoopDownToDiag - 165, // TrackElemType::RightEighthDiveLoopDownToDiag - 45, // TrackElemType::DiagDown25Brakes - }; - - static_assert(std::size(kTrackPieceLengths) == EnumValue(TrackElemType::Count)); + 32, // TrackElemType::flat + 32, // TrackElemType::endStation + 32, // TrackElemType::beginStation + 32, // TrackElemType::middleStation + 33, // TrackElemType::up25 + 40, // TrackElemType::up60 + 32, // TrackElemType::flatToUp25 + 34, // TrackElemType::up25ToUp60 + 34, // TrackElemType::up60ToUp25 + 32, // TrackElemType::up25ToFlat + 33, // TrackElemType::down25 + 40, // TrackElemType::down60 + 32, // TrackElemType::flatToDown25 + 34, // TrackElemType::down25ToDown60 + 34, // TrackElemType::down60ToDown25 + 32, // TrackElemType::down25ToFlat + 124, // TrackElemType::leftQuarterTurn5Tiles + 124, // TrackElemType::rightQuarterTurn5Tiles + 32, // TrackElemType::flatToLeftBank + 32, // TrackElemType::flatToRightBank + 32, // TrackElemType::leftBankToFlat + 32, // TrackElemType::rightBankToFlat + 124, // TrackElemType::bankedLeftQuarterTurn5Tiles + 124, // TrackElemType::bankedRightQuarterTurn5Tiles + 32, // TrackElemType::leftBankToUp25 + 32, // TrackElemType::rightBankToUp25 + 32, // TrackElemType::up25ToLeftBank + 32, // TrackElemType::up25ToRightBank + 32, // TrackElemType::leftBankToDown25 + 32, // TrackElemType::rightBankToDown25 + 32, // TrackElemType::down25ToLeftBank + 32, // TrackElemType::down25ToRightBank + 32, // TrackElemType::leftBank + 32, // TrackElemType::rightBank + 130, // TrackElemType::leftQuarterTurn5TilesUp25 + 130, // TrackElemType::rightQuarterTurn5TilesUp25 + 130, // TrackElemType::leftQuarterTurn5TilesDown25 + 130, // TrackElemType::rightQuarterTurn5TilesDown25 + 96, // TrackElemType::sBendLeft + 96, // TrackElemType::sBendRight + 120, // TrackElemType::leftVerticalLoop + 120, // TrackElemType::rightVerticalLoop + 75, // TrackElemType::leftQuarterTurn3Tiles + 75, // TrackElemType::rightQuarterTurn3Tiles + 75, // TrackElemType::leftBankedQuarterTurn3Tiles + 75, // TrackElemType::rightBankedQuarterTurn3Tiles + 77, // TrackElemType::leftQuarterTurn3TilesUp25 + 77, // TrackElemType::rightQuarterTurn3TilesUp25 + 77, // TrackElemType::leftQuarterTurn3TilesDown25 + 77, // TrackElemType::rightQuarterTurn3TilesDown25 + 24, // TrackElemType::leftQuarterTurn1Tile + 24, // TrackElemType::rightQuarterTurn1Tile + 96, // TrackElemType::leftTwistDownToUp + 96, // TrackElemType::rightTwistDownToUp + 96, // TrackElemType::leftTwistUpToDown + 96, // TrackElemType::rightTwistUpToDown + 60, // TrackElemType::halfLoopUp + 60, // TrackElemType::halfLoopDown + 55, // TrackElemType::leftCorkscrewUp + 55, // TrackElemType::rightCorkscrewUp + 55, // TrackElemType::leftCorkscrewDown + 55, // TrackElemType::rightCorkscrewDown + 36, // TrackElemType::flatToUp60 + 36, // TrackElemType::up60ToFlat + 36, // TrackElemType::flatToDown60 + 36, // TrackElemType::down60ToFlat + 32, // TrackElemType::towerBase + 32, // TrackElemType::towerSection + 32, // TrackElemType::flatCovered + 33, // TrackElemType::up25Covered + 40, // TrackElemType::up60Covered + 32, // TrackElemType::flatToUp25Covered + 34, // TrackElemType::up25ToUp60Covered + 34, // TrackElemType::up60ToUp25Covered + 32, // TrackElemType::up25ToFlatCovered + 33, // TrackElemType::down25Covered + 40, // TrackElemType::down60Covered + 32, // TrackElemType::flatToDown25Covered + 34, // TrackElemType::down25ToDown60Covered + 34, // TrackElemType::down60ToDown25Covered + 32, // TrackElemType::down25ToFlatCovered + 124, // TrackElemType::leftQuarterTurn5TilesCovered + 124, // TrackElemType::rightQuarterTurn5TilesCovered + 96, // TrackElemType::sBendLeftCovered + 96, // TrackElemType::sBendRightCovered + 75, // TrackElemType::leftQuarterTurn3TilesCovered + 75, // TrackElemType::rightQuarterTurn3TilesCovered + 150, // TrackElemType::leftHalfBankedHelixUpSmall + 150, // TrackElemType::rightHalfBankedHelixUpSmall + 150, // TrackElemType::leftHalfBankedHelixDownSmall + 150, // TrackElemType::rightHalfBankedHelixDownSmall + 248, // TrackElemType::leftHalfBankedHelixUpLarge + 248, // TrackElemType::rightHalfBankedHelixUpLarge + 248, // TrackElemType::leftHalfBankedHelixDownLarge + 248, // TrackElemType::rightHalfBankedHelixDownLarge + 64, // TrackElemType::leftQuarterTurn1TileUp60 + 64, // TrackElemType::rightQuarterTurn1TileUp60 + 64, // TrackElemType::leftQuarterTurn1TileDown60 + 64, // TrackElemType::rightQuarterTurn1TileDown60 + 32, // TrackElemType::brakes + 32, // TrackElemType::booster + 32, // TrackElemType::invertedUp90ToFlatQuarterLoopAlias / Maze + 124, // TrackElemType::leftQuarterBankedHelixLargeUp + 124, // TrackElemType::rightQuarterBankedHelixLargeUp + 124, // TrackElemType::leftQuarterBankedHelixLargeDown + 124, // TrackElemType::rightQuarterBankedHelixLargeDown + 124, // TrackElemType::leftQuarterHelixLargeUp + 124, // TrackElemType::rightQuarterHelixLargeUp + 124, // TrackElemType::leftQuarterHelixLargeDown + 124, // TrackElemType::rightQuarterHelixLargeDown + 33, // TrackElemType::up25LeftBanked + 33, // TrackElemType::up25RightBanked + 32, // TrackElemType::waterfall + 32, // TrackElemType::rapids + 32, // TrackElemType::onRidePhoto + 33, // TrackElemType::down25LeftBanked + 33, // TrackElemType::down25RightBanked + 128, // TrackElemType::watersplash + 165, // TrackElemType::flatToUp60LongBase + 165, // TrackElemType::up60ToFlatLongBase + 32, // TrackElemType::whirlpool + 165, // TrackElemType::down60ToFlatLongBase + 165, // TrackElemType::flatToDown60LongBase + 138, // TrackElemType::cableLiftHill + 32, // TrackElemType::reverseFreefallSlope + 32, // TrackElemType::reverseFreefallVertical + 32, // TrackElemType::up90 + 32, // TrackElemType::down90 + 32, // TrackElemType::up60ToUp90 + 32, // TrackElemType::down90ToDown60 + 32, // TrackElemType::up90ToUp60 + 32, // TrackElemType::down60ToDown90 + 32, // TrackElemType::brakeForDrop + 87, // TrackElemType::leftEighthToDiag + 87, // TrackElemType::rightEighthToDiag + 87, // TrackElemType::leftEighthToOrthogonal + 87, // TrackElemType::rightEighthToOrthogonal + 87, // TrackElemType::leftEighthBankToDiag + 87, // TrackElemType::rightEighthBankToDiag + 87, // TrackElemType::leftEighthBankToOrthogonal + 87, // TrackElemType::rightEighthBankToOrthogonal + 45, // TrackElemType::diagFlat + 45, // TrackElemType::diagUp25 + 45, // TrackElemType::diagUp60 + 45, // TrackElemType::diagFlatToUp25 + 45, // TrackElemType::diagUp25ToUp60 + 45, // TrackElemType::diagUp60ToUp25 + 45, // TrackElemType::diagUp25ToFlat + 45, // TrackElemType::diagDown25 + 45, // TrackElemType::diagDown60 + 45, // TrackElemType::diagFlatToDown25 + 45, // TrackElemType::diagDown25ToDown60 + 45, // TrackElemType::diagDown60ToDown25 + 45, // TrackElemType::diagDown25ToFlat + 45, // TrackElemType::diagFlatToUp60 + 45, // TrackElemType::diagUp60ToFlat + 45, // TrackElemType::diagFlatToDown60 + 45, // TrackElemType::diagDown60ToFlat + 45, // TrackElemType::diagFlatToLeftBank + 45, // TrackElemType::diagFlatToRightBank + 45, // TrackElemType::diagLeftBankToFlat + 45, // TrackElemType::diagRightBankToFlat + 45, // TrackElemType::diagLeftBankToUp25 + 45, // TrackElemType::diagRightBankToUp25 + 45, // TrackElemType::diagUp25ToLeftBank + 45, // TrackElemType::diagUp25ToRightBank + 45, // TrackElemType::diagLeftBankToDown25 + 45, // TrackElemType::diagRightBankToDown25 + 45, // TrackElemType::diagDown25ToLeftBank + 45, // TrackElemType::diagDown25ToRightBank + 45, // TrackElemType::diagLeftBank + 45, // TrackElemType::diagRightBank + 16, // TrackElemType::logFlumeReverser + 32, // TrackElemType::spinningTunnel + 96, // TrackElemType::leftBarrelRollUpToDown + 96, // TrackElemType::rightBarrelRollUpToDown + 96, // TrackElemType::leftBarrelRollDownToUp + 96, // TrackElemType::rightBarrelRollDownToUp + 64, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 + 64, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 + 64, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank + 64, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank + 32, // TrackElemType::poweredLift + 100, // TrackElemType::leftLargeHalfLoopUp + 100, // TrackElemType::rightLargeHalfLoopUp + 100, // TrackElemType::leftLargeHalfLoopDown + 100, // TrackElemType::rightLargeHalfLoopDown + 96, // TrackElemType::leftFlyerTwistUp + 96, // TrackElemType::rightFlyerTwistUp + 96, // TrackElemType::leftFlyerTwistDown + 96, // TrackElemType::rightFlyerTwistDown + 64, // TrackElemType::flyerHalfLoopUninvertedUp + 64, // TrackElemType::flyerHalfLoopInvertedDown + 64, // TrackElemType::leftFlyerCorkscrewUp + 64, // TrackElemType::rightFlyerCorkscrewUp + 64, // TrackElemType::leftFlyerCorkscrewDown + 64, // TrackElemType::rightFlyerCorkscrewDown + 16, // TrackElemType::heartLineTransferUp + 16, // TrackElemType::heartLineTransferDown + 64, // TrackElemType::leftHeartLineRoll + 64, // TrackElemType::rightHeartLineRoll + 32, // TrackElemType::minigolfHoleA + 32, // TrackElemType::minigolfHoleB + 32, // TrackElemType::minigolfHoleC + 32, // TrackElemType::minigolfHoleD + 32, // TrackElemType::minigolfHoleE + 80, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop + 80, // TrackElemType::up90ToInvertedFlatQuarterLoop + 80, // TrackElemType::invertedFlatToDown90QuarterLoop + 64, // TrackElemType::leftCurvedLiftHill + 64, // TrackElemType::rightCurvedLiftHill + 32, // TrackElemType::leftReverser + 32, // TrackElemType::rightReverser + 32, // TrackElemType::airThrustTopCap + 32, // TrackElemType::airThrustVerticalDown + 32, // TrackElemType::airThrustVerticalDownToLevel + 32, // TrackElemType::blockBrakes + 32, // TrackElemType::leftBankedQuarterTurn3TileUp25 + 32, // TrackElemType::rightBankedQuarterTurn3TileUp25 + 32, // TrackElemType::leftBankedQuarterTurn3TileDown25 + 32, // TrackElemType::rightBankedQuarterTurn3TileDown25 + 32, // TrackElemType::leftBankedQuarterTurn5TileUp25 + 32, // TrackElemType::rightBankedQuarterTurn5TileUp25 + 32, // TrackElemType::leftBankedQuarterTurn5TileDown25 + 32, // TrackElemType::rightBankedQuarterTurn5TileDown25 + 32, // TrackElemType::up25ToLeftBankedUp25 + 32, // TrackElemType::up25ToRightBankedUp25 + 32, // TrackElemType::leftBankedUp25ToUp25 + 32, // TrackElemType::rightBankedUp25ToUp25 + 32, // TrackElemType::down25ToLeftBankedDown25 + 32, // TrackElemType::down25ToRightBankedDown25 + 32, // TrackElemType::leftBankedDown25ToDown25 + 32, // TrackElemType::rightBankedDown25ToDown25 + 32, // TrackElemType::leftBankedFlatToLeftBankedUp25 + 32, // TrackElemType::rightBankedFlatToRightBankedUp25 + 32, // TrackElemType::leftBankedUp25ToLeftBankedFlat + 32, // TrackElemType::rightBankedUp25ToRightBankedFlat + 32, // TrackElemType::leftBankedFlatToLeftBankedDown25 + 32, // TrackElemType::rightBankedFlatToRightBankedDown25 + 32, // TrackElemType::leftBankedDown25ToLeftBankedFlat + 32, // TrackElemType::rightBankedDown25ToRightBankedFlat + 32, // TrackElemType::flatToLeftBankedUp25 + 32, // TrackElemType::flatToRightBankedUp25 + 32, // TrackElemType::leftBankedUp25ToFlat + 32, // TrackElemType::rightBankedUp25ToFlat + 32, // TrackElemType::flatToLeftBankedDown25 + 32, // TrackElemType::flatToRightBankedDown25 + 32, // TrackElemType::leftBankedDown25ToFlat + 32, // TrackElemType::rightBankedDown25ToFlat + 32, // TrackElemType::leftQuarterTurn1TileUp90 + 32, // TrackElemType::rightQuarterTurn1TileUp90 + 32, // TrackElemType::leftQuarterTurn1TileDown90 + 32, // TrackElemType::rightQuarterTurn1TileDown90 + 80, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop + 80, // TrackElemType::multiDimFlatToDown90QuarterLoop + 80, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop + 32, // TrackElemType::rotationControlToggle + 0, // TrackElemType::flatTrack1x4A + 0, // TrackElemType::flatTrack2x2 + 0, // TrackElemType::flatTrack4x4 + 0, // TrackElemType::flatTrack2x4 + 0, // TrackElemType::flatTrack1x5 + 0, // TrackElemType::flatTrack1x1A + 0, // TrackElemType::flatTrack1x4B + 0, // TrackElemType::flatTrack1x1B + 0, // TrackElemType::flatTrack1x4C + 0, // TrackElemType::flatTrack3x3 + 96, // TrackElemType::leftCorkscrewUp + 96, // TrackElemType::rightCorkscrewUp + 96, // TrackElemType::leftCorkscrewDown + 96, // TrackElemType::rightCorkscrewDown + 80, // TrackElemType::leftMediumHalfLoopUp + 80, // TrackElemType::rightMediumHalfLoopUp + 80, // TrackElemType::leftMediumHalfLoopDown + 80, // TrackElemType::rightMediumHalfLoopDown + 96, // TrackElemType::leftZeroGRollUp + 96, // TrackElemType::rightZeroGRollUp + 96, // TrackElemType::leftZeroGRollDown + 96, // TrackElemType::rightZeroGRollDown + 165, // TrackElemType::leftLargeZeroGRollUp + 165, // TrackElemType::rightLargeZeroGRollUp + 165, // TrackElemType::leftLargeZeroGRollDown + 165, // TrackElemType::rightLargeZeroGRollDown + 100, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + 100, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + 100, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + 100, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + 100, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + 100, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + 100, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + 100, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + 64, // TrackElemType::flyerHalfLoopInvertedUp + 64, // TrackElemType::flyerHalfLoopUninvertedDown + 92, // TrackElemType::leftEighthToDiagUp25 + 92, // TrackElemType::rightEighthToDiagUp25 + 92, // TrackElemType::leftEighthToDiagDown25 + 92, // TrackElemType::rightEighthToDiagDown25 + 92, // TrackElemType::leftEighthToOrthogonalUp25 + 92, // TrackElemType::rightEighthToOrthogonalUp25 + 92, // TrackElemType::leftEighthToOrthogonalDown25 + 92, // TrackElemType::rightEighthToOrthogonalDown25 + 45, // TrackElemType::diagUp25ToLeftBankedUp25 + 45, // TrackElemType::diagUp25ToRightBankedUp25 + 45, // TrackElemType::diagLeftBankedUp25ToUp25 + 45, // TrackElemType::diagRightBankedUp25ToUp25 + 45, // TrackElemType::diagDown25ToLeftBankedDown25 + 45, // TrackElemType::diagDown25ToRightBankedDown25 + 45, // TrackElemType::diagLeftBankedDown25ToDown25 + 45, // TrackElemType::diagRightBankedDown25ToDown25 + 45, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + 45, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + 45, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + 45, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + 45, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + 45, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + 45, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + 45, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + 45, // TrackElemType::diagFlatToLeftBankedUp25 + 45, // TrackElemType::diagFlatToRightBankedUp25 + 45, // TrackElemType::diagLeftBankedUp25ToFlat + 45, // TrackElemType::diagRightBankedUp25ToFlat + 45, // TrackElemType::diagFlatToLeftBankedDown25 + 45, // TrackElemType::diagFlatToRightBankedDown25 + 45, // TrackElemType::diagLeftBankedDown25ToFlat + 45, // TrackElemType::diagRightBankedDown25ToFlat + 45, // TrackElemType::diagUp25LeftBanked + 45, // TrackElemType::diagUp25RightBanked + 45, // TrackElemType::diagDown25LeftBanked + 45, // TrackElemType::diagDown25RightBanked + 92, // TrackElemType::leftEighthBankToDiagUp25 + 92, // TrackElemType::rightEighthBankToDiagUp25 + 92, // TrackElemType::leftEighthBankToDiagDown25 + 92, // TrackElemType::rightEighthBankToDiagDown25 + 92, // TrackElemType::leftEighthBankToOrthogonalUp25 + 92, // TrackElemType::rightEighthBankToOrthogonalUp25 + 92, // TrackElemType::leftEighthBankToOrthogonalDown25 + 92, // TrackElemType::rightEighthBankToOrthogonalDown25 + 45, // TrackElemType::diagBrakes + 45, // TrackElemType::diagBlockBrakes + 33, // TrackElemType::down25Brakes + 45, // TrackElemType::diagBooster + 165, // TrackElemType::diagFlatToUp60LongBase, + 165, // TrackElemType::diagUp60ToFlatLongBase, + 165, // TrackElemType::diagFlatToDown60LongBase, + 165, // TrackElemType::diagDown60ToFlatLongBase, + 165, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + 165, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + 165, // TrackElemType::leftEighthDiveLoopDownToDiag + 165, // TrackElemType::rightEighthDiveLoopDownToDiag + 45, // TrackElemType::diagDown25Brakes + }; + + static_assert(std::size(kTrackPieceLengths) == EnumValue(TrackElemType::count)); // rct2: 0x00998C95 static constexpr TrackCurveChain kTrackCurveChain[] = { { TrackCurve::None, TrackCurve::None }, - { TrackElemType::EndStation, TrackElemType::EndStation }, - { TrackElemType::EndStation, TrackElemType::EndStation }, - { TrackElemType::EndStation, TrackElemType::EndStation }, + { TrackElemType::endStation, TrackElemType::endStation }, + { TrackElemType::endStation, TrackElemType::endStation }, + { TrackElemType::endStation, TrackElemType::endStation }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, @@ -791,22 +791,22 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::RightSmall, TrackCurve::RightSmall }, { TrackCurve::LeftVerySmall, TrackCurve::LeftVerySmall }, { TrackCurve::RightVerySmall, TrackCurve::RightVerySmall }, - { TrackElemType::LeftTwistUpToDown, TrackCurve::None }, - { TrackElemType::RightTwistUpToDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::LeftTwistDownToUp }, - { TrackCurve::None, TrackElemType::RightTwistDownToUp }, - { TrackElemType::HalfLoopDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::HalfLoopUp }, - { TrackElemType::RightCorkscrewDown, TrackCurve::None }, - { TrackElemType::LeftCorkscrewDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::RightCorkscrewUp }, - { TrackCurve::None, TrackElemType::LeftCorkscrewUp }, + { TrackElemType::leftTwistUpToDown, TrackCurve::None }, + { TrackElemType::rightTwistUpToDown, TrackCurve::None }, + { TrackCurve::None, TrackElemType::leftTwistDownToUp }, + { TrackCurve::None, TrackElemType::rightTwistDownToUp }, + { TrackElemType::halfLoopDown, TrackCurve::None }, + { TrackCurve::None, TrackElemType::halfLoopUp }, + { TrackElemType::rightCorkscrewDown, TrackCurve::None }, + { TrackElemType::leftCorkscrewDown, TrackCurve::None }, + { TrackCurve::None, TrackElemType::rightCorkscrewUp }, + { TrackCurve::None, TrackElemType::leftCorkscrewUp }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::TowerSection, TrackCurve::None }, - { TrackElemType::TowerSection, TrackCurve::None }, + { TrackElemType::towerSection, TrackCurve::None }, + { TrackElemType::towerSection, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, @@ -826,33 +826,33 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackCurve::None }, { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackElemType::LeftHalfBankedHelixUpSmall, TrackElemType::LeftHalfBankedHelixUpSmall }, - { TrackElemType::RightHalfBankedHelixUpSmall, TrackElemType::RightHalfBankedHelixUpSmall }, - { TrackElemType::LeftHalfBankedHelixDownSmall, TrackElemType::LeftHalfBankedHelixDownSmall }, - { TrackElemType::RightHalfBankedHelixDownSmall, TrackElemType::RightHalfBankedHelixDownSmall }, - { TrackElemType::LeftHalfBankedHelixUpLarge, TrackElemType::LeftHalfBankedHelixUpLarge }, - { TrackElemType::RightHalfBankedHelixUpLarge, TrackElemType::RightHalfBankedHelixUpLarge }, - { TrackElemType::LeftHalfBankedHelixDownLarge, TrackElemType::LeftHalfBankedHelixDownLarge }, - { TrackElemType::RightHalfBankedHelixDownLarge, TrackElemType::RightHalfBankedHelixDownLarge }, + { TrackElemType::leftHalfBankedHelixUpSmall, TrackElemType::leftHalfBankedHelixUpSmall }, + { TrackElemType::rightHalfBankedHelixUpSmall, TrackElemType::rightHalfBankedHelixUpSmall }, + { TrackElemType::leftHalfBankedHelixDownSmall, TrackElemType::leftHalfBankedHelixDownSmall }, + { TrackElemType::rightHalfBankedHelixDownSmall, TrackElemType::rightHalfBankedHelixDownSmall }, + { TrackElemType::leftHalfBankedHelixUpLarge, TrackElemType::leftHalfBankedHelixUpLarge }, + { TrackElemType::rightHalfBankedHelixUpLarge, TrackElemType::rightHalfBankedHelixUpLarge }, + { TrackElemType::leftHalfBankedHelixDownLarge, TrackElemType::leftHalfBankedHelixDownLarge }, + { TrackElemType::rightHalfBankedHelixDownLarge, TrackElemType::rightHalfBankedHelixDownLarge }, { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, { TrackCurve::RightSmall, TrackCurve::RightSmall }, { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackElemType::Brakes, TrackElemType::Brakes }, - { TrackElemType::Booster, TrackElemType::Booster }, + { TrackElemType::brakes, TrackElemType::brakes }, + { TrackElemType::booster, TrackElemType::booster }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::LeftQuarterBankedHelixLargeUp, TrackElemType::LeftQuarterBankedHelixLargeUp }, - { TrackElemType::RightQuarterBankedHelixLargeUp, TrackElemType::RightQuarterBankedHelixLargeUp }, - { TrackElemType::LeftQuarterBankedHelixLargeDown, TrackElemType::LeftQuarterBankedHelixLargeDown }, - { TrackElemType::RightQuarterBankedHelixLargeDown, TrackElemType::RightQuarterBankedHelixLargeDown }, - { TrackElemType::LeftQuarterHelixLargeUp, TrackElemType::LeftQuarterHelixLargeUp }, - { TrackElemType::RightQuarterHelixLargeUp, TrackElemType::RightQuarterHelixLargeUp }, - { TrackElemType::LeftQuarterHelixLargeDown, TrackElemType::LeftQuarterHelixLargeDown }, - { TrackElemType::RightQuarterHelixLargeDown, TrackElemType::RightQuarterHelixLargeDown }, + { TrackElemType::leftQuarterBankedHelixLargeUp, TrackElemType::leftQuarterBankedHelixLargeUp }, + { TrackElemType::rightQuarterBankedHelixLargeUp, TrackElemType::rightQuarterBankedHelixLargeUp }, + { TrackElemType::leftQuarterBankedHelixLargeDown, TrackElemType::leftQuarterBankedHelixLargeDown }, + { TrackElemType::rightQuarterBankedHelixLargeDown, TrackElemType::rightQuarterBankedHelixLargeDown }, + { TrackElemType::leftQuarterHelixLargeUp, TrackElemType::leftQuarterHelixLargeUp }, + { TrackElemType::rightQuarterHelixLargeUp, TrackElemType::rightQuarterHelixLargeUp }, + { TrackElemType::leftQuarterHelixLargeDown, TrackElemType::leftQuarterHelixLargeDown }, + { TrackElemType::rightQuarterHelixLargeDown, TrackElemType::rightQuarterHelixLargeDown }, { TrackCurve::Left, TrackCurve::Left }, { TrackCurve::Right, TrackCurve::Right }, - { TrackElemType::Waterfall, TrackElemType::Waterfall }, - { TrackElemType::Rapids, TrackElemType::Rapids }, + { TrackElemType::waterfall, TrackElemType::waterfall }, + { TrackElemType::rapids, TrackElemType::rapids }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::Left, TrackCurve::Left }, { TrackCurve::Right, TrackCurve::Right }, @@ -863,8 +863,8 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::ReverseFreefallVertical, TrackCurve::None }, - { TrackElemType::ReverseFreefallVertical, TrackElemType::ReverseFreefallVertical }, + { TrackElemType::reverseFreefallVertical, TrackCurve::None }, + { TrackElemType::reverseFreefallVertical, TrackElemType::reverseFreefallVertical }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, @@ -913,19 +913,19 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::RightLarge, TrackCurve::RightLarge }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::LeftBarrelRollDownToUp, TrackCurve::None }, - { TrackElemType::RightBarrelRollDownToUp, TrackCurve::None }, - { TrackCurve::None, TrackElemType::LeftBarrelRollUpToDown }, - { TrackCurve::None, TrackElemType::RightBarrelRollUpToDown }, + { TrackElemType::leftBarrelRollDownToUp, TrackCurve::None }, + { TrackElemType::rightBarrelRollDownToUp, TrackCurve::None }, + { TrackCurve::None, TrackElemType::leftBarrelRollUpToDown }, + { TrackCurve::None, TrackElemType::rightBarrelRollUpToDown }, { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, { TrackCurve::RightSmall, TrackCurve::RightSmall }, { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackElemType::PoweredLift, TrackElemType::PoweredLift }, - { TrackElemType::RightLargeHalfLoopDown, TrackCurve::None }, - { TrackElemType::LeftLargeHalfLoopDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::RightLargeHalfLoopUp }, - { TrackCurve::None, TrackElemType::LeftLargeHalfLoopUp }, + { TrackElemType::poweredLift, TrackElemType::poweredLift }, + { TrackElemType::rightLargeHalfLoopDown, TrackCurve::None }, + { TrackElemType::leftLargeHalfLoopDown, TrackCurve::None }, + { TrackCurve::None, TrackElemType::rightLargeHalfLoopUp }, + { TrackCurve::None, TrackElemType::leftLargeHalfLoopUp }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, @@ -946,15 +946,15 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::InvertedFlatToDown90QuarterLoop, TrackCurve::None }, - { TrackCurve::None, TrackElemType::Up90ToInvertedFlatQuarterLoop }, - { TrackElemType::LeftCurvedLiftHill, TrackElemType::LeftCurvedLiftHill }, - { TrackElemType::RightCurvedLiftHill, TrackElemType::RightCurvedLiftHill }, + { TrackElemType::invertedFlatToDown90QuarterLoop, TrackCurve::None }, + { TrackCurve::None, TrackElemType::up90ToInvertedFlatQuarterLoop }, + { TrackElemType::leftCurvedLiftHill, TrackElemType::leftCurvedLiftHill }, + { TrackElemType::rightCurvedLiftHill, TrackElemType::rightCurvedLiftHill }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::AirThrustVerticalDown, TrackElemType::ReverseFreefallVertical }, - { TrackElemType::AirThrustVerticalDown, TrackElemType::AirThrustVerticalDown }, - { TrackCurve::None, TrackElemType::AirThrustVerticalDown }, + { TrackElemType::airThrustVerticalDown, TrackElemType::reverseFreefallVertical }, + { TrackElemType::airThrustVerticalDown, TrackElemType::airThrustVerticalDown }, + { TrackCurve::None, TrackElemType::airThrustVerticalDown }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, { TrackCurve::RightSmall, TrackCurve::RightSmall }, @@ -996,1710 +996,1710 @@ namespace OpenRCT2::TrackMetaData { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, { TrackCurve::None, TrackCurve::None }, - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack1x4A - { TrackCurve::None, TrackCurve::None }, // TrackElemType::FlatTrack2x2 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::FlatTrack4x4 - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack2x4 - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack1x5 - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack1x1A - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack1x4B - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack1x1B - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack1x4C - { TrackElemType::None, TrackElemType::None }, // TrackElemType::FlatTrack3x3 - { TrackElemType::RightLargeCorkscrewDown, TrackCurve::None }, // TrackElemType::LeftLargeCorkscrewUp - { TrackElemType::LeftLargeCorkscrewDown, TrackCurve::None }, // TrackElemType::RightLargeCorkscrewUp - { TrackCurve::None, TrackElemType::RightLargeCorkscrewUp }, // TrackElemType::LeftLargeCorkscrewDown - { TrackCurve::None, TrackElemType::LeftLargeCorkscrewUp }, // TrackElemType::RightCorkscrewDown - { TrackElemType::RightMediumHalfLoopDown, TrackCurve::None }, // TrackElemType::LeftMediumHalfLoopUp - { TrackElemType::LeftMediumHalfLoopDown, TrackCurve::None }, // TrackElemType::RightMediumHalfLoopUp - { TrackCurve::None, TrackElemType::RightMediumHalfLoopUp }, // TrackElemType::LeftMediumHalfLoopDown - { TrackCurve::None, TrackElemType::LeftMediumHalfLoopUp }, // TrackElemType::RightMediumHalfLoopDown - { TrackElemType::LeftZeroGRollDown, TrackCurve::None }, // TrackElemType::LeftZeroGRollUp - { TrackElemType::RightZeroGRollDown, TrackCurve::None }, // TrackElemType::RightZeroGRollUp - { TrackCurve::None, TrackElemType::LeftZeroGRollUp }, // TrackElemType::LeftZeroGRollDown - { TrackCurve::None, TrackElemType::RightZeroGRollUp }, // TrackElemType::RightZeroGRollDown - { TrackElemType::LeftLargeZeroGRollDown, TrackCurve::None }, // TrackElemType::LeftLargeZeroGRollUp - { TrackElemType::RightLargeZeroGRollDown, TrackCurve::None }, // TrackElemType::RightLargeZeroGRollUp - { TrackCurve::None, TrackElemType::LeftLargeZeroGRollUp }, // TrackElemType::LeftLargeZeroGRollDown - { TrackCurve::None, TrackElemType::RightLargeZeroGRollUp }, // TrackElemType::RightLargeZeroGRollDown - { TrackElemType::RightFlyerLargeHalfLoopInvertedDown, TrackCurve::None }, // LeftFlyerLargeHalfLoopUninvertedUp - { TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, TrackCurve::None }, // RightFlyerLargeHalfLoopUninvertedUp - { TrackCurve::None, TrackElemType::RightFlyerLargeHalfLoopUninvertedUp }, // LeftFlyerLargeHalfLoopInvertedDown - { TrackCurve::None, TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp }, // RightFlyerLargeHalfLoopInvertedDown - { TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, TrackCurve::None }, // LeftFlyerLargeHalfLoopInvertedUp - { TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, TrackCurve::None }, // RightFlyerLargeHalfLoopInvertedUp - { TrackCurve::None, TrackElemType::RightFlyerLargeHalfLoopInvertedUp }, // LeftFlyerLargeHalfLoopUninvertedDown - { TrackCurve::None, TrackElemType::LeftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x4A + { TrackCurve::None, TrackCurve::None }, // TrackElemType::flatTrack2x2 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::flatTrack4x4 + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack2x4 + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x5 + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x1A + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x4B + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x1B + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x4C + { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack3x3 + { TrackElemType::rightLargeCorkscrewDown, TrackCurve::None }, // TrackElemType::leftLargeCorkscrewUp + { TrackElemType::leftLargeCorkscrewDown, TrackCurve::None }, // TrackElemType::rightLargeCorkscrewUp + { TrackCurve::None, TrackElemType::rightLargeCorkscrewUp }, // TrackElemType::leftLargeCorkscrewDown + { TrackCurve::None, TrackElemType::leftLargeCorkscrewUp }, // TrackElemType::rightCorkscrewDown + { TrackElemType::rightMediumHalfLoopDown, TrackCurve::None }, // TrackElemType::leftMediumHalfLoopUp + { TrackElemType::leftMediumHalfLoopDown, TrackCurve::None }, // TrackElemType::rightMediumHalfLoopUp + { TrackCurve::None, TrackElemType::rightMediumHalfLoopUp }, // TrackElemType::leftMediumHalfLoopDown + { TrackCurve::None, TrackElemType::leftMediumHalfLoopUp }, // TrackElemType::rightMediumHalfLoopDown + { TrackElemType::leftZeroGRollDown, TrackCurve::None }, // TrackElemType::leftZeroGRollUp + { TrackElemType::rightZeroGRollDown, TrackCurve::None }, // TrackElemType::rightZeroGRollUp + { TrackCurve::None, TrackElemType::leftZeroGRollUp }, // TrackElemType::leftZeroGRollDown + { TrackCurve::None, TrackElemType::rightZeroGRollUp }, // TrackElemType::rightZeroGRollDown + { TrackElemType::leftLargeZeroGRollDown, TrackCurve::None }, // TrackElemType::leftLargeZeroGRollUp + { TrackElemType::rightLargeZeroGRollDown, TrackCurve::None }, // TrackElemType::rightLargeZeroGRollUp + { TrackCurve::None, TrackElemType::leftLargeZeroGRollUp }, // TrackElemType::leftLargeZeroGRollDown + { TrackCurve::None, TrackElemType::rightLargeZeroGRollUp }, // TrackElemType::rightLargeZeroGRollDown + { TrackElemType::rightFlyerLargeHalfLoopInvertedDown, TrackCurve::None }, // LeftFlyerLargeHalfLoopUninvertedUp + { TrackElemType::leftFlyerLargeHalfLoopInvertedDown, TrackCurve::None }, // RightFlyerLargeHalfLoopUninvertedUp + { TrackCurve::None, TrackElemType::rightFlyerLargeHalfLoopUninvertedUp }, // LeftFlyerLargeHalfLoopInvertedDown + { TrackCurve::None, TrackElemType::leftFlyerLargeHalfLoopUninvertedUp }, // RightFlyerLargeHalfLoopInvertedDown + { TrackElemType::rightFlyerLargeHalfLoopUninvertedDown, TrackCurve::None }, // LeftFlyerLargeHalfLoopInvertedUp + { TrackElemType::leftFlyerLargeHalfLoopUninvertedDown, TrackCurve::None }, // RightFlyerLargeHalfLoopInvertedUp + { TrackCurve::None, TrackElemType::rightFlyerLargeHalfLoopInvertedUp }, // LeftFlyerLargeHalfLoopUninvertedDown + { TrackCurve::None, TrackElemType::leftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown { TrackCurve::None, TrackCurve::None }, // FlyerHalfLoopInvertedUp { TrackCurve::None, TrackCurve::None }, // FlyerHalfLoopUninvertedUp - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToDiagUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToDiagUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToDiagDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToDiagDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToOrthogonalUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToOrthogonalUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthToOrthogonalDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthToOrthogonalDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagUp25ToRightBankedUp25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagRightBankedUp25ToUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagDown25ToRightBankedDown25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagRightBankedDown25ToDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagFlatToLeftBankedUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagFlatToRightBankedUp25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagLeftBankedUp25ToFlat - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagRightBankedUp25ToFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagFlatToLeftBankedDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagFlatToRightBankedDown25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagLeftBankedDown25ToFlat - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagRightBankedDown25ToFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagUp25LeftBanked - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagUp25RightBanked - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::DiagDown25LeftBanked - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::DiagDown25RightBanked - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToDiagUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToDiagUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToDiagDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToDiagDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { TrackElemType::DiagBrakes, TrackElemType::DiagBrakes }, // TrackElemType::DiagBrakes - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagBlockBrakes - { TrackElemType::Down25Brakes, TrackElemType::Down25Brakes }, // TrackElemType::Down25Brakes - { TrackElemType::DiagBooster, TrackElemType::DiagBooster }, // TrackElemType::DiagBooster - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagFlatToUp60LongBase, - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagUp60ToFlatLongBase, - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagFlatToDown60LongBase, - { TrackCurve::None, TrackCurve::None }, // TrackElemType::DiagDown60ToFlatLongBase, - { TrackElemType::RightEighthDiveLoopDownToDiag , TrackCurve::None }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - { TrackElemType::LeftEighthDiveLoopDownToDiag, TrackCurve::None }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - { TrackCurve::None, TrackElemType::RightEighthDiveLoopUpToOrthogonal }, // TrackElemType::LeftEighthDiveLoopDownToDiag - { TrackCurve::None, TrackElemType::LeftEighthDiveLoopUpToOrthogonal }, // TrackElemType::RightEighthDiveLoopDownToDiag - { TrackElemType::DiagDown25Brakes, TrackElemType::DiagDown25Brakes }, // TrackElemType::DiagDown25Brakes - }; - static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::Count)); + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToDiagUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToDiagUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToDiagDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToDiagDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToOrthogonalUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToOrthogonalUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToOrthogonalDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToOrthogonalDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagUp25ToLeftBankedUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagUp25ToRightBankedUp25 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedUp25ToUp25 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedUp25ToUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagDown25ToLeftBankedDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagDown25ToRightBankedDown25 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedDown25ToDown25 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedDown25ToDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagFlatToLeftBankedUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagFlatToRightBankedUp25 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedUp25ToFlat + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedUp25ToFlat + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagFlatToLeftBankedDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagFlatToRightBankedDown25 + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedDown25ToFlat + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedDown25ToFlat + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagUp25LeftBanked + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagUp25RightBanked + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagDown25LeftBanked + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagDown25RightBanked + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToDiagUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToDiagUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToDiagDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToDiagDown25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToOrthogonalUp25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToOrthogonalUp25 + { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToOrthogonalDown25 + { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToOrthogonalDown25 + { TrackElemType::diagBrakes, TrackElemType::diagBrakes }, // TrackElemType::diagBrakes + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagBlockBrakes + { TrackElemType::down25Brakes, TrackElemType::down25Brakes }, // TrackElemType::down25Brakes + { TrackElemType::diagBooster, TrackElemType::diagBooster }, // TrackElemType::diagBooster + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagFlatToUp60LongBase, + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagUp60ToFlatLongBase, + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagFlatToDown60LongBase, + { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagDown60ToFlatLongBase, + { TrackElemType::rightEighthDiveLoopDownToDiag , TrackCurve::None }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + { TrackElemType::leftEighthDiveLoopDownToDiag, TrackCurve::None }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + { TrackCurve::None, TrackElemType::rightEighthDiveLoopUpToOrthogonal }, // TrackElemType::leftEighthDiveLoopDownToDiag + { TrackCurve::None, TrackElemType::leftEighthDiveLoopUpToOrthogonal }, // TrackElemType::rightEighthDiveLoopDownToDiag + { TrackElemType::diagDown25Brakes, TrackElemType::diagDown25Brakes }, // TrackElemType::diagDown25Brakes + }; + static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::count)); const TrackDescriptor gTrackDescriptors[186] = { - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown60 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown60ToDown25 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown60ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown25ToDown60 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBank }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagDown25ToRightBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankToFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagFlatToDown60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagFlatToDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagFlatToLeftBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagFlatToRightBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagFlatToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagFlatToUp60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankToFlat }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBank }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankToUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonal }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagUp25ToRightBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp25ToUp60 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp60ToFlat }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp60ToUp25 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down90ToDown60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down60ToDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down60ToDown25 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down60ToFlat }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown60 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25LeftBanked }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Left, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down25ToDown60 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25ToLeftBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25ToRightBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Down25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Down25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Right, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25RightBanked }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedDown25ToRightBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::Left, TrackPitch::None, TrackRoll::Left, TrackElemType::BankedLeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBank }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankToFlat }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::Left, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::FlatToDown60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::FlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::FlatToDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::FlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::FlatToLeftBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Flat }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::FlatToRightBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::FlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::FlatToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::FlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::FlatToUp60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::Right, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankToFlat }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBank }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::Right, TrackPitch::None, TrackRoll::Right, TrackElemType::BankedRightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25LeftBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Left, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Up25ToLeftBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Up25ToRightBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25ToLeftBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25ToRightBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up25ToUp60 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Right, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedUp25ToRightBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up60ToFlat }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up60ToUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up60ToUp90 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up90ToUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp90 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalDown25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25ToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToUp25 }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToUp25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25ToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToDown25 }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedUp25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedDown25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25LeftBanked }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25RightBanked }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25LeftBanked }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalDown25 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown60 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown60ToDown25 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown60ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown25ToDown60 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagDown25ToLeftBank }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagDown25ToRightBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankToFlat }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagFlatToDown60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagFlatToDown25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagFlatToLeftBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagFlatToRightBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagFlatToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagFlatToUp60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankToFlat }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBank }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankToUp25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonal }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagUp25ToLeftBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagUp25ToRightBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp25ToUp60 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp60ToFlat }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp60ToUp25 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::down90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::down90ToDown60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::down60ToDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::down60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::down60ToDown25 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::down60ToFlat }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown60 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25LeftBanked }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Left, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::down25ToDown60 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25ToLeftBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::down25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25ToRightBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::down25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::down25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::down25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Right, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25RightBanked }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedDown25ToRightBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::Left, TrackPitch::None, TrackRoll::Left, TrackElemType::bankedLeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBank }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankToFlat }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::Left, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::flatToDown60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::flatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::flatToDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::flatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::flatToLeftBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::flat }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::flatToRightBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::flatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::flatToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::flatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::flatToUp60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::Right, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankToFlat }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBank }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::Right, TrackPitch::None, TrackRoll::Right, TrackElemType::bankedRightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25LeftBanked }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Left, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::up25ToLeftBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::up25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::up25ToRightBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25ToLeftBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::up25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25ToRightBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::up25ToUp60 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Right, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedUp25ToRightBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::up60ToFlat }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::up60ToUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::up60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::up60ToUp90 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::up90ToUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::up90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp90 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToDiagUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToDiagUp25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToDiagDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToDiagDown25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalUp25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalDown25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25ToLeftBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25ToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToUp25 }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankedUp25ToUp25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25ToLeftBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25ToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToDown25 }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankedDown25ToDown25 }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedUp25ToFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedDown25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedDown25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25LeftBanked }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25RightBanked }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25LeftBanked }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagUp25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagDown25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalUp25 }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalUp25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalDown25 }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalDown25 }, }; /** rct2: 0x00993D1C */ static constexpr OpenRCT2::TrackElemType kAlternativeTrackTypes[] = { - TrackElemType::FlatCovered, // TrackElemType::Flat - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::Up25Covered, // TrackElemType::Up25 - TrackElemType::Up60Covered, // TrackElemType::Up60 - TrackElemType::FlatToUp25Covered, // TrackElemType::FlatToUp25 - TrackElemType::Up25ToUp60Covered, // TrackElemType::Up25ToUp60 - TrackElemType::Up60ToUp25Covered, // TrackElemType::Up60ToUp25 - TrackElemType::Up25ToFlatCovered, // TrackElemType::Up25ToFlat - TrackElemType::Down25Covered, // TrackElemType::Down25 - TrackElemType::Down60Covered, // TrackElemType::Down60 - TrackElemType::FlatToDown25Covered, // TrackElemType::FlatToDown25 - TrackElemType::Down25ToDown60Covered, // TrackElemType::Down25ToDown60 - TrackElemType::Down60ToDown25Covered, // TrackElemType::Down60ToDown25 - TrackElemType::Down25ToFlatCovered, // TrackElemType::Down25ToFlat - TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5Tiles - TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5Tiles - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::SBendLeftCovered, // TrackElemType::SBendLeft - TrackElemType::SBendRightCovered, // TrackElemType::SBendRight - TrackElemType::None, - TrackElemType::None, - TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3Tiles - TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3Tiles - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, // TrackElemType::FlatTrack1x4A - TrackElemType::None, // TrackElemType::FlatTrack2x2 - TrackElemType::None, // TrackElemType::FlatTrack4x4 - TrackElemType::None, // TrackElemType::FlatTrack2x4 - TrackElemType::None, // TrackElemType::FlatTrack1x5 - TrackElemType::None, // TrackElemType::FlatTrack1x1A - TrackElemType::None, // TrackElemType::FlatTrack1x4B - TrackElemType::None, // TrackElemType::FlatTrack1x1B - TrackElemType::None, // TrackElemType::FlatTrack1x4C - TrackElemType::None, // TrackElemType::FlatTrack3x3 - TrackElemType::None, // TrackElemType::LeftLargeCorkscrewUp - TrackElemType::None, // TrackElemType::RightLargeCorkscrewUp - TrackElemType::None, // TrackElemType::LeftLargeCorkscrewDown - TrackElemType::None, // TrackElemType::RightCorkscrewDown - TrackElemType::None, // TrackElemType::LeftMediumHalfLoopUp - TrackElemType::None, // TrackElemType::RightMediumHalfLoopUp - TrackElemType::None, // TrackElemType::LeftMediumHalfLoopDown - TrackElemType::None, // TrackElemType::RightMediumHalfLoopDown - TrackElemType::None, // TrackElemType::LeftZeroGRollUp - TrackElemType::None, // TrackElemType::RightZeroGRollUp - TrackElemType::None, // TrackElemType::LeftZeroGRollDown - TrackElemType::None, // TrackElemType::RightZeroGRollDown - TrackElemType::None, // TrackElemType::LeftLargeZeroGRollUp - TrackElemType::None, // TrackElemType::RightLargeZeroGRollUp - TrackElemType::None, // TrackElemType::LeftLargeZeroGRollDown - TrackElemType::None, // TrackElemType::RightLargeZeroGRollDown - TrackElemType::None, // LeftFlyerLargeHalfLoopUninvertedUp - TrackElemType::None, // RightFlyerLargeHalfLoopUninvertedUp - TrackElemType::None, // LeftFlyerLargeHalfLoopInvertedDown - TrackElemType::None, // RightFlyerLargeHalfLoopInvertedDown - TrackElemType::None, // FlyerHalfLoopInvertedUp - TrackElemType::None, // FlyerHalfLoopUninvertedDown - TrackElemType::None, // TrackElemType::LeftEighthToDiagUp25 - TrackElemType::None, // TrackElemType::RightEighthToDiagUp25 - TrackElemType::None, // TrackElemType::LeftEighthToDiagDown25 - TrackElemType::None, // TrackElemType::RightEighthToDiagDown25 - TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackElemType::None, // TrackElemType::RightEighthToOrthogonalUp25 - TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalDown25 - TrackElemType::None, // TrackElemType::RightEighthToOrthogonalDown25 - TrackElemType::None, // TrackElemType::DiagUp25ToLeftBankedUp25 - TrackElemType::None, // TrackElemType::DiagUp25ToRightBankedUp25 - TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToUp25 - TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToUp25 - TrackElemType::None, // TrackElemType::DiagDown25ToLeftBankedDown25 - TrackElemType::None, // TrackElemType::DiagDown25ToRightBankedDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToDown25 - TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - TrackElemType::None, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - TrackElemType::None, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - TrackElemType::None, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - TrackElemType::None, // TrackElemType::DiagFlatToLeftBankedUp25 - TrackElemType::None, // TrackElemType::DiagFlatToRightBankedUp25 - TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToFlat - TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToFlat - TrackElemType::None, // TrackElemType::DiagFlatToLeftBankedDown25 - TrackElemType::None, // TrackElemType::DiagFlatToRightBankedDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToFlat - TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToFlat - TrackElemType::None, // TrackElemType::DiagUp25LeftBanked - TrackElemType::None, // TrackElemType::DiagUp25RightBanked - TrackElemType::None, // TrackElemType::DiagDown25LeftBanked - TrackElemType::None, // TrackElemType::DiagDown25RightBanked - TrackElemType::None, // TrackElemType::LeftEighthBankToDiagUp25 - TrackElemType::None, // TrackElemType::RightEighthBankToDiagUp25 - TrackElemType::None, // TrackElemType::LeftEighthBankToDiagDown25 - TrackElemType::None, // TrackElemType::RightEighthBankToDiagDown25 - TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalUp25 - TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalUp25 - TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalDown25 - TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalDown25 - TrackElemType::None, // TrackElemType::DiagBrakes - TrackElemType::None, // TrackElemType::DiagBlockBrakes - TrackElemType::None, // TrackElemType::Down25Brakes - TrackElemType::None, // TrackElemType::DiagBooster - TrackElemType::None, // TrackElemType::DiagFlatToUp60LongBase, - TrackElemType::None, // TrackElemType::DiagUp60ToFlatLongBase, - TrackElemType::None, // TrackElemType::DiagFlatToDown60LongBase, - TrackElemType::None, // TrackElemType::DiagDown60ToFlatLongBase, - TrackElemType::None, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - TrackElemType::None, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - TrackElemType::None, // TrackElemType::LeftEighthDiveLoopDownToDiag - TrackElemType::None, // TrackElemType::RightEighthDiveLoopDownToDiag - TrackElemType::None, // TrackElemType::DiagDown25Brakes - }; - static_assert(std::size(kAlternativeTrackTypes) == EnumValue(TrackElemType::Count)); + TrackElemType::flatCovered, // TrackElemType::flat + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::up25Covered, // TrackElemType::up25 + TrackElemType::up60Covered, // TrackElemType::up60 + TrackElemType::flatToUp25Covered, // TrackElemType::flatToUp25 + TrackElemType::up25ToUp60Covered, // TrackElemType::up25ToUp60 + TrackElemType::up60ToUp25Covered, // TrackElemType::up60ToUp25 + TrackElemType::up25ToFlatCovered, // TrackElemType::up25ToFlat + TrackElemType::down25Covered, // TrackElemType::down25 + TrackElemType::down60Covered, // TrackElemType::down60 + TrackElemType::flatToDown25Covered, // TrackElemType::flatToDown25 + TrackElemType::down25ToDown60Covered, // TrackElemType::down25ToDown60 + TrackElemType::down60ToDown25Covered, // TrackElemType::down60ToDown25 + TrackElemType::down25ToFlatCovered, // TrackElemType::down25ToFlat + TrackElemType::leftQuarterTurn5TilesCovered, // TrackElemType::leftQuarterTurn5Tiles + TrackElemType::rightQuarterTurn5TilesCovered, // TrackElemType::rightQuarterTurn5Tiles + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::sBendLeftCovered, // TrackElemType::sBendLeft + TrackElemType::sBendRightCovered, // TrackElemType::sBendRight + TrackElemType::none, + TrackElemType::none, + TrackElemType::leftQuarterTurn3TilesCovered, // TrackElemType::leftQuarterTurn3Tiles + TrackElemType::rightQuarterTurn3TilesCovered, // TrackElemType::rightQuarterTurn3Tiles + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, + TrackElemType::none, // TrackElemType::flatTrack1x4A + TrackElemType::none, // TrackElemType::flatTrack2x2 + TrackElemType::none, // TrackElemType::flatTrack4x4 + TrackElemType::none, // TrackElemType::flatTrack2x4 + TrackElemType::none, // TrackElemType::flatTrack1x5 + TrackElemType::none, // TrackElemType::flatTrack1x1A + TrackElemType::none, // TrackElemType::flatTrack1x4B + TrackElemType::none, // TrackElemType::flatTrack1x1B + TrackElemType::none, // TrackElemType::flatTrack1x4C + TrackElemType::none, // TrackElemType::flatTrack3x3 + TrackElemType::none, // TrackElemType::leftLargeCorkscrewUp + TrackElemType::none, // TrackElemType::rightLargeCorkscrewUp + TrackElemType::none, // TrackElemType::leftLargeCorkscrewDown + TrackElemType::none, // TrackElemType::rightCorkscrewDown + TrackElemType::none, // TrackElemType::leftMediumHalfLoopUp + TrackElemType::none, // TrackElemType::rightMediumHalfLoopUp + TrackElemType::none, // TrackElemType::leftMediumHalfLoopDown + TrackElemType::none, // TrackElemType::rightMediumHalfLoopDown + TrackElemType::none, // TrackElemType::leftZeroGRollUp + TrackElemType::none, // TrackElemType::rightZeroGRollUp + TrackElemType::none, // TrackElemType::leftZeroGRollDown + TrackElemType::none, // TrackElemType::rightZeroGRollDown + TrackElemType::none, // TrackElemType::leftLargeZeroGRollUp + TrackElemType::none, // TrackElemType::rightLargeZeroGRollUp + TrackElemType::none, // TrackElemType::leftLargeZeroGRollDown + TrackElemType::none, // TrackElemType::rightLargeZeroGRollDown + TrackElemType::none, // LeftFlyerLargeHalfLoopUninvertedUp + TrackElemType::none, // RightFlyerLargeHalfLoopUninvertedUp + TrackElemType::none, // LeftFlyerLargeHalfLoopInvertedDown + TrackElemType::none, // RightFlyerLargeHalfLoopInvertedDown + TrackElemType::none, // FlyerHalfLoopInvertedUp + TrackElemType::none, // FlyerHalfLoopUninvertedDown + TrackElemType::none, // TrackElemType::leftEighthToDiagUp25 + TrackElemType::none, // TrackElemType::rightEighthToDiagUp25 + TrackElemType::none, // TrackElemType::leftEighthToDiagDown25 + TrackElemType::none, // TrackElemType::rightEighthToDiagDown25 + TrackElemType::none, // TrackElemType::leftEighthToOrthogonalUp25 + TrackElemType::none, // TrackElemType::rightEighthToOrthogonalUp25 + TrackElemType::none, // TrackElemType::leftEighthToOrthogonalDown25 + TrackElemType::none, // TrackElemType::rightEighthToOrthogonalDown25 + TrackElemType::none, // TrackElemType::diagUp25ToLeftBankedUp25 + TrackElemType::none, // TrackElemType::diagUp25ToRightBankedUp25 + TrackElemType::none, // TrackElemType::diagLeftBankedUp25ToUp25 + TrackElemType::none, // TrackElemType::diagRightBankedUp25ToUp25 + TrackElemType::none, // TrackElemType::diagDown25ToLeftBankedDown25 + TrackElemType::none, // TrackElemType::diagDown25ToRightBankedDown25 + TrackElemType::none, // TrackElemType::diagLeftBankedDown25ToDown25 + TrackElemType::none, // TrackElemType::diagRightBankedDown25ToDown25 + TrackElemType::none, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + TrackElemType::none, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + TrackElemType::none, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + TrackElemType::none, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + TrackElemType::none, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + TrackElemType::none, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + TrackElemType::none, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + TrackElemType::none, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + TrackElemType::none, // TrackElemType::diagFlatToLeftBankedUp25 + TrackElemType::none, // TrackElemType::diagFlatToRightBankedUp25 + TrackElemType::none, // TrackElemType::diagLeftBankedUp25ToFlat + TrackElemType::none, // TrackElemType::diagRightBankedUp25ToFlat + TrackElemType::none, // TrackElemType::diagFlatToLeftBankedDown25 + TrackElemType::none, // TrackElemType::diagFlatToRightBankedDown25 + TrackElemType::none, // TrackElemType::diagLeftBankedDown25ToFlat + TrackElemType::none, // TrackElemType::diagRightBankedDown25ToFlat + TrackElemType::none, // TrackElemType::diagUp25LeftBanked + TrackElemType::none, // TrackElemType::diagUp25RightBanked + TrackElemType::none, // TrackElemType::diagDown25LeftBanked + TrackElemType::none, // TrackElemType::diagDown25RightBanked + TrackElemType::none, // TrackElemType::leftEighthBankToDiagUp25 + TrackElemType::none, // TrackElemType::rightEighthBankToDiagUp25 + TrackElemType::none, // TrackElemType::leftEighthBankToDiagDown25 + TrackElemType::none, // TrackElemType::rightEighthBankToDiagDown25 + TrackElemType::none, // TrackElemType::leftEighthBankToOrthogonalUp25 + TrackElemType::none, // TrackElemType::rightEighthBankToOrthogonalUp25 + TrackElemType::none, // TrackElemType::leftEighthBankToOrthogonalDown25 + TrackElemType::none, // TrackElemType::rightEighthBankToOrthogonalDown25 + TrackElemType::none, // TrackElemType::diagBrakes + TrackElemType::none, // TrackElemType::diagBlockBrakes + TrackElemType::none, // TrackElemType::down25Brakes + TrackElemType::none, // TrackElemType::diagBooster + TrackElemType::none, // TrackElemType::diagFlatToUp60LongBase, + TrackElemType::none, // TrackElemType::diagUp60ToFlatLongBase, + TrackElemType::none, // TrackElemType::diagFlatToDown60LongBase, + TrackElemType::none, // TrackElemType::diagDown60ToFlatLongBase, + TrackElemType::none, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + TrackElemType::none, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + TrackElemType::none, // TrackElemType::leftEighthDiveLoopDownToDiag + TrackElemType::none, // TrackElemType::rightEighthDiveLoopDownToDiag + TrackElemType::none, // TrackElemType::diagDown25Brakes + }; + static_assert(std::size(kAlternativeTrackTypes) == EnumValue(TrackElemType::count)); /** rct2: 0x0099DA34 */ static constexpr money64 kTrackPricing[] = { - 65536, // TrackElemType::Flat - 98304, // TrackElemType::EndStation - 98304, // TrackElemType::BeginStation - 98304, // TrackElemType::MiddleStation - 79872, // TrackElemType::Up25 - 114688, // TrackElemType::Up60 - 73728, // TrackElemType::FlatToUp25 - 96256, // TrackElemType::Up25ToUp60 - 96256, // TrackElemType::Up60ToUp25 - 73728, // TrackElemType::Up25ToFlat - 79872, // TrackElemType::Down25 - 114688, // TrackElemType::Down60 - 73728, // TrackElemType::FlatToDown25 - 96256, // TrackElemType::Down25ToDown60 - 96256, // TrackElemType::Down60ToDown25 - 73728, // TrackElemType::Down25ToFlat - 257359, // TrackElemType::LeftQuarterTurn5Tiles - 257359, // TrackElemType::RightQuarterTurn5Tiles - 69632, // TrackElemType::FlatToLeftBank - 69632, // TrackElemType::FlatToRightBank - 69632, // TrackElemType::LeftBankToFlat - 69632, // TrackElemType::RightBankToFlat - 273443, // TrackElemType::BankedLeftQuarterTurn5Tiles - 273443, // TrackElemType::BankedRightQuarterTurn5Tiles - 78336, // TrackElemType::LeftBankToUp25 - 78336, // TrackElemType::RightBankToUp25 - 78336, // TrackElemType::Up25ToLeftBank - 78336, // TrackElemType::Up25ToRightBank - 78336, // TrackElemType::LeftBankToDown25 - 78336, // TrackElemType::RightBankToDown25 - 78336, // TrackElemType::Down25ToLeftBank - 78336, // TrackElemType::Down25ToRightBank - 69632, // TrackElemType::LeftBank - 69632, // TrackElemType::RightBank - 313656, // TrackElemType::LeftQuarterTurn5TilesUp25 - 313656, // TrackElemType::RightQuarterTurn5TilesUp25 - 313656, // TrackElemType::LeftQuarterTurn5TilesDown25 - 313656, // TrackElemType::RightQuarterTurn5TilesDown25 - 229376, // TrackElemType::SBendLeft - 229376, // TrackElemType::SBendRight - 491520, // TrackElemType::LeftVerticalLoop - 491520, // TrackElemType::RightVerticalLoop - 154415, // TrackElemType::LeftQuarterTurn3Tiles - 154415, // TrackElemType::RightQuarterTurn3Tiles - 164065, // TrackElemType::LeftBankedQuarterTurn3Tiles - 164065, // TrackElemType::RightBankedQuarterTurn3Tiles - 270226, // TrackElemType::LeftQuarterTurn3TilesUp25 - 270226, // TrackElemType::RightQuarterTurn3TilesUp25 - 270226, // TrackElemType::LeftQuarterTurn3TilesDown25 - 270226, // TrackElemType::RightQuarterTurn3TilesDown25 - 51471, // TrackElemType::LeftQuarterTurn1Tile - 51471, // TrackElemType::RightQuarterTurn1Tile - 212992, // TrackElemType::LeftTwistDownToUp - 212992, // TrackElemType::RightTwistDownToUp - 212992, // TrackElemType::LeftTwistUpToDown - 212992, // TrackElemType::RightTwistUpToDown - 294912, // TrackElemType::HalfLoopUp - 294912, // TrackElemType::HalfLoopDown - 229376, // TrackElemType::LeftCorkscrewUp - 229376, // TrackElemType::RightCorkscrewUp - 229376, // TrackElemType::LeftCorkscrewDown - 229376, // TrackElemType::RightCorkscrewDown - 98304, // TrackElemType::FlatToUp60 - 98304, // TrackElemType::Up60ToFlat - 98304, // TrackElemType::FlatToDown60 - 98304, // TrackElemType::Down60ToFlat - 524288, // TrackElemType::TowerBase - 65536, // TrackElemType::TowerSection - 69632, // TrackElemType::FlatCovered - 83968, // TrackElemType::Up25Covered - 118784, // TrackElemType::Up60Covered - 77824, // TrackElemType::FlatToUp25Covered - 100352, // TrackElemType::Up25ToUp60Covered - 100352, // TrackElemType::Up60ToUp25Covered - 77824, // TrackElemType::Up25ToFlatCovered - 83968, // TrackElemType::Down25Covered - 118784, // TrackElemType::Down60Covered - 77824, // TrackElemType::FlatToDown25Covered - 100352, // TrackElemType::Down25ToDown60Covered - 100352, // TrackElemType::Down60ToDown25Covered - 77824, // TrackElemType::Down25ToFlatCovered - 261455, // TrackElemType::LeftQuarterTurn5TilesCovered - 261455, // TrackElemType::RightQuarterTurn5TilesCovered - 233472, // TrackElemType::SBendLeftCovered - 233472, // TrackElemType::SBendRightCovered - 158511, // TrackElemType::LeftQuarterTurn3TilesCovered - 158511, // TrackElemType::RightQuarterTurn3TilesCovered - 328192, // TrackElemType::LeftHalfBankedHelixUpSmall - 328192, // TrackElemType::RightHalfBankedHelixUpSmall - 328192, // TrackElemType::LeftHalfBankedHelixDownSmall - 328192, // TrackElemType::RightHalfBankedHelixDownSmall - 547072, // TrackElemType::LeftHalfBankedHelixUpLarge - 547072, // TrackElemType::RightHalfBankedHelixUpLarge - 547072, // TrackElemType::LeftHalfBankedHelixDownLarge - 547072, // TrackElemType::RightHalfBankedHelixDownLarge - 126976, // TrackElemType::LeftQuarterTurn1TileUp60 - 126976, // TrackElemType::RightQuarterTurn1TileUp60 - 126976, // TrackElemType::LeftQuarterTurn1TileDown60 - 126976, // TrackElemType::RightQuarterTurn1TileDown60 - 90112, // TrackElemType::Brakes - 77824, // TrackElemType::Booster - 65536, // TrackElemType::Maze - 273539, // TrackElemType::LeftQuarterBankedHelixLargeUp - 273539, // TrackElemType::RightQuarterBankedHelixLargeUp - 273539, // TrackElemType::LeftQuarterBankedHelixLargeDown - 273539, // TrackElemType::RightQuarterBankedHelixLargeDown - 273539, // TrackElemType::LeftQuarterHelixLargeUp - 273539, // TrackElemType::RightQuarterHelixLargeUp - 273539, // TrackElemType::LeftQuarterHelixLargeDown - 273539, // TrackElemType::RightQuarterHelixLargeDown - 83968, // TrackElemType::Up25LeftBanked - 83968, // TrackElemType::Up25RightBanked - 143360, // TrackElemType::Waterfall - 118784, // TrackElemType::Rapids - 196608, // TrackElemType::OnRidePhoto - 83968, // TrackElemType::Down25LeftBanked - 83968, // TrackElemType::Down25RightBanked - 393216, // TrackElemType::Watersplash - 376832, // TrackElemType::FlatToUp60LongBase - 376832, // TrackElemType::Up60ToFlatLongBase - 126976, // TrackElemType::Whirlpool - 376832, // TrackElemType::Down60ToFlatLongBase - 376832, // TrackElemType::FlatToDown60LongBase - 643072, // TrackElemType::CableLiftHill - 491520, // TrackElemType::ReverseFreefallSlope - 65536, // TrackElemType::ReverseFreefallVertical - 69632, // TrackElemType::Up90 - 69632, // TrackElemType::Down90 - 114688, // TrackElemType::Up60ToUp90 - 114688, // TrackElemType::Down90ToDown60 - 114688, // TrackElemType::Up90ToUp60 - 114688, // TrackElemType::Down60ToDown90 - 147456, // TrackElemType::BrakeForDrop - 180151, // TrackElemType::LeftEighthToDiag - 180151, // TrackElemType::RightEighthToDiag - 180151, // TrackElemType::LeftEighthToOrthogonal - 180151, // TrackElemType::RightEighthToOrthogonal - 190960, // TrackElemType::LeftEighthBankToDiag - 190960, // TrackElemType::RightEighthBankToDiag - 190960, // TrackElemType::LeftEighthBankToOrthogonal - 190960, // TrackElemType::RightEighthBankToOrthogonal - 92681, // TrackElemType::DiagFlat - 111820, // TrackElemType::DiagUp25 - 147456, // TrackElemType::DiagUp60 - 102400, // TrackElemType::DiagFlatToUp25 - 129024, // TrackElemType::DiagUp25ToUp60 - 129024, // TrackElemType::DiagUp60ToUp25 - 102400, // TrackElemType::DiagUp25ToFlat - 111820, // TrackElemType::DiagDown25 - 147456, // TrackElemType::DiagDown60 - 102400, // TrackElemType::DiagFlatToDown25 - 129024, // TrackElemType::DiagDown25ToDown60 - 129024, // TrackElemType::DiagDown60ToDown25 - 102400, // TrackElemType::DiagDown25ToFlat - 107008, // TrackElemType::DiagFlatToUp60 - 107008, // TrackElemType::DiagUp60ToFlat - 107008, // TrackElemType::DiagFlatToDown60 - 107008, // TrackElemType::DiagDown60ToFlat - 96777, // TrackElemType::DiagFlatToLeftBank - 96777, // TrackElemType::DiagFlatToRightBank - 96777, // TrackElemType::DiagLeftBankToFlat - 96777, // TrackElemType::DiagRightBankToFlat - 106496, // TrackElemType::DiagLeftBankToUp25 - 106496, // TrackElemType::DiagRightBankToUp25 - 106496, // TrackElemType::DiagUp25ToLeftBank - 106496, // TrackElemType::DiagUp25ToRightBank - 106496, // TrackElemType::DiagLeftBankToDown25 - 106496, // TrackElemType::DiagRightBankToDown25 - 106496, // TrackElemType::DiagDown25ToLeftBank - 106496, // TrackElemType::DiagDown25ToRightBank - 96777, // TrackElemType::DiagLeftBank - 96777, // TrackElemType::DiagRightBank - 282624, // TrackElemType::LogFlumeReverser - 217088, // TrackElemType::SpinningTunnel - 221184, // TrackElemType::LeftBarrelRollUpToDown - 221184, // TrackElemType::RightBarrelRollUpToDown - 221184, // TrackElemType::LeftBarrelRollDownToUp - 221184, // TrackElemType::RightBarrelRollDownToUp - 270226, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - 270226, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - 270226, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - 270226, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - 96384, // TrackElemType::PoweredLift - 884736, // TrackElemType::LeftLargeHalfLoopUp - 884736, // TrackElemType::RightLargeHalfLoopUp - 884736, // TrackElemType::LeftLargeHalfLoopDown - 884736, // TrackElemType::RightLargeHalfLoopDown - 221184, // TrackElemType::LeftFlyerTwistUp - 221184, // TrackElemType::RightFlyerTwistUp - 221184, // TrackElemType::LeftFlyerTwistDown - 221184, // TrackElemType::RightFlyerTwistDown - 294912, // TrackElemType::FlyerHalfLoopUninvertedUp - 294912, // TrackElemType::FlyerHalfLoopInvertedDown - 229376, // TrackElemType::LeftFlyerCorkscrewUp - 229376, // TrackElemType::RightFlyerCorkscrewUp - 229376, // TrackElemType::LeftFlyerCorkscrewDown - 229376, // TrackElemType::RightFlyerCorkscrewDown - 294912, // TrackElemType::HeartLineTransferUp - 294912, // TrackElemType::HeartLineTransferDown - 417792, // TrackElemType::LeftHeartLineRoll - 417792, // TrackElemType::RightHeartLineRoll - 159744, // TrackElemType::MinigolfHoleA - 167936, // TrackElemType::MinigolfHoleB - 172032, // TrackElemType::MinigolfHoleC - 184320, // TrackElemType::MinigolfHoleD - 184320, // TrackElemType::MinigolfHoleE - 360448, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - 360448, // TrackElemType::Up90ToInvertedFlatQuarterLoop - 360448, // TrackElemType::InvertedFlatToDown90QuarterLoop - 270226, // TrackElemType::LeftCurvedLiftHill - 270226, // TrackElemType::RightCurvedLiftHill - 393216, // TrackElemType::LeftReverser - 393216, // TrackElemType::RightReverser - 65536, // TrackElemType::AirThrustTopCap - 65536, // TrackElemType::AirThrustVerticalDown - 491520, // TrackElemType::AirThrustVerticalDownToLevel - 94208, // TrackElemType::BlockBrakes - 287115, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - 287115, // TrackElemType::RightBankedQuarterTurn3TileUp25 - 287115, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - 287115, // TrackElemType::RightBankedQuarterTurn3TileDown25 - 333259, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - 333259, // TrackElemType::RightBankedQuarterTurn5TileUp25 - 333259, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - 333259, // TrackElemType::RightBankedQuarterTurn5TileDown25 - 83968, // TrackElemType::Up25ToLeftBankedUp25 - 83968, // TrackElemType::Up25ToRightBankedUp25 - 83968, // TrackElemType::LeftBankedUp25ToUp25 - 83968, // TrackElemType::RightBankedUp25ToUp25 - 83968, // TrackElemType::Down25ToLeftBankedDown25 - 83968, // TrackElemType::Down25ToRightBankedDown25 - 83968, // TrackElemType::LeftBankedDown25ToDown25 - 83968, // TrackElemType::RightBankedDown25ToDown25 - 77824, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - 77824, // TrackElemType::RightBankedFlatToRightBankedUp25 - 77824, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - 77824, // TrackElemType::RightBankedUp25ToRightBankedFlat - 77824, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - 77824, // TrackElemType::RightBankedFlatToRightBankedDown25 - 77824, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - 77824, // TrackElemType::RightBankedDown25ToRightBankedFlat - 77824, // TrackElemType::FlatToLeftBankedUp25 - 77824, // TrackElemType::FlatToRightBankedUp25 - 77824, // TrackElemType::LeftBankedUp25ToFlat - 77824, // TrackElemType::RightBankedUp25ToFlat - 77824, // TrackElemType::FlatToLeftBankedDown25 - 77824, // TrackElemType::FlatToRightBankedDown25 - 77824, // TrackElemType::LeftBankedDown25ToFlat - 77824, // TrackElemType::RightBankedDown25ToFlat - 151552, // TrackElemType::LeftQuarterTurn1TileUp90 - 151552, // TrackElemType::RightQuarterTurn1TileUp90 - 151552, // TrackElemType::LeftQuarterTurn1TileDown90 - 151552, // TrackElemType::RightQuarterTurn1TileDown90 - 360448, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - 360448, // TrackElemType::MultiDimFlatToDown90QuarterLoop - 360448, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - 77824, // TrackElemType::RotationControlToggle - 262144, // TrackElemType::FlatTrack1x4A - 262144, // TrackElemType::FlatTrack2x2 - 1048576,// TrackElemType::FlatTrack4x4 - 524288, // TrackElemType::FlatTrack2x4 - 327680, // TrackElemType::FlatTrack1x5 - 65536, // TrackElemType::FlatTrack1x1A - 262144, // TrackElemType::FlatTrack1x4B - 65536, // TrackElemType::FlatTrack1x1B - 262144, // TrackElemType::FlatTrack1x4C - 524288, // TrackElemType::FlatTrack3x3 - 360448, // TrackElemType::LeftLargeCorkscrewUp - 360448, // TrackElemType::RightLargeCorkscrewUp - 360448, // TrackElemType::LeftLargeCorkscrewDown - 360448, // TrackElemType::RightCorkscrewDown - 589824, // TrackElemType::LeftMediumHalfLoopUp - 589824, // TrackElemType::RightMediumHalfLoopUp - 589824, // TrackElemType::LeftMediumHalfLoopDown - 589824, // TrackElemType::RightMediumHalfLoopDown - 229376, // TrackElemType::LeftZeroGRollUp - 229376, // TrackElemType::RightZeroGRollUp - 229376, // TrackElemType::LeftZeroGRollDown - 229376, // TrackElemType::RightZeroGRollDown - 425984, // TrackElemType::LeftLargeZeroGRollUp - 425984, // TrackElemType::RightLargeZeroGRollUp - 425984, // TrackElemType::LeftLargeZeroGRollDown - 425984, // TrackElemType::RightLargeZeroGRollDown - 884736, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - 884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - 884736, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - 884736, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - 884736, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - 884736, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - 884736, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - 884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - 294912, // TrackElemType::FlyerHalfLoopInvertedUp - 294912, // TrackElemType::FlyerHalfLoopUninvertedDown - 219559, // TrackElemType::LeftEighthToDiagUp25 - 219559, // TrackElemType::RightEighthToDiagUp25 - 219559, // TrackElemType::LeftEighthToDiagDown25 - 219559, // TrackElemType::RightEighthToDiagDown25 - 219559, // TrackElemType::LeftEighthToOrthogonalUp25 - 219559, // TrackElemType::RightEighthToOrthogonalUp25 - 219559, // TrackElemType::LeftEighthToOrthogonalDown25 - 219559, // TrackElemType::RightEighthToOrthogonalDown25 - 118809, // TrackElemType::DiagUp25ToLeftBankedUp25 - 118809, // TrackElemType::DiagUp25ToRightBankedUp25 - 118809, // TrackElemType::DiagLeftBankedUp25ToUp25 - 118809, // TrackElemType::DiagRightBankedUp25ToUp25 - 118809, // TrackElemType::DiagDown25ToLeftBankedDown25 - 118809, // TrackElemType::DiagDown25ToRightBankedDown25 - 118809, // TrackElemType::DiagLeftBankedDown25ToDown25 - 118809, // TrackElemType::DiagRightBankedDown25ToDown25 - 108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - 108800, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - 108800, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - 108800, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - 108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - 108800, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - 108800, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - 108800, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - 108800, // TrackElemType::DiagFlatToLeftBankedUp25 - 108800, // TrackElemType::DiagFlatToRightBankedUp25 - 108800, // TrackElemType::DiagLeftBankedUp25ToFlat - 108800, // TrackElemType::DiagRightBankedUp25ToFlat - 108800, // TrackElemType::DiagFlatToLeftBankedDown25 - 108800, // TrackElemType::DiagFlatToRightBankedDown25 - 108800, // TrackElemType::DiagLeftBankedDown25ToFlat - 108800, // TrackElemType::DiagRightBankedDown25ToFlat - 118809, // TrackElemType::DiagUp25LeftBanked - 118809, // TrackElemType::DiagUp25RightBanked - 118809, // TrackElemType::DiagDown25LeftBanked - 118809, // TrackElemType::DiagDown25RightBanked - 233281, // TrackElemType::LeftEighthBankToDiagUp25 - 233281, // TrackElemType::RightEighthBankToDiagUp25 - 233281, // TrackElemType::LeftEighthBankToDiagDown25 - 233281, // TrackElemType::RightEighthBankToDiagDown25 - 233281, // TrackElemType::LeftEighthBankToOrthogonalUp25 - 233281, // TrackElemType::RightEighthBankToOrthogonalUp25 - 233281, // TrackElemType::LeftEighthBankToOrthogonalDown25 - 233281, // TrackElemType::RightEighthBankToOrthogonalDown25 - 123456, // TrackElemType::DiagBrakes - 123456, // TrackElemType::DiagBlockBrakes - 109824, // TrackElemType::Down25Brakes - 123456, // TrackElemType::DiagBooster - 399690 , // TrackElemType::DiagFlatToUp60LongBase, - 399690, // TrackElemType::DiagUp60ToFlatLongBase, - 399690, // TrackElemType::DiagFlatToDown60LongBase, - 399690, // TrackElemType::DiagDown60ToFlatLongBase, - 458752, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - 458752, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - 458752, // TrackElemType::LeftEighthDiveLoopDownToDiag - 458752, // TrackElemType::RightEighthDiveLoopDownToDiag - 109824, // TrackElemType::DiagDown25Brakes - }; - static_assert(std::size(kTrackPricing) == EnumValue(TrackElemType::Count)); + 65536, // TrackElemType::flat + 98304, // TrackElemType::endStation + 98304, // TrackElemType::beginStation + 98304, // TrackElemType::middleStation + 79872, // TrackElemType::up25 + 114688, // TrackElemType::up60 + 73728, // TrackElemType::flatToUp25 + 96256, // TrackElemType::up25ToUp60 + 96256, // TrackElemType::up60ToUp25 + 73728, // TrackElemType::up25ToFlat + 79872, // TrackElemType::down25 + 114688, // TrackElemType::down60 + 73728, // TrackElemType::flatToDown25 + 96256, // TrackElemType::down25ToDown60 + 96256, // TrackElemType::down60ToDown25 + 73728, // TrackElemType::down25ToFlat + 257359, // TrackElemType::leftQuarterTurn5Tiles + 257359, // TrackElemType::rightQuarterTurn5Tiles + 69632, // TrackElemType::flatToLeftBank + 69632, // TrackElemType::flatToRightBank + 69632, // TrackElemType::leftBankToFlat + 69632, // TrackElemType::rightBankToFlat + 273443, // TrackElemType::bankedLeftQuarterTurn5Tiles + 273443, // TrackElemType::bankedRightQuarterTurn5Tiles + 78336, // TrackElemType::leftBankToUp25 + 78336, // TrackElemType::rightBankToUp25 + 78336, // TrackElemType::up25ToLeftBank + 78336, // TrackElemType::up25ToRightBank + 78336, // TrackElemType::leftBankToDown25 + 78336, // TrackElemType::rightBankToDown25 + 78336, // TrackElemType::down25ToLeftBank + 78336, // TrackElemType::down25ToRightBank + 69632, // TrackElemType::leftBank + 69632, // TrackElemType::rightBank + 313656, // TrackElemType::leftQuarterTurn5TilesUp25 + 313656, // TrackElemType::rightQuarterTurn5TilesUp25 + 313656, // TrackElemType::leftQuarterTurn5TilesDown25 + 313656, // TrackElemType::rightQuarterTurn5TilesDown25 + 229376, // TrackElemType::sBendLeft + 229376, // TrackElemType::sBendRight + 491520, // TrackElemType::leftVerticalLoop + 491520, // TrackElemType::rightVerticalLoop + 154415, // TrackElemType::leftQuarterTurn3Tiles + 154415, // TrackElemType::rightQuarterTurn3Tiles + 164065, // TrackElemType::leftBankedQuarterTurn3Tiles + 164065, // TrackElemType::rightBankedQuarterTurn3Tiles + 270226, // TrackElemType::leftQuarterTurn3TilesUp25 + 270226, // TrackElemType::rightQuarterTurn3TilesUp25 + 270226, // TrackElemType::leftQuarterTurn3TilesDown25 + 270226, // TrackElemType::rightQuarterTurn3TilesDown25 + 51471, // TrackElemType::leftQuarterTurn1Tile + 51471, // TrackElemType::rightQuarterTurn1Tile + 212992, // TrackElemType::leftTwistDownToUp + 212992, // TrackElemType::rightTwistDownToUp + 212992, // TrackElemType::leftTwistUpToDown + 212992, // TrackElemType::rightTwistUpToDown + 294912, // TrackElemType::halfLoopUp + 294912, // TrackElemType::halfLoopDown + 229376, // TrackElemType::leftCorkscrewUp + 229376, // TrackElemType::rightCorkscrewUp + 229376, // TrackElemType::leftCorkscrewDown + 229376, // TrackElemType::rightCorkscrewDown + 98304, // TrackElemType::flatToUp60 + 98304, // TrackElemType::up60ToFlat + 98304, // TrackElemType::flatToDown60 + 98304, // TrackElemType::down60ToFlat + 524288, // TrackElemType::towerBase + 65536, // TrackElemType::towerSection + 69632, // TrackElemType::flatCovered + 83968, // TrackElemType::up25Covered + 118784, // TrackElemType::up60Covered + 77824, // TrackElemType::flatToUp25Covered + 100352, // TrackElemType::up25ToUp60Covered + 100352, // TrackElemType::up60ToUp25Covered + 77824, // TrackElemType::up25ToFlatCovered + 83968, // TrackElemType::down25Covered + 118784, // TrackElemType::down60Covered + 77824, // TrackElemType::flatToDown25Covered + 100352, // TrackElemType::down25ToDown60Covered + 100352, // TrackElemType::down60ToDown25Covered + 77824, // TrackElemType::down25ToFlatCovered + 261455, // TrackElemType::leftQuarterTurn5TilesCovered + 261455, // TrackElemType::rightQuarterTurn5TilesCovered + 233472, // TrackElemType::sBendLeftCovered + 233472, // TrackElemType::sBendRightCovered + 158511, // TrackElemType::leftQuarterTurn3TilesCovered + 158511, // TrackElemType::rightQuarterTurn3TilesCovered + 328192, // TrackElemType::leftHalfBankedHelixUpSmall + 328192, // TrackElemType::rightHalfBankedHelixUpSmall + 328192, // TrackElemType::leftHalfBankedHelixDownSmall + 328192, // TrackElemType::rightHalfBankedHelixDownSmall + 547072, // TrackElemType::leftHalfBankedHelixUpLarge + 547072, // TrackElemType::rightHalfBankedHelixUpLarge + 547072, // TrackElemType::leftHalfBankedHelixDownLarge + 547072, // TrackElemType::rightHalfBankedHelixDownLarge + 126976, // TrackElemType::leftQuarterTurn1TileUp60 + 126976, // TrackElemType::rightQuarterTurn1TileUp60 + 126976, // TrackElemType::leftQuarterTurn1TileDown60 + 126976, // TrackElemType::rightQuarterTurn1TileDown60 + 90112, // TrackElemType::brakes + 77824, // TrackElemType::booster + 65536, // TrackElemType::maze + 273539, // TrackElemType::leftQuarterBankedHelixLargeUp + 273539, // TrackElemType::rightQuarterBankedHelixLargeUp + 273539, // TrackElemType::leftQuarterBankedHelixLargeDown + 273539, // TrackElemType::rightQuarterBankedHelixLargeDown + 273539, // TrackElemType::leftQuarterHelixLargeUp + 273539, // TrackElemType::rightQuarterHelixLargeUp + 273539, // TrackElemType::leftQuarterHelixLargeDown + 273539, // TrackElemType::rightQuarterHelixLargeDown + 83968, // TrackElemType::up25LeftBanked + 83968, // TrackElemType::up25RightBanked + 143360, // TrackElemType::waterfall + 118784, // TrackElemType::rapids + 196608, // TrackElemType::onRidePhoto + 83968, // TrackElemType::down25LeftBanked + 83968, // TrackElemType::down25RightBanked + 393216, // TrackElemType::watersplash + 376832, // TrackElemType::flatToUp60LongBase + 376832, // TrackElemType::up60ToFlatLongBase + 126976, // TrackElemType::whirlpool + 376832, // TrackElemType::down60ToFlatLongBase + 376832, // TrackElemType::flatToDown60LongBase + 643072, // TrackElemType::cableLiftHill + 491520, // TrackElemType::reverseFreefallSlope + 65536, // TrackElemType::reverseFreefallVertical + 69632, // TrackElemType::up90 + 69632, // TrackElemType::down90 + 114688, // TrackElemType::up60ToUp90 + 114688, // TrackElemType::down90ToDown60 + 114688, // TrackElemType::up90ToUp60 + 114688, // TrackElemType::down60ToDown90 + 147456, // TrackElemType::brakeForDrop + 180151, // TrackElemType::leftEighthToDiag + 180151, // TrackElemType::rightEighthToDiag + 180151, // TrackElemType::leftEighthToOrthogonal + 180151, // TrackElemType::rightEighthToOrthogonal + 190960, // TrackElemType::leftEighthBankToDiag + 190960, // TrackElemType::rightEighthBankToDiag + 190960, // TrackElemType::leftEighthBankToOrthogonal + 190960, // TrackElemType::rightEighthBankToOrthogonal + 92681, // TrackElemType::diagFlat + 111820, // TrackElemType::diagUp25 + 147456, // TrackElemType::diagUp60 + 102400, // TrackElemType::diagFlatToUp25 + 129024, // TrackElemType::diagUp25ToUp60 + 129024, // TrackElemType::diagUp60ToUp25 + 102400, // TrackElemType::diagUp25ToFlat + 111820, // TrackElemType::diagDown25 + 147456, // TrackElemType::diagDown60 + 102400, // TrackElemType::diagFlatToDown25 + 129024, // TrackElemType::diagDown25ToDown60 + 129024, // TrackElemType::diagDown60ToDown25 + 102400, // TrackElemType::diagDown25ToFlat + 107008, // TrackElemType::diagFlatToUp60 + 107008, // TrackElemType::diagUp60ToFlat + 107008, // TrackElemType::diagFlatToDown60 + 107008, // TrackElemType::diagDown60ToFlat + 96777, // TrackElemType::diagFlatToLeftBank + 96777, // TrackElemType::diagFlatToRightBank + 96777, // TrackElemType::diagLeftBankToFlat + 96777, // TrackElemType::diagRightBankToFlat + 106496, // TrackElemType::diagLeftBankToUp25 + 106496, // TrackElemType::diagRightBankToUp25 + 106496, // TrackElemType::diagUp25ToLeftBank + 106496, // TrackElemType::diagUp25ToRightBank + 106496, // TrackElemType::diagLeftBankToDown25 + 106496, // TrackElemType::diagRightBankToDown25 + 106496, // TrackElemType::diagDown25ToLeftBank + 106496, // TrackElemType::diagDown25ToRightBank + 96777, // TrackElemType::diagLeftBank + 96777, // TrackElemType::diagRightBank + 282624, // TrackElemType::logFlumeReverser + 217088, // TrackElemType::spinningTunnel + 221184, // TrackElemType::leftBarrelRollUpToDown + 221184, // TrackElemType::rightBarrelRollUpToDown + 221184, // TrackElemType::leftBarrelRollDownToUp + 221184, // TrackElemType::rightBarrelRollDownToUp + 270226, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 + 270226, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 + 270226, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank + 270226, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank + 96384, // TrackElemType::poweredLift + 884736, // TrackElemType::leftLargeHalfLoopUp + 884736, // TrackElemType::rightLargeHalfLoopUp + 884736, // TrackElemType::leftLargeHalfLoopDown + 884736, // TrackElemType::rightLargeHalfLoopDown + 221184, // TrackElemType::leftFlyerTwistUp + 221184, // TrackElemType::rightFlyerTwistUp + 221184, // TrackElemType::leftFlyerTwistDown + 221184, // TrackElemType::rightFlyerTwistDown + 294912, // TrackElemType::flyerHalfLoopUninvertedUp + 294912, // TrackElemType::flyerHalfLoopInvertedDown + 229376, // TrackElemType::leftFlyerCorkscrewUp + 229376, // TrackElemType::rightFlyerCorkscrewUp + 229376, // TrackElemType::leftFlyerCorkscrewDown + 229376, // TrackElemType::rightFlyerCorkscrewDown + 294912, // TrackElemType::heartLineTransferUp + 294912, // TrackElemType::heartLineTransferDown + 417792, // TrackElemType::leftHeartLineRoll + 417792, // TrackElemType::rightHeartLineRoll + 159744, // TrackElemType::minigolfHoleA + 167936, // TrackElemType::minigolfHoleB + 172032, // TrackElemType::minigolfHoleC + 184320, // TrackElemType::minigolfHoleD + 184320, // TrackElemType::minigolfHoleE + 360448, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop + 360448, // TrackElemType::up90ToInvertedFlatQuarterLoop + 360448, // TrackElemType::invertedFlatToDown90QuarterLoop + 270226, // TrackElemType::leftCurvedLiftHill + 270226, // TrackElemType::rightCurvedLiftHill + 393216, // TrackElemType::leftReverser + 393216, // TrackElemType::rightReverser + 65536, // TrackElemType::airThrustTopCap + 65536, // TrackElemType::airThrustVerticalDown + 491520, // TrackElemType::airThrustVerticalDownToLevel + 94208, // TrackElemType::blockBrakes + 287115, // TrackElemType::leftBankedQuarterTurn3TileUp25 + 287115, // TrackElemType::rightBankedQuarterTurn3TileUp25 + 287115, // TrackElemType::leftBankedQuarterTurn3TileDown25 + 287115, // TrackElemType::rightBankedQuarterTurn3TileDown25 + 333259, // TrackElemType::leftBankedQuarterTurn5TileUp25 + 333259, // TrackElemType::rightBankedQuarterTurn5TileUp25 + 333259, // TrackElemType::leftBankedQuarterTurn5TileDown25 + 333259, // TrackElemType::rightBankedQuarterTurn5TileDown25 + 83968, // TrackElemType::up25ToLeftBankedUp25 + 83968, // TrackElemType::up25ToRightBankedUp25 + 83968, // TrackElemType::leftBankedUp25ToUp25 + 83968, // TrackElemType::rightBankedUp25ToUp25 + 83968, // TrackElemType::down25ToLeftBankedDown25 + 83968, // TrackElemType::down25ToRightBankedDown25 + 83968, // TrackElemType::leftBankedDown25ToDown25 + 83968, // TrackElemType::rightBankedDown25ToDown25 + 77824, // TrackElemType::leftBankedFlatToLeftBankedUp25 + 77824, // TrackElemType::rightBankedFlatToRightBankedUp25 + 77824, // TrackElemType::leftBankedUp25ToLeftBankedFlat + 77824, // TrackElemType::rightBankedUp25ToRightBankedFlat + 77824, // TrackElemType::leftBankedFlatToLeftBankedDown25 + 77824, // TrackElemType::rightBankedFlatToRightBankedDown25 + 77824, // TrackElemType::leftBankedDown25ToLeftBankedFlat + 77824, // TrackElemType::rightBankedDown25ToRightBankedFlat + 77824, // TrackElemType::flatToLeftBankedUp25 + 77824, // TrackElemType::flatToRightBankedUp25 + 77824, // TrackElemType::leftBankedUp25ToFlat + 77824, // TrackElemType::rightBankedUp25ToFlat + 77824, // TrackElemType::flatToLeftBankedDown25 + 77824, // TrackElemType::flatToRightBankedDown25 + 77824, // TrackElemType::leftBankedDown25ToFlat + 77824, // TrackElemType::rightBankedDown25ToFlat + 151552, // TrackElemType::leftQuarterTurn1TileUp90 + 151552, // TrackElemType::rightQuarterTurn1TileUp90 + 151552, // TrackElemType::leftQuarterTurn1TileDown90 + 151552, // TrackElemType::rightQuarterTurn1TileDown90 + 360448, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop + 360448, // TrackElemType::multiDimFlatToDown90QuarterLoop + 360448, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop + 77824, // TrackElemType::rotationControlToggle + 262144, // TrackElemType::flatTrack1x4A + 262144, // TrackElemType::flatTrack2x2 + 1048576,// TrackElemType::flatTrack4x4 + 524288, // TrackElemType::flatTrack2x4 + 327680, // TrackElemType::flatTrack1x5 + 65536, // TrackElemType::flatTrack1x1A + 262144, // TrackElemType::flatTrack1x4B + 65536, // TrackElemType::flatTrack1x1B + 262144, // TrackElemType::flatTrack1x4C + 524288, // TrackElemType::flatTrack3x3 + 360448, // TrackElemType::leftLargeCorkscrewUp + 360448, // TrackElemType::rightLargeCorkscrewUp + 360448, // TrackElemType::leftLargeCorkscrewDown + 360448, // TrackElemType::rightCorkscrewDown + 589824, // TrackElemType::leftMediumHalfLoopUp + 589824, // TrackElemType::rightMediumHalfLoopUp + 589824, // TrackElemType::leftMediumHalfLoopDown + 589824, // TrackElemType::rightMediumHalfLoopDown + 229376, // TrackElemType::leftZeroGRollUp + 229376, // TrackElemType::rightZeroGRollUp + 229376, // TrackElemType::leftZeroGRollDown + 229376, // TrackElemType::rightZeroGRollDown + 425984, // TrackElemType::leftLargeZeroGRollUp + 425984, // TrackElemType::rightLargeZeroGRollUp + 425984, // TrackElemType::leftLargeZeroGRollDown + 425984, // TrackElemType::rightLargeZeroGRollDown + 884736, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + 884736, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + 884736, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + 884736, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + 884736, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + 884736, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + 884736, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + 884736, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + 294912, // TrackElemType::flyerHalfLoopInvertedUp + 294912, // TrackElemType::flyerHalfLoopUninvertedDown + 219559, // TrackElemType::leftEighthToDiagUp25 + 219559, // TrackElemType::rightEighthToDiagUp25 + 219559, // TrackElemType::leftEighthToDiagDown25 + 219559, // TrackElemType::rightEighthToDiagDown25 + 219559, // TrackElemType::leftEighthToOrthogonalUp25 + 219559, // TrackElemType::rightEighthToOrthogonalUp25 + 219559, // TrackElemType::leftEighthToOrthogonalDown25 + 219559, // TrackElemType::rightEighthToOrthogonalDown25 + 118809, // TrackElemType::diagUp25ToLeftBankedUp25 + 118809, // TrackElemType::diagUp25ToRightBankedUp25 + 118809, // TrackElemType::diagLeftBankedUp25ToUp25 + 118809, // TrackElemType::diagRightBankedUp25ToUp25 + 118809, // TrackElemType::diagDown25ToLeftBankedDown25 + 118809, // TrackElemType::diagDown25ToRightBankedDown25 + 118809, // TrackElemType::diagLeftBankedDown25ToDown25 + 118809, // TrackElemType::diagRightBankedDown25ToDown25 + 108800, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + 108800, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + 108800, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + 108800, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + 108800, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + 108800, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + 108800, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + 108800, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + 108800, // TrackElemType::diagFlatToLeftBankedUp25 + 108800, // TrackElemType::diagFlatToRightBankedUp25 + 108800, // TrackElemType::diagLeftBankedUp25ToFlat + 108800, // TrackElemType::diagRightBankedUp25ToFlat + 108800, // TrackElemType::diagFlatToLeftBankedDown25 + 108800, // TrackElemType::diagFlatToRightBankedDown25 + 108800, // TrackElemType::diagLeftBankedDown25ToFlat + 108800, // TrackElemType::diagRightBankedDown25ToFlat + 118809, // TrackElemType::diagUp25LeftBanked + 118809, // TrackElemType::diagUp25RightBanked + 118809, // TrackElemType::diagDown25LeftBanked + 118809, // TrackElemType::diagDown25RightBanked + 233281, // TrackElemType::leftEighthBankToDiagUp25 + 233281, // TrackElemType::rightEighthBankToDiagUp25 + 233281, // TrackElemType::leftEighthBankToDiagDown25 + 233281, // TrackElemType::rightEighthBankToDiagDown25 + 233281, // TrackElemType::leftEighthBankToOrthogonalUp25 + 233281, // TrackElemType::rightEighthBankToOrthogonalUp25 + 233281, // TrackElemType::leftEighthBankToOrthogonalDown25 + 233281, // TrackElemType::rightEighthBankToOrthogonalDown25 + 123456, // TrackElemType::diagBrakes + 123456, // TrackElemType::diagBlockBrakes + 109824, // TrackElemType::down25Brakes + 123456, // TrackElemType::diagBooster + 399690 , // TrackElemType::diagFlatToUp60LongBase, + 399690, // TrackElemType::diagUp60ToFlatLongBase, + 399690, // TrackElemType::diagFlatToDown60LongBase, + 399690, // TrackElemType::diagDown60ToFlatLongBase, + 458752, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + 458752, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + 458752, // TrackElemType::leftEighthDiveLoopDownToDiag + 458752, // TrackElemType::rightEighthDiveLoopDownToDiag + 109824, // TrackElemType::diagDown25Brakes + }; + static_assert(std::size(kTrackPricing) == EnumValue(TrackElemType::count)); /** rct2: 0x0099EA1C */ static constexpr OpenRCT2::TrackElemType kTrackElementMirrorMap[] = { - TrackElemType::Flat, - TrackElemType::EndStation, - TrackElemType::BeginStation, - TrackElemType::MiddleStation, - TrackElemType::Up25, - TrackElemType::Up60, - TrackElemType::FlatToUp25, - TrackElemType::Up25ToUp60, - TrackElemType::Up60ToUp25, - TrackElemType::Up25ToFlat, - TrackElemType::Down25, - TrackElemType::Down60, - TrackElemType::FlatToDown25, - TrackElemType::Down25ToDown60, - TrackElemType::Down60ToDown25, - TrackElemType::Down25ToFlat, - TrackElemType::RightQuarterTurn5Tiles, // TrackElemType::LeftQuarterTurn5Tiles - TrackElemType::LeftQuarterTurn5Tiles, // TrackElemType::RightQuarterTurn5Tiles - TrackElemType::FlatToRightBank, // TrackElemType::FlatToLeftBank - TrackElemType::FlatToLeftBank, // TrackElemType::FlatToRightBank - TrackElemType::RightBankToFlat, // TrackElemType::LeftBankToFlat - TrackElemType::LeftBankToFlat, // TrackElemType::RightBankToFlat - TrackElemType::BankedRightQuarterTurn5Tiles, // TrackElemType::BankedLeftQuarterTurn5Tiles - TrackElemType::BankedLeftQuarterTurn5Tiles, // TrackElemType::BankedRightQuarterTurn5Tiles - TrackElemType::RightBankToUp25, // TrackElemType::LeftBankToUp25 - TrackElemType::LeftBankToUp25, // TrackElemType::RightBankToUp25 - TrackElemType::Up25ToRightBank, // TrackElemType::Up25ToLeftBank - TrackElemType::Up25ToLeftBank, // TrackElemType::Up25ToRightBank - TrackElemType::RightBankToDown25, // TrackElemType::LeftBankToDown25 - TrackElemType::LeftBankToDown25, // TrackElemType::RightBankToDown25 - TrackElemType::Down25ToRightBank, // TrackElemType::Down25ToLeftBank - TrackElemType::Down25ToLeftBank, // TrackElemType::Down25ToRightBank - TrackElemType::RightBank, // TrackElemType::LeftBank - TrackElemType::LeftBank, // TrackElemType::RightBank - TrackElemType::RightQuarterTurn5TilesUp25, // TrackElemType::LeftQuarterTurn5TilesUp25 - TrackElemType::LeftQuarterTurn5TilesUp25, // TrackElemType::RightQuarterTurn5TilesUp25 - TrackElemType::RightQuarterTurn5TilesDown25, // TrackElemType::LeftQuarterTurn5TilesDown25 - TrackElemType::LeftQuarterTurn5TilesDown25, // TrackElemType::RightQuarterTurn5TilesDown25 - TrackElemType::SBendRight, // TrackElemType::SBendLeft - TrackElemType::SBendLeft, // TrackElemType::SBendRight - TrackElemType::RightVerticalLoop, // TrackElemType::LeftVerticalLoop - TrackElemType::LeftVerticalLoop, // TrackElemType::RightVerticalLoop - TrackElemType::RightQuarterTurn3Tiles, // TrackElemType::LeftQuarterTurn3Tiles - TrackElemType::LeftQuarterTurn3Tiles, // TrackElemType::RightQuarterTurn3Tiles - TrackElemType::RightBankedQuarterTurn3Tiles, // TrackElemType::LeftBankedQuarterTurn3Tiles - TrackElemType::LeftBankedQuarterTurn3Tiles, // TrackElemType::RightBankedQuarterTurn3Tiles - TrackElemType::RightQuarterTurn3TilesUp25, // TrackElemType::LeftQuarterTurn3TilesUp25 - TrackElemType::LeftQuarterTurn3TilesUp25, // TrackElemType::RightQuarterTurn3TilesUp25 - TrackElemType::RightQuarterTurn3TilesDown25, // TrackElemType::LeftQuarterTurn3TilesDown25 - TrackElemType::LeftQuarterTurn3TilesDown25, // TrackElemType::RightQuarterTurn3TilesDown25 - TrackElemType::RightQuarterTurn1Tile, // TrackElemType::LeftQuarterTurn1Tile - TrackElemType::LeftQuarterTurn1Tile, // TrackElemType::RightQuarterTurn1Tile - TrackElemType::RightTwistDownToUp, // TrackElemType::LeftTwistDownToUp - TrackElemType::LeftTwistDownToUp, // TrackElemType::RightTwistDownToUp - TrackElemType::RightTwistUpToDown, // TrackElemType::LeftTwistUpToDown - TrackElemType::LeftTwistUpToDown, // TrackElemType::RightTwistUpToDown - TrackElemType::HalfLoopUp, - TrackElemType::HalfLoopDown, - TrackElemType::RightCorkscrewUp, // TrackElemType::LeftCorkscrewUp - TrackElemType::LeftCorkscrewUp, // TrackElemType::RightCorkscrewUp - TrackElemType::RightCorkscrewDown, // TrackElemType::LeftCorkscrewDown - TrackElemType::LeftCorkscrewDown, // TrackElemType::RightCorkscrewDown - TrackElemType::FlatToUp60, - TrackElemType::Up60ToFlat, - TrackElemType::FlatToDown60, - TrackElemType::Down60ToFlat, - TrackElemType::TowerBase, - TrackElemType::TowerSection, - TrackElemType::FlatCovered, - TrackElemType::Up25Covered, - TrackElemType::Up60Covered, - TrackElemType::FlatToUp25Covered, - TrackElemType::Up25ToUp60Covered, - TrackElemType::Up60ToUp25Covered, - TrackElemType::Up25ToFlatCovered, - TrackElemType::Down25Covered, - TrackElemType::Down60Covered, - TrackElemType::FlatToDown25Covered, - TrackElemType::Down25ToDown60Covered, - TrackElemType::Down60ToDown25Covered, - TrackElemType::Down25ToFlatCovered, - TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5TilesCovered - TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5TilesCovered - TrackElemType::SBendRightCovered, // TrackElemType::SBendLeftCovered - TrackElemType::SBendLeftCovered, // TrackElemType::SBendRightCovered - TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3TilesCovered - TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3TilesCovered - TrackElemType::RightHalfBankedHelixUpSmall, // TrackElemType::LeftHalfBankedHelixUpSmall - TrackElemType::LeftHalfBankedHelixUpSmall, // TrackElemType::RightHalfBankedHelixUpSmall - TrackElemType::RightHalfBankedHelixDownSmall, // TrackElemType::LeftHalfBankedHelixDownSmall - TrackElemType::LeftHalfBankedHelixDownSmall, // TrackElemType::RightHalfBankedHelixDownSmall - TrackElemType::RightHalfBankedHelixUpLarge, // TrackElemType::LeftHalfBankedHelixUpLarge - TrackElemType::LeftHalfBankedHelixUpLarge, // TrackElemType::RightHalfBankedHelixUpLarge - TrackElemType::RightHalfBankedHelixDownLarge, // TrackElemType::LeftHalfBankedHelixDownLarge - TrackElemType::LeftHalfBankedHelixDownLarge, // TrackElemType::RightHalfBankedHelixDownLarge - TrackElemType::RightQuarterTurn1TileUp60, // TrackElemType::LeftQuarterTurn1TileUp60 - TrackElemType::LeftQuarterTurn1TileUp60, // TrackElemType::RightQuarterTurn1TileUp60 - TrackElemType::RightQuarterTurn1TileDown60, // TrackElemType::LeftQuarterTurn1TileDown60 - TrackElemType::LeftQuarterTurn1TileDown60, // TrackElemType::RightQuarterTurn1TileDown60 - TrackElemType::Brakes, - TrackElemType::Booster, - TrackElemType::Maze, - TrackElemType::RightQuarterBankedHelixLargeUp, // TrackElemType::LeftQuarterBankedHelixLargeUp - TrackElemType::LeftQuarterBankedHelixLargeUp, // TrackElemType::RightQuarterBankedHelixLargeUp - TrackElemType::RightQuarterBankedHelixLargeDown, // TrackElemType::LeftQuarterBankedHelixLargeDown - TrackElemType::LeftQuarterBankedHelixLargeDown, // TrackElemType::RightQuarterBankedHelixLargeDown - TrackElemType::RightQuarterHelixLargeUp, // TrackElemType::LeftQuarterHelixLargeUp - TrackElemType::LeftQuarterHelixLargeUp, // TrackElemType::RightQuarterHelixLargeUp - TrackElemType::RightQuarterHelixLargeDown, // TrackElemType::LeftQuarterHelixLargeDown - TrackElemType::LeftQuarterHelixLargeDown, // TrackElemType::RightQuarterHelixLargeDown - TrackElemType::Up25RightBanked, // TrackElemType::Up25LeftBanked - TrackElemType::Up25LeftBanked, // TrackElemType::Up25RightBanked - TrackElemType::Waterfall, - TrackElemType::Rapids, - TrackElemType::OnRidePhoto, - TrackElemType::Down25RightBanked, // TrackElemType::Down25LeftBanked - TrackElemType::Down25LeftBanked, // TrackElemType::Down25RightBanked - TrackElemType::Watersplash, - TrackElemType::FlatToUp60LongBase, - TrackElemType::Up60ToFlatLongBase, - TrackElemType::Whirlpool, - TrackElemType::Down60ToFlatLongBase, - TrackElemType::FlatToDown60LongBase, - TrackElemType::CableLiftHill, - TrackElemType::ReverseFreefallSlope, - TrackElemType::ReverseFreefallVertical, - TrackElemType::Up90, - TrackElemType::Down90, - TrackElemType::Up60ToUp90, - TrackElemType::Down90ToDown60, - TrackElemType::Up90ToUp60, - TrackElemType::Down60ToDown90, - TrackElemType::BrakeForDrop, - TrackElemType::RightEighthToDiag, // TrackElemType::LeftEighthToDiag - TrackElemType::LeftEighthToDiag, // TrackElemType::RightEighthToDiag - TrackElemType::RightEighthToOrthogonal, // TrackElemType::LeftEighthToOrthogonal - TrackElemType::LeftEighthToOrthogonal, // TrackElemType::RightEighthToOrthogonal - TrackElemType::RightEighthBankToDiag, // TrackElemType::LeftEighthBankToDiag - TrackElemType::LeftEighthBankToDiag, // TrackElemType::RightEighthBankToDiag - TrackElemType::RightEighthBankToOrthogonal, // TrackElemType::LeftEighthBankToOrthogonal - TrackElemType::LeftEighthBankToOrthogonal, // TrackElemType::RightEighthBankToOrthogonal - TrackElemType::DiagFlat, - TrackElemType::DiagUp25, - TrackElemType::DiagUp60, - TrackElemType::DiagFlatToUp25, - TrackElemType::DiagUp25ToUp60, - TrackElemType::DiagUp60ToUp25, - TrackElemType::DiagUp25ToFlat, - TrackElemType::DiagDown25, - TrackElemType::DiagDown60, - TrackElemType::DiagFlatToDown25, - TrackElemType::DiagDown25ToDown60, - TrackElemType::DiagDown60ToDown25, - TrackElemType::DiagDown25ToFlat, - TrackElemType::DiagFlatToUp60, - TrackElemType::DiagUp60ToFlat, - TrackElemType::DiagFlatToDown60, - TrackElemType::DiagDown60ToFlat, - TrackElemType::DiagFlatToRightBank, // TrackElemType::DiagFlatToLeftBank - TrackElemType::DiagFlatToLeftBank, // TrackElemType::DiagFlatToRightBank - TrackElemType::DiagRightBankToFlat, // TrackElemType::DiagLeftBankToFlat - TrackElemType::DiagLeftBankToFlat, // TrackElemType::DiagRightBankToFlat - TrackElemType::DiagRightBankToUp25, // TrackElemType::DiagLeftBankToUp25 - TrackElemType::DiagLeftBankToUp25, // TrackElemType::DiagRightBankToUp25 - TrackElemType::DiagUp25ToRightBank, // TrackElemType::DiagUp25ToLeftBank - TrackElemType::DiagUp25ToLeftBank, // TrackElemType::DiagUp25ToRightBank - TrackElemType::DiagRightBankToDown25, // TrackElemType::DiagLeftBankToDown25 - TrackElemType::DiagLeftBankToDown25, // TrackElemType::DiagRightBankToDown25 - TrackElemType::DiagDown25ToRightBank, // TrackElemType::DiagDown25ToLeftBank - TrackElemType::DiagDown25ToLeftBank, // TrackElemType::DiagDown25ToRightBank - TrackElemType::DiagRightBank, // TrackElemType::DiagLeftBank - TrackElemType::DiagLeftBank, // TrackElemType::DiagRightBank - TrackElemType::LogFlumeReverser, - TrackElemType::SpinningTunnel, - TrackElemType::RightBarrelRollUpToDown, // TrackElemType::LeftBarrelRollUpToDown - TrackElemType::LeftBarrelRollUpToDown, // TrackElemType::RightBarrelRollUpToDown - TrackElemType::RightBarrelRollDownToUp, // TrackElemType::LeftBarrelRollDownToUp - TrackElemType::LeftBarrelRollDownToUp, // TrackElemType::RightBarrelRollDownToUp - TrackElemType::RightBankToRightQuarterTurn3TilesUp25, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - TrackElemType::RightQuarterTurn3TilesDown25ToRightBank, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - TrackElemType::PoweredLift, - TrackElemType::RightLargeHalfLoopUp, // TrackElemType::LeftLargeHalfLoopUp - TrackElemType::LeftLargeHalfLoopUp, // TrackElemType::RightLargeHalfLoopUp - TrackElemType::RightLargeHalfLoopDown, // TrackElemType::LeftLargeHalfLoopDown - TrackElemType::LeftLargeHalfLoopDown, // TrackElemType::RightLargeHalfLoopDown - TrackElemType::RightFlyerTwistUp, // TrackElemType::LeftFlyerTwistUp - TrackElemType::LeftFlyerTwistUp, // TrackElemType::RightFlyerTwistUp - TrackElemType::RightFlyerTwistDown, // TrackElemType::LeftFlyerTwistDown - TrackElemType::LeftFlyerTwistDown, // TrackElemType::RightFlyerTwistDown - TrackElemType::FlyerHalfLoopUninvertedUp, - TrackElemType::FlyerHalfLoopInvertedDown, - TrackElemType::RightFlyerCorkscrewUp, // TrackElemType::LeftFlyerCorkscrewUp - TrackElemType::LeftFlyerCorkscrewUp, // TrackElemType::RightFlyerCorkscrewUp - TrackElemType::RightFlyerCorkscrewDown, // TrackElemType::LeftFlyerCorkscrewDown - TrackElemType::LeftFlyerCorkscrewDown, // TrackElemType::RightFlyerCorkscrewDown - TrackElemType::HeartLineTransferUp, - TrackElemType::HeartLineTransferDown, - TrackElemType::RightHeartLineRoll, // TrackElemType::LeftHeartLineRoll - TrackElemType::LeftHeartLineRoll, // TrackElemType::RightHeartLineRoll - TrackElemType::MinigolfHoleA, - TrackElemType::MinigolfHoleB, - TrackElemType::MinigolfHoleC, - TrackElemType::MinigolfHoleE, // TrackElemType::MinigolfHoleD - TrackElemType::MinigolfHoleD, // TrackElemType::MinigolfHoleE - TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop, - TrackElemType::Up90ToInvertedFlatQuarterLoop, - TrackElemType::InvertedFlatToDown90QuarterLoop, - TrackElemType::RightCurvedLiftHill, // TrackElemType::LeftCurvedLiftHill - TrackElemType::LeftCurvedLiftHill, // TrackElemType::RightCurvedLiftHill - TrackElemType::RightReverser, // TrackElemType::LeftReverser - TrackElemType::LeftReverser, // TrackElemType::RightReverser - TrackElemType::AirThrustTopCap, - TrackElemType::AirThrustVerticalDown, - TrackElemType::AirThrustVerticalDownToLevel, - TrackElemType::BlockBrakes, - TrackElemType::RightBankedQuarterTurn3TileUp25, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - TrackElemType::LeftBankedQuarterTurn3TileUp25, // TrackElemType::RightBankedQuarterTurn3TileUp25 - TrackElemType::RightBankedQuarterTurn3TileDown25, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - TrackElemType::LeftBankedQuarterTurn3TileDown25, // TrackElemType::RightBankedQuarterTurn3TileDown25 - TrackElemType::RightBankedQuarterTurn5TileUp25, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - TrackElemType::LeftBankedQuarterTurn5TileUp25, // TrackElemType::RightBankedQuarterTurn5TileUp25 - TrackElemType::RightBankedQuarterTurn5TileDown25, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - TrackElemType::LeftBankedQuarterTurn5TileDown25, // TrackElemType::RightBankedQuarterTurn5TileDown25 - TrackElemType::Up25ToRightBankedUp25, // TrackElemType::Up25ToLeftBankedUp25 - TrackElemType::Up25ToLeftBankedUp25, // TrackElemType::Up25ToRightBankedUp25 - TrackElemType::RightBankedUp25ToUp25, // TrackElemType::LeftBankedUp25ToUp25 - TrackElemType::LeftBankedUp25ToUp25, // TrackElemType::RightBankedUp25ToUp25 - TrackElemType::Down25ToRightBankedDown25, // TrackElemType::Down25ToLeftBankedDown25 - TrackElemType::Down25ToLeftBankedDown25, // TrackElemType::Down25ToRightBankedDown25 - TrackElemType::RightBankedDown25ToDown25, // TrackElemType::LeftBankedDown25ToDown25 - TrackElemType::LeftBankedDown25ToDown25, // TrackElemType::RightBankedDown25ToDown25 - TrackElemType::RightBankedFlatToRightBankedUp25, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - TrackElemType::LeftBankedFlatToLeftBankedUp25, // TrackElemType::RightBankedFlatToRightBankedUp25 - TrackElemType::RightBankedUp25ToRightBankedFlat, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - TrackElemType::LeftBankedUp25ToLeftBankedFlat, // TrackElemType::RightBankedUp25ToRightBankedFlat - TrackElemType::RightBankedFlatToRightBankedDown25, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - TrackElemType::LeftBankedFlatToLeftBankedDown25, // TrackElemType::RightBankedFlatToRightBankedDown25 - TrackElemType::RightBankedDown25ToRightBankedFlat, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - TrackElemType::LeftBankedDown25ToLeftBankedFlat, // TrackElemType::RightBankedDown25ToRightBankedFlat - TrackElemType::FlatToRightBankedUp25, // TrackElemType::FlatToLeftBankedUp25 - TrackElemType::FlatToLeftBankedUp25, // TrackElemType::FlatToRightBankedUp25 - TrackElemType::RightBankedUp25ToFlat, // TrackElemType::LeftBankedUp25ToFlat - TrackElemType::LeftBankedUp25ToFlat, // TrackElemType::RightBankedUp25ToFlat - TrackElemType::FlatToRightBankedDown25, // TrackElemType::FlatToLeftBankedDown25 - TrackElemType::FlatToLeftBankedDown25, // TrackElemType::FlatToRightBankedDown25 - TrackElemType::RightBankedDown25ToFlat, // TrackElemType::LeftBankedDown25ToFlat - TrackElemType::LeftBankedDown25ToFlat, // TrackElemType::RightBankedDown25ToFlat - TrackElemType::RightQuarterTurn1TileUp90, // TrackElemType::LeftQuarterTurn1TileUp90 - TrackElemType::LeftQuarterTurn1TileUp90, // TrackElemType::RightQuarterTurn1TileUp90 - TrackElemType::RightQuarterTurn1TileDown90, // TrackElemType::LeftQuarterTurn1TileDown90 - TrackElemType::LeftQuarterTurn1TileDown90, // TrackElemType::RightQuarterTurn1TileDown90 - TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop, - TrackElemType::MultiDimFlatToDown90QuarterLoop, - TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop, - TrackElemType::RotationControlToggle, - TrackElemType::FlatTrack1x4A, // TrackElemType::FlatTrack1x4A - TrackElemType::FlatTrack2x2, // TrackElemType::FlatTrack2x2 - TrackElemType::FlatTrack4x4, // TrackElemType::FlatTrack4x4 - TrackElemType::FlatTrack2x4, // TrackElemType::FlatTrack2x4 - TrackElemType::FlatTrack1x5, // TrackElemType::FlatTrack1x5 - TrackElemType::FlatTrack1x1A, // TrackElemType::FlatTrack1x1A - TrackElemType::FlatTrack1x4B, // TrackElemType::FlatTrack1x4B - TrackElemType::FlatTrack1x1B, // TrackElemType::FlatTrack1x1B - TrackElemType::FlatTrack1x4C, // TrackElemType::FlatTrack1x4C - TrackElemType::FlatTrack3x3, // TrackElemType::FlatTrack3x3 - TrackElemType::RightLargeCorkscrewUp, // TrackElemType::LeftLargeCorkscrewUp - TrackElemType::LeftLargeCorkscrewUp, // TrackElemType::RightLargeCorkscrewUp - TrackElemType::RightLargeCorkscrewDown, // TrackElemType::LeftLargeCorkscrewDown - TrackElemType::LeftLargeCorkscrewDown, // TrackElemType::RightLargeCorkscrewDown - TrackElemType::RightMediumHalfLoopUp, // TrackElemType::LeftMediumHalfLoopUp - TrackElemType::LeftMediumHalfLoopUp, // TrackElemType::RightMediumHalfLoopUp - TrackElemType::RightMediumHalfLoopDown, // TrackElemType::LeftMediumHalfLoopDown - TrackElemType::LeftMediumHalfLoopDown, // TrackElemType::RightMediumHalfLoopDown - TrackElemType::RightZeroGRollUp, // TrackElemType::LeftZeroGRollUp - TrackElemType::LeftZeroGRollUp, // TrackElemType::RightZeroGRollUp - TrackElemType::RightZeroGRollDown, // TrackElemType::LeftZeroGRollDown - TrackElemType::LeftZeroGRollDown, // TrackElemType::RightZeroGRollDown - TrackElemType::RightLargeZeroGRollUp, // TrackElemType::LeftLargeZeroGRollUp - TrackElemType::LeftLargeZeroGRollUp, // TrackElemType::RightLargeZeroGRollUp - TrackElemType::RightLargeZeroGRollDown, // TrackElemType::LeftLargeZeroGRollDown - TrackElemType::LeftLargeZeroGRollDown, // TrackElemType::RightLargeZeroGRollDown - TrackElemType::RightFlyerLargeHalfLoopUninvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - TrackElemType::RightFlyerLargeHalfLoopInvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - TrackElemType::RightFlyerLargeHalfLoopInvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - TrackElemType::LeftFlyerLargeHalfLoopInvertedUp, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - TrackElemType::FlyerHalfLoopInvertedUp, - TrackElemType::FlyerHalfLoopUninvertedDown, - TrackElemType::RightEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 - TrackElemType::LeftEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 - TrackElemType::RightEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 - TrackElemType::LeftEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 - TrackElemType::RightEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackElemType::LeftEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 - TrackElemType::RightEighthToOrthogonalDown25, // TrackElemType::LeftEighthToOrthogonalDown25 - TrackElemType::LeftEighthToOrthogonalDown25, // TrackElemType::RightEighthToOrthogonalDown25 - TrackElemType::DiagUp25ToRightBankedUp25, // TrackElemType::DiagUp25ToRightBankedUp25 - TrackElemType::DiagUp25ToLeftBankedUp25, // TrackElemType::DiagUp25ToLeftBankedUp25 - TrackElemType::DiagRightBankedUp25ToUp25, // TrackElemType::DiagRightBankedUp25ToUp25 - TrackElemType::DiagLeftBankedUp25ToUp25, // TrackElemType::DiagLeftBankedUp25ToUp25 - TrackElemType::DiagDown25ToRightBankedDown25, // TrackElemType::DiagDown25ToRightBankedDown25 - TrackElemType::DiagDown25ToLeftBankedDown25, // TrackElemType::DiagDown25ToLeftBankedDown25 - TrackElemType::DiagRightBankedDown25ToDown25, // TrackElemType::DiagRightBankedDown25ToDown25 - TrackElemType::DiagLeftBankedDown25ToDown25, // TrackElemType::DiagLeftBankedDown25ToDown25 - TrackElemType::DiagRightBankedFlatToRightBankedUp25, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - TrackElemType::DiagLeftBankedFlatToLeftBankedUp25, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - TrackElemType::DiagRightBankedUp25ToRightBankedFlat, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - TrackElemType::DiagRightBankedFlatToRightBankedDown25,// TrackElemType::DiagRightBankedFlatToRightBankedDown25 - TrackElemType::DiagLeftBankedFlatToLeftBankedDown25, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - TrackElemType::DiagRightBankedDown25ToRightBankedFlat,// TrackElemType::DiagRightBankedDown25ToRightBankedFlat - TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - TrackElemType::DiagFlatToRightBankedUp25, // TrackElemType::DiagFlatToRightBankedUp25 - TrackElemType::DiagFlatToLeftBankedUp25, // TrackElemType::DiagFlatToLeftBankedUp25 - TrackElemType::DiagRightBankedUp25ToFlat, // TrackElemType::DiagRightBankedUp25ToFlat - TrackElemType::DiagLeftBankedUp25ToFlat, // TrackElemType::DiagLeftBankedUp25ToFlat - TrackElemType::DiagFlatToRightBankedDown25, // TrackElemType::DiagFlatToRightBankedDown25 - TrackElemType::DiagFlatToLeftBankedDown25, // TrackElemType::DiagFlatToLeftBankedDown25 - TrackElemType::DiagRightBankedDown25ToFlat, // TrackElemType::DiagRightBankedDown25ToFlat - TrackElemType::DiagLeftBankedDown25ToFlat, // TrackElemType::DiagLeftBankedDown25ToFlat - TrackElemType::DiagUp25RightBanked, // TrackElemType::DiagUp25RightBanked - TrackElemType::DiagUp25LeftBanked, // TrackElemType::DiagUp25LeftBanked - TrackElemType::DiagDown25RightBanked, // TrackElemType::DiagDown25RightBanked - TrackElemType::DiagDown25LeftBanked, // TrackElemType::DiagDown25LeftBanked - TrackElemType::RightEighthBankToDiagUp25, // TrackElemType::RightEighthBankToDiagUp25 - TrackElemType::LeftEighthBankToDiagUp25, // TrackElemType::LeftEighthBankToDiagUp25 - TrackElemType::RightEighthBankToDiagDown25, // TrackElemType::RightEighthBankToDiagDown25 - TrackElemType::LeftEighthBankToDiagDown25, // TrackElemType::LeftEighthBankToDiagDown25 - TrackElemType::RightEighthBankToOrthogonalUp25, // TrackElemType::RightEighthBankToOrthogonalUp25 - TrackElemType::LeftEighthBankToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 - TrackElemType::RightEighthBankToOrthogonalDown25, // TrackElemType::RightEighthBankToOrthogonalDown25 - TrackElemType::LeftEighthBankToOrthogonalDown25, // TrackElemType::LeftEighthBankToOrthogonalDown25 - TrackElemType::DiagBrakes, - TrackElemType::DiagBlockBrakes, - TrackElemType::Down25Brakes, - TrackElemType::DiagBooster, - TrackElemType::DiagFlatToUp60LongBase, // TrackElemType::DiagFlatToUp60LongBase, - TrackElemType::DiagUp60ToFlatLongBase, // TrackElemType::DiagUp60ToFlatLongBase, - TrackElemType::DiagFlatToDown60LongBase, // TrackElemType::DiagFlatToDown60LongBase, - TrackElemType::DiagDown60ToFlatLongBase, // TrackElemType::DiagDown60ToFlatLongBase, - TrackElemType::RightEighthDiveLoopUpToOrthogonal, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - TrackElemType::LeftEighthDiveLoopUpToOrthogonal, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - TrackElemType::RightEighthDiveLoopDownToDiag, // TrackElemType::LeftEighthDiveLoopDownToDiag - TrackElemType::LeftEighthDiveLoopDownToDiag, // TrackElemType::RightEighthDiveLoopDownToDiag - TrackElemType::DiagDown25Brakes, - }; - static_assert(std::size(kTrackElementMirrorMap) == EnumValue(TrackElemType::Count)); + TrackElemType::flat, + TrackElemType::endStation, + TrackElemType::beginStation, + TrackElemType::middleStation, + TrackElemType::up25, + TrackElemType::up60, + TrackElemType::flatToUp25, + TrackElemType::up25ToUp60, + TrackElemType::up60ToUp25, + TrackElemType::up25ToFlat, + TrackElemType::down25, + TrackElemType::down60, + TrackElemType::flatToDown25, + TrackElemType::down25ToDown60, + TrackElemType::down60ToDown25, + TrackElemType::down25ToFlat, + TrackElemType::rightQuarterTurn5Tiles, // TrackElemType::leftQuarterTurn5Tiles + TrackElemType::leftQuarterTurn5Tiles, // TrackElemType::rightQuarterTurn5Tiles + TrackElemType::flatToRightBank, // TrackElemType::flatToLeftBank + TrackElemType::flatToLeftBank, // TrackElemType::flatToRightBank + TrackElemType::rightBankToFlat, // TrackElemType::leftBankToFlat + TrackElemType::leftBankToFlat, // TrackElemType::rightBankToFlat + TrackElemType::bankedRightQuarterTurn5Tiles, // TrackElemType::bankedLeftQuarterTurn5Tiles + TrackElemType::bankedLeftQuarterTurn5Tiles, // TrackElemType::bankedRightQuarterTurn5Tiles + TrackElemType::rightBankToUp25, // TrackElemType::leftBankToUp25 + TrackElemType::leftBankToUp25, // TrackElemType::rightBankToUp25 + TrackElemType::up25ToRightBank, // TrackElemType::up25ToLeftBank + TrackElemType::up25ToLeftBank, // TrackElemType::up25ToRightBank + TrackElemType::rightBankToDown25, // TrackElemType::leftBankToDown25 + TrackElemType::leftBankToDown25, // TrackElemType::rightBankToDown25 + TrackElemType::down25ToRightBank, // TrackElemType::down25ToLeftBank + TrackElemType::down25ToLeftBank, // TrackElemType::down25ToRightBank + TrackElemType::rightBank, // TrackElemType::leftBank + TrackElemType::leftBank, // TrackElemType::rightBank + TrackElemType::rightQuarterTurn5TilesUp25, // TrackElemType::leftQuarterTurn5TilesUp25 + TrackElemType::leftQuarterTurn5TilesUp25, // TrackElemType::rightQuarterTurn5TilesUp25 + TrackElemType::rightQuarterTurn5TilesDown25, // TrackElemType::leftQuarterTurn5TilesDown25 + TrackElemType::leftQuarterTurn5TilesDown25, // TrackElemType::rightQuarterTurn5TilesDown25 + TrackElemType::sBendRight, // TrackElemType::sBendLeft + TrackElemType::sBendLeft, // TrackElemType::sBendRight + TrackElemType::rightVerticalLoop, // TrackElemType::leftVerticalLoop + TrackElemType::leftVerticalLoop, // TrackElemType::rightVerticalLoop + TrackElemType::rightQuarterTurn3Tiles, // TrackElemType::leftQuarterTurn3Tiles + TrackElemType::leftQuarterTurn3Tiles, // TrackElemType::rightQuarterTurn3Tiles + TrackElemType::rightBankedQuarterTurn3Tiles, // TrackElemType::leftBankedQuarterTurn3Tiles + TrackElemType::leftBankedQuarterTurn3Tiles, // TrackElemType::rightBankedQuarterTurn3Tiles + TrackElemType::rightQuarterTurn3TilesUp25, // TrackElemType::leftQuarterTurn3TilesUp25 + TrackElemType::leftQuarterTurn3TilesUp25, // TrackElemType::rightQuarterTurn3TilesUp25 + TrackElemType::rightQuarterTurn3TilesDown25, // TrackElemType::leftQuarterTurn3TilesDown25 + TrackElemType::leftQuarterTurn3TilesDown25, // TrackElemType::rightQuarterTurn3TilesDown25 + TrackElemType::rightQuarterTurn1Tile, // TrackElemType::leftQuarterTurn1Tile + TrackElemType::leftQuarterTurn1Tile, // TrackElemType::rightQuarterTurn1Tile + TrackElemType::rightTwistDownToUp, // TrackElemType::leftTwistDownToUp + TrackElemType::leftTwistDownToUp, // TrackElemType::rightTwistDownToUp + TrackElemType::rightTwistUpToDown, // TrackElemType::leftTwistUpToDown + TrackElemType::leftTwistUpToDown, // TrackElemType::rightTwistUpToDown + TrackElemType::halfLoopUp, + TrackElemType::halfLoopDown, + TrackElemType::rightCorkscrewUp, // TrackElemType::leftCorkscrewUp + TrackElemType::leftCorkscrewUp, // TrackElemType::rightCorkscrewUp + TrackElemType::rightCorkscrewDown, // TrackElemType::leftCorkscrewDown + TrackElemType::leftCorkscrewDown, // TrackElemType::rightCorkscrewDown + TrackElemType::flatToUp60, + TrackElemType::up60ToFlat, + TrackElemType::flatToDown60, + TrackElemType::down60ToFlat, + TrackElemType::towerBase, + TrackElemType::towerSection, + TrackElemType::flatCovered, + TrackElemType::up25Covered, + TrackElemType::up60Covered, + TrackElemType::flatToUp25Covered, + TrackElemType::up25ToUp60Covered, + TrackElemType::up60ToUp25Covered, + TrackElemType::up25ToFlatCovered, + TrackElemType::down25Covered, + TrackElemType::down60Covered, + TrackElemType::flatToDown25Covered, + TrackElemType::down25ToDown60Covered, + TrackElemType::down60ToDown25Covered, + TrackElemType::down25ToFlatCovered, + TrackElemType::rightQuarterTurn5TilesCovered, // TrackElemType::leftQuarterTurn5TilesCovered + TrackElemType::leftQuarterTurn5TilesCovered, // TrackElemType::rightQuarterTurn5TilesCovered + TrackElemType::sBendRightCovered, // TrackElemType::sBendLeftCovered + TrackElemType::sBendLeftCovered, // TrackElemType::sBendRightCovered + TrackElemType::rightQuarterTurn3TilesCovered, // TrackElemType::leftQuarterTurn3TilesCovered + TrackElemType::leftQuarterTurn3TilesCovered, // TrackElemType::rightQuarterTurn3TilesCovered + TrackElemType::rightHalfBankedHelixUpSmall, // TrackElemType::leftHalfBankedHelixUpSmall + TrackElemType::leftHalfBankedHelixUpSmall, // TrackElemType::rightHalfBankedHelixUpSmall + TrackElemType::rightHalfBankedHelixDownSmall, // TrackElemType::leftHalfBankedHelixDownSmall + TrackElemType::leftHalfBankedHelixDownSmall, // TrackElemType::rightHalfBankedHelixDownSmall + TrackElemType::rightHalfBankedHelixUpLarge, // TrackElemType::leftHalfBankedHelixUpLarge + TrackElemType::leftHalfBankedHelixUpLarge, // TrackElemType::rightHalfBankedHelixUpLarge + TrackElemType::rightHalfBankedHelixDownLarge, // TrackElemType::leftHalfBankedHelixDownLarge + TrackElemType::leftHalfBankedHelixDownLarge, // TrackElemType::rightHalfBankedHelixDownLarge + TrackElemType::rightQuarterTurn1TileUp60, // TrackElemType::leftQuarterTurn1TileUp60 + TrackElemType::leftQuarterTurn1TileUp60, // TrackElemType::rightQuarterTurn1TileUp60 + TrackElemType::rightQuarterTurn1TileDown60, // TrackElemType::leftQuarterTurn1TileDown60 + TrackElemType::leftQuarterTurn1TileDown60, // TrackElemType::rightQuarterTurn1TileDown60 + TrackElemType::brakes, + TrackElemType::booster, + TrackElemType::maze, + TrackElemType::rightQuarterBankedHelixLargeUp, // TrackElemType::leftQuarterBankedHelixLargeUp + TrackElemType::leftQuarterBankedHelixLargeUp, // TrackElemType::rightQuarterBankedHelixLargeUp + TrackElemType::rightQuarterBankedHelixLargeDown, // TrackElemType::leftQuarterBankedHelixLargeDown + TrackElemType::leftQuarterBankedHelixLargeDown, // TrackElemType::rightQuarterBankedHelixLargeDown + TrackElemType::rightQuarterHelixLargeUp, // TrackElemType::leftQuarterHelixLargeUp + TrackElemType::leftQuarterHelixLargeUp, // TrackElemType::rightQuarterHelixLargeUp + TrackElemType::rightQuarterHelixLargeDown, // TrackElemType::leftQuarterHelixLargeDown + TrackElemType::leftQuarterHelixLargeDown, // TrackElemType::rightQuarterHelixLargeDown + TrackElemType::up25RightBanked, // TrackElemType::up25LeftBanked + TrackElemType::up25LeftBanked, // TrackElemType::up25RightBanked + TrackElemType::waterfall, + TrackElemType::rapids, + TrackElemType::onRidePhoto, + TrackElemType::down25RightBanked, // TrackElemType::down25LeftBanked + TrackElemType::down25LeftBanked, // TrackElemType::down25RightBanked + TrackElemType::watersplash, + TrackElemType::flatToUp60LongBase, + TrackElemType::up60ToFlatLongBase, + TrackElemType::whirlpool, + TrackElemType::down60ToFlatLongBase, + TrackElemType::flatToDown60LongBase, + TrackElemType::cableLiftHill, + TrackElemType::reverseFreefallSlope, + TrackElemType::reverseFreefallVertical, + TrackElemType::up90, + TrackElemType::down90, + TrackElemType::up60ToUp90, + TrackElemType::down90ToDown60, + TrackElemType::up90ToUp60, + TrackElemType::down60ToDown90, + TrackElemType::brakeForDrop, + TrackElemType::rightEighthToDiag, // TrackElemType::leftEighthToDiag + TrackElemType::leftEighthToDiag, // TrackElemType::rightEighthToDiag + TrackElemType::rightEighthToOrthogonal, // TrackElemType::leftEighthToOrthogonal + TrackElemType::leftEighthToOrthogonal, // TrackElemType::rightEighthToOrthogonal + TrackElemType::rightEighthBankToDiag, // TrackElemType::leftEighthBankToDiag + TrackElemType::leftEighthBankToDiag, // TrackElemType::rightEighthBankToDiag + TrackElemType::rightEighthBankToOrthogonal, // TrackElemType::leftEighthBankToOrthogonal + TrackElemType::leftEighthBankToOrthogonal, // TrackElemType::rightEighthBankToOrthogonal + TrackElemType::diagFlat, + TrackElemType::diagUp25, + TrackElemType::diagUp60, + TrackElemType::diagFlatToUp25, + TrackElemType::diagUp25ToUp60, + TrackElemType::diagUp60ToUp25, + TrackElemType::diagUp25ToFlat, + TrackElemType::diagDown25, + TrackElemType::diagDown60, + TrackElemType::diagFlatToDown25, + TrackElemType::diagDown25ToDown60, + TrackElemType::diagDown60ToDown25, + TrackElemType::diagDown25ToFlat, + TrackElemType::diagFlatToUp60, + TrackElemType::diagUp60ToFlat, + TrackElemType::diagFlatToDown60, + TrackElemType::diagDown60ToFlat, + TrackElemType::diagFlatToRightBank, // TrackElemType::diagFlatToLeftBank + TrackElemType::diagFlatToLeftBank, // TrackElemType::diagFlatToRightBank + TrackElemType::diagRightBankToFlat, // TrackElemType::diagLeftBankToFlat + TrackElemType::diagLeftBankToFlat, // TrackElemType::diagRightBankToFlat + TrackElemType::diagRightBankToUp25, // TrackElemType::diagLeftBankToUp25 + TrackElemType::diagLeftBankToUp25, // TrackElemType::diagRightBankToUp25 + TrackElemType::diagUp25ToRightBank, // TrackElemType::diagUp25ToLeftBank + TrackElemType::diagUp25ToLeftBank, // TrackElemType::diagUp25ToRightBank + TrackElemType::diagRightBankToDown25, // TrackElemType::diagLeftBankToDown25 + TrackElemType::diagLeftBankToDown25, // TrackElemType::diagRightBankToDown25 + TrackElemType::diagDown25ToRightBank, // TrackElemType::diagDown25ToLeftBank + TrackElemType::diagDown25ToLeftBank, // TrackElemType::diagDown25ToRightBank + TrackElemType::diagRightBank, // TrackElemType::diagLeftBank + TrackElemType::diagLeftBank, // TrackElemType::diagRightBank + TrackElemType::logFlumeReverser, + TrackElemType::spinningTunnel, + TrackElemType::rightBarrelRollUpToDown, // TrackElemType::leftBarrelRollUpToDown + TrackElemType::leftBarrelRollUpToDown, // TrackElemType::rightBarrelRollUpToDown + TrackElemType::rightBarrelRollDownToUp, // TrackElemType::leftBarrelRollDownToUp + TrackElemType::leftBarrelRollDownToUp, // TrackElemType::rightBarrelRollDownToUp + TrackElemType::rightBankToRightQuarterTurn3TilesUp25, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 + TrackElemType::leftBankToLeftQuarterTurn3TilesUp25, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 + TrackElemType::rightQuarterTurn3TilesDown25ToRightBank, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank + TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank + TrackElemType::poweredLift, + TrackElemType::rightLargeHalfLoopUp, // TrackElemType::leftLargeHalfLoopUp + TrackElemType::leftLargeHalfLoopUp, // TrackElemType::rightLargeHalfLoopUp + TrackElemType::rightLargeHalfLoopDown, // TrackElemType::leftLargeHalfLoopDown + TrackElemType::leftLargeHalfLoopDown, // TrackElemType::rightLargeHalfLoopDown + TrackElemType::rightFlyerTwistUp, // TrackElemType::leftFlyerTwistUp + TrackElemType::leftFlyerTwistUp, // TrackElemType::rightFlyerTwistUp + TrackElemType::rightFlyerTwistDown, // TrackElemType::leftFlyerTwistDown + TrackElemType::leftFlyerTwistDown, // TrackElemType::rightFlyerTwistDown + TrackElemType::flyerHalfLoopUninvertedUp, + TrackElemType::flyerHalfLoopInvertedDown, + TrackElemType::rightFlyerCorkscrewUp, // TrackElemType::leftFlyerCorkscrewUp + TrackElemType::leftFlyerCorkscrewUp, // TrackElemType::rightFlyerCorkscrewUp + TrackElemType::rightFlyerCorkscrewDown, // TrackElemType::leftFlyerCorkscrewDown + TrackElemType::leftFlyerCorkscrewDown, // TrackElemType::rightFlyerCorkscrewDown + TrackElemType::heartLineTransferUp, + TrackElemType::heartLineTransferDown, + TrackElemType::rightHeartLineRoll, // TrackElemType::leftHeartLineRoll + TrackElemType::leftHeartLineRoll, // TrackElemType::rightHeartLineRoll + TrackElemType::minigolfHoleA, + TrackElemType::minigolfHoleB, + TrackElemType::minigolfHoleC, + TrackElemType::minigolfHoleE, // TrackElemType::minigolfHoleD + TrackElemType::minigolfHoleD, // TrackElemType::minigolfHoleE + TrackElemType::multiDimInvertedFlatToDown90QuarterLoop, + TrackElemType::up90ToInvertedFlatQuarterLoop, + TrackElemType::invertedFlatToDown90QuarterLoop, + TrackElemType::rightCurvedLiftHill, // TrackElemType::leftCurvedLiftHill + TrackElemType::leftCurvedLiftHill, // TrackElemType::rightCurvedLiftHill + TrackElemType::rightReverser, // TrackElemType::leftReverser + TrackElemType::leftReverser, // TrackElemType::rightReverser + TrackElemType::airThrustTopCap, + TrackElemType::airThrustVerticalDown, + TrackElemType::airThrustVerticalDownToLevel, + TrackElemType::blockBrakes, + TrackElemType::rightBankedQuarterTurn3TileUp25, // TrackElemType::leftBankedQuarterTurn3TileUp25 + TrackElemType::leftBankedQuarterTurn3TileUp25, // TrackElemType::rightBankedQuarterTurn3TileUp25 + TrackElemType::rightBankedQuarterTurn3TileDown25, // TrackElemType::leftBankedQuarterTurn3TileDown25 + TrackElemType::leftBankedQuarterTurn3TileDown25, // TrackElemType::rightBankedQuarterTurn3TileDown25 + TrackElemType::rightBankedQuarterTurn5TileUp25, // TrackElemType::leftBankedQuarterTurn5TileUp25 + TrackElemType::leftBankedQuarterTurn5TileUp25, // TrackElemType::rightBankedQuarterTurn5TileUp25 + TrackElemType::rightBankedQuarterTurn5TileDown25, // TrackElemType::leftBankedQuarterTurn5TileDown25 + TrackElemType::leftBankedQuarterTurn5TileDown25, // TrackElemType::rightBankedQuarterTurn5TileDown25 + TrackElemType::up25ToRightBankedUp25, // TrackElemType::up25ToLeftBankedUp25 + TrackElemType::up25ToLeftBankedUp25, // TrackElemType::up25ToRightBankedUp25 + TrackElemType::rightBankedUp25ToUp25, // TrackElemType::leftBankedUp25ToUp25 + TrackElemType::leftBankedUp25ToUp25, // TrackElemType::rightBankedUp25ToUp25 + TrackElemType::down25ToRightBankedDown25, // TrackElemType::down25ToLeftBankedDown25 + TrackElemType::down25ToLeftBankedDown25, // TrackElemType::down25ToRightBankedDown25 + TrackElemType::rightBankedDown25ToDown25, // TrackElemType::leftBankedDown25ToDown25 + TrackElemType::leftBankedDown25ToDown25, // TrackElemType::rightBankedDown25ToDown25 + TrackElemType::rightBankedFlatToRightBankedUp25, // TrackElemType::leftBankedFlatToLeftBankedUp25 + TrackElemType::leftBankedFlatToLeftBankedUp25, // TrackElemType::rightBankedFlatToRightBankedUp25 + TrackElemType::rightBankedUp25ToRightBankedFlat, // TrackElemType::leftBankedUp25ToLeftBankedFlat + TrackElemType::leftBankedUp25ToLeftBankedFlat, // TrackElemType::rightBankedUp25ToRightBankedFlat + TrackElemType::rightBankedFlatToRightBankedDown25, // TrackElemType::leftBankedFlatToLeftBankedDown25 + TrackElemType::leftBankedFlatToLeftBankedDown25, // TrackElemType::rightBankedFlatToRightBankedDown25 + TrackElemType::rightBankedDown25ToRightBankedFlat, // TrackElemType::leftBankedDown25ToLeftBankedFlat + TrackElemType::leftBankedDown25ToLeftBankedFlat, // TrackElemType::rightBankedDown25ToRightBankedFlat + TrackElemType::flatToRightBankedUp25, // TrackElemType::flatToLeftBankedUp25 + TrackElemType::flatToLeftBankedUp25, // TrackElemType::flatToRightBankedUp25 + TrackElemType::rightBankedUp25ToFlat, // TrackElemType::leftBankedUp25ToFlat + TrackElemType::leftBankedUp25ToFlat, // TrackElemType::rightBankedUp25ToFlat + TrackElemType::flatToRightBankedDown25, // TrackElemType::flatToLeftBankedDown25 + TrackElemType::flatToLeftBankedDown25, // TrackElemType::flatToRightBankedDown25 + TrackElemType::rightBankedDown25ToFlat, // TrackElemType::leftBankedDown25ToFlat + TrackElemType::leftBankedDown25ToFlat, // TrackElemType::rightBankedDown25ToFlat + TrackElemType::rightQuarterTurn1TileUp90, // TrackElemType::leftQuarterTurn1TileUp90 + TrackElemType::leftQuarterTurn1TileUp90, // TrackElemType::rightQuarterTurn1TileUp90 + TrackElemType::rightQuarterTurn1TileDown90, // TrackElemType::leftQuarterTurn1TileDown90 + TrackElemType::leftQuarterTurn1TileDown90, // TrackElemType::rightQuarterTurn1TileDown90 + TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop, + TrackElemType::multiDimFlatToDown90QuarterLoop, + TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop, + TrackElemType::rotationControlToggle, + TrackElemType::flatTrack1x4A, // TrackElemType::flatTrack1x4A + TrackElemType::flatTrack2x2, // TrackElemType::flatTrack2x2 + TrackElemType::flatTrack4x4, // TrackElemType::flatTrack4x4 + TrackElemType::flatTrack2x4, // TrackElemType::flatTrack2x4 + TrackElemType::flatTrack1x5, // TrackElemType::flatTrack1x5 + TrackElemType::flatTrack1x1A, // TrackElemType::flatTrack1x1A + TrackElemType::flatTrack1x4B, // TrackElemType::flatTrack1x4B + TrackElemType::flatTrack1x1B, // TrackElemType::flatTrack1x1B + TrackElemType::flatTrack1x4C, // TrackElemType::flatTrack1x4C + TrackElemType::flatTrack3x3, // TrackElemType::flatTrack3x3 + TrackElemType::rightLargeCorkscrewUp, // TrackElemType::leftLargeCorkscrewUp + TrackElemType::leftLargeCorkscrewUp, // TrackElemType::rightLargeCorkscrewUp + TrackElemType::rightLargeCorkscrewDown, // TrackElemType::leftLargeCorkscrewDown + TrackElemType::leftLargeCorkscrewDown, // TrackElemType::rightLargeCorkscrewDown + TrackElemType::rightMediumHalfLoopUp, // TrackElemType::leftMediumHalfLoopUp + TrackElemType::leftMediumHalfLoopUp, // TrackElemType::rightMediumHalfLoopUp + TrackElemType::rightMediumHalfLoopDown, // TrackElemType::leftMediumHalfLoopDown + TrackElemType::leftMediumHalfLoopDown, // TrackElemType::rightMediumHalfLoopDown + TrackElemType::rightZeroGRollUp, // TrackElemType::leftZeroGRollUp + TrackElemType::leftZeroGRollUp, // TrackElemType::rightZeroGRollUp + TrackElemType::rightZeroGRollDown, // TrackElemType::leftZeroGRollDown + TrackElemType::leftZeroGRollDown, // TrackElemType::rightZeroGRollDown + TrackElemType::rightLargeZeroGRollUp, // TrackElemType::leftLargeZeroGRollUp + TrackElemType::leftLargeZeroGRollUp, // TrackElemType::rightLargeZeroGRollUp + TrackElemType::rightLargeZeroGRollDown, // TrackElemType::leftLargeZeroGRollDown + TrackElemType::leftLargeZeroGRollDown, // TrackElemType::rightLargeZeroGRollDown + TrackElemType::rightFlyerLargeHalfLoopUninvertedUp, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + TrackElemType::leftFlyerLargeHalfLoopUninvertedUp, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + TrackElemType::rightFlyerLargeHalfLoopInvertedDown, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + TrackElemType::leftFlyerLargeHalfLoopInvertedDown, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + TrackElemType::rightFlyerLargeHalfLoopInvertedUp, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + TrackElemType::leftFlyerLargeHalfLoopInvertedUp, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + TrackElemType::rightFlyerLargeHalfLoopUninvertedDown, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + TrackElemType::leftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + TrackElemType::flyerHalfLoopInvertedUp, + TrackElemType::flyerHalfLoopUninvertedDown, + TrackElemType::rightEighthToDiagUp25, // TrackElemType::leftEighthToDiagUp25 + TrackElemType::leftEighthToDiagUp25, // TrackElemType::rightEighthToDiagUp25 + TrackElemType::rightEighthToDiagDown25, // TrackElemType::leftEighthToDiagDown25 + TrackElemType::leftEighthToDiagDown25, // TrackElemType::rightEighthToDiagDown25 + TrackElemType::rightEighthToOrthogonalUp25, // TrackElemType::leftEighthToOrthogonalUp25 + TrackElemType::leftEighthToOrthogonalUp25, // TrackElemType::rightEighthToOrthogonalUp25 + TrackElemType::rightEighthToOrthogonalDown25, // TrackElemType::leftEighthToOrthogonalDown25 + TrackElemType::leftEighthToOrthogonalDown25, // TrackElemType::rightEighthToOrthogonalDown25 + TrackElemType::diagUp25ToRightBankedUp25, // TrackElemType::diagUp25ToRightBankedUp25 + TrackElemType::diagUp25ToLeftBankedUp25, // TrackElemType::diagUp25ToLeftBankedUp25 + TrackElemType::diagRightBankedUp25ToUp25, // TrackElemType::diagRightBankedUp25ToUp25 + TrackElemType::diagLeftBankedUp25ToUp25, // TrackElemType::diagLeftBankedUp25ToUp25 + TrackElemType::diagDown25ToRightBankedDown25, // TrackElemType::diagDown25ToRightBankedDown25 + TrackElemType::diagDown25ToLeftBankedDown25, // TrackElemType::diagDown25ToLeftBankedDown25 + TrackElemType::diagRightBankedDown25ToDown25, // TrackElemType::diagRightBankedDown25ToDown25 + TrackElemType::diagLeftBankedDown25ToDown25, // TrackElemType::diagLeftBankedDown25ToDown25 + TrackElemType::diagRightBankedFlatToRightBankedUp25, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + TrackElemType::diagLeftBankedFlatToLeftBankedUp25, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + TrackElemType::diagRightBankedUp25ToRightBankedFlat, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + TrackElemType::diagLeftBankedUp25ToLeftBankedFlat, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + TrackElemType::diagRightBankedFlatToRightBankedDown25,// TrackElemType::diagRightBankedFlatToRightBankedDown25 + TrackElemType::diagLeftBankedFlatToLeftBankedDown25, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + TrackElemType::diagRightBankedDown25ToRightBankedFlat,// TrackElemType::diagRightBankedDown25ToRightBankedFlat + TrackElemType::diagLeftBankedDown25ToLeftBankedFlat, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + TrackElemType::diagFlatToRightBankedUp25, // TrackElemType::diagFlatToRightBankedUp25 + TrackElemType::diagFlatToLeftBankedUp25, // TrackElemType::diagFlatToLeftBankedUp25 + TrackElemType::diagRightBankedUp25ToFlat, // TrackElemType::diagRightBankedUp25ToFlat + TrackElemType::diagLeftBankedUp25ToFlat, // TrackElemType::diagLeftBankedUp25ToFlat + TrackElemType::diagFlatToRightBankedDown25, // TrackElemType::diagFlatToRightBankedDown25 + TrackElemType::diagFlatToLeftBankedDown25, // TrackElemType::diagFlatToLeftBankedDown25 + TrackElemType::diagRightBankedDown25ToFlat, // TrackElemType::diagRightBankedDown25ToFlat + TrackElemType::diagLeftBankedDown25ToFlat, // TrackElemType::diagLeftBankedDown25ToFlat + TrackElemType::diagUp25RightBanked, // TrackElemType::diagUp25RightBanked + TrackElemType::diagUp25LeftBanked, // TrackElemType::diagUp25LeftBanked + TrackElemType::diagDown25RightBanked, // TrackElemType::diagDown25RightBanked + TrackElemType::diagDown25LeftBanked, // TrackElemType::diagDown25LeftBanked + TrackElemType::rightEighthBankToDiagUp25, // TrackElemType::rightEighthBankToDiagUp25 + TrackElemType::leftEighthBankToDiagUp25, // TrackElemType::leftEighthBankToDiagUp25 + TrackElemType::rightEighthBankToDiagDown25, // TrackElemType::rightEighthBankToDiagDown25 + TrackElemType::leftEighthBankToDiagDown25, // TrackElemType::leftEighthBankToDiagDown25 + TrackElemType::rightEighthBankToOrthogonalUp25, // TrackElemType::rightEighthBankToOrthogonalUp25 + TrackElemType::leftEighthBankToOrthogonalUp25, // TrackElemType::leftEighthBankToOrthogonalUp25 + TrackElemType::rightEighthBankToOrthogonalDown25, // TrackElemType::rightEighthBankToOrthogonalDown25 + TrackElemType::leftEighthBankToOrthogonalDown25, // TrackElemType::leftEighthBankToOrthogonalDown25 + TrackElemType::diagBrakes, + TrackElemType::diagBlockBrakes, + TrackElemType::down25Brakes, + TrackElemType::diagBooster, + TrackElemType::diagFlatToUp60LongBase, // TrackElemType::diagFlatToUp60LongBase, + TrackElemType::diagUp60ToFlatLongBase, // TrackElemType::diagUp60ToFlatLongBase, + TrackElemType::diagFlatToDown60LongBase, // TrackElemType::diagFlatToDown60LongBase, + TrackElemType::diagDown60ToFlatLongBase, // TrackElemType::diagDown60ToFlatLongBase, + TrackElemType::rightEighthDiveLoopUpToOrthogonal, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + TrackElemType::leftEighthDiveLoopUpToOrthogonal, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + TrackElemType::rightEighthDiveLoopDownToDiag, // TrackElemType::leftEighthDiveLoopDownToDiag + TrackElemType::leftEighthDiveLoopDownToDiag, // TrackElemType::rightEighthDiveLoopDownToDiag + TrackElemType::diagDown25Brakes, + }; + static_assert(std::size(kTrackElementMirrorMap) == EnumValue(TrackElemType::count)); /** rct2: 0x0099423C */ static constexpr uint32_t kTrackFlags[] = { - /* TrackElemType::Flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::EndStation */ 0, - /* TrackElemType::BeginStation */ 0, - /* TrackElemType::MiddleStation */ 0, - /* TrackElemType::Up25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::FlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::FlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::LeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::FlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::BankedLeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::BankedRightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToLeftBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToRightBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::SBendLeft */ 0, - /* TrackElemType::SBendRight */ 0, - /* TrackElemType::LeftVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::HalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::HalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::FlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::FlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::TowerBase */ 0, - /* TrackElemType::TowerSection */ 0, - /* TrackElemType::FlatCovered */ 0, - /* TrackElemType::Up25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::FlatToUp25Covered */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Up25ToUp60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up60ToUp25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up25ToFlatCovered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::FlatToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25ToDown60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down60ToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25ToFlatCovered */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::LeftQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::SBendLeftCovered */ 0, - /* TrackElemType::SBendRightCovered */ 0, - /* TrackElemType::LeftQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Brakes */ 0, - /* TrackElemType::Booster */ 0, - /* TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, - /* TrackElemType::LeftQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::RightQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::LeftQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::RightQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Waterfall */ 0, - /* TrackElemType::Rapids */ 0, - /* TrackElemType::OnRidePhoto */ 0, - /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Watersplash */ 0, - /* TrackElemType::FlatToUp60LongBase */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Up60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Whirlpool */ 0, - /* TrackElemType::Down60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::FlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::CableLiftHill */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::ReverseFreefallSlope */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::ReverseFreefallVertical */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Up90 */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Down90 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60ToUp90 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down90ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up90ToUp60 */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Down60ToDown90 */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::BrakeForDrop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftEighthToDiag */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightEighthToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagUp25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagUp25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagDown25ToLeftBank */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::DiagDown25ToRightBank */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::DiagLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LogFlumeReverser */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::SpinningTunnel */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToRightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightQuarterTurn3TilesDown25ToRightBank */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::PoweredLift */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::FlyerHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::FlyerHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::HeartLineTransferUp */ 0, - /* TrackElemType::HeartLineTransferDown */ 0, - /* TrackElemType::LeftHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, - /* TrackElemType::RightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, - /* TrackElemType::MinigolfHoleA */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleB */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleC */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleD */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleE */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::Up90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::InvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP, - /* TrackElemType::RightCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP, - /* TrackElemType::LeftReverser */ 0, - /* TrackElemType::RightReverser */ 0, - /* TrackElemType::AirThrustTopCap */ 0, - /* TrackElemType::AirThrustVerticalDown */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::AirThrustVerticalDownToLevel */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::BlockBrakes */ 0, - /* TrackElemType::LeftBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, - /* TrackElemType::RightQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, - /* TrackElemType::LeftQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::RightQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::MultiDimFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RotationControlToggle */ 0, - /* TrackElemType::FlatTrack1x4A */ 0, - /* TrackElemType::FlatTrack2x2 */ 0, - /* TrackElemType::FlatTrack4x4 */ 0, - /* TrackElemType::FlatTrack2x4 */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, - /* TrackElemType::FlatTrack1x5 */ 0, - /* TrackElemType::FlatTrack1x1A */ 0, - /* TrackElemType::FlatTrack1x4B */ 0, - /* TrackElemType::FlatTrack1x1B */ 0, - /* TrackElemType::FlatTrack1x4C */ 0, - /* TrackElemType::FlatTrack3x3 */ 0, - /* TrackElemType::LeftLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::RightFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::FlyerHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::FlyerHalfLoopUnivertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::LeftEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::DiagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::DiagBrakes */ 0, - /* TrackElemType::DiagBlockBrakes */ 0, - /* TrackElemType::Down25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagBooster */ 0, - /* TrackElemType::DiagFlatToUp60LongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP, - /* TrackElemType::DiagUp60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP, - /* TrackElemType::DiagFlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::LeftEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::DiagDown25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - }; - static_assert(std::size(kTrackFlags) == EnumValue(TrackElemType::Count)); + /* TrackElemType::flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::endStation */ 0, + /* TrackElemType::beginStation */ 0, + /* TrackElemType::middleStation */ 0, + /* TrackElemType::up25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::flatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::down25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::down60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::flatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::down25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::down60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::down25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::leftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::flatToLeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::flatToRightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::bankedLeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::bankedRightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::up25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::up25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::down25ToLeftBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::down25ToRightBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::sBendLeft */ 0, + /* TrackElemType::sBendRight */ 0, + /* TrackElemType::leftVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::leftBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::leftTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::halfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::halfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::flatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::flatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::down60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::towerBase */ 0, + /* TrackElemType::towerSection */ 0, + /* TrackElemType::flatCovered */ 0, + /* TrackElemType::up25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::up60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::flatToUp25Covered */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::up25ToUp60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::up60ToUp25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::up25ToFlatCovered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::flatToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down25ToDown60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down60ToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down25ToFlatCovered */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::leftQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::sBendLeftCovered */ 0, + /* TrackElemType::sBendRightCovered */ 0, + /* TrackElemType::leftQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::leftHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::rightQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::leftQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::rightQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::brakes */ 0, + /* TrackElemType::booster */ 0, + /* TrackElemType::invertedUp90ToFlatQuarterLoopAlias / Maze */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, + /* TrackElemType::leftQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::rightQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::leftQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::rightQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::waterfall */ 0, + /* TrackElemType::rapids */ 0, + /* TrackElemType::onRidePhoto */ 0, + /* TrackElemType::down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::watersplash */ 0, + /* TrackElemType::flatToUp60LongBase */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::up60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::whirlpool */ 0, + /* TrackElemType::down60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::flatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::cableLiftHill */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::reverseFreefallSlope */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::reverseFreefallVertical */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::up90 */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::down90 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up60ToUp90 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down90ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::up90ToUp60 */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::down60ToDown90 */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::brakeForDrop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::leftEighthToDiag */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightEighthToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::leftEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::rightEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::leftEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagFlat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagFlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagUp25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagUp60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagFlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagDown25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagDown60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagFlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagUp60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagFlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagDown60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::diagFlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagFlatToRightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagLeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagLeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagUp25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagUp25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagLeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagDown25ToLeftBank */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::diagDown25ToRightBank */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::diagLeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::logFlumeReverser */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::spinningTunnel */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankToRightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightQuarterTurn3TilesDown25ToRightBank */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::poweredLift */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::leftLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::flyerHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::flyerHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::heartLineTransferUp */ 0, + /* TrackElemType::heartLineTransferDown */ 0, + /* TrackElemType::leftHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, + /* TrackElemType::rightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, + /* TrackElemType::minigolfHoleA */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::minigolfHoleB */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::minigolfHoleC */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::minigolfHoleD */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::minigolfHoleE */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::multiDimInvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::up90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::invertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP, + /* TrackElemType::rightCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP, + /* TrackElemType::leftReverser */ 0, + /* TrackElemType::rightReverser */ 0, + /* TrackElemType::airThrustTopCap */ 0, + /* TrackElemType::airThrustVerticalDown */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::airThrustVerticalDownToLevel */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::blockBrakes */ 0, + /* TrackElemType::leftBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::up25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::up25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::down25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::down25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::flatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::flatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::flatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::flatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::rightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::leftQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, + /* TrackElemType::rightQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, + /* TrackElemType::leftQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::rightQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::multiDimFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rotationControlToggle */ 0, + /* TrackElemType::flatTrack1x4A */ 0, + /* TrackElemType::flatTrack2x2 */ 0, + /* TrackElemType::flatTrack4x4 */ 0, + /* TrackElemType::flatTrack2x4 */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, + /* TrackElemType::flatTrack1x5 */ 0, + /* TrackElemType::flatTrack1x1A */ 0, + /* TrackElemType::flatTrack1x4B */ 0, + /* TrackElemType::flatTrack1x1B */ 0, + /* TrackElemType::flatTrack1x4C */ 0, + /* TrackElemType::flatTrack3x3 */ 0, + /* TrackElemType::leftLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::rightFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::leftFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::rightFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::leftFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TrackElemType::rightFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TrackElemType::flyerHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::flyerHalfLoopUnivertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TrackElemType::leftEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::diagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::diagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::leftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::leftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::rightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::diagBrakes */ 0, + /* TrackElemType::diagBlockBrakes */ 0, + /* TrackElemType::down25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagBooster */ 0, + /* TrackElemType::diagFlatToUp60LongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP, + /* TrackElemType::diagUp60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP, + /* TrackElemType::diagFlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::diagDown60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::leftEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::leftEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::rightEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::diagDown25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + }; + static_assert(std::size(kTrackFlags) == EnumValue(TrackElemType::count)); // clang-format on /** rct2: 0x00997C9D */ @@ -2707,358 +2707,358 @@ namespace OpenRCT2::TrackMetaData static constexpr TrackDefinition kTrackDefinitions[] = { // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET - { TrackGroup::straight, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Flat - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::EndStation - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::BeginStation - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::MiddleStation - { TrackGroup::slope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up25 - { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60 - { TrackGroup::slope, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToUp25 - { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up25ToUp60 - { TrackGroup::slopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60ToUp25 - { TrackGroup::slope, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up25ToFlat - { TrackGroup::slope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25 - { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60 - { TrackGroup::slope, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToDown25 - { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25ToDown60 - { TrackGroup::slopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60ToDown25 - { TrackGroup::slope, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25ToFlat - { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn5Tiles - { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::FlatToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::FlatToRightBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankToFlat - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankToFlat - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::BankedLeftQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::BankedRightQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankToUp25 - { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankToUp25 - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::Up25ToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::Up25ToRightBank - { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankToDown25 - { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankToDown25 - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::Down25ToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::Down25ToRightBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBank - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn5TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn5TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn5TilesDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn5TilesDown25 - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::SBendLeft - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::SBendRight - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // TrackElemType::LeftVerticalLoop - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // TrackElemType::RightVerticalLoop - { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn3Tiles - { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn3Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedQuarterTurn3Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedQuarterTurn3Tiles - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn3TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn3TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25 - { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn1Tile - { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn1Tile - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftTwistDownToUp - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightTwistDownToUp - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::LeftTwistUpToDown - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::RightTwistUpToDown - { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::HalfLoopUp - { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::HalfLoopDown - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftCorkscrewUp - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightCorkscrewUp - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::LeftCorkscrewDown - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::RightCorkscrewDown - { TrackGroup::flatToSteepSlope, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToUp60 - { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60ToFlat - { TrackGroup::flatToSteepSlope, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToDown60 - { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60ToFlat - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::TowerBase - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::TowerSection - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatCovered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up25Covered - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60Covered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToUp25Covered - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up25ToUp60Covered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60ToUp25Covered - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up25ToFlatCovered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25Covered - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60Covered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToDown25Covered - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25ToDown60Covered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60ToDown25Covered - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25ToFlatCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn5TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn5TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::SBendLeftCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::SBendRightCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn3TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn3TilesCovered - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftHalfBankedHelixUpSmall - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightHalfBankedHelixUpSmall - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftHalfBankedHelixDownSmall - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightHalfBankedHelixDownSmall - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftHalfBankedHelixUpLarge - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightHalfBankedHelixUpLarge - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftHalfBankedHelixDownLarge - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightHalfBankedHelixDownLarge - { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn1TileUp60 - { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn1TileUp60 - { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn1TileDown60 - { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn1TileDown60 - { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Brakes - { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Booster - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Maze - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeUp - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightQuarterBankedHelixLargeUp - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeDown - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightQuarterBankedHelixLargeDown - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterHelixLargeUp - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterHelixLargeUp - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterHelixLargeDown - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterHelixLargeDown - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Up25LeftBanked - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked - { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Waterfall - { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Rapids - { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::OnRidePhoto - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Down25LeftBanked - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Down25RightBanked - { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Watersplash - { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToUp60LongBase - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60ToFlatLongBase - { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Whirlpool - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60ToFlatLongBase - { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatToDown60LongBase - { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::CableLiftHill - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::ReverseFreefallSlope - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall,TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::ReverseFreefallVertical - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up90 - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down90 - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up60ToUp90 - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down90ToDown60 - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Up90ToUp60 - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down60ToDown90 - { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::BrakeForDrop - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftEighthToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightEighthToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftEighthToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightEighthToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftEighthBankToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightEighthBankToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftEighthBankToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightEighthBankToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagFlat - { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagUp25 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagUp60 - { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToUp25 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToUp60 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagUp60ToUp25 - { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToFlat - { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown25 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown60 - { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToDown25 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToDown60 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown60ToDown25 - { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToFlat - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToUp60 - { TrackGroup::diagSlopeSteepUp, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagUp60ToFlat - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToDown60 - { TrackGroup::diagSlopeSteepDown, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown60ToFlat - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankToFlat - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankToFlat - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankToUp25 - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankToUp25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToRightBank - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankToDown25 - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankToDown25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToRightBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBank - { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LogFlumeReverser - { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::SpinningTunnel - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftBarrelRollUpToDown - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightBarrelRollUpToDown - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::LeftBarrelRollDownToUp - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::RightBarrelRollDownToUp - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::PoweredLift - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftLargeHalfLoopUp - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightLargeHalfLoopUp - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftLargeHalfLoopDown - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightLargeHalfLoopDown - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftFlyerTwistUp - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightFlyerTwistUp - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftFlyerTwistDown - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightFlyerTwistDown - {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::FlyerHalfLoopUninvertedUp - {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::FlyerHalfLoopInvertedDown - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftFlyerCorkscrewUp - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightFlyerCorkscrewUp - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // TrackElemType::LeftFlyerCorkscrewDown - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // TrackElemType::RightFlyerCorkscrewDown - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::HeartLineTransferUp - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::HeartLineTransferDown - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftHeartLineRoll - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightHeartLineRoll - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::MinigolfHoleA - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::MinigolfHoleB - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::MinigolfHoleC - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::MinigolfHoleD - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::MinigolfHoleE - { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::Up90ToInvertedFlatQuarterLoop - { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::InvertedFlatToDown90QuarterLoop - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftCurvedLiftHill - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightCurvedLiftHill - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftReverser - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightReverser - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::AirThrustTopCap - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::AirThrustVerticalDown - { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::AirThrustVerticalDownToLevel - { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::BlockBrakes - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedQuarterTurn3TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedQuarterTurn3TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedQuarterTurn5TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedQuarterTurn5TileDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::Up25ToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::Up25ToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedUp25ToUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankedUp25ToUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::Down25ToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::Down25ToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedDown25ToDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankedDown25ToDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedFlatToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedUp25ToRightBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedFlatToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::RightBankedDown25ToRightBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::FlatToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::FlatToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedUp25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankedUp25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::FlatToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::FlatToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::LeftBankedDown25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::RightBankedDown25ToFlat - { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn1TileUp90 - { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn1TileUp90 - { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::LeftQuarterTurn1TileDown90 - { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RightQuarterTurn1TileDown90 - { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::MultiDimFlatToDown90QuarterLoop - { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - { TrackGroup::rotationControlToggle, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::RotationControlToggle - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x2 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack4x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x5 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, -40 }, // TrackElemType::FlatTrack1x4C - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack3x3 - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::LeftLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::RightLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::LeftLargeCorkscrewDown - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::RightLargeCorkscrewDown - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftMediumHalfLoopDown - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightMediumHalfLoopDown - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::LeftZeroGRollDown - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::RightZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftLargeZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightLargeZeroGRollDown - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::FlyerHalfLoopInvertedUp - { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Up25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Down25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Down25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBrakes - { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBlockBrakes - { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Down25Brakes - { TrackGroup::diagBooster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBooster - { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::DiagFlatToUp60LongBase, - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 48 }, // TrackElemType::DiagUp60ToFlatLongBase, - { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, -32 }, // TrackElemType::DiagFlatToDown60LongBase, - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, -24 }, // TrackElemType::DiagDown60ToFlatLongBase, - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::LeftEighthDiveLoopDownToDiag - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::RightEighthDiveLoopDownToDiag - { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown25 - }; - static_assert(std::size(kTrackDefinitions) == EnumValue(TrackElemType::Count)); + { TrackGroup::straight, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flat + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::endStation + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::beginStation + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::middleStation + { TrackGroup::slope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25 + { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60 + { TrackGroup::slope, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp25 + { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToUp60 + { TrackGroup::slopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToUp25 + { TrackGroup::slope, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToFlat + { TrackGroup::slope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25 + { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60 + { TrackGroup::slope, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown25 + { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToDown60 + { TrackGroup::slopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToDown25 + { TrackGroup::slope, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToFlat + { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5Tiles + { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::flatToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::flatToRightBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToFlat + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToFlat + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::bankedLeftQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::bankedRightQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToUp25 + { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToUp25 + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::up25ToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::up25ToRightBank + { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToDown25 + { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToDown25 + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::down25ToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::down25ToRightBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBank + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5TilesDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5TilesDown25 + { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendLeft + { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendRight + { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // TrackElemType::leftVerticalLoop + { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // TrackElemType::rightVerticalLoop + { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3Tiles + { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn3Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn3Tiles + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25 + { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1Tile + { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1Tile + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftTwistDownToUp + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightTwistDownToUp + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::leftTwistUpToDown + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::rightTwistUpToDown + { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::halfLoopUp + { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::halfLoopDown + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftCorkscrewUp + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightCorkscrewUp + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::leftCorkscrewDown + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::rightCorkscrewDown + { TrackGroup::flatToSteepSlope, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp60 + { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToFlat + { TrackGroup::flatToSteepSlope, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown60 + { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToFlat + { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::towerBase + { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::towerSection + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatCovered + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25Covered + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60Covered + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp25Covered + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToUp60Covered + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToUp25Covered + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToFlatCovered + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25Covered + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60Covered + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown25Covered + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToDown60Covered + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToDown25Covered + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToFlatCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5TilesCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5TilesCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendLeftCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendRightCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesCovered + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixUpSmall + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixUpSmall + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixDownSmall + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixDownSmall + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixUpLarge + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixUpLarge + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixDownLarge + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixDownLarge + { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileUp60 + { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileUp60 + { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileDown60 + { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileDown60 + { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::brakes + { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::booster + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::maze + { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeUp + { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeUp + { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeDown + { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeDown + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterHelixLargeUp + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterHelixLargeUp + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterHelixLargeDown + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterHelixLargeDown + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::up25LeftBanked + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::up25RightBanked + { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::waterfall + { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rapids + { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::onRidePhoto + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::down25LeftBanked + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::down25RightBanked + { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::watersplash + { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp60LongBase + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToFlatLongBase + { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::whirlpool + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToFlatLongBase + { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown60LongBase + { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::cableLiftHill + { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::reverseFreefallSlope + { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall,TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::reverseFreefallVertical + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up90 + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down90 + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToUp90 + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down90ToDown60 + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up90ToUp60 + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToDown90 + { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::brakeForDrop + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftEighthToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightEighthToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftEighthToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightEighthToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftEighthBankToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightEighthBankToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftEighthBankToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightEighthBankToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlat + { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp25 + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp60 + { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToUp25 + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToUp60 + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp60ToUp25 + { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToFlat + { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25 + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown60 + { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToDown25 + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToDown60 + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown60ToDown25 + { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToFlat + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToUp60 + { TrackGroup::diagSlopeSteepUp, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp60ToFlat + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToDown60 + { TrackGroup::diagSlopeSteepDown, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown60ToFlat + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagFlatToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagFlatToRightBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankToFlat + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankToFlat + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankToUp25 + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankToUp25 + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToRightBank + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankToDown25 + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankToDown25 + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToRightBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBank + { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::logFlumeReverser + { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::spinningTunnel + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftBarrelRollUpToDown + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightBarrelRollUpToDown + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::leftBarrelRollDownToUp + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::rightBarrelRollDownToUp + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank + { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::poweredLift + {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftLargeHalfLoopUp + {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightLargeHalfLoopUp + {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::leftLargeHalfLoopDown + {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::rightLargeHalfLoopDown + {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftFlyerTwistUp + {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightFlyerTwistUp + {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftFlyerTwistDown + {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightFlyerTwistDown + {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::flyerHalfLoopUninvertedUp + {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::flyerHalfLoopInvertedDown + {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftFlyerCorkscrewUp + {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightFlyerCorkscrewUp + {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // TrackElemType::leftFlyerCorkscrewDown + {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // TrackElemType::rightFlyerCorkscrewDown + {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::heartLineTransferUp + {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::heartLineTransferDown + {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftHeartLineRoll + {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightHeartLineRoll + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleA + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleB + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleC + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleD + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleE + { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop + { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::up90ToInvertedFlatQuarterLoop + { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::invertedFlatToDown90QuarterLoop + { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftCurvedLiftHill + { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightCurvedLiftHill + { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftReverser + { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightReverser + { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::airThrustTopCap + { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::airThrustVerticalDown + { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::airThrustVerticalDownToLevel + { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::blockBrakes + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileDown25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::up25ToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::up25ToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedUp25ToUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedUp25ToUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::down25ToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::down25ToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedDown25ToDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedDown25ToDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedFlatToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedUp25ToRightBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedFlatToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedDown25ToRightBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::flatToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::flatToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedUp25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedUp25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::flatToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::flatToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedDown25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedDown25ToFlat + { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileUp90 + { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileUp90 + { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileDown90 + { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileDown90 + { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop + { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimFlatToDown90QuarterLoop + { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop + { TrackGroup::rotationControlToggle, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rotationControlToggle + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x4A + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack2x2 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack4x4 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack2x4 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x5 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x1A + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x4B + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x1B + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, -40 }, // TrackElemType::flatTrack1x4C + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack3x3 + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::leftLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::rightLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::leftLargeCorkscrewDown + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::rightLargeCorkscrewDown + { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::leftMediumHalfLoopDown + { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::rightMediumHalfLoopDown + { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::leftZeroGRollDown + { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::rightZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::leftLargeZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::rightLargeZeroGRollDown + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::flyerHalfLoopInvertedUp + { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::flyerHalfLoopUninvertedDown + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::leftEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::rightEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::leftEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::rightEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::leftEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::rightEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::leftEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::rightEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::up25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::up25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::down25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::down25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::leftEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::rightEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::leftEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::rightEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::leftEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::rightEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::leftEighthBankToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::rightEighthBankToOrthogonalDown25 + { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagBrakes + { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagBlockBrakes + { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25Brakes + { TrackGroup::diagBooster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagBooster + { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::diagFlatToUp60LongBase, + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 48 }, // TrackElemType::diagUp60ToFlatLongBase, + { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, -32 }, // TrackElemType::diagFlatToDown60LongBase, + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, -24 }, // TrackElemType::diagDown60ToFlatLongBase, + { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::leftEighthDiveLoopDownToDiag + { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::rightEighthDiveLoopDownToDiag + { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25 + }; + static_assert(std::size(kTrackDefinitions) == EnumValue(TrackElemType::count)); // clang-format on @@ -3123,7 +3123,7 @@ namespace OpenRCT2::TrackMetaData SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::L9, SpinFunction::R9, SpinFunction::L9, SpinFunction::R9, SpinFunction::None }; - static_assert(std::size(kTrackTypeToSpinFunction) == EnumValue(TrackElemType::Count)); + static_assert(std::size(kTrackTypeToSpinFunction) == EnumValue(TrackElemType::count)); #pragma region GForces @@ -3320,400 +3320,400 @@ namespace OpenRCT2::TrackMetaData { switch (type) { - case TrackElemType::Flat: - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: - case TrackElemType::Up25: - case TrackElemType::Up60: // - case TrackElemType::Down25: - case TrackElemType::Down60: // - case TrackElemType::FlatToLeftBank: - case TrackElemType::FlatToRightBank: - case TrackElemType::LeftBankToFlat: - case TrackElemType::RightBankToFlat: // - case TrackElemType::LeftBank: - case TrackElemType::RightBank: - case TrackElemType::TowerBase: - case TrackElemType::TowerSection: - case TrackElemType::FlatCovered: - case TrackElemType::Up25Covered: - case TrackElemType::Up60Covered: - case TrackElemType::Down25Covered: - case TrackElemType::Down60Covered: - case TrackElemType::Brakes: - case TrackElemType::RotationControlToggle: - case TrackElemType::Maze: - case TrackElemType::Up25LeftBanked: - case TrackElemType::Up25RightBanked: - case TrackElemType::Waterfall: - case TrackElemType::Rapids: - case TrackElemType::OnRidePhoto: - case TrackElemType::Down25LeftBanked: - case TrackElemType::Down25RightBanked: - case TrackElemType::Whirlpool: - case TrackElemType::ReverseFreefallVertical: - case TrackElemType::Up90: - case TrackElemType::Down90: - case TrackElemType::DiagFlat: - case TrackElemType::DiagUp25: - case TrackElemType::DiagUp60: - case TrackElemType::DiagDown25: - case TrackElemType::DiagDown60: - case TrackElemType::DiagFlatToLeftBank: - case TrackElemType::DiagFlatToRightBank: - case TrackElemType::DiagLeftBankToFlat: - case TrackElemType::DiagRightBankToFlat: - case TrackElemType::DiagLeftBank: - case TrackElemType::DiagRightBank: - case TrackElemType::LogFlumeReverser: - case TrackElemType::SpinningTunnel: - case TrackElemType::PoweredLift: - case TrackElemType::MinigolfHoleA: - case TrackElemType::MinigolfHoleB: - case TrackElemType::MinigolfHoleC: - case TrackElemType::MinigolfHoleD: - case TrackElemType::MinigolfHoleE: - case TrackElemType::LeftReverser: - case TrackElemType::RightReverser: - case TrackElemType::AirThrustVerticalDown: - case TrackElemType::BlockBrakes: - case TrackElemType::Up25ToLeftBankedUp25: - case TrackElemType::Up25ToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToUp25: - case TrackElemType::RightBankedUp25ToUp25: - case TrackElemType::Down25ToLeftBankedDown25: - case TrackElemType::Down25ToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToDown25: - case TrackElemType::RightBankedDown25ToDown25: - case TrackElemType::LeftQuarterTurn1TileUp90: - case TrackElemType::RightQuarterTurn1TileUp90: - case TrackElemType::LeftQuarterTurn1TileDown90: - case TrackElemType::RightQuarterTurn1TileDown90: + case TrackElemType::flat: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: + case TrackElemType::up25: + case TrackElemType::up60: // + case TrackElemType::down25: + case TrackElemType::down60: // + case TrackElemType::flatToLeftBank: + case TrackElemType::flatToRightBank: + case TrackElemType::leftBankToFlat: + case TrackElemType::rightBankToFlat: // + case TrackElemType::leftBank: + case TrackElemType::rightBank: + case TrackElemType::towerBase: + case TrackElemType::towerSection: + case TrackElemType::flatCovered: + case TrackElemType::up25Covered: + case TrackElemType::up60Covered: + case TrackElemType::down25Covered: + case TrackElemType::down60Covered: + case TrackElemType::brakes: + case TrackElemType::rotationControlToggle: + case TrackElemType::maze: + case TrackElemType::up25LeftBanked: + case TrackElemType::up25RightBanked: + case TrackElemType::waterfall: + case TrackElemType::rapids: + case TrackElemType::onRidePhoto: + case TrackElemType::down25LeftBanked: + case TrackElemType::down25RightBanked: + case TrackElemType::whirlpool: + case TrackElemType::reverseFreefallVertical: + case TrackElemType::up90: + case TrackElemType::down90: + case TrackElemType::diagFlat: + case TrackElemType::diagUp25: + case TrackElemType::diagUp60: + case TrackElemType::diagDown25: + case TrackElemType::diagDown60: + case TrackElemType::diagFlatToLeftBank: + case TrackElemType::diagFlatToRightBank: + case TrackElemType::diagLeftBankToFlat: + case TrackElemType::diagRightBankToFlat: + case TrackElemType::diagLeftBank: + case TrackElemType::diagRightBank: + case TrackElemType::logFlumeReverser: + case TrackElemType::spinningTunnel: + case TrackElemType::poweredLift: + case TrackElemType::minigolfHoleA: + case TrackElemType::minigolfHoleB: + case TrackElemType::minigolfHoleC: + case TrackElemType::minigolfHoleD: + case TrackElemType::minigolfHoleE: + case TrackElemType::leftReverser: + case TrackElemType::rightReverser: + case TrackElemType::airThrustVerticalDown: + case TrackElemType::blockBrakes: + case TrackElemType::up25ToLeftBankedUp25: + case TrackElemType::up25ToRightBankedUp25: + case TrackElemType::leftBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: + case TrackElemType::down25ToLeftBankedDown25: + case TrackElemType::down25ToRightBankedDown25: + case TrackElemType::leftBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: + case TrackElemType::leftQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: return EvaluatorConst<0>; - case TrackElemType::FlatToUp25: // - case TrackElemType::Down25ToFlat: // - case TrackElemType::LeftBankToUp25: - case TrackElemType::RightBankToUp25: - case TrackElemType::Down25ToLeftBank: - case TrackElemType::Down25ToRightBank: - case TrackElemType::FlatToUp25Covered: - case TrackElemType::Down25ToFlatCovered: - case TrackElemType::LeftBankedFlatToLeftBankedUp25: - case TrackElemType::RightBankedFlatToRightBankedUp25: - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: - case TrackElemType::RightBankedDown25ToRightBankedFlat: - case TrackElemType::FlatToLeftBankedUp25: - case TrackElemType::FlatToRightBankedUp25: - case TrackElemType::LeftBankedDown25ToFlat: - case TrackElemType::RightBankedDown25ToFlat: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::flatToUp25: // + case TrackElemType::down25ToFlat: // + case TrackElemType::leftBankToUp25: + case TrackElemType::rightBankToUp25: + case TrackElemType::down25ToLeftBank: + case TrackElemType::down25ToRightBank: + case TrackElemType::flatToUp25Covered: + case TrackElemType::down25ToFlatCovered: + case TrackElemType::leftBankedFlatToLeftBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: + case TrackElemType::flatToLeftBankedUp25: + case TrackElemType::flatToRightBankedUp25: + case TrackElemType::leftBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: return EvaluatorConst<0>; - case TrackElemType::Up25ToFlat: // - case TrackElemType::FlatToDown25: // - case TrackElemType::Up25ToLeftBank: - case TrackElemType::Up25ToRightBank: - case TrackElemType::LeftBankToDown25: - case TrackElemType::RightBankToDown25: - case TrackElemType::Up25ToFlatCovered: - case TrackElemType::FlatToDown25Covered: - case TrackElemType::CableLiftHill: - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: - case TrackElemType::RightBankedUp25ToRightBankedFlat: - case TrackElemType::LeftBankedFlatToLeftBankedDown25: - case TrackElemType::RightBankedFlatToRightBankedDown25: - case TrackElemType::LeftBankedUp25ToFlat: - case TrackElemType::RightBankedUp25ToFlat: - case TrackElemType::FlatToLeftBankedDown25: - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::up25ToFlat: // + case TrackElemType::flatToDown25: // + case TrackElemType::up25ToLeftBank: + case TrackElemType::up25ToRightBank: + case TrackElemType::leftBankToDown25: + case TrackElemType::rightBankToDown25: + case TrackElemType::up25ToFlatCovered: + case TrackElemType::flatToDown25Covered: + case TrackElemType::cableLiftHill: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: + case TrackElemType::leftBankedFlatToLeftBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: + case TrackElemType::leftBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: + case TrackElemType::flatToLeftBankedDown25: + case TrackElemType::flatToRightBankedDown25: return EvaluatorConst<0>; - case TrackElemType::Up25ToUp60: // - case TrackElemType::Down60ToDown25: // - case TrackElemType::Up25ToUp60Covered: - case TrackElemType::Down60ToDown25Covered: + case TrackElemType::up25ToUp60: // + case TrackElemType::down60ToDown25: // + case TrackElemType::up25ToUp60Covered: + case TrackElemType::down60ToDown25Covered: return EvaluatorConst<0>; - case TrackElemType::Up60ToUp25: // - case TrackElemType::Down25ToDown60: // - case TrackElemType::Up60ToUp25Covered: - case TrackElemType::Down25ToDown60Covered: + case TrackElemType::up60ToUp25: // + case TrackElemType::down25ToDown60: // + case TrackElemType::up60ToUp25Covered: + case TrackElemType::down25ToDown60Covered: return EvaluatorConst<0>; - case TrackElemType::LeftQuarterTurn5Tiles: // - case TrackElemType::LeftQuarterTurn5TilesUp25: - case TrackElemType::LeftQuarterTurn5TilesDown25: - case TrackElemType::LeftTwistDownToUp: - case TrackElemType::LeftTwistUpToDown: - case TrackElemType::LeftQuarterTurn5TilesCovered: - case TrackElemType::LeftQuarterHelixLargeUp: - case TrackElemType::LeftQuarterHelixLargeDown: - case TrackElemType::LeftFlyerTwistUp: - case TrackElemType::LeftFlyerTwistDown: - case TrackElemType::LeftHeartLineRoll: + case TrackElemType::leftQuarterTurn5Tiles: // + case TrackElemType::leftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesDown25: + case TrackElemType::leftTwistDownToUp: + case TrackElemType::leftTwistUpToDown: + case TrackElemType::leftQuarterTurn5TilesCovered: + case TrackElemType::leftQuarterHelixLargeUp: + case TrackElemType::leftQuarterHelixLargeDown: + case TrackElemType::leftFlyerTwistUp: + case TrackElemType::leftFlyerTwistDown: + case TrackElemType::leftHeartLineRoll: return EvaluatorConst<98>; - case TrackElemType::RightQuarterTurn5Tiles: // - case TrackElemType::RightQuarterTurn5TilesUp25: - case TrackElemType::RightQuarterTurn5TilesDown25: - case TrackElemType::RightTwistDownToUp: - case TrackElemType::RightTwistUpToDown: - case TrackElemType::RightQuarterTurn5TilesCovered: - case TrackElemType::RightQuarterHelixLargeUp: - case TrackElemType::RightQuarterHelixLargeDown: - case TrackElemType::RightFlyerTwistUp: - case TrackElemType::RightFlyerTwistDown: - case TrackElemType::RightHeartLineRoll: + case TrackElemType::rightQuarterTurn5Tiles: // + case TrackElemType::rightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesDown25: + case TrackElemType::rightTwistDownToUp: + case TrackElemType::rightTwistUpToDown: + case TrackElemType::rightQuarterTurn5TilesCovered: + case TrackElemType::rightQuarterHelixLargeUp: + case TrackElemType::rightQuarterHelixLargeDown: + case TrackElemType::rightFlyerTwistUp: + case TrackElemType::rightFlyerTwistDown: + case TrackElemType::rightHeartLineRoll: return EvaluatorConst<-98>; - case TrackElemType::BankedLeftQuarterTurn5Tiles: - case TrackElemType::LeftHalfBankedHelixUpLarge: - case TrackElemType::LeftHalfBankedHelixDownLarge: - case TrackElemType::LeftQuarterBankedHelixLargeUp: - case TrackElemType::LeftQuarterBankedHelixLargeDown: + case TrackElemType::bankedLeftQuarterTurn5Tiles: + case TrackElemType::leftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: + case TrackElemType::leftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeDown: return EvaluatorConst<160>; - case TrackElemType::BankedRightQuarterTurn5Tiles: - case TrackElemType::RightHalfBankedHelixUpLarge: - case TrackElemType::RightHalfBankedHelixDownLarge: - case TrackElemType::RightQuarterBankedHelixLargeUp: - case TrackElemType::RightQuarterBankedHelixLargeDown: + case TrackElemType::bankedRightQuarterTurn5Tiles: + case TrackElemType::rightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: + case TrackElemType::rightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeDown: return EvaluatorConst<-160>; - case TrackElemType::SBendLeft: - case TrackElemType::SBendLeftCovered: + case TrackElemType::sBendLeft: + case TrackElemType::sBendLeftCovered: return EvaluatorSBendLeft; - case TrackElemType::SBendRight: - case TrackElemType::SBendRightCovered: + case TrackElemType::sBendRight: + case TrackElemType::sBendRightCovered: return EvaluatorSBendRight; - case TrackElemType::LeftVerticalLoop: - case TrackElemType::RightVerticalLoop: + case TrackElemType::leftVerticalLoop: + case TrackElemType::rightVerticalLoop: return EvaluatorConst<0>; - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25: - case TrackElemType::LeftQuarterTurn3TilesCovered: - case TrackElemType::LeftCurvedLiftHill: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesCovered: + case TrackElemType::leftCurvedLiftHill: return EvaluatorConst<59>; - case TrackElemType::RightQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesDown25: - case TrackElemType::RightQuarterTurn3TilesCovered: - case TrackElemType::RightCurvedLiftHill: + case TrackElemType::rightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesCovered: + case TrackElemType::rightCurvedLiftHill: return EvaluatorConst<-59>; - case TrackElemType::LeftBankedQuarterTurn3Tiles: - case TrackElemType::LeftHalfBankedHelixUpSmall: - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftBankedQuarterTurn3Tiles: + case TrackElemType::leftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return EvaluatorConst<100>; - case TrackElemType::RightBankedQuarterTurn3Tiles: - case TrackElemType::RightHalfBankedHelixUpSmall: - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightBankedQuarterTurn3Tiles: + case TrackElemType::rightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return EvaluatorConst<-100>; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return EvaluatorConst<45>; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return EvaluatorConst<-45>; - case TrackElemType::HalfLoopUp: - case TrackElemType::FlyerHalfLoopUninvertedUp: - case TrackElemType::FlyerHalfLoopInvertedUp: + case TrackElemType::halfLoopUp: + case TrackElemType::flyerHalfLoopUninvertedUp: + case TrackElemType::flyerHalfLoopInvertedUp: return EvaluatorConst<0>; - case TrackElemType::HalfLoopDown: - case TrackElemType::FlyerHalfLoopInvertedDown: - case TrackElemType::FlyerHalfLoopUninvertedDown: + case TrackElemType::halfLoopDown: + case TrackElemType::flyerHalfLoopInvertedDown: + case TrackElemType::flyerHalfLoopUninvertedDown: return EvaluatorConst<0>; - case TrackElemType::LeftLargeCorkscrewUp: - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewDown: return EvaluatorConst<117>; - case TrackElemType::RightLargeCorkscrewUp: - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewDown: return EvaluatorConst<-117>; - case TrackElemType::LeftCorkscrewUp: - case TrackElemType::RightCorkscrewDown: - case TrackElemType::LeftFlyerCorkscrewUp: - case TrackElemType::RightFlyerCorkscrewDown: + case TrackElemType::leftCorkscrewUp: + case TrackElemType::rightCorkscrewDown: + case TrackElemType::leftFlyerCorkscrewUp: + case TrackElemType::rightFlyerCorkscrewDown: return EvaluatorConst<70>; - case TrackElemType::RightCorkscrewUp: - case TrackElemType::LeftCorkscrewDown: - case TrackElemType::RightFlyerCorkscrewUp: - case TrackElemType::LeftFlyerCorkscrewDown: + case TrackElemType::rightCorkscrewUp: + case TrackElemType::leftCorkscrewDown: + case TrackElemType::rightFlyerCorkscrewUp: + case TrackElemType::leftFlyerCorkscrewDown: return EvaluatorConst<-70>; - case TrackElemType::FlatToUp60: - case TrackElemType::Down60ToFlat: + case TrackElemType::flatToUp60: + case TrackElemType::down60ToFlat: return EvaluatorConst<0>; - case TrackElemType::Up60ToFlat: - case TrackElemType::FlatToDown60: - case TrackElemType::BrakeForDrop: + case TrackElemType::up60ToFlat: + case TrackElemType::flatToDown60: + case TrackElemType::brakeForDrop: return EvaluatorConst<0>; - case TrackElemType::LeftQuarterTurn1TileUp60: - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileDown60: return EvaluatorConst<88>; - case TrackElemType::RightQuarterTurn1TileUp60: - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileDown60: return EvaluatorConst<-88>; - case TrackElemType::Watersplash: + case TrackElemType::watersplash: return EvaluatorConst<0>; - case TrackElemType::FlatToUp60LongBase: - case TrackElemType::Down60ToFlatLongBase: - case TrackElemType::DiagFlatToUp60LongBase: - case TrackElemType::DiagDown60ToFlatLongBase: + case TrackElemType::flatToUp60LongBase: + case TrackElemType::down60ToFlatLongBase: + case TrackElemType::diagFlatToUp60LongBase: + case TrackElemType::diagDown60ToFlatLongBase: return EvaluatorConst<0>; - case TrackElemType::Up60ToFlatLongBase: - case TrackElemType::FlatToDown60LongBase: - case TrackElemType::DiagUp60ToFlatLongBase: - case TrackElemType::DiagFlatToDown60LongBase: + case TrackElemType::up60ToFlatLongBase: + case TrackElemType::flatToDown60LongBase: + case TrackElemType::diagUp60ToFlatLongBase: + case TrackElemType::diagFlatToDown60LongBase: return EvaluatorConst<0>; - case TrackElemType::ReverseFreefallSlope: - case TrackElemType::AirThrustVerticalDownToLevel: + case TrackElemType::reverseFreefallSlope: + case TrackElemType::airThrustVerticalDownToLevel: return EvaluatorConst<0>; - case TrackElemType::Up60ToUp90: - case TrackElemType::Down90ToDown60: + case TrackElemType::up60ToUp90: + case TrackElemType::down90ToDown60: return EvaluatorConst<0>; - case TrackElemType::Up90ToUp60: - case TrackElemType::Down60ToDown90: + case TrackElemType::up90ToUp60: + case TrackElemType::down60ToDown90: return EvaluatorConst<0>; - case TrackElemType::LeftEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: + case TrackElemType::leftEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: return EvaluatorConst<137>; - case TrackElemType::RightEighthToDiag: - case TrackElemType::RightEighthToOrthogonal: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalDown25: + case TrackElemType::rightEighthToDiag: + case TrackElemType::rightEighthToOrthogonal: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalDown25: return EvaluatorConst<-137>; - case TrackElemType::LeftEighthBankToDiag: - case TrackElemType::LeftEighthBankToOrthogonal: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToDiag: + case TrackElemType::leftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return EvaluatorConst<200>; - case TrackElemType::RightEighthBankToDiag: - case TrackElemType::RightEighthBankToOrthogonal: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToDiag: + case TrackElemType::rightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return EvaluatorConst<-200>; - case TrackElemType::DiagFlatToUp25: - case TrackElemType::DiagDown25ToFlat: - case TrackElemType::DiagLeftBankToUp25: - case TrackElemType::DiagRightBankToUp25: - case TrackElemType::DiagDown25ToLeftBank: - case TrackElemType::DiagDown25ToRightBank: + case TrackElemType::diagFlatToUp25: + case TrackElemType::diagDown25ToFlat: + case TrackElemType::diagLeftBankToUp25: + case TrackElemType::diagRightBankToUp25: + case TrackElemType::diagDown25ToLeftBank: + case TrackElemType::diagDown25ToRightBank: return EvaluatorConst<0>; - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagFlatToDown25: - case TrackElemType::DiagUp25ToLeftBank: - case TrackElemType::DiagUp25ToRightBank: - case TrackElemType::DiagLeftBankToDown25: - case TrackElemType::DiagRightBankToDown25: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagFlatToDown25: + case TrackElemType::diagUp25ToLeftBank: + case TrackElemType::diagUp25ToRightBank: + case TrackElemType::diagLeftBankToDown25: + case TrackElemType::diagRightBankToDown25: return EvaluatorConst<0>; - case TrackElemType::DiagUp25ToUp60: - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagUp25ToUp60: + case TrackElemType::diagDown60ToDown25: return EvaluatorConst<0>; - case TrackElemType::DiagUp60ToUp25: - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagUp60ToUp25: + case TrackElemType::diagDown25ToDown60: return EvaluatorConst<0>; - case TrackElemType::DiagFlatToUp60: - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagFlatToUp60: + case TrackElemType::diagDown60ToFlat: return EvaluatorConst<0>; - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::diagFlatToDown60: return EvaluatorConst<0>; - case TrackElemType::LeftBarrelRollUpToDown: - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollDownToUp: return EvaluatorConst<115>; - case TrackElemType::RightBarrelRollUpToDown: - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollDownToUp: return EvaluatorConst<-115>; - case TrackElemType::LeftZeroGRollUp: + case TrackElemType::leftZeroGRollUp: return EvaluatorZeroGRollUpLeft; - case TrackElemType::RightZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return EvaluatorZeroGRollUpRight; - case TrackElemType::LeftZeroGRollDown: + case TrackElemType::leftZeroGRollDown: return EvaluatorZeroGRollDownLeft; - case TrackElemType::RightZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return EvaluatorZeroGRollDownRight; - case TrackElemType::LeftLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: return EvaluatorLargeZeroGRollUpLeft; - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return EvaluatorLargeZeroGRollUpRight; - case TrackElemType::LeftLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: return EvaluatorLargeZeroGRollDownLeft; - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return EvaluatorLargeZeroGRollDownRight; - case TrackElemType::LeftEighthDiveLoopUpToOrthogonal: + case TrackElemType::leftEighthDiveLoopUpToOrthogonal: return EvaluatorDiveLoopUpLeft; - case TrackElemType::RightEighthDiveLoopUpToOrthogonal: + case TrackElemType::rightEighthDiveLoopUpToOrthogonal: return EvaluatorDiveLoopUpRight; - case TrackElemType::LeftEighthDiveLoopDownToDiag: + case TrackElemType::leftEighthDiveLoopDownToDiag: return EvaluatorDiveLoopDownLeft; - case TrackElemType::RightEighthDiveLoopDownToDiag: + case TrackElemType::rightEighthDiveLoopDownToDiag: return EvaluatorDiveLoopDownRight; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: return EvaluatorConst<90>; - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: return EvaluatorConst<-90>; - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: return EvaluatorConst<90>; - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return EvaluatorConst<-90>; - case TrackElemType::LeftLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopUp: + case TrackElemType::leftLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: return EvaluatorConst<0>; - case TrackElemType::LeftLargeHalfLoopDown: - case TrackElemType::RightLargeHalfLoopDown: + case TrackElemType::leftLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: return EvaluatorConst<0>; - case TrackElemType::HeartLineTransferUp: + case TrackElemType::heartLineTransferUp: return EvaluatorConst<0>; - case TrackElemType::HeartLineTransferDown: + case TrackElemType::heartLineTransferDown: return EvaluatorConst<0>; - case TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop: - case TrackElemType::InvertedFlatToDown90QuarterLoop: - case TrackElemType::MultiDimFlatToDown90QuarterLoop: + case TrackElemType::multiDimInvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: + case TrackElemType::multiDimFlatToDown90QuarterLoop: return EvaluatorConst<0>; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: - case TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop: - case TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: + case TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop: + case TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop: return EvaluatorConst<0>; - case TrackElemType::AirThrustTopCap: + case TrackElemType::airThrustTopCap: return EvaluatorConst<0>; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return EvaluatorConst<100>; - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return EvaluatorConst<-100>; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return EvaluatorConst<160>; - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return EvaluatorConst<-160>; default: return EvaluatorConst<0>; @@ -3724,407 +3724,407 @@ namespace OpenRCT2::TrackMetaData { switch (type) { - case TrackElemType::Flat: - case TrackElemType::EndStation: - case TrackElemType::BeginStation: - case TrackElemType::MiddleStation: - case TrackElemType::Up25: - case TrackElemType::Up60: // - case TrackElemType::Down25: - case TrackElemType::Down60: // - case TrackElemType::FlatToLeftBank: - case TrackElemType::FlatToRightBank: - case TrackElemType::LeftBankToFlat: - case TrackElemType::RightBankToFlat: // - case TrackElemType::LeftBank: - case TrackElemType::RightBank: - case TrackElemType::TowerBase: - case TrackElemType::TowerSection: - case TrackElemType::FlatCovered: - case TrackElemType::Up25Covered: - case TrackElemType::Up60Covered: - case TrackElemType::Down25Covered: - case TrackElemType::Down60Covered: - case TrackElemType::Brakes: - case TrackElemType::RotationControlToggle: - case TrackElemType::Maze: - case TrackElemType::Up25LeftBanked: - case TrackElemType::Up25RightBanked: - case TrackElemType::Waterfall: - case TrackElemType::Rapids: - case TrackElemType::OnRidePhoto: - case TrackElemType::Down25LeftBanked: - case TrackElemType::Down25RightBanked: - case TrackElemType::Whirlpool: - case TrackElemType::ReverseFreefallVertical: - case TrackElemType::Up90: - case TrackElemType::Down90: - case TrackElemType::DiagFlat: - case TrackElemType::DiagUp25: - case TrackElemType::DiagUp60: - case TrackElemType::DiagDown25: - case TrackElemType::DiagDown60: - case TrackElemType::DiagFlatToLeftBank: - case TrackElemType::DiagFlatToRightBank: - case TrackElemType::DiagLeftBankToFlat: - case TrackElemType::DiagRightBankToFlat: - case TrackElemType::DiagLeftBank: - case TrackElemType::DiagRightBank: - case TrackElemType::LogFlumeReverser: - case TrackElemType::SpinningTunnel: - case TrackElemType::PoweredLift: - case TrackElemType::MinigolfHoleA: - case TrackElemType::MinigolfHoleB: - case TrackElemType::MinigolfHoleC: - case TrackElemType::MinigolfHoleD: - case TrackElemType::MinigolfHoleE: - case TrackElemType::LeftReverser: - case TrackElemType::RightReverser: - case TrackElemType::AirThrustVerticalDown: - case TrackElemType::BlockBrakes: - case TrackElemType::Up25ToLeftBankedUp25: - case TrackElemType::Up25ToRightBankedUp25: - case TrackElemType::LeftBankedUp25ToUp25: - case TrackElemType::RightBankedUp25ToUp25: - case TrackElemType::Down25ToLeftBankedDown25: - case TrackElemType::Down25ToRightBankedDown25: - case TrackElemType::LeftBankedDown25ToDown25: - case TrackElemType::RightBankedDown25ToDown25: - case TrackElemType::LeftQuarterTurn1TileUp90: - case TrackElemType::RightQuarterTurn1TileUp90: - case TrackElemType::LeftQuarterTurn1TileDown90: - case TrackElemType::RightQuarterTurn1TileDown90: - case TrackElemType::LeftEighthToDiagUp25: - case TrackElemType::RightEighthToDiagUp25: - case TrackElemType::LeftEighthToDiagDown25: - case TrackElemType::RightEighthToDiagDown25: - case TrackElemType::LeftEighthToOrthogonalUp25: - case TrackElemType::RightEighthToOrthogonalUp25: - case TrackElemType::LeftEighthToOrthogonalDown25: - case TrackElemType::RightEighthToOrthogonalDown25: - case TrackElemType::DiagUp25ToLeftBankedUp25: - case TrackElemType::DiagUp25ToRightBankedUp25: - case TrackElemType::DiagLeftBankedUp25ToUp25: - case TrackElemType::DiagRightBankedUp25ToUp25: - case TrackElemType::DiagDown25ToLeftBankedDown25: - case TrackElemType::DiagDown25ToRightBankedDown25: - case TrackElemType::DiagLeftBankedDown25ToDown25: - case TrackElemType::DiagRightBankedDown25ToDown25: - case TrackElemType::DiagUp25LeftBanked: - case TrackElemType::DiagUp25RightBanked: - case TrackElemType::DiagDown25LeftBanked: - case TrackElemType::DiagDown25RightBanked: + case TrackElemType::flat: + case TrackElemType::endStation: + case TrackElemType::beginStation: + case TrackElemType::middleStation: + case TrackElemType::up25: + case TrackElemType::up60: // + case TrackElemType::down25: + case TrackElemType::down60: // + case TrackElemType::flatToLeftBank: + case TrackElemType::flatToRightBank: + case TrackElemType::leftBankToFlat: + case TrackElemType::rightBankToFlat: // + case TrackElemType::leftBank: + case TrackElemType::rightBank: + case TrackElemType::towerBase: + case TrackElemType::towerSection: + case TrackElemType::flatCovered: + case TrackElemType::up25Covered: + case TrackElemType::up60Covered: + case TrackElemType::down25Covered: + case TrackElemType::down60Covered: + case TrackElemType::brakes: + case TrackElemType::rotationControlToggle: + case TrackElemType::maze: + case TrackElemType::up25LeftBanked: + case TrackElemType::up25RightBanked: + case TrackElemType::waterfall: + case TrackElemType::rapids: + case TrackElemType::onRidePhoto: + case TrackElemType::down25LeftBanked: + case TrackElemType::down25RightBanked: + case TrackElemType::whirlpool: + case TrackElemType::reverseFreefallVertical: + case TrackElemType::up90: + case TrackElemType::down90: + case TrackElemType::diagFlat: + case TrackElemType::diagUp25: + case TrackElemType::diagUp60: + case TrackElemType::diagDown25: + case TrackElemType::diagDown60: + case TrackElemType::diagFlatToLeftBank: + case TrackElemType::diagFlatToRightBank: + case TrackElemType::diagLeftBankToFlat: + case TrackElemType::diagRightBankToFlat: + case TrackElemType::diagLeftBank: + case TrackElemType::diagRightBank: + case TrackElemType::logFlumeReverser: + case TrackElemType::spinningTunnel: + case TrackElemType::poweredLift: + case TrackElemType::minigolfHoleA: + case TrackElemType::minigolfHoleB: + case TrackElemType::minigolfHoleC: + case TrackElemType::minigolfHoleD: + case TrackElemType::minigolfHoleE: + case TrackElemType::leftReverser: + case TrackElemType::rightReverser: + case TrackElemType::airThrustVerticalDown: + case TrackElemType::blockBrakes: + case TrackElemType::up25ToLeftBankedUp25: + case TrackElemType::up25ToRightBankedUp25: + case TrackElemType::leftBankedUp25ToUp25: + case TrackElemType::rightBankedUp25ToUp25: + case TrackElemType::down25ToLeftBankedDown25: + case TrackElemType::down25ToRightBankedDown25: + case TrackElemType::leftBankedDown25ToDown25: + case TrackElemType::rightBankedDown25ToDown25: + case TrackElemType::leftQuarterTurn1TileUp90: + case TrackElemType::rightQuarterTurn1TileUp90: + case TrackElemType::leftQuarterTurn1TileDown90: + case TrackElemType::rightQuarterTurn1TileDown90: + case TrackElemType::leftEighthToDiagUp25: + case TrackElemType::rightEighthToDiagUp25: + case TrackElemType::leftEighthToDiagDown25: + case TrackElemType::rightEighthToDiagDown25: + case TrackElemType::leftEighthToOrthogonalUp25: + case TrackElemType::rightEighthToOrthogonalUp25: + case TrackElemType::leftEighthToOrthogonalDown25: + case TrackElemType::rightEighthToOrthogonalDown25: + case TrackElemType::diagUp25ToLeftBankedUp25: + case TrackElemType::diagUp25ToRightBankedUp25: + case TrackElemType::diagLeftBankedUp25ToUp25: + case TrackElemType::diagRightBankedUp25ToUp25: + case TrackElemType::diagDown25ToLeftBankedDown25: + case TrackElemType::diagDown25ToRightBankedDown25: + case TrackElemType::diagLeftBankedDown25ToDown25: + case TrackElemType::diagRightBankedDown25ToDown25: + case TrackElemType::diagUp25LeftBanked: + case TrackElemType::diagUp25RightBanked: + case TrackElemType::diagDown25LeftBanked: + case TrackElemType::diagDown25RightBanked: return EvaluatorConst<0>; - case TrackElemType::FlatToUp25: // - case TrackElemType::Down25ToFlat: // - case TrackElemType::LeftBankToUp25: - case TrackElemType::RightBankToUp25: - case TrackElemType::Down25ToLeftBank: - case TrackElemType::Down25ToRightBank: - case TrackElemType::FlatToUp25Covered: - case TrackElemType::Down25ToFlatCovered: - case TrackElemType::LeftBankedFlatToLeftBankedUp25: - case TrackElemType::RightBankedFlatToRightBankedUp25: - case TrackElemType::LeftBankedDown25ToLeftBankedFlat: - case TrackElemType::RightBankedDown25ToRightBankedFlat: - case TrackElemType::FlatToLeftBankedUp25: - case TrackElemType::FlatToRightBankedUp25: - case TrackElemType::LeftBankedDown25ToFlat: - case TrackElemType::RightBankedDown25ToFlat: + case TrackElemType::flatToUp25: // + case TrackElemType::down25ToFlat: // + case TrackElemType::leftBankToUp25: + case TrackElemType::rightBankToUp25: + case TrackElemType::down25ToLeftBank: + case TrackElemType::down25ToRightBank: + case TrackElemType::flatToUp25Covered: + case TrackElemType::down25ToFlatCovered: + case TrackElemType::leftBankedFlatToLeftBankedUp25: + case TrackElemType::rightBankedFlatToRightBankedUp25: + case TrackElemType::leftBankedDown25ToLeftBankedFlat: + case TrackElemType::rightBankedDown25ToRightBankedFlat: + case TrackElemType::flatToLeftBankedUp25: + case TrackElemType::flatToRightBankedUp25: + case TrackElemType::leftBankedDown25ToFlat: + case TrackElemType::rightBankedDown25ToFlat: return EvaluatorConst<103>; - case TrackElemType::Up25ToFlat: // - case TrackElemType::FlatToDown25: // - case TrackElemType::Up25ToLeftBank: - case TrackElemType::Up25ToRightBank: - case TrackElemType::LeftBankToDown25: - case TrackElemType::RightBankToDown25: - case TrackElemType::Up25ToFlatCovered: - case TrackElemType::FlatToDown25Covered: - case TrackElemType::CableLiftHill: - case TrackElemType::LeftBankedUp25ToLeftBankedFlat: - case TrackElemType::RightBankedUp25ToRightBankedFlat: - case TrackElemType::LeftBankedFlatToLeftBankedDown25: - case TrackElemType::RightBankedFlatToRightBankedDown25: - case TrackElemType::LeftBankedUp25ToFlat: - case TrackElemType::RightBankedUp25ToFlat: - case TrackElemType::FlatToLeftBankedDown25: - case TrackElemType::FlatToRightBankedDown25: + case TrackElemType::up25ToFlat: // + case TrackElemType::flatToDown25: // + case TrackElemType::up25ToLeftBank: + case TrackElemType::up25ToRightBank: + case TrackElemType::leftBankToDown25: + case TrackElemType::rightBankToDown25: + case TrackElemType::up25ToFlatCovered: + case TrackElemType::flatToDown25Covered: + case TrackElemType::cableLiftHill: + case TrackElemType::leftBankedUp25ToLeftBankedFlat: + case TrackElemType::rightBankedUp25ToRightBankedFlat: + case TrackElemType::leftBankedFlatToLeftBankedDown25: + case TrackElemType::rightBankedFlatToRightBankedDown25: + case TrackElemType::leftBankedUp25ToFlat: + case TrackElemType::rightBankedUp25ToFlat: + case TrackElemType::flatToLeftBankedDown25: + case TrackElemType::flatToRightBankedDown25: return EvaluatorConst<-103>; - case TrackElemType::Up25ToUp60: // - case TrackElemType::Down60ToDown25: // - case TrackElemType::Up25ToUp60Covered: - case TrackElemType::Down60ToDown25Covered: + case TrackElemType::up25ToUp60: // + case TrackElemType::down60ToDown25: // + case TrackElemType::up25ToUp60Covered: + case TrackElemType::down60ToDown25Covered: return EvaluatorConst<82>; - case TrackElemType::Up60ToUp25: // - case TrackElemType::Down25ToDown60: // - case TrackElemType::Up60ToUp25Covered: - case TrackElemType::Down25ToDown60Covered: + case TrackElemType::up60ToUp25: // + case TrackElemType::down25ToDown60: // + case TrackElemType::up60ToUp25Covered: + case TrackElemType::down25ToDown60Covered: return EvaluatorConst<-82>; - case TrackElemType::LeftQuarterTurn5Tiles: // - case TrackElemType::LeftQuarterTurn5TilesUp25: - case TrackElemType::LeftQuarterTurn5TilesDown25: - case TrackElemType::LeftTwistDownToUp: - case TrackElemType::LeftTwistUpToDown: - case TrackElemType::LeftQuarterTurn5TilesCovered: - case TrackElemType::LeftQuarterHelixLargeUp: - case TrackElemType::LeftQuarterHelixLargeDown: - case TrackElemType::LeftFlyerTwistUp: - case TrackElemType::LeftFlyerTwistDown: - case TrackElemType::LeftHeartLineRoll: + case TrackElemType::leftQuarterTurn5Tiles: // + case TrackElemType::leftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesDown25: + case TrackElemType::leftTwistDownToUp: + case TrackElemType::leftTwistUpToDown: + case TrackElemType::leftQuarterTurn5TilesCovered: + case TrackElemType::leftQuarterHelixLargeUp: + case TrackElemType::leftQuarterHelixLargeDown: + case TrackElemType::leftFlyerTwistUp: + case TrackElemType::leftFlyerTwistDown: + case TrackElemType::leftHeartLineRoll: return EvaluatorConst<0>; - case TrackElemType::RightQuarterTurn5Tiles: // - case TrackElemType::RightQuarterTurn5TilesUp25: - case TrackElemType::RightQuarterTurn5TilesDown25: - case TrackElemType::RightTwistDownToUp: - case TrackElemType::RightTwistUpToDown: - case TrackElemType::RightQuarterTurn5TilesCovered: - case TrackElemType::RightQuarterHelixLargeUp: - case TrackElemType::RightQuarterHelixLargeDown: - case TrackElemType::RightFlyerTwistUp: - case TrackElemType::RightFlyerTwistDown: - case TrackElemType::RightHeartLineRoll: + case TrackElemType::rightQuarterTurn5Tiles: // + case TrackElemType::rightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesDown25: + case TrackElemType::rightTwistDownToUp: + case TrackElemType::rightTwistUpToDown: + case TrackElemType::rightQuarterTurn5TilesCovered: + case TrackElemType::rightQuarterHelixLargeUp: + case TrackElemType::rightQuarterHelixLargeDown: + case TrackElemType::rightFlyerTwistUp: + case TrackElemType::rightFlyerTwistDown: + case TrackElemType::rightHeartLineRoll: return EvaluatorConst<0>; - case TrackElemType::BankedLeftQuarterTurn5Tiles: - case TrackElemType::LeftHalfBankedHelixUpLarge: - case TrackElemType::LeftHalfBankedHelixDownLarge: - case TrackElemType::LeftQuarterBankedHelixLargeUp: - case TrackElemType::LeftQuarterBankedHelixLargeDown: + case TrackElemType::bankedLeftQuarterTurn5Tiles: + case TrackElemType::leftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: + case TrackElemType::leftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeDown: return EvaluatorConst<200>; - case TrackElemType::BankedRightQuarterTurn5Tiles: - case TrackElemType::RightHalfBankedHelixUpLarge: - case TrackElemType::RightHalfBankedHelixDownLarge: - case TrackElemType::RightQuarterBankedHelixLargeUp: - case TrackElemType::RightQuarterBankedHelixLargeDown: + case TrackElemType::bankedRightQuarterTurn5Tiles: + case TrackElemType::rightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: + case TrackElemType::rightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeDown: return EvaluatorConst<200>; - case TrackElemType::SBendLeft: - case TrackElemType::SBendLeftCovered: + case TrackElemType::sBendLeft: + case TrackElemType::sBendLeftCovered: return EvaluatorConst<0>; - case TrackElemType::SBendRight: - case TrackElemType::SBendRightCovered: + case TrackElemType::sBendRight: + case TrackElemType::sBendRightCovered: return EvaluatorConst<0>; - case TrackElemType::LeftVerticalLoop: - case TrackElemType::RightVerticalLoop: + case TrackElemType::leftVerticalLoop: + case TrackElemType::rightVerticalLoop: return EvaluatorVerticalLoop; - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25: - case TrackElemType::LeftQuarterTurn3TilesCovered: - case TrackElemType::LeftCurvedLiftHill: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesCovered: + case TrackElemType::leftCurvedLiftHill: return EvaluatorConst<0>; - case TrackElemType::RightQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesDown25: - case TrackElemType::RightQuarterTurn3TilesCovered: - case TrackElemType::RightCurvedLiftHill: + case TrackElemType::rightQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesCovered: + case TrackElemType::rightCurvedLiftHill: return EvaluatorConst<0>; - case TrackElemType::LeftBankedQuarterTurn3Tiles: - case TrackElemType::LeftHalfBankedHelixUpSmall: - case TrackElemType::LeftHalfBankedHelixDownSmall: + case TrackElemType::leftBankedQuarterTurn3Tiles: + case TrackElemType::leftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: return EvaluatorConst<100>; - case TrackElemType::RightBankedQuarterTurn3Tiles: - case TrackElemType::RightHalfBankedHelixUpSmall: - case TrackElemType::RightHalfBankedHelixDownSmall: + case TrackElemType::rightBankedQuarterTurn3Tiles: + case TrackElemType::rightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: return EvaluatorConst<100>; - case TrackElemType::LeftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1Tile: return EvaluatorConst<0>; - case TrackElemType::RightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1Tile: return EvaluatorConst<0>; - case TrackElemType::HalfLoopUp: - case TrackElemType::FlyerHalfLoopUninvertedUp: - case TrackElemType::FlyerHalfLoopInvertedUp: + case TrackElemType::halfLoopUp: + case TrackElemType::flyerHalfLoopUninvertedUp: + case TrackElemType::flyerHalfLoopInvertedUp: return EvaluatorHalfLoopUp; - case TrackElemType::HalfLoopDown: - case TrackElemType::FlyerHalfLoopInvertedDown: - case TrackElemType::FlyerHalfLoopUninvertedDown: + case TrackElemType::halfLoopDown: + case TrackElemType::flyerHalfLoopInvertedDown: + case TrackElemType::flyerHalfLoopUninvertedDown: return EvaluatorHalfLoopDown; - case TrackElemType::LeftLargeCorkscrewUp: - case TrackElemType::RightLargeCorkscrewDown: + case TrackElemType::leftLargeCorkscrewUp: + case TrackElemType::rightLargeCorkscrewDown: return EvaluatorConst<89>; - case TrackElemType::RightLargeCorkscrewUp: - case TrackElemType::LeftLargeCorkscrewDown: + case TrackElemType::rightLargeCorkscrewUp: + case TrackElemType::leftLargeCorkscrewDown: return EvaluatorConst<89>; - case TrackElemType::LeftCorkscrewUp: - case TrackElemType::RightCorkscrewDown: - case TrackElemType::LeftFlyerCorkscrewUp: - case TrackElemType::RightFlyerCorkscrewDown: + case TrackElemType::leftCorkscrewUp: + case TrackElemType::rightCorkscrewDown: + case TrackElemType::leftFlyerCorkscrewUp: + case TrackElemType::rightFlyerCorkscrewDown: return EvaluatorConst<52>; - case TrackElemType::RightCorkscrewUp: - case TrackElemType::LeftCorkscrewDown: - case TrackElemType::RightFlyerCorkscrewUp: - case TrackElemType::LeftFlyerCorkscrewDown: + case TrackElemType::rightCorkscrewUp: + case TrackElemType::leftCorkscrewDown: + case TrackElemType::rightFlyerCorkscrewUp: + case TrackElemType::leftFlyerCorkscrewDown: return EvaluatorConst<52>; - case TrackElemType::FlatToUp60: - case TrackElemType::Down60ToFlat: + case TrackElemType::flatToUp60: + case TrackElemType::down60ToFlat: return EvaluatorConst<56>; - case TrackElemType::Up60ToFlat: - case TrackElemType::FlatToDown60: - case TrackElemType::BrakeForDrop: + case TrackElemType::up60ToFlat: + case TrackElemType::flatToDown60: + case TrackElemType::brakeForDrop: return EvaluatorConst<-56>; - case TrackElemType::LeftQuarterTurn1TileUp60: - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileDown60: return EvaluatorConst<0>; - case TrackElemType::RightQuarterTurn1TileUp60: - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileDown60: return EvaluatorConst<0>; - case TrackElemType::Watersplash: + case TrackElemType::watersplash: return EvaluatorWaterSplash; - case TrackElemType::FlatToUp60LongBase: - case TrackElemType::Down60ToFlatLongBase: + case TrackElemType::flatToUp60LongBase: + case TrackElemType::down60ToFlatLongBase: return EvaluatorConst<160>; - case TrackElemType::Up60ToFlatLongBase: - case TrackElemType::FlatToDown60LongBase: + case TrackElemType::up60ToFlatLongBase: + case TrackElemType::flatToDown60LongBase: return EvaluatorConst<-160>; - case TrackElemType::DiagFlatToUp60LongBase: - case TrackElemType::DiagDown60ToFlatLongBase: + case TrackElemType::diagFlatToUp60LongBase: + case TrackElemType::diagDown60ToFlatLongBase: return EvaluatorConst<180>; - case TrackElemType::DiagUp60ToFlatLongBase: - case TrackElemType::DiagFlatToDown60LongBase: + case TrackElemType::diagUp60ToFlatLongBase: + case TrackElemType::diagFlatToDown60LongBase: return EvaluatorConst<-180>; - case TrackElemType::ReverseFreefallSlope: - case TrackElemType::AirThrustVerticalDownToLevel: + case TrackElemType::reverseFreefallSlope: + case TrackElemType::airThrustVerticalDownToLevel: return EvaluatorConst<120>; - case TrackElemType::Up60ToUp90: - case TrackElemType::Down90ToDown60: + case TrackElemType::up60ToUp90: + case TrackElemType::down90ToDown60: return EvaluatorConst<110>; - case TrackElemType::Up90ToUp60: - case TrackElemType::Down60ToDown90: + case TrackElemType::up90ToUp60: + case TrackElemType::down60ToDown90: return EvaluatorConst<-110>; - case TrackElemType::LeftEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: + case TrackElemType::leftEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: return EvaluatorConst<0>; - case TrackElemType::RightEighthToDiag: - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::rightEighthToDiag: + case TrackElemType::rightEighthToOrthogonal: return EvaluatorConst<0>; - case TrackElemType::LeftEighthBankToDiag: - case TrackElemType::LeftEighthBankToOrthogonal: - case TrackElemType::LeftEighthBankToDiagUp25: - case TrackElemType::LeftEighthBankToDiagDown25: - case TrackElemType::LeftEighthBankToOrthogonalUp25: - case TrackElemType::LeftEighthBankToOrthogonalDown25: + case TrackElemType::leftEighthBankToDiag: + case TrackElemType::leftEighthBankToOrthogonal: + case TrackElemType::leftEighthBankToDiagUp25: + case TrackElemType::leftEighthBankToDiagDown25: + case TrackElemType::leftEighthBankToOrthogonalUp25: + case TrackElemType::leftEighthBankToOrthogonalDown25: return EvaluatorConst<270>; - case TrackElemType::RightEighthBankToDiag: - case TrackElemType::RightEighthBankToOrthogonal: - case TrackElemType::RightEighthBankToDiagUp25: - case TrackElemType::RightEighthBankToDiagDown25: - case TrackElemType::RightEighthBankToOrthogonalUp25: - case TrackElemType::RightEighthBankToOrthogonalDown25: + case TrackElemType::rightEighthBankToDiag: + case TrackElemType::rightEighthBankToOrthogonal: + case TrackElemType::rightEighthBankToDiagUp25: + case TrackElemType::rightEighthBankToDiagDown25: + case TrackElemType::rightEighthBankToOrthogonalUp25: + case TrackElemType::rightEighthBankToOrthogonalDown25: return EvaluatorConst<270>; - case TrackElemType::DiagFlatToUp25: - case TrackElemType::DiagDown25ToFlat: - case TrackElemType::DiagLeftBankToUp25: - case TrackElemType::DiagRightBankToUp25: - case TrackElemType::DiagDown25ToLeftBank: - case TrackElemType::DiagDown25ToRightBank: - case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: - case TrackElemType::DiagRightBankedFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: - case TrackElemType::DiagFlatToLeftBankedUp25: - case TrackElemType::DiagFlatToRightBankedUp25: - case TrackElemType::DiagLeftBankedDown25ToFlat: - case TrackElemType::DiagRightBankedDown25ToFlat: + case TrackElemType::diagFlatToUp25: + case TrackElemType::diagDown25ToFlat: + case TrackElemType::diagLeftBankToUp25: + case TrackElemType::diagRightBankToUp25: + case TrackElemType::diagDown25ToLeftBank: + case TrackElemType::diagDown25ToRightBank: + case TrackElemType::diagLeftBankedFlatToLeftBankedUp25: + case TrackElemType::diagRightBankedFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedDown25ToLeftBankedFlat: + case TrackElemType::diagRightBankedDown25ToRightBankedFlat: + case TrackElemType::diagFlatToLeftBankedUp25: + case TrackElemType::diagFlatToRightBankedUp25: + case TrackElemType::diagLeftBankedDown25ToFlat: + case TrackElemType::diagRightBankedDown25ToFlat: return EvaluatorConst<113>; - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagFlatToDown25: - case TrackElemType::DiagUp25ToLeftBank: - case TrackElemType::DiagUp25ToRightBank: - case TrackElemType::DiagLeftBankToDown25: - case TrackElemType::DiagRightBankToDown25: - case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: - case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: - case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: - case TrackElemType::DiagRightBankedFlatToRightBankedDown25: - case TrackElemType::DiagLeftBankedUp25ToFlat: - case TrackElemType::DiagRightBankedUp25ToFlat: - case TrackElemType::DiagFlatToLeftBankedDown25: - case TrackElemType::DiagFlatToRightBankedDown25: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagFlatToDown25: + case TrackElemType::diagUp25ToLeftBank: + case TrackElemType::diagUp25ToRightBank: + case TrackElemType::diagLeftBankToDown25: + case TrackElemType::diagRightBankToDown25: + case TrackElemType::diagLeftBankedUp25ToLeftBankedFlat: + case TrackElemType::diagRightBankedUp25ToRightBankedFlat: + case TrackElemType::diagLeftBankedFlatToLeftBankedDown25: + case TrackElemType::diagRightBankedFlatToRightBankedDown25: + case TrackElemType::diagLeftBankedUp25ToFlat: + case TrackElemType::diagRightBankedUp25ToFlat: + case TrackElemType::diagFlatToLeftBankedDown25: + case TrackElemType::diagFlatToRightBankedDown25: return EvaluatorConst<-113>; - case TrackElemType::DiagUp25ToUp60: - case TrackElemType::DiagDown60ToDown25: + case TrackElemType::diagUp25ToUp60: + case TrackElemType::diagDown60ToDown25: return EvaluatorConst<95>; - case TrackElemType::DiagUp60ToUp25: - case TrackElemType::DiagDown25ToDown60: + case TrackElemType::diagUp60ToUp25: + case TrackElemType::diagDown25ToDown60: return EvaluatorConst<-95>; - case TrackElemType::DiagFlatToUp60: - case TrackElemType::DiagDown60ToFlat: + case TrackElemType::diagFlatToUp60: + case TrackElemType::diagDown60ToFlat: return EvaluatorConst<60>; - case TrackElemType::DiagUp60ToFlat: - case TrackElemType::DiagFlatToDown60: + case TrackElemType::diagUp60ToFlat: + case TrackElemType::diagFlatToDown60: return EvaluatorConst<-60>; - case TrackElemType::LeftBarrelRollUpToDown: - case TrackElemType::LeftBarrelRollDownToUp: + case TrackElemType::leftBarrelRollUpToDown: + case TrackElemType::leftBarrelRollDownToUp: return EvaluatorConst<170>; - case TrackElemType::RightBarrelRollUpToDown: - case TrackElemType::RightBarrelRollDownToUp: + case TrackElemType::rightBarrelRollUpToDown: + case TrackElemType::rightBarrelRollDownToUp: return EvaluatorConst<170>; - case TrackElemType::LeftZeroGRollUp: - case TrackElemType::RightZeroGRollUp: + case TrackElemType::leftZeroGRollUp: + case TrackElemType::rightZeroGRollUp: return EvaluatorConst<250>; - case TrackElemType::LeftZeroGRollDown: - case TrackElemType::RightZeroGRollDown: + case TrackElemType::leftZeroGRollDown: + case TrackElemType::rightZeroGRollDown: return EvaluatorConst<250>; - case TrackElemType::LeftLargeZeroGRollUp: - case TrackElemType::RightLargeZeroGRollUp: + case TrackElemType::leftLargeZeroGRollUp: + case TrackElemType::rightLargeZeroGRollUp: return EvaluatorLargeZeroGRollUp; - case TrackElemType::LeftLargeZeroGRollDown: - case TrackElemType::RightLargeZeroGRollDown: + case TrackElemType::leftLargeZeroGRollDown: + case TrackElemType::rightLargeZeroGRollDown: return EvaluatorLargeZeroGRollDown; - case TrackElemType::LeftEighthDiveLoopUpToOrthogonal: - case TrackElemType::RightEighthDiveLoopUpToOrthogonal: + case TrackElemType::leftEighthDiveLoopUpToOrthogonal: + case TrackElemType::rightEighthDiveLoopUpToOrthogonal: return EvaluatorDiveLoopUp; - case TrackElemType::LeftEighthDiveLoopDownToDiag: - case TrackElemType::RightEighthDiveLoopDownToDiag: + case TrackElemType::leftEighthDiveLoopDownToDiag: + case TrackElemType::rightEighthDiveLoopDownToDiag: return EvaluatorDiveLoopDown; - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: return EvaluatorQuarterTurn3Tiles; - case TrackElemType::LeftMediumHalfLoopUp: - case TrackElemType::RightMediumHalfLoopUp: + case TrackElemType::leftMediumHalfLoopUp: + case TrackElemType::rightMediumHalfLoopUp: return EvaluatorMediumHalfLoopUp; - case TrackElemType::RightMediumHalfLoopDown: - case TrackElemType::LeftMediumHalfLoopDown: + case TrackElemType::rightMediumHalfLoopDown: + case TrackElemType::leftMediumHalfLoopDown: return EvaluatorMediumHalfLoopDown; - case TrackElemType::LeftLargeHalfLoopUp: - case TrackElemType::RightLargeHalfLoopUp: - case TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp: - case TrackElemType::RightFlyerLargeHalfLoopUninvertedUp: - case TrackElemType::LeftFlyerLargeHalfLoopInvertedUp: - case TrackElemType::RightFlyerLargeHalfLoopInvertedUp: + case TrackElemType::leftLargeHalfLoopUp: + case TrackElemType::rightLargeHalfLoopUp: + case TrackElemType::leftFlyerLargeHalfLoopUninvertedUp: + case TrackElemType::rightFlyerLargeHalfLoopUninvertedUp: + case TrackElemType::leftFlyerLargeHalfLoopInvertedUp: + case TrackElemType::rightFlyerLargeHalfLoopInvertedUp: return EvaluatorLargeHalfLoopUp; - case TrackElemType::LeftLargeHalfLoopDown: - case TrackElemType::RightLargeHalfLoopDown: - case TrackElemType::LeftFlyerLargeHalfLoopInvertedDown: - case TrackElemType::RightFlyerLargeHalfLoopInvertedDown: - case TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown: - case TrackElemType::RightFlyerLargeHalfLoopUninvertedDown: + case TrackElemType::leftLargeHalfLoopDown: + case TrackElemType::rightLargeHalfLoopDown: + case TrackElemType::leftFlyerLargeHalfLoopInvertedDown: + case TrackElemType::rightFlyerLargeHalfLoopInvertedDown: + case TrackElemType::leftFlyerLargeHalfLoopUninvertedDown: + case TrackElemType::rightFlyerLargeHalfLoopUninvertedDown: return EvaluatorLargeHalfLoopDown; - case TrackElemType::HeartLineTransferUp: + case TrackElemType::heartLineTransferUp: return EvaluatorHeartLineTransferUp; - case TrackElemType::HeartLineTransferDown: + case TrackElemType::heartLineTransferDown: return EvaluatorHeartLineTransferDown; - case TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop: - case TrackElemType::InvertedFlatToDown90QuarterLoop: - case TrackElemType::MultiDimFlatToDown90QuarterLoop: + case TrackElemType::multiDimInvertedFlatToDown90QuarterLoop: + case TrackElemType::invertedFlatToDown90QuarterLoop: + case TrackElemType::multiDimFlatToDown90QuarterLoop: return EvaluatorDown90QuarterLoop; - case TrackElemType::Up90ToInvertedFlatQuarterLoop: - case TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop: - case TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop: + case TrackElemType::up90ToInvertedFlatQuarterLoop: + case TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop: + case TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop: return EvaluatorUp90QuarterLoop; - case TrackElemType::AirThrustTopCap: + case TrackElemType::airThrustTopCap: return EvaluatorConst<-60>; - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: return EvaluatorConst<200>; - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: return EvaluatorConst<200>; - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: return EvaluatorConst<200>; - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: return EvaluatorConst<200>; default: return EvaluatorConst<0>; @@ -4244,13 +4244,13 @@ namespace OpenRCT2::TrackMetaData STR_HELIX_UP_RIGHT, // 107 STR_HELIX_DOWN_LEFT, // 108 STR_HELIX_DOWN_RIGHT, // 109 - kStringIdEmpty, // TrackElemType::Up25LeftBanked - kStringIdEmpty, // TrackElemType::Up25RighBanked + kStringIdEmpty, // TrackElemType::up25LeftBanked + kStringIdEmpty, // TrackElemType::up25RighBanked STR_WATERFALLS, // 112 STR_RAPIDS, // 113 STR_ON_RIDE_PHOTO_SECTION, // 114 - kStringIdEmpty, // TrackElemType::Down25LeftBanked - kStringIdEmpty, // TrackElemType::Down25RightBanked + kStringIdEmpty, // TrackElemType::down25LeftBanked + kStringIdEmpty, // TrackElemType::down25RightBanked STR_WATER_SPLASH, // 117 kStringIdEmpty, // 118 kStringIdEmpty, // 119 @@ -4391,101 +4391,101 @@ namespace OpenRCT2::TrackMetaData STR_QUARTER_LOOP, // 254 STR_QUARTER_LOOP, // 255 STR_SPINNING_CONTROL_TOGGLE_TRACK, // 256 - kStringIdEmpty, // TrackElemType::FlatTrack1x4A - STR_BASE_SIZE_2_X_2, // TrackElemType::FlatTrack2x2 - STR_BASE_SIZE_4_X_4, // TrackElemType::FlatTrack4x4 - STR_BASE_SIZE_2_X_4, // TrackElemType::FlatTrack2x4 - STR_BASE_SIZE_5_X_1, // TrackElemType::FlatTrack1x5 - kStringIdEmpty, // TrackElemType::FlatTrack1x1A - kStringIdEmpty, // TrackElemType::FlatTrack1x4B - kStringIdEmpty, // TrackElemType::FlatTrack1x1B - kStringIdEmpty, // TrackElemType::FlatTrack1x4C - kStringIdEmpty, // TrackElemType::FlatTrack3x3 - STR_LARGE_HALF_CORKSCREW_LEFT, // TrackElemType::LeftCorkscrewUp - STR_LARGE_HALF_CORKSCREW_RIGHT, // TrackElemType::RightCorkscrewUp - STR_LARGE_HALF_CORKSCREW_LEFT, // TrackElemType::LeftCorkscrewDown - STR_LARGE_HALF_CORKSCREW_RIGHT, // TrackElemType::RightCorkscrewDown - STR_MEDIUM_HALF_LOOP_LEFT, // TrackElemType::LeftMediumHalfLoopUp - STR_MEDIUM_HALF_LOOP_RIGHT, // TrackElemType::RightMediumHalfLoopUp - STR_MEDIUM_HALF_LOOP_LEFT, // TrackElemType::LeftMediumHalfLoopDown - STR_MEDIUM_HALF_LOOP_RIGHT, // TrackElemType::RightMediumHalfLoopDown - STR_ZERO_G_ROLL_LEFT, // TrackElemType::LeftZeroGRollUp - STR_ZERO_G_ROLL_RIGHT, // TrackElemType::RightZeroGRollUp - STR_ZERO_G_ROLL_LEFT, // TrackElemType::LeftZeroGRollDown - STR_ZERO_G_ROLL_RIGHT, // TrackElemType::RightZeroGRollDown - STR_LARGE_ZERO_G_ROLL_LEFT, // TrackElemType::LeftLargeZeroGRollUp - STR_LARGE_ZERO_G_ROLL_RIGHT, // TrackElemType::RightLargeZeroGRollUp - STR_LARGE_ZERO_G_ROLL_LEFT, // TrackElemType::LeftLargeZeroGRollDown - STR_LARGE_ZERO_G_ROLL_RIGHT, // TrackElemType::RightLargeZeroGRollDown - STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - STR_HALF_LOOP, // TrackElemType::FlyerHalfLoopInvertedUp - STR_HALF_LOOP, // TrackElemType::FlyerHalfLoopUninvertedDown - kStringIdEmpty, // TrackElemType::LeftEighthToDiagUp25 - kStringIdEmpty, // TrackElemType::RightEighthToDiagUp25 - kStringIdEmpty, // TrackElemType::LeftEighthToDiagDown25 - kStringIdEmpty, // TrackElemType::RightEighthToDiagDown25 - kStringIdEmpty, // TrackElemType::LeftEighthToOrthogonalUp25 - kStringIdEmpty, // TrackElemType::RightEighthToOrthogonalUp25 - kStringIdEmpty, // TrackElemType::LeftEighthToOrthogonalDown25 - kStringIdEmpty, // TrackElemType::RightEighthToOrthogonalDown25 - kStringIdEmpty, // TrackElemType::DiagUp25ToLeftBankedUp25 - kStringIdEmpty, // TrackElemType::DiagUp25ToRightBankedUp25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedUp25ToUp25 - kStringIdEmpty, // TrackElemType::DiagRightBankedUp25ToUp25 - kStringIdEmpty, // TrackElemType::DiagDown25ToLeftBankedDown25 - kStringIdEmpty, // TrackElemType::DiagDown25ToRightBankedDown25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedDown25ToDown25 - kStringIdEmpty, // TrackElemType::DiagRightBankedDown25ToDown25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - kStringIdEmpty, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - kStringIdEmpty, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - kStringIdEmpty, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - kStringIdEmpty, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - kStringIdEmpty, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - kStringIdEmpty, // TrackElemType::DiagFlatToLeftBankedUp25 - kStringIdEmpty, // TrackElemType::DiagFlatToRightBankedUp25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedUp25ToFlat - kStringIdEmpty, // TrackElemType::DiagRightBankedUp25ToFlat - kStringIdEmpty, // TrackElemType::DiagFlatToLeftBankedDown25 - kStringIdEmpty, // TrackElemType::DiagFlatToRightBankedDown25 - kStringIdEmpty, // TrackElemType::DiagLeftBankedDown25ToFlat - kStringIdEmpty, // TrackElemType::DiagRightBankedDown25ToFlat - kStringIdEmpty, // TrackElemType::Up25LeftBanked - kStringIdEmpty, // TrackElemType::Up25RightBanked - kStringIdEmpty, // TrackElemType::Down25LeftBanked - kStringIdEmpty, // TrackElemType::Down25RightBanked - kStringIdEmpty, // TrackElemType::LeftEighthBankToDiagUp25 - kStringIdEmpty, // TrackElemType::RightEighthBankToDiagUp25 - kStringIdEmpty, // TrackElemType::LeftEighthBankToDiagDown25 - kStringIdEmpty, // TrackElemType::RightEighthBankToDiagDown25 - kStringIdEmpty, // TrackElemType::LeftEighthBankToOrthogonalUp25 - kStringIdEmpty, // TrackElemType::RightEighthBankToOrthogonalUp25 - kStringIdEmpty, // TrackElemType::LeftEighthBankToOrthogonalDown25 - kStringIdEmpty, // TrackElemType::RightEighthBankToOrthogonalDown25 - STR_BRAKES, // TrackElemType::DiagBrakes - STR_BLOCK_BRAKES, // TrackElemType::DiagBlockBrakes - STR_BRAKES, // TrackElemType::Down25Brakes - STR_BOOSTER, // TrackElemType::DiagBooster - kStringIdEmpty, // TrackElemType::DiagFlatToUp60LongBase, - kStringIdEmpty, // TrackElemType::DiagUp60ToFlatLongBase, - kStringIdEmpty, // TrackElemType::DiagFlatToDown60LongBase, - kStringIdEmpty, // TrackElemType::DiagDown60ToFlatLongBase, - STR_DIVE_LOOP_LEFT, // TrackElemType::LeftEighthDiveLoopUpToOrthogonal - STR_DIVE_LOOP_RIGHT, // TrackElemType::RightEighthDiveLoopUpToOrthogonal - STR_DIVE_LOOP_LEFT, // TrackElemType::LeftEighthDiveLoopDownToDiag - STR_DIVE_LOOP_RIGHT, // TrackElemType::RightEighthDiveLoopDownToDiag - STR_BRAKES, // TrackElemType::DiagDown25Brakes - }; - static_assert(std::size(kRideConfigurationStringIds) == EnumValue(TrackElemType::Count)); + kStringIdEmpty, // TrackElemType::flatTrack1x4A + STR_BASE_SIZE_2_X_2, // TrackElemType::flatTrack2x2 + STR_BASE_SIZE_4_X_4, // TrackElemType::flatTrack4x4 + STR_BASE_SIZE_2_X_4, // TrackElemType::flatTrack2x4 + STR_BASE_SIZE_5_X_1, // TrackElemType::flatTrack1x5 + kStringIdEmpty, // TrackElemType::flatTrack1x1A + kStringIdEmpty, // TrackElemType::flatTrack1x4B + kStringIdEmpty, // TrackElemType::flatTrack1x1B + kStringIdEmpty, // TrackElemType::flatTrack1x4C + kStringIdEmpty, // TrackElemType::flatTrack3x3 + STR_LARGE_HALF_CORKSCREW_LEFT, // TrackElemType::leftCorkscrewUp + STR_LARGE_HALF_CORKSCREW_RIGHT, // TrackElemType::rightCorkscrewUp + STR_LARGE_HALF_CORKSCREW_LEFT, // TrackElemType::leftCorkscrewDown + STR_LARGE_HALF_CORKSCREW_RIGHT, // TrackElemType::rightCorkscrewDown + STR_MEDIUM_HALF_LOOP_LEFT, // TrackElemType::leftMediumHalfLoopUp + STR_MEDIUM_HALF_LOOP_RIGHT, // TrackElemType::rightMediumHalfLoopUp + STR_MEDIUM_HALF_LOOP_LEFT, // TrackElemType::leftMediumHalfLoopDown + STR_MEDIUM_HALF_LOOP_RIGHT, // TrackElemType::rightMediumHalfLoopDown + STR_ZERO_G_ROLL_LEFT, // TrackElemType::leftZeroGRollUp + STR_ZERO_G_ROLL_RIGHT, // TrackElemType::rightZeroGRollUp + STR_ZERO_G_ROLL_LEFT, // TrackElemType::leftZeroGRollDown + STR_ZERO_G_ROLL_RIGHT, // TrackElemType::rightZeroGRollDown + STR_LARGE_ZERO_G_ROLL_LEFT, // TrackElemType::leftLargeZeroGRollUp + STR_LARGE_ZERO_G_ROLL_RIGHT, // TrackElemType::rightLargeZeroGRollUp + STR_LARGE_ZERO_G_ROLL_LEFT, // TrackElemType::leftLargeZeroGRollDown + STR_LARGE_ZERO_G_ROLL_RIGHT, // TrackElemType::rightLargeZeroGRollDown + STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + STR_LARGE_HALF_LOOP_LEFT, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + STR_LARGE_HALF_LOOP_RIGHT, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + STR_HALF_LOOP, // TrackElemType::flyerHalfLoopInvertedUp + STR_HALF_LOOP, // TrackElemType::flyerHalfLoopUninvertedDown + kStringIdEmpty, // TrackElemType::leftEighthToDiagUp25 + kStringIdEmpty, // TrackElemType::rightEighthToDiagUp25 + kStringIdEmpty, // TrackElemType::leftEighthToDiagDown25 + kStringIdEmpty, // TrackElemType::rightEighthToDiagDown25 + kStringIdEmpty, // TrackElemType::leftEighthToOrthogonalUp25 + kStringIdEmpty, // TrackElemType::rightEighthToOrthogonalUp25 + kStringIdEmpty, // TrackElemType::leftEighthToOrthogonalDown25 + kStringIdEmpty, // TrackElemType::rightEighthToOrthogonalDown25 + kStringIdEmpty, // TrackElemType::diagUp25ToLeftBankedUp25 + kStringIdEmpty, // TrackElemType::diagUp25ToRightBankedUp25 + kStringIdEmpty, // TrackElemType::diagLeftBankedUp25ToUp25 + kStringIdEmpty, // TrackElemType::diagRightBankedUp25ToUp25 + kStringIdEmpty, // TrackElemType::diagDown25ToLeftBankedDown25 + kStringIdEmpty, // TrackElemType::diagDown25ToRightBankedDown25 + kStringIdEmpty, // TrackElemType::diagLeftBankedDown25ToDown25 + kStringIdEmpty, // TrackElemType::diagRightBankedDown25ToDown25 + kStringIdEmpty, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + kStringIdEmpty, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + kStringIdEmpty, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + kStringIdEmpty, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + kStringIdEmpty, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + kStringIdEmpty, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + kStringIdEmpty, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + kStringIdEmpty, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + kStringIdEmpty, // TrackElemType::diagFlatToLeftBankedUp25 + kStringIdEmpty, // TrackElemType::diagFlatToRightBankedUp25 + kStringIdEmpty, // TrackElemType::diagLeftBankedUp25ToFlat + kStringIdEmpty, // TrackElemType::diagRightBankedUp25ToFlat + kStringIdEmpty, // TrackElemType::diagFlatToLeftBankedDown25 + kStringIdEmpty, // TrackElemType::diagFlatToRightBankedDown25 + kStringIdEmpty, // TrackElemType::diagLeftBankedDown25ToFlat + kStringIdEmpty, // TrackElemType::diagRightBankedDown25ToFlat + kStringIdEmpty, // TrackElemType::up25LeftBanked + kStringIdEmpty, // TrackElemType::up25RightBanked + kStringIdEmpty, // TrackElemType::down25LeftBanked + kStringIdEmpty, // TrackElemType::down25RightBanked + kStringIdEmpty, // TrackElemType::leftEighthBankToDiagUp25 + kStringIdEmpty, // TrackElemType::rightEighthBankToDiagUp25 + kStringIdEmpty, // TrackElemType::leftEighthBankToDiagDown25 + kStringIdEmpty, // TrackElemType::rightEighthBankToDiagDown25 + kStringIdEmpty, // TrackElemType::leftEighthBankToOrthogonalUp25 + kStringIdEmpty, // TrackElemType::rightEighthBankToOrthogonalUp25 + kStringIdEmpty, // TrackElemType::leftEighthBankToOrthogonalDown25 + kStringIdEmpty, // TrackElemType::rightEighthBankToOrthogonalDown25 + STR_BRAKES, // TrackElemType::diagBrakes + STR_BLOCK_BRAKES, // TrackElemType::diagBlockBrakes + STR_BRAKES, // TrackElemType::down25Brakes + STR_BOOSTER, // TrackElemType::diagBooster + kStringIdEmpty, // TrackElemType::diagFlatToUp60LongBase, + kStringIdEmpty, // TrackElemType::diagUp60ToFlatLongBase, + kStringIdEmpty, // TrackElemType::diagFlatToDown60LongBase, + kStringIdEmpty, // TrackElemType::diagDown60ToFlatLongBase, + STR_DIVE_LOOP_LEFT, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + STR_DIVE_LOOP_RIGHT, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + STR_DIVE_LOOP_LEFT, // TrackElemType::leftEighthDiveLoopDownToDiag + STR_DIVE_LOOP_RIGHT, // TrackElemType::rightEighthDiveLoopDownToDiag + STR_BRAKES, // TrackElemType::diagDown25Brakes + }; + static_assert(std::size(kRideConfigurationStringIds) == EnumValue(TrackElemType::count)); #pragma region trackBlocks @@ -15111,951 +15111,951 @@ namespace OpenRCT2::TrackMetaData }; static constexpr SequenceData kSequenceDescriptorsByElement[] = { - /* TrackElemType::Flat */ { 1, { kFlatSeq0 } }, - /* TrackElemType::EndStation */ { 1, { kEndStationSeq0 } }, - /* TrackElemType::BeginStation */ { 1, { kBeginStationSeq0 } }, - /* TrackElemType::MiddleStation */ { 1, { kMiddleStationSeq0 } }, - /* TrackElemType::Up25 */ { 1, { kUp25Seq0 } }, - /* TrackElemType::Up60 */ { 1, { kUp60Seq0 } }, - /* TrackElemType::FlatToUp25 */ { 1, { kFlatToUp25Seq0 } }, - /* TrackElemType::Up25ToUp60 */ { 1, { kUp25ToUp60Seq0 } }, - /* TrackElemType::Up60ToUp25 */ { 1, { kUp60ToUp25Seq0 } }, - /* TrackElemType::Up25ToFlat */ { 1, { kUp25ToFlatSeq0 } }, - /* TrackElemType::Down25 */ { 1, { kDown25Seq0 } }, - /* TrackElemType::Down60 */ { 1, { kDown60Seq0 } }, - /* TrackElemType::FlatToDown25 */ { 1, { kFlatToDown25Seq0 } }, - /* TrackElemType::Down25ToDown60 */ { 1, { kDown25ToDown60Seq0 } }, - /* TrackElemType::Down60ToDown25 */ { 1, { kDown60ToDown25Seq0 } }, - /* TrackElemType::Down25ToFlat */ { 1, { kDown25ToFlatSeq0 } }, - /* TrackElemType::LeftQuarterTurn5Tiles */ + /* TrackElemType::flat */ { 1, { kFlatSeq0 } }, + /* TrackElemType::endStation */ { 1, { kEndStationSeq0 } }, + /* TrackElemType::beginStation */ { 1, { kBeginStationSeq0 } }, + /* TrackElemType::middleStation */ { 1, { kMiddleStationSeq0 } }, + /* TrackElemType::up25 */ { 1, { kUp25Seq0 } }, + /* TrackElemType::up60 */ { 1, { kUp60Seq0 } }, + /* TrackElemType::flatToUp25 */ { 1, { kFlatToUp25Seq0 } }, + /* TrackElemType::up25ToUp60 */ { 1, { kUp25ToUp60Seq0 } }, + /* TrackElemType::up60ToUp25 */ { 1, { kUp60ToUp25Seq0 } }, + /* TrackElemType::up25ToFlat */ { 1, { kUp25ToFlatSeq0 } }, + /* TrackElemType::down25 */ { 1, { kDown25Seq0 } }, + /* TrackElemType::down60 */ { 1, { kDown60Seq0 } }, + /* TrackElemType::flatToDown25 */ { 1, { kFlatToDown25Seq0 } }, + /* TrackElemType::down25ToDown60 */ { 1, { kDown25ToDown60Seq0 } }, + /* TrackElemType::down60ToDown25 */ { 1, { kDown60ToDown25Seq0 } }, + /* TrackElemType::down25ToFlat */ { 1, { kDown25ToFlatSeq0 } }, + /* TrackElemType::leftQuarterTurn5Tiles */ { 7, { kLeftQuarterTurn5TilesSeq0, kLeftQuarterTurn5TilesSeq1, kLeftQuarterTurn5TilesSeq2, kLeftQuarterTurn5TilesSeq3, kLeftQuarterTurn5TilesSeq4, kLeftQuarterTurn5TilesSeq5, kLeftQuarterTurn5TilesSeq6 } }, - /* TrackElemType::RightQuarterTurn5Tiles */ + /* TrackElemType::rightQuarterTurn5Tiles */ { 7, { kRightQuarterTurn5TilesSeq0, kRightQuarterTurn5TilesSeq1, kRightQuarterTurn5TilesSeq2, kRightQuarterTurn5TilesSeq3, kRightQuarterTurn5TilesSeq4, kRightQuarterTurn5TilesSeq5, kRightQuarterTurn5TilesSeq6 } }, - /* TrackElemType::FlatToLeftBank */ { 1, { kFlatToLeftBankSeq0 } }, - /* TrackElemType::FlatToRightBank */ { 1, { kFlatToRightBankSeq0 } }, - /* TrackElemType::LeftBankToFlat */ { 1, { kLeftBankToFlatSeq0 } }, - /* TrackElemType::RightBankToFlat */ { 1, { kRightBankToFlatSeq0 } }, - /* TrackElemType::BankedLeftQuarterTurn5Tiles */ + /* TrackElemType::flatToLeftBank */ { 1, { kFlatToLeftBankSeq0 } }, + /* TrackElemType::flatToRightBank */ { 1, { kFlatToRightBankSeq0 } }, + /* TrackElemType::leftBankToFlat */ { 1, { kLeftBankToFlatSeq0 } }, + /* TrackElemType::rightBankToFlat */ { 1, { kRightBankToFlatSeq0 } }, + /* TrackElemType::bankedLeftQuarterTurn5Tiles */ { 7, { kBankedLeftQuarterTurn5TilesSeq0, kBankedLeftQuarterTurn5TilesSeq1, kBankedLeftQuarterTurn5TilesSeq2, kBankedLeftQuarterTurn5TilesSeq3, kBankedLeftQuarterTurn5TilesSeq4, kBankedLeftQuarterTurn5TilesSeq5, kBankedLeftQuarterTurn5TilesSeq6 } }, - /* TrackElemType::BankedRightQuarterTurn5Tiles */ + /* TrackElemType::bankedRightQuarterTurn5Tiles */ { 7, { kBankedRightQuarterTurn5TilesSeq0, kBankedRightQuarterTurn5TilesSeq1, kBankedRightQuarterTurn5TilesSeq2, kBankedRightQuarterTurn5TilesSeq3, kBankedRightQuarterTurn5TilesSeq4, kBankedRightQuarterTurn5TilesSeq5, kBankedRightQuarterTurn5TilesSeq6 } }, - /* TrackElemType::LeftBankToUp25 */ { 1, { kLeftBankToUp25Seq0 } }, - /* TrackElemType::RightBankToUp25 */ { 1, { kRightBankToUp25Seq0 } }, - /* TrackElemType::Up25ToLeftBank */ { 1, { kUp25ToLeftBankSeq0 } }, - /* TrackElemType::Up25ToRightBank */ { 1, { kUp25ToRightBankSeq0 } }, - /* TrackElemType::LeftBankToDown25 */ { 1, { kLeftBankToDown25Seq0 } }, - /* TrackElemType::RightBankToDown25 */ { 1, { kRightBankToDown25Seq0 } }, - /* TrackElemType::Down25ToLeftBank */ { 1, { kDown25ToLeftBankSeq0 } }, - /* TrackElemType::Down25ToRightBank */ { 1, { kDown25ToRightBankSeq0 } }, - /* TrackElemType::LeftBank */ { 1, { kLeftBankSeq0 } }, - /* TrackElemType::RightBank */ { 1, { kRightBankSeq0 } }, - /* TrackElemType::LeftQuarterTurn5TilesUp25 */ + /* TrackElemType::leftBankToUp25 */ { 1, { kLeftBankToUp25Seq0 } }, + /* TrackElemType::rightBankToUp25 */ { 1, { kRightBankToUp25Seq0 } }, + /* TrackElemType::up25ToLeftBank */ { 1, { kUp25ToLeftBankSeq0 } }, + /* TrackElemType::up25ToRightBank */ { 1, { kUp25ToRightBankSeq0 } }, + /* TrackElemType::leftBankToDown25 */ { 1, { kLeftBankToDown25Seq0 } }, + /* TrackElemType::rightBankToDown25 */ { 1, { kRightBankToDown25Seq0 } }, + /* TrackElemType::down25ToLeftBank */ { 1, { kDown25ToLeftBankSeq0 } }, + /* TrackElemType::down25ToRightBank */ { 1, { kDown25ToRightBankSeq0 } }, + /* TrackElemType::leftBank */ { 1, { kLeftBankSeq0 } }, + /* TrackElemType::rightBank */ { 1, { kRightBankSeq0 } }, + /* TrackElemType::leftQuarterTurn5TilesUp25 */ { 7, { kLeftQuarterTurn5TilesUp25Seq0, kLeftQuarterTurn5TilesUp25Seq1, kLeftQuarterTurn5TilesUp25Seq2, kLeftQuarterTurn5TilesUp25Seq3, kLeftQuarterTurn5TilesUp25Seq4, kLeftQuarterTurn5TilesUp25Seq5, kLeftQuarterTurn5TilesUp25Seq6 } }, - /* TrackElemType::RightQuarterTurn5TilesUp25 */ + /* TrackElemType::rightQuarterTurn5TilesUp25 */ { 7, { kRightQuarterTurn5TilesUp25Seq0, kRightQuarterTurn5TilesUp25Seq1, kRightQuarterTurn5TilesUp25Seq2, kRightQuarterTurn5TilesUp25Seq3, kRightQuarterTurn5TilesUp25Seq4, kRightQuarterTurn5TilesUp25Seq5, kRightQuarterTurn5TilesUp25Seq6 } }, - /* TrackElemType::LeftQuarterTurn5TilesDown25 */ + /* TrackElemType::leftQuarterTurn5TilesDown25 */ { 7, { kLeftQuarterTurn5TilesDown25Seq0, kLeftQuarterTurn5TilesDown25Seq1, kLeftQuarterTurn5TilesDown25Seq2, kLeftQuarterTurn5TilesDown25Seq3, kLeftQuarterTurn5TilesDown25Seq4, kLeftQuarterTurn5TilesDown25Seq5, kLeftQuarterTurn5TilesDown25Seq6 } }, - /* TrackElemType::RightQuarterTurn5TilesDown25 */ + /* TrackElemType::rightQuarterTurn5TilesDown25 */ { 7, { kRightQuarterTurn5TilesDown25Seq0, kRightQuarterTurn5TilesDown25Seq1, kRightQuarterTurn5TilesDown25Seq2, kRightQuarterTurn5TilesDown25Seq3, kRightQuarterTurn5TilesDown25Seq4, kRightQuarterTurn5TilesDown25Seq5, kRightQuarterTurn5TilesDown25Seq6 } }, - /* TrackElemType::SBendLeft */ { 4, { kSBendLeftSeq0, kSBendLeftSeq1, kSBendLeftSeq2, kSBendLeftSeq3 } }, - /* TrackElemType::SBendRight */ { 4, { kSBendRightSeq0, kSBendRightSeq1, kSBendRightSeq2, kSBendRightSeq3 } }, - /* TrackElemType::LeftVerticalLoop */ + /* TrackElemType::sBendLeft */ { 4, { kSBendLeftSeq0, kSBendLeftSeq1, kSBendLeftSeq2, kSBendLeftSeq3 } }, + /* TrackElemType::sBendRight */ { 4, { kSBendRightSeq0, kSBendRightSeq1, kSBendRightSeq2, kSBendRightSeq3 } }, + /* TrackElemType::leftVerticalLoop */ { 10, { kLeftVerticalLoopSeq0, kLeftVerticalLoopSeq1, kLeftVerticalLoopSeq2, kLeftVerticalLoopSeq3, kLeftVerticalLoopSeq4, kLeftVerticalLoopSeq5, kLeftVerticalLoopSeq6, kLeftVerticalLoopSeq7, kLeftVerticalLoopSeq8, kLeftVerticalLoopSeq9 } }, - /* TrackElemType::RightVerticalLoop */ + /* TrackElemType::rightVerticalLoop */ { 10, { kRightVerticalLoopSeq0, kRightVerticalLoopSeq1, kRightVerticalLoopSeq2, kRightVerticalLoopSeq3, kRightVerticalLoopSeq4, kRightVerticalLoopSeq5, kRightVerticalLoopSeq6, kRightVerticalLoopSeq7, kRightVerticalLoopSeq8, kRightVerticalLoopSeq9 } }, - /* TrackElemType::LeftQuarterTurn3Tiles */ + /* TrackElemType::leftQuarterTurn3Tiles */ { 4, { kLeftQuarterTurn3TilesSeq0, kLeftQuarterTurn3TilesSeq1, kLeftQuarterTurn3TilesSeq2, kLeftQuarterTurn3TilesSeq3 } }, - /* TrackElemType::RightQuarterTurn3Tiles */ + /* TrackElemType::rightQuarterTurn3Tiles */ { 4, { kRightQuarterTurn3TilesSeq0, kRightQuarterTurn3TilesSeq1, kRightQuarterTurn3TilesSeq2, kRightQuarterTurn3TilesSeq3 } }, - /* TrackElemType::LeftBankedQuarterTurn3Tiles */ + /* TrackElemType::leftBankedQuarterTurn3Tiles */ { 4, { kLeftBankedQuarterTurn3TilesSeq0, kLeftBankedQuarterTurn3TilesSeq1, kLeftBankedQuarterTurn3TilesSeq2, kLeftBankedQuarterTurn3TilesSeq3 } }, - /* TrackElemType::RightBankedQuarterTurn3Tiles */ + /* TrackElemType::rightBankedQuarterTurn3Tiles */ { 4, { kRightBankedQuarterTurn3TilesSeq0, kRightBankedQuarterTurn3TilesSeq1, kRightBankedQuarterTurn3TilesSeq2, kRightBankedQuarterTurn3TilesSeq3 } }, - /* TrackElemType::LeftQuarterTurn3TilesUp25 */ + /* TrackElemType::leftQuarterTurn3TilesUp25 */ { 4, { kLeftQuarterTurn3TilesUp25Seq0, kLeftQuarterTurn3TilesUp25Seq1, kLeftQuarterTurn3TilesUp25Seq2, kLeftQuarterTurn3TilesUp25Seq3 } }, - /* TrackElemType::RightQuarterTurn3TilesUp25 */ + /* TrackElemType::rightQuarterTurn3TilesUp25 */ { 4, { kRightQuarterTurn3TilesUp25Seq0, kRightQuarterTurn3TilesUp25Seq1, kRightQuarterTurn3TilesUp25Seq2, kRightQuarterTurn3TilesUp25Seq3 } }, - /* TrackElemType::LeftQuarterTurn3TilesDown25 */ + /* TrackElemType::leftQuarterTurn3TilesDown25 */ { 4, { kLeftQuarterTurn3TilesDown25Seq0, kLeftQuarterTurn3TilesDown25Seq1, kLeftQuarterTurn3TilesDown25Seq2, kLeftQuarterTurn3TilesDown25Seq3 } }, - /* TrackElemType::RightQuarterTurn3TilesDown25 */ + /* TrackElemType::rightQuarterTurn3TilesDown25 */ { 4, { kRightQuarterTurn3TilesDown25Seq0, kRightQuarterTurn3TilesDown25Seq1, kRightQuarterTurn3TilesDown25Seq2, kRightQuarterTurn3TilesDown25Seq3 } }, - /* TrackElemType::LeftQuarterTurn1Tile */ { 1, { kLeftQuarterTurn1TileSeq0 } }, - /* TrackElemType::RightQuarterTurn1Tile */ { 1, { kRightQuarterTurn1TileSeq0 } }, - /* TrackElemType::LeftTwistDownToUp */ + /* TrackElemType::leftQuarterTurn1Tile */ { 1, { kLeftQuarterTurn1TileSeq0 } }, + /* TrackElemType::rightQuarterTurn1Tile */ { 1, { kRightQuarterTurn1TileSeq0 } }, + /* TrackElemType::leftTwistDownToUp */ { 3, { kLeftTwistDownToUpSeq0, kLeftTwistDownToUpSeq1, kLeftTwistDownToUpSeq2 } }, - /* TrackElemType::RightTwistDownToUp */ + /* TrackElemType::rightTwistDownToUp */ { 3, { kRightTwistDownToUpSeq0, kRightTwistDownToUpSeq1, kRightTwistDownToUpSeq2 } }, - /* TrackElemType::LeftTwistUpToDown */ + /* TrackElemType::leftTwistUpToDown */ { 3, { kLeftTwistUpToDownSeq0, kLeftTwistUpToDownSeq1, kLeftTwistUpToDownSeq2 } }, - /* TrackElemType::RightTwistUpToDown */ + /* TrackElemType::rightTwistUpToDown */ { 3, { kRightTwistUpToDownSeq0, kRightTwistUpToDownSeq1, kRightTwistUpToDownSeq2 } }, - /* TrackElemType::HalfLoopUp */ { 4, { kHalfLoopUpSeq0, kHalfLoopUpSeq1, kHalfLoopUpSeq2, kHalfLoopUpSeq3 } }, - /* TrackElemType::HalfLoopDown */ { 4, { kHalfLoopDownSeq0, kHalfLoopDownSeq1, kHalfLoopDownSeq2, kHalfLoopDownSeq3 } }, - /* TrackElemType::LeftCorkscrewUp */ { 3, { kLeftCorkscrewUpSeq0, kLeftCorkscrewUpSeq1, kLeftCorkscrewUpSeq2 } }, - /* TrackElemType::RightCorkscrewUp */ { 3, { kRightCorkscrewUpSeq0, kRightCorkscrewUpSeq1, kRightCorkscrewUpSeq2 } }, - /* TrackElemType::LeftCorkscrewDown */ + /* TrackElemType::halfLoopUp */ { 4, { kHalfLoopUpSeq0, kHalfLoopUpSeq1, kHalfLoopUpSeq2, kHalfLoopUpSeq3 } }, + /* TrackElemType::halfLoopDown */ { 4, { kHalfLoopDownSeq0, kHalfLoopDownSeq1, kHalfLoopDownSeq2, kHalfLoopDownSeq3 } }, + /* TrackElemType::leftCorkscrewUp */ { 3, { kLeftCorkscrewUpSeq0, kLeftCorkscrewUpSeq1, kLeftCorkscrewUpSeq2 } }, + /* TrackElemType::rightCorkscrewUp */ { 3, { kRightCorkscrewUpSeq0, kRightCorkscrewUpSeq1, kRightCorkscrewUpSeq2 } }, + /* TrackElemType::leftCorkscrewDown */ { 3, { kLeftCorkscrewDownSeq0, kLeftCorkscrewDownSeq1, kLeftCorkscrewDownSeq2 } }, - /* TrackElemType::RightCorkscrewDown */ + /* TrackElemType::rightCorkscrewDown */ { 3, { kRightCorkscrewDownSeq0, kRightCorkscrewDownSeq1, kRightCorkscrewDownSeq2 } }, - /* TrackElemType::FlatToUp60 */ { 1, { kFlatToUp60Seq0 } }, - /* TrackElemType::Up60ToFlat */ { 1, { kUp60ToFlatSeq0 } }, - /* TrackElemType::FlatToDown60 */ { 1, { kFlatToDown60Seq0 } }, - /* TrackElemType::Down60ToFlat */ { 1, { kDown60ToFlatSeq0 } }, - /* TrackElemType::TowerBase */ + /* TrackElemType::flatToUp60 */ { 1, { kFlatToUp60Seq0 } }, + /* TrackElemType::up60ToFlat */ { 1, { kUp60ToFlatSeq0 } }, + /* TrackElemType::flatToDown60 */ { 1, { kFlatToDown60Seq0 } }, + /* TrackElemType::down60ToFlat */ { 1, { kDown60ToFlatSeq0 } }, + /* TrackElemType::towerBase */ { 9, { kTowerBaseSeq0, kTowerBaseSeq1, kTowerBaseSeq2, kTowerBaseSeq3, kTowerBaseSeq4, kTowerBaseSeq5, kTowerBaseSeq6, kTowerBaseSeq7, kTowerBaseSeq8 } }, - /* TrackElemType::TowerSection */ { 2, { kTowerSectionSeq0, kTowerSectionSeq1 } }, - /* TrackElemType::FlatCovered */ { 1, { kFlatCoveredSeq0 } }, - /* TrackElemType::Up25Covered */ { 1, { kUp25CoveredSeq0 } }, - /* TrackElemType::Up60Covered */ { 1, { kUp60CoveredSeq0 } }, - /* TrackElemType::FlatToUp25Covered */ { 1, { kFlatToUp25CoveredSeq0 } }, - /* TrackElemType::Up25ToUp60Covered */ { 1, { kUp25ToUp60CoveredSeq0 } }, - /* TrackElemType::Up60ToUp25Covered */ { 1, { kUp60ToUp25CoveredSeq0 } }, - /* TrackElemType::Up25ToFlatCovered */ { 1, { kUp25ToFlatCoveredSeq0 } }, - /* TrackElemType::Down25Covered */ { 1, { kDown25CoveredSeq0 } }, - /* TrackElemType::Down60Covered */ { 1, { kDown60CoveredSeq0 } }, - /* TrackElemType::FlatToDown25Covered */ { 1, { kFlatToDown25CoveredSeq0 } }, - /* TrackElemType::Down25ToDown60Covered */ { 1, { kDown25ToDown60CoveredSeq0 } }, - /* TrackElemType::Down60ToDown25Covered */ { 1, { kDown60ToDown25CoveredSeq0 } }, - /* TrackElemType::Down25ToFlatCovered */ { 1, { kDown25ToFlatCoveredSeq0 } }, - /* TrackElemType::LeftQuarterTurn5TilesCovered */ + /* TrackElemType::towerSection */ { 2, { kTowerSectionSeq0, kTowerSectionSeq1 } }, + /* TrackElemType::flatCovered */ { 1, { kFlatCoveredSeq0 } }, + /* TrackElemType::up25Covered */ { 1, { kUp25CoveredSeq0 } }, + /* TrackElemType::up60Covered */ { 1, { kUp60CoveredSeq0 } }, + /* TrackElemType::flatToUp25Covered */ { 1, { kFlatToUp25CoveredSeq0 } }, + /* TrackElemType::up25ToUp60Covered */ { 1, { kUp25ToUp60CoveredSeq0 } }, + /* TrackElemType::up60ToUp25Covered */ { 1, { kUp60ToUp25CoveredSeq0 } }, + /* TrackElemType::up25ToFlatCovered */ { 1, { kUp25ToFlatCoveredSeq0 } }, + /* TrackElemType::down25Covered */ { 1, { kDown25CoveredSeq0 } }, + /* TrackElemType::down60Covered */ { 1, { kDown60CoveredSeq0 } }, + /* TrackElemType::flatToDown25Covered */ { 1, { kFlatToDown25CoveredSeq0 } }, + /* TrackElemType::down25ToDown60Covered */ { 1, { kDown25ToDown60CoveredSeq0 } }, + /* TrackElemType::down60ToDown25Covered */ { 1, { kDown60ToDown25CoveredSeq0 } }, + /* TrackElemType::down25ToFlatCovered */ { 1, { kDown25ToFlatCoveredSeq0 } }, + /* TrackElemType::leftQuarterTurn5TilesCovered */ { 7, { kLeftQuarterTurn5TilesCoveredSeq0, kLeftQuarterTurn5TilesCoveredSeq1, kLeftQuarterTurn5TilesCoveredSeq2, kLeftQuarterTurn5TilesCoveredSeq3, kLeftQuarterTurn5TilesCoveredSeq4, kLeftQuarterTurn5TilesCoveredSeq5, kLeftQuarterTurn5TilesCoveredSeq6 } }, - /* TrackElemType::RightQuarterTurn5TilesCovered */ + /* TrackElemType::rightQuarterTurn5TilesCovered */ { 7, { kRightQuarterTurn5TilesCoveredSeq0, kRightQuarterTurn5TilesCoveredSeq1, kRightQuarterTurn5TilesCoveredSeq2, kRightQuarterTurn5TilesCoveredSeq3, kRightQuarterTurn5TilesCoveredSeq4, kRightQuarterTurn5TilesCoveredSeq5, kRightQuarterTurn5TilesCoveredSeq6 } }, - /* TrackElemType::SBendLeftCovered */ + /* TrackElemType::sBendLeftCovered */ { 4, { kSBendLeftCoveredSeq0, kSBendLeftCoveredSeq1, kSBendLeftCoveredSeq2, kSBendLeftCoveredSeq3 } }, - /* TrackElemType::SBendRightCovered */ + /* TrackElemType::sBendRightCovered */ { 4, { kSBendRightCoveredSeq0, kSBendRightCoveredSeq1, kSBendRightCoveredSeq2, kSBendRightCoveredSeq3 } }, - /* TrackElemType::LeftQuarterTurn3TilesCovered */ + /* TrackElemType::leftQuarterTurn3TilesCovered */ { 4, { kLeftQuarterTurn3TilesCoveredSeq0, kLeftQuarterTurn3TilesCoveredSeq1, kLeftQuarterTurn3TilesCoveredSeq2, kLeftQuarterTurn3TilesCoveredSeq3 } }, - /* TrackElemType::RightQuarterTurn3TilesCovered */ + /* TrackElemType::rightQuarterTurn3TilesCovered */ { 4, { kRightQuarterTurn3TilesCoveredSeq0, kRightQuarterTurn3TilesCoveredSeq1, kRightQuarterTurn3TilesCoveredSeq2, kRightQuarterTurn3TilesCoveredSeq3 } }, - /* TrackElemType::LeftHalfBankedHelixUpSmall */ + /* TrackElemType::leftHalfBankedHelixUpSmall */ { 8, { kLeftHalfBankedHelixUpSmallSeq0, kLeftHalfBankedHelixUpSmallSeq1, kLeftHalfBankedHelixUpSmallSeq2, kLeftHalfBankedHelixUpSmallSeq3, kLeftHalfBankedHelixUpSmallSeq4, kLeftHalfBankedHelixUpSmallSeq5, kLeftHalfBankedHelixUpSmallSeq6, kLeftHalfBankedHelixUpSmallSeq7 } }, - /* TrackElemType::RightHalfBankedHelixUpSmall */ + /* TrackElemType::rightHalfBankedHelixUpSmall */ { 8, { kRightHalfBankedHelixUpSmallSeq0, kRightHalfBankedHelixUpSmallSeq1, kRightHalfBankedHelixUpSmallSeq2, kRightHalfBankedHelixUpSmallSeq3, kRightHalfBankedHelixUpSmallSeq4, kRightHalfBankedHelixUpSmallSeq5, kRightHalfBankedHelixUpSmallSeq6, kRightHalfBankedHelixUpSmallSeq7 } }, - /* TrackElemType::LeftHalfBankedHelixDownSmall */ + /* TrackElemType::leftHalfBankedHelixDownSmall */ { 8, { kLeftHalfBankedHelixDownSmallSeq0, kLeftHalfBankedHelixDownSmallSeq1, kLeftHalfBankedHelixDownSmallSeq2, kLeftHalfBankedHelixDownSmallSeq3, kLeftHalfBankedHelixDownSmallSeq4, kLeftHalfBankedHelixDownSmallSeq5, kLeftHalfBankedHelixDownSmallSeq6, kLeftHalfBankedHelixDownSmallSeq7 } }, - /* TrackElemType::RightHalfBankedHelixDownSmall */ + /* TrackElemType::rightHalfBankedHelixDownSmall */ { 8, { kRightHalfBankedHelixDownSmallSeq0, kRightHalfBankedHelixDownSmallSeq1, kRightHalfBankedHelixDownSmallSeq2, kRightHalfBankedHelixDownSmallSeq3, kRightHalfBankedHelixDownSmallSeq4, kRightHalfBankedHelixDownSmallSeq5, kRightHalfBankedHelixDownSmallSeq6, kRightHalfBankedHelixDownSmallSeq7 } }, - /* TrackElemType::LeftHalfBankedHelixUpLarge */ + /* TrackElemType::leftHalfBankedHelixUpLarge */ { 14, { kLeftHalfBankedHelixUpLargeSeq0, kLeftHalfBankedHelixUpLargeSeq1, kLeftHalfBankedHelixUpLargeSeq2, kLeftHalfBankedHelixUpLargeSeq3, kLeftHalfBankedHelixUpLargeSeq4, kLeftHalfBankedHelixUpLargeSeq5, kLeftHalfBankedHelixUpLargeSeq6, kLeftHalfBankedHelixUpLargeSeq7, kLeftHalfBankedHelixUpLargeSeq8, kLeftHalfBankedHelixUpLargeSeq9, kLeftHalfBankedHelixUpLargeSeq10, kLeftHalfBankedHelixUpLargeSeq11, kLeftHalfBankedHelixUpLargeSeq12, kLeftHalfBankedHelixUpLargeSeq13 } }, - /* TrackElemType::RightHalfBankedHelixUpLarge */ + /* TrackElemType::rightHalfBankedHelixUpLarge */ { 14, { kRightHalfBankedHelixUpLargeSeq0, kRightHalfBankedHelixUpLargeSeq1, kRightHalfBankedHelixUpLargeSeq2, kRightHalfBankedHelixUpLargeSeq3, kRightHalfBankedHelixUpLargeSeq4, kRightHalfBankedHelixUpLargeSeq5, kRightHalfBankedHelixUpLargeSeq6, kRightHalfBankedHelixUpLargeSeq7, kRightHalfBankedHelixUpLargeSeq8, kRightHalfBankedHelixUpLargeSeq9, kRightHalfBankedHelixUpLargeSeq10, kRightHalfBankedHelixUpLargeSeq11, kRightHalfBankedHelixUpLargeSeq12, kRightHalfBankedHelixUpLargeSeq13 } }, - /* TrackElemType::LeftHalfBankedHelixDownLarge */ + /* TrackElemType::leftHalfBankedHelixDownLarge */ { 14, { kLeftHalfBankedHelixDownLargeSeq0, kLeftHalfBankedHelixDownLargeSeq1, kLeftHalfBankedHelixDownLargeSeq2, kLeftHalfBankedHelixDownLargeSeq3, kLeftHalfBankedHelixDownLargeSeq4, kLeftHalfBankedHelixDownLargeSeq5, kLeftHalfBankedHelixDownLargeSeq6, kLeftHalfBankedHelixDownLargeSeq7, kLeftHalfBankedHelixDownLargeSeq8, kLeftHalfBankedHelixDownLargeSeq9, kLeftHalfBankedHelixDownLargeSeq10, kLeftHalfBankedHelixDownLargeSeq11, kLeftHalfBankedHelixDownLargeSeq12, kLeftHalfBankedHelixDownLargeSeq13 } }, - /* TrackElemType::RightHalfBankedHelixDownLarge */ + /* TrackElemType::rightHalfBankedHelixDownLarge */ { 14, { kRightHalfBankedHelixDownLargeSeq0, kRightHalfBankedHelixDownLargeSeq1, kRightHalfBankedHelixDownLargeSeq2, kRightHalfBankedHelixDownLargeSeq3, kRightHalfBankedHelixDownLargeSeq4, kRightHalfBankedHelixDownLargeSeq5, kRightHalfBankedHelixDownLargeSeq6, kRightHalfBankedHelixDownLargeSeq7, kRightHalfBankedHelixDownLargeSeq8, kRightHalfBankedHelixDownLargeSeq9, kRightHalfBankedHelixDownLargeSeq10, kRightHalfBankedHelixDownLargeSeq11, kRightHalfBankedHelixDownLargeSeq12, kRightHalfBankedHelixDownLargeSeq13 } }, - /* TrackElemType::LeftQuarterTurn1TileUp60 */ { 1, { kLeftQuarterTurn1TileUp60Seq0 } }, - /* TrackElemType::RightQuarterTurn1TileUp60 */ { 1, { kRightQuarterTurn1TileUp60Seq0 } }, - /* TrackElemType::LeftQuarterTurn1TileDown60 */ { 1, { kLeftQuarterTurn1TileDown60Seq0 } }, - /* TrackElemType::RightQuarterTurn1TileDown60 */ { 1, { kRightQuarterTurn1TileDown60Seq0 } }, - /* TrackElemType::Brakes */ { 1, { kBrakesSeq0 } }, - /* TrackElemType::Booster */ { 1, { kBoosterSeq0 } }, - /* TrackElemType::Maze */ + /* TrackElemType::leftQuarterTurn1TileUp60 */ { 1, { kLeftQuarterTurn1TileUp60Seq0 } }, + /* TrackElemType::rightQuarterTurn1TileUp60 */ { 1, { kRightQuarterTurn1TileUp60Seq0 } }, + /* TrackElemType::leftQuarterTurn1TileDown60 */ { 1, { kLeftQuarterTurn1TileDown60Seq0 } }, + /* TrackElemType::rightQuarterTurn1TileDown60 */ { 1, { kRightQuarterTurn1TileDown60Seq0 } }, + /* TrackElemType::brakes */ { 1, { kBrakesSeq0 } }, + /* TrackElemType::booster */ { 1, { kBoosterSeq0 } }, + /* TrackElemType::maze */ { 1, { kMazeSeq0, kMazeSeq1, kMazeSeq2, kMazeSeq3, kMazeSeq4, kMazeSeq5, kMazeSeq6, kMazeSeq7, kMazeSeq8, kMazeSeq9, kMazeSeq10, kMazeSeq11, kMazeSeq12, kMazeSeq13, kMazeSeq14, kMazeSeq15 } }, - /* TrackElemType::LeftQuarterBankedHelixLargeUp */ + /* TrackElemType::leftQuarterBankedHelixLargeUp */ { 7, { kLeftQuarterBankedHelixLargeUpSeq0, kLeftQuarterBankedHelixLargeUpSeq1, kLeftQuarterBankedHelixLargeUpSeq2, kLeftQuarterBankedHelixLargeUpSeq3, kLeftQuarterBankedHelixLargeUpSeq4, kLeftQuarterBankedHelixLargeUpSeq5, kLeftQuarterBankedHelixLargeUpSeq6 } }, - /* TrackElemType::RightQuarterBankedHelixLargeUp */ + /* TrackElemType::rightQuarterBankedHelixLargeUp */ { 7, { kRightQuarterBankedHelixLargeUpSeq0, kRightQuarterBankedHelixLargeUpSeq1, kRightQuarterBankedHelixLargeUpSeq2, kRightQuarterBankedHelixLargeUpSeq3, kRightQuarterBankedHelixLargeUpSeq4, kRightQuarterBankedHelixLargeUpSeq5, kRightQuarterBankedHelixLargeUpSeq6 } }, - /* TrackElemType::LeftQuarterBankedHelixLargeDown */ + /* TrackElemType::leftQuarterBankedHelixLargeDown */ { 7, { kLeftQuarterBankedHelixLargeDownSeq0, kLeftQuarterBankedHelixLargeDownSeq1, kLeftQuarterBankedHelixLargeDownSeq2, kLeftQuarterBankedHelixLargeDownSeq3, kLeftQuarterBankedHelixLargeDownSeq4, kLeftQuarterBankedHelixLargeDownSeq5, kLeftQuarterBankedHelixLargeDownSeq6 } }, - /* TrackElemType::RightQuarterBankedHelixLargeDown */ + /* TrackElemType::rightQuarterBankedHelixLargeDown */ { 7, { kRightQuarterBankedHelixLargeDownSeq0, kRightQuarterBankedHelixLargeDownSeq1, kRightQuarterBankedHelixLargeDownSeq2, kRightQuarterBankedHelixLargeDownSeq3, kRightQuarterBankedHelixLargeDownSeq4, kRightQuarterBankedHelixLargeDownSeq5, kRightQuarterBankedHelixLargeDownSeq6 } }, - /* TrackElemType::LeftQuarterHelixLargeUp */ + /* TrackElemType::leftQuarterHelixLargeUp */ { 7, { kLeftQuarterHelixLargeUpSeq0, kLeftQuarterHelixLargeUpSeq1, kLeftQuarterHelixLargeUpSeq2, kLeftQuarterHelixLargeUpSeq3, kLeftQuarterHelixLargeUpSeq4, kLeftQuarterHelixLargeUpSeq5, kLeftQuarterHelixLargeUpSeq6 } }, - /* TrackElemType::RightQuarterHelixLargeUp */ + /* TrackElemType::rightQuarterHelixLargeUp */ { 7, { kRightQuarterHelixLargeUpSeq0, kRightQuarterHelixLargeUpSeq1, kRightQuarterHelixLargeUpSeq2, kRightQuarterHelixLargeUpSeq3, kRightQuarterHelixLargeUpSeq4, kRightQuarterHelixLargeUpSeq5, kRightQuarterHelixLargeUpSeq6 } }, - /* TrackElemType::LeftQuarterHelixLargeDown */ + /* TrackElemType::leftQuarterHelixLargeDown */ { 7, { kLeftQuarterHelixLargeDownSeq0, kLeftQuarterHelixLargeDownSeq1, kLeftQuarterHelixLargeDownSeq2, kLeftQuarterHelixLargeDownSeq3, kLeftQuarterHelixLargeDownSeq4, kLeftQuarterHelixLargeDownSeq5, kLeftQuarterHelixLargeDownSeq6 } }, - /* TrackElemType::RightQuarterHelixLargeDown */ + /* TrackElemType::rightQuarterHelixLargeDown */ { 7, { kRightQuarterHelixLargeDownSeq0, kRightQuarterHelixLargeDownSeq1, kRightQuarterHelixLargeDownSeq2, kRightQuarterHelixLargeDownSeq3, kRightQuarterHelixLargeDownSeq4, kRightQuarterHelixLargeDownSeq5, kRightQuarterHelixLargeDownSeq6 } }, - /* TrackElemType::Up25LeftBanked */ { 1, { kUp25LeftBankedSeq0 } }, - /* TrackElemType::Up25RightBanked */ { 1, { kUp25RightBankedSeq0 } }, - /* TrackElemType::Waterfall */ { 1, { kWaterfallSeq0 } }, - /* TrackElemType::Rapids */ { 1, { kRapidsSeq0 } }, - /* TrackElemType::OnRidePhoto */ { 1, { kOnRidePhotoSeq0 } }, - /* TrackElemType::Down25LeftBanked */ { 1, { kDown25LeftBankedSeq0 } }, - /* TrackElemType::Down25RightBanked */ { 1, { kDown25RightBankedSeq0 } }, - /* TrackElemType::Watersplash */ + /* TrackElemType::up25LeftBanked */ { 1, { kUp25LeftBankedSeq0 } }, + /* TrackElemType::up25RightBanked */ { 1, { kUp25RightBankedSeq0 } }, + /* TrackElemType::waterfall */ { 1, { kWaterfallSeq0 } }, + /* TrackElemType::rapids */ { 1, { kRapidsSeq0 } }, + /* TrackElemType::onRidePhoto */ { 1, { kOnRidePhotoSeq0 } }, + /* TrackElemType::down25LeftBanked */ { 1, { kDown25LeftBankedSeq0 } }, + /* TrackElemType::down25RightBanked */ { 1, { kDown25RightBankedSeq0 } }, + /* TrackElemType::watersplash */ { 5, { kWatersplashSeq0, kWatersplashSeq1, kWatersplashSeq2, kWatersplashSeq3, kWatersplashSeq4 } }, - /* TrackElemType::FlatToUp60LongBase */ + /* TrackElemType::flatToUp60LongBase */ { 4, { kFlatToUp60LongBaseSeq0, kFlatToUp60LongBaseSeq1, kFlatToUp60LongBaseSeq2, kFlatToUp60LongBaseSeq3 } }, - /* TrackElemType::Up60ToFlatLongBase */ + /* TrackElemType::up60ToFlatLongBase */ { 4, { kUp60ToFlatLongBaseSeq0, kUp60ToFlatLongBaseSeq1, kUp60ToFlatLongBaseSeq2, kUp60ToFlatLongBaseSeq3 } }, - /* TrackElemType::Whirlpool */ { 1, { kWhirlpoolSeq0 } }, - /* TrackElemType::Down60ToFlatLongBase */ + /* TrackElemType::whirlpool */ { 1, { kWhirlpoolSeq0 } }, + /* TrackElemType::down60ToFlatLongBase */ { 4, { kDown60ToFlatLongBaseSeq0, kDown60ToFlatLongBaseSeq1, kDown60ToFlatLongBaseSeq2, kDown60ToFlatLongBaseSeq3 } }, - /* TrackElemType::FlatToDown60LongBase */ + /* TrackElemType::flatToDown60LongBase */ { 4, { kFlatToDown60LongBaseSeq0, kFlatToDown60LongBaseSeq1, kFlatToDown60LongBaseSeq2, kFlatToDown60LongBaseSeq3 } }, - /* TrackElemType::CableLiftHill */ + /* TrackElemType::cableLiftHill */ { 4, { kCableLiftHillSeq0, kCableLiftHillSeq1, kCableLiftHillSeq2, kCableLiftHillSeq3 } }, - /* TrackElemType::ReverseFreefallSlope */ + /* TrackElemType::reverseFreefallSlope */ { 7, { kReverseFreefallSlopeSeq0, kReverseFreefallSlopeSeq1, kReverseFreefallSlopeSeq2, kReverseFreefallSlopeSeq3, kReverseFreefallSlopeSeq4, kReverseFreefallSlopeSeq5, kReverseFreefallSlopeSeq6 } }, - /* TrackElemType::ReverseFreefallVertical */ { 2, { kReverseFreefallVerticalSeq0, kReverseFreefallVerticalSeq1 } }, - /* TrackElemType::Up90 */ { 2, { kUp90Seq0, kUp90Seq1 } }, - /* TrackElemType::Down90 */ { 2, { kDown90Seq0, kDown90Seq1 } }, - /* TrackElemType::Up60ToUp90 */ { 2, { kUp60ToUp90Seq0, kUp60ToUp90Seq1 } }, - /* TrackElemType::Down90ToDown60 */ { 1, { kDown90ToDown60Seq0 } }, - /* TrackElemType::Up90ToUp60 */ { 1, { kUp90ToUp60Seq0 } }, - /* TrackElemType::Down60ToDown90 */ { 2, { kDown60ToDown90Seq0, kDown60ToDown90Seq1 } }, - /* TrackElemType::BrakeForDrop */ { 1, { kBrakeForDropSeq0 } }, - /* TrackElemType::LeftEighthToDiag */ + /* TrackElemType::reverseFreefallVertical */ { 2, { kReverseFreefallVerticalSeq0, kReverseFreefallVerticalSeq1 } }, + /* TrackElemType::up90 */ { 2, { kUp90Seq0, kUp90Seq1 } }, + /* TrackElemType::down90 */ { 2, { kDown90Seq0, kDown90Seq1 } }, + /* TrackElemType::up60ToUp90 */ { 2, { kUp60ToUp90Seq0, kUp60ToUp90Seq1 } }, + /* TrackElemType::down90ToDown60 */ { 1, { kDown90ToDown60Seq0 } }, + /* TrackElemType::up90ToUp60 */ { 1, { kUp90ToUp60Seq0 } }, + /* TrackElemType::down60ToDown90 */ { 2, { kDown60ToDown90Seq0, kDown60ToDown90Seq1 } }, + /* TrackElemType::brakeForDrop */ { 1, { kBrakeForDropSeq0 } }, + /* TrackElemType::leftEighthToDiag */ { 5, { kLeftEighthToDiagSeq0, kLeftEighthToDiagSeq1, kLeftEighthToDiagSeq2, kLeftEighthToDiagSeq3, kLeftEighthToDiagSeq4 } }, - /* TrackElemType::RightEighthToDiag */ + /* TrackElemType::rightEighthToDiag */ { 5, { kRightEighthToDiagSeq0, kRightEighthToDiagSeq1, kRightEighthToDiagSeq2, kRightEighthToDiagSeq3, kRightEighthToDiagSeq4 } }, - /* TrackElemType::LeftEighthToOrthogonal */ + /* TrackElemType::leftEighthToOrthogonal */ { 5, { kLeftEighthToOrthogonalSeq0, kLeftEighthToOrthogonalSeq1, kLeftEighthToOrthogonalSeq2, kLeftEighthToOrthogonalSeq3, kLeftEighthToOrthogonalSeq4 } }, - /* TrackElemType::RightEighthToOrthogonal */ + /* TrackElemType::rightEighthToOrthogonal */ { 5, { kRightEighthToOrthogonalSeq0, kRightEighthToOrthogonalSeq1, kRightEighthToOrthogonalSeq2, kRightEighthToOrthogonalSeq3, kRightEighthToOrthogonalSeq4 } }, - /* TrackElemType::LeftEighthBankToDiag */ + /* TrackElemType::leftEighthBankToDiag */ { 5, { kLeftEighthBankToDiagSeq0, kLeftEighthBankToDiagSeq1, kLeftEighthBankToDiagSeq2, kLeftEighthBankToDiagSeq3, kLeftEighthBankToDiagSeq4 } }, - /* TrackElemType::RightEighthBankToDiag */ + /* TrackElemType::rightEighthBankToDiag */ { 5, { kRightEighthBankToDiagSeq0, kRightEighthBankToDiagSeq1, kRightEighthBankToDiagSeq2, kRightEighthBankToDiagSeq3, kRightEighthBankToDiagSeq4 } }, - /* TrackElemType::LeftEighthBankToOrthogonal */ + /* TrackElemType::leftEighthBankToOrthogonal */ { 5, { kLeftEighthBankToOrthogonalSeq0, kLeftEighthBankToOrthogonalSeq1, kLeftEighthBankToOrthogonalSeq2, kLeftEighthBankToOrthogonalSeq3, kLeftEighthBankToOrthogonalSeq4 } }, - /* TrackElemType::RightEighthBankToOrthogonal */ + /* TrackElemType::rightEighthBankToOrthogonal */ { 5, { kRightEighthBankToOrthogonalSeq0, kRightEighthBankToOrthogonalSeq1, kRightEighthBankToOrthogonalSeq2, kRightEighthBankToOrthogonalSeq3, kRightEighthBankToOrthogonalSeq4 } }, - /* TrackElemType::DiagFlat */ { 4, { kDiagFlatSeq0, kDiagFlatSeq1, kDiagFlatSeq2, kDiagFlatSeq3 } }, - /* TrackElemType::DiagUp25 */ { 4, { kDiagUp25Seq0, kDiagUp25Seq1, kDiagUp25Seq2, kDiagUp25Seq3 } }, - /* TrackElemType::DiagUp60 */ { 4, { kDiagUp60Seq0, kDiagUp60Seq1, kDiagUp60Seq2, kDiagUp60Seq3 } }, - /* TrackElemType::DiagFlatToUp25 */ + /* TrackElemType::diagFlat */ { 4, { kDiagFlatSeq0, kDiagFlatSeq1, kDiagFlatSeq2, kDiagFlatSeq3 } }, + /* TrackElemType::diagUp25 */ { 4, { kDiagUp25Seq0, kDiagUp25Seq1, kDiagUp25Seq2, kDiagUp25Seq3 } }, + /* TrackElemType::diagUp60 */ { 4, { kDiagUp60Seq0, kDiagUp60Seq1, kDiagUp60Seq2, kDiagUp60Seq3 } }, + /* TrackElemType::diagFlatToUp25 */ { 4, { kDiagFlatToUp25Seq0, kDiagFlatToUp25Seq1, kDiagFlatToUp25Seq2, kDiagFlatToUp25Seq3 } }, - /* TrackElemType::DiagUp25ToUp60 */ + /* TrackElemType::diagUp25ToUp60 */ { 4, { kDiagUp25ToUp60Seq0, kDiagUp25ToUp60Seq1, kDiagUp25ToUp60Seq2, kDiagUp25ToUp60Seq3 } }, - /* TrackElemType::DiagUp60ToUp25 */ + /* TrackElemType::diagUp60ToUp25 */ { 4, { kDiagUp60ToUp25Seq0, kDiagUp60ToUp25Seq1, kDiagUp60ToUp25Seq2, kDiagUp60ToUp25Seq3 } }, - /* TrackElemType::DiagUp25ToFlat */ + /* TrackElemType::diagUp25ToFlat */ { 4, { kDiagUp25ToFlatSeq0, kDiagUp25ToFlatSeq1, kDiagUp25ToFlatSeq2, kDiagUp25ToFlatSeq3 } }, - /* TrackElemType::DiagDown25 */ { 4, { kDiagDown25Seq0, kDiagDown25Seq1, kDiagDown25Seq2, kDiagDown25Seq3 } }, - /* TrackElemType::DiagDown60 */ { 4, { kDiagDown60Seq0, kDiagDown60Seq1, kDiagDown60Seq2, kDiagDown60Seq3 } }, - /* TrackElemType::DiagFlatToDown25 */ + /* TrackElemType::diagDown25 */ { 4, { kDiagDown25Seq0, kDiagDown25Seq1, kDiagDown25Seq2, kDiagDown25Seq3 } }, + /* TrackElemType::diagDown60 */ { 4, { kDiagDown60Seq0, kDiagDown60Seq1, kDiagDown60Seq2, kDiagDown60Seq3 } }, + /* TrackElemType::diagFlatToDown25 */ { 4, { kDiagFlatToDown25Seq0, kDiagFlatToDown25Seq1, kDiagFlatToDown25Seq2, kDiagFlatToDown25Seq3 } }, - /* TrackElemType::DiagDown25ToDown60 */ + /* TrackElemType::diagDown25ToDown60 */ { 4, { kDiagDown25ToDown60Seq0, kDiagDown25ToDown60Seq1, kDiagDown25ToDown60Seq2, kDiagDown25ToDown60Seq3 } }, - /* TrackElemType::DiagDown60ToDown25 */ + /* TrackElemType::diagDown60ToDown25 */ { 4, { kDiagDown60ToDown25Seq0, kDiagDown60ToDown25Seq1, kDiagDown60ToDown25Seq2, kDiagDown60ToDown25Seq3 } }, - /* TrackElemType::DiagDown25ToFlat */ + /* TrackElemType::diagDown25ToFlat */ { 4, { kDiagDown25ToFlatSeq0, kDiagDown25ToFlatSeq1, kDiagDown25ToFlatSeq2, kDiagDown25ToFlatSeq3 } }, - /* TrackElemType::DiagFlatToUp60 */ + /* TrackElemType::diagFlatToUp60 */ { 4, { kDiagFlatToUp60Seq0, kDiagFlatToUp60Seq1, kDiagFlatToUp60Seq2, kDiagFlatToUp60Seq3 } }, - /* TrackElemType::DiagUp60ToFlat */ + /* TrackElemType::diagUp60ToFlat */ { 4, { kDiagUp60ToFlatSeq0, kDiagUp60ToFlatSeq1, kDiagUp60ToFlatSeq2, kDiagUp60ToFlatSeq3 } }, - /* TrackElemType::DiagFlatToDown60 */ + /* TrackElemType::diagFlatToDown60 */ { 4, { kDiagFlatToDown60Seq0, kDiagFlatToDown60Seq1, kDiagFlatToDown60Seq2, kDiagFlatToDown60Seq3 } }, - /* TrackElemType::DiagDown60ToFlat */ + /* TrackElemType::diagDown60ToFlat */ { 4, { kDiagDown60ToFlatSeq0, kDiagDown60ToFlatSeq1, kDiagDown60ToFlatSeq2, kDiagDown60ToFlatSeq3 } }, - /* TrackElemType::DiagFlatToLeftBank */ + /* TrackElemType::diagFlatToLeftBank */ { 4, { kDiagFlatToLeftBankSeq0, kDiagFlatToLeftBankSeq1, kDiagFlatToLeftBankSeq2, kDiagFlatToLeftBankSeq3 } }, - /* TrackElemType::DiagFlatToRightBank */ + /* TrackElemType::diagFlatToRightBank */ { 4, { kDiagFlatToRightBankSeq0, kDiagFlatToRightBankSeq1, kDiagFlatToRightBankSeq2, kDiagFlatToRightBankSeq3 } }, - /* TrackElemType::DiagLeftBankToFlat */ + /* TrackElemType::diagLeftBankToFlat */ { 4, { kDiagLeftBankToFlatSeq0, kDiagLeftBankToFlatSeq1, kDiagLeftBankToFlatSeq2, kDiagLeftBankToFlatSeq3 } }, - /* TrackElemType::DiagRightBankToFlat */ + /* TrackElemType::diagRightBankToFlat */ { 4, { kDiagRightBankToFlatSeq0, kDiagRightBankToFlatSeq1, kDiagRightBankToFlatSeq2, kDiagRightBankToFlatSeq3 } }, - /* TrackElemType::DiagLeftBankToUp25 */ + /* TrackElemType::diagLeftBankToUp25 */ { 4, { kDiagLeftBankToUp25Seq0, kDiagLeftBankToUp25Seq1, kDiagLeftBankToUp25Seq2, kDiagLeftBankToUp25Seq3 } }, - /* TrackElemType::DiagRightBankToUp25 */ + /* TrackElemType::diagRightBankToUp25 */ { 4, { kDiagRightBankToUp25Seq0, kDiagRightBankToUp25Seq1, kDiagRightBankToUp25Seq2, kDiagRightBankToUp25Seq3 } }, - /* TrackElemType::DiagUp25ToLeftBank */ + /* TrackElemType::diagUp25ToLeftBank */ { 4, { kDiagUp25ToLeftBankSeq0, kDiagUp25ToLeftBankSeq1, kDiagUp25ToLeftBankSeq2, kDiagUp25ToLeftBankSeq3 } }, - /* TrackElemType::DiagUp25ToRightBank */ + /* TrackElemType::diagUp25ToRightBank */ { 4, { kDiagUp25ToRightBankSeq0, kDiagUp25ToRightBankSeq1, kDiagUp25ToRightBankSeq2, kDiagUp25ToRightBankSeq3 } }, - /* TrackElemType::DiagLeftBankToDown25 */ + /* TrackElemType::diagLeftBankToDown25 */ { 4, { kDiagLeftBankToDown25Seq0, kDiagLeftBankToDown25Seq1, kDiagLeftBankToDown25Seq2, kDiagLeftBankToDown25Seq3 } }, - /* TrackElemType::DiagRightBankToDown25 */ + /* TrackElemType::diagRightBankToDown25 */ { 4, { kDiagRightBankToDown25Seq0, kDiagRightBankToDown25Seq1, kDiagRightBankToDown25Seq2, kDiagRightBankToDown25Seq3 } }, - /* TrackElemType::DiagDown25ToLeftBank */ + /* TrackElemType::diagDown25ToLeftBank */ { 4, { kDiagDown25ToLeftBankSeq0, kDiagDown25ToLeftBankSeq1, kDiagDown25ToLeftBankSeq2, kDiagDown25ToLeftBankSeq3 } }, - /* TrackElemType::DiagDown25ToRightBank */ + /* TrackElemType::diagDown25ToRightBank */ { 4, { kDiagDown25ToRightBankSeq0, kDiagDown25ToRightBankSeq1, kDiagDown25ToRightBankSeq2, kDiagDown25ToRightBankSeq3 } }, - /* TrackElemType::DiagLeftBank */ { 4, { kDiagLeftBankSeq0, kDiagLeftBankSeq1, kDiagLeftBankSeq2, kDiagLeftBankSeq3 } }, - /* TrackElemType::DiagRightBank */ + /* TrackElemType::diagLeftBank */ { 4, { kDiagLeftBankSeq0, kDiagLeftBankSeq1, kDiagLeftBankSeq2, kDiagLeftBankSeq3 } }, + /* TrackElemType::diagRightBank */ { 4, { kDiagRightBankSeq0, kDiagRightBankSeq1, kDiagRightBankSeq2, kDiagRightBankSeq3 } }, - /* TrackElemType::LogFlumeReverser */ { 1, { kLogFlumeReverserSeq0 } }, - /* TrackElemType::SpinningTunnel */ { 1, { kSpinningTunnelSeq0 } }, - /* TrackElemType::LeftBarrelRollUpToDown */ + /* TrackElemType::logFlumeReverser */ { 1, { kLogFlumeReverserSeq0 } }, + /* TrackElemType::spinningTunnel */ { 1, { kSpinningTunnelSeq0 } }, + /* TrackElemType::leftBarrelRollUpToDown */ { 3, { kLeftBarrelRollUpToDownSeq0, kLeftBarrelRollUpToDownSeq1, kLeftBarrelRollUpToDownSeq2 } }, - /* TrackElemType::RightBarrelRollUpToDown */ + /* TrackElemType::rightBarrelRollUpToDown */ { 3, { kRightBarrelRollUpToDownSeq0, kRightBarrelRollUpToDownSeq1, kRightBarrelRollUpToDownSeq2 } }, - /* TrackElemType::LeftBarrelRollDownToUp */ + /* TrackElemType::leftBarrelRollDownToUp */ { 3, { kLeftBarrelRollDownToUpSeq0, kLeftBarrelRollDownToUpSeq1, kLeftBarrelRollDownToUpSeq2 } }, - /* TrackElemType::RightBarrelRollDownToUp */ + /* TrackElemType::rightBarrelRollDownToUp */ { 3, { kRightBarrelRollDownToUpSeq0, kRightBarrelRollDownToUpSeq1, kRightBarrelRollDownToUpSeq2 } }, - /* TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 */ + /* TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 */ { 4, { kLeftBankToLeftQuarterTurn3TilesUp25Seq0, kLeftBankToLeftQuarterTurn3TilesUp25Seq1, kLeftBankToLeftQuarterTurn3TilesUp25Seq2, kLeftBankToLeftQuarterTurn3TilesUp25Seq3 } }, - /* TrackElemType::RightBankToRightQuarterTurn3TilesUp25 */ + /* TrackElemType::rightBankToRightQuarterTurn3TilesUp25 */ { 4, { kRightBankToRightQuarterTurn3TilesUp25Seq0, kRightBankToRightQuarterTurn3TilesUp25Seq1, kRightBankToRightQuarterTurn3TilesUp25Seq2, kRightBankToRightQuarterTurn3TilesUp25Seq3 } }, - /* TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank */ + /* TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank */ { 4, { kLeftQuarterTurn3TilesDown25ToLeftBankSeq0, kLeftQuarterTurn3TilesDown25ToLeftBankSeq1, kLeftQuarterTurn3TilesDown25ToLeftBankSeq2, kLeftQuarterTurn3TilesDown25ToLeftBankSeq3 } }, - /* TrackElemType::RightQuarterTurn3TilesDown25ToRightBank */ + /* TrackElemType::rightQuarterTurn3TilesDown25ToRightBank */ { 4, { kRightQuarterTurn3TilesDown25ToRightBankSeq0, kRightQuarterTurn3TilesDown25ToRightBankSeq1, kRightQuarterTurn3TilesDown25ToRightBankSeq2, kRightQuarterTurn3TilesDown25ToRightBankSeq3 } }, - /* TrackElemType::PoweredLift */ { 1, { kPoweredLiftSeq0 } }, - /* TrackElemType::LeftLargeHalfLoopUp */ + /* TrackElemType::poweredLift */ { 1, { kPoweredLiftSeq0 } }, + /* TrackElemType::leftLargeHalfLoopUp */ { 7, { kLeftLargeHalfLoopUpSeq0, kLeftLargeHalfLoopUpSeq1, kLeftLargeHalfLoopUpSeq2, kLeftLargeHalfLoopUpSeq3, kLeftLargeHalfLoopUpSeq4, kLeftLargeHalfLoopUpSeq5, kLeftLargeHalfLoopUpSeq6 } }, - /* TrackElemType::RightLargeHalfLoopUp */ + /* TrackElemType::rightLargeHalfLoopUp */ { 7, { kRightLargeHalfLoopUpSeq0, kRightLargeHalfLoopUpSeq1, kRightLargeHalfLoopUpSeq2, kRightLargeHalfLoopUpSeq3, kRightLargeHalfLoopUpSeq4, kRightLargeHalfLoopUpSeq5, kRightLargeHalfLoopUpSeq6 } }, - /* TrackElemType::LeftLargeHalfLoopDown */ + /* TrackElemType::leftLargeHalfLoopDown */ { 7, { kLeftLargeHalfLoopDownSeq0, kLeftLargeHalfLoopDownSeq1, kLeftLargeHalfLoopDownSeq2, kLeftLargeHalfLoopDownSeq3, kLeftLargeHalfLoopDownSeq4, kLeftLargeHalfLoopDownSeq5, kLeftLargeHalfLoopDownSeq6 } }, - /* TrackElemType::RightLargeHalfLoopDown */ + /* TrackElemType::rightLargeHalfLoopDown */ { 7, { kRightLargeHalfLoopDownSeq0, kRightLargeHalfLoopDownSeq1, kRightLargeHalfLoopDownSeq2, kRightLargeHalfLoopDownSeq3, kRightLargeHalfLoopDownSeq4, kRightLargeHalfLoopDownSeq5, kRightLargeHalfLoopDownSeq6 } }, - /* TrackElemType::LeftFlyerTwistUp */ { 3, { kLeftFlyerTwistUpSeq0, kLeftFlyerTwistUpSeq1, kLeftFlyerTwistUpSeq2 } }, - /* TrackElemType::RightFlyerTwistUp */ + /* TrackElemType::leftFlyerTwistUp */ { 3, { kLeftFlyerTwistUpSeq0, kLeftFlyerTwistUpSeq1, kLeftFlyerTwistUpSeq2 } }, + /* TrackElemType::rightFlyerTwistUp */ { 3, { kRightFlyerTwistUpSeq0, kRightFlyerTwistUpSeq1, kRightFlyerTwistUpSeq2 } }, - /* TrackElemType::LeftFlyerTwistDown */ + /* TrackElemType::leftFlyerTwistDown */ { 3, { kLeftFlyerTwistDownSeq0, kLeftFlyerTwistDownSeq1, kLeftFlyerTwistDownSeq2 } }, - /* TrackElemType::RightFlyerTwistDown */ + /* TrackElemType::rightFlyerTwistDown */ { 3, { kRightFlyerTwistDownSeq0, kRightFlyerTwistDownSeq1, kRightFlyerTwistDownSeq2 } }, - /* TrackElemType::FlyerHalfLoopUninvertedUp */ + /* TrackElemType::flyerHalfLoopUninvertedUp */ { 4, { kFlyerHalfLoopUninvertedUpSeq0, kFlyerHalfLoopUninvertedUpSeq1, kFlyerHalfLoopUninvertedUpSeq2, kFlyerHalfLoopUninvertedUpSeq3 } }, - /* TrackElemType::FlyerHalfLoopInvertedDown */ + /* TrackElemType::flyerHalfLoopInvertedDown */ { 4, { kFlyerHalfLoopInvertedDownSeq0, kFlyerHalfLoopInvertedDownSeq1, kFlyerHalfLoopInvertedDownSeq2, kFlyerHalfLoopInvertedDownSeq3 } }, - /* TrackElemType::LeftFlyerCorkscrewUp */ + /* TrackElemType::leftFlyerCorkscrewUp */ { 3, { kLeftFlyerCorkscrewUpSeq0, kLeftFlyerCorkscrewUpSeq1, kLeftFlyerCorkscrewUpSeq2 } }, - /* TrackElemType::RightFlyerCorkscrewUp */ + /* TrackElemType::rightFlyerCorkscrewUp */ { 3, { kRightFlyerCorkscrewUpSeq0, kRightFlyerCorkscrewUpSeq1, kRightFlyerCorkscrewUpSeq2 } }, - /* TrackElemType::LeftFlyerCorkscrewDown */ + /* TrackElemType::leftFlyerCorkscrewDown */ { 3, { kLeftFlyerCorkscrewDownSeq0, kLeftFlyerCorkscrewDownSeq1, kLeftFlyerCorkscrewDownSeq2 } }, - /* TrackElemType::RightFlyerCorkscrewDown */ + /* TrackElemType::rightFlyerCorkscrewDown */ { 3, { kRightFlyerCorkscrewDownSeq0, kRightFlyerCorkscrewDownSeq1, kRightFlyerCorkscrewDownSeq2 } }, - /* TrackElemType::HeartLineTransferUp */ + /* TrackElemType::heartLineTransferUp */ { 4, { kHeartLineTransferUpSeq0, kHeartLineTransferUpSeq1, kHeartLineTransferUpSeq2, kHeartLineTransferUpSeq3 } }, - /* TrackElemType::HeartLineTransferDown */ + /* TrackElemType::heartLineTransferDown */ { 4, { kHeartLineTransferDownSeq0, kHeartLineTransferDownSeq1, kHeartLineTransferDownSeq2, kHeartLineTransferDownSeq3 } }, - /* TrackElemType::LeftHeartLineRoll */ + /* TrackElemType::leftHeartLineRoll */ { 6, { kLeftHeartLineRollSeq0, kLeftHeartLineRollSeq1, kLeftHeartLineRollSeq2, kLeftHeartLineRollSeq3, kLeftHeartLineRollSeq4, kLeftHeartLineRollSeq5 } }, - /* TrackElemType::RightHeartLineRoll */ + /* TrackElemType::rightHeartLineRoll */ { 6, { kRightHeartLineRollSeq0, kRightHeartLineRollSeq1, kRightHeartLineRollSeq2, kRightHeartLineRollSeq3, kRightHeartLineRollSeq4, kRightHeartLineRollSeq5 } }, - /* TrackElemType::MinigolfHoleA */ { 2, { kMinigolfHoleASeq0, kMinigolfHoleASeq1 } }, - /* TrackElemType::MinigolfHoleB */ { 2, { kMinigolfHoleBSeq0, kMinigolfHoleBSeq1 } }, - /* TrackElemType::MinigolfHoleC */ { 2, { kMinigolfHoleCSeq0, kMinigolfHoleCSeq1 } }, - /* TrackElemType::MinigolfHoleD */ { 3, { kMinigolfHoleDSeq0, kMinigolfHoleDSeq1, kMinigolfHoleDSeq2 } }, - /* TrackElemType::MinigolfHoleE */ { 3, { kMinigolfHoleESeq0, kMinigolfHoleESeq1, kMinigolfHoleESeq2 } }, - /* TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop */ + /* TrackElemType::minigolfHoleA */ { 2, { kMinigolfHoleASeq0, kMinigolfHoleASeq1 } }, + /* TrackElemType::minigolfHoleB */ { 2, { kMinigolfHoleBSeq0, kMinigolfHoleBSeq1 } }, + /* TrackElemType::minigolfHoleC */ { 2, { kMinigolfHoleCSeq0, kMinigolfHoleCSeq1 } }, + /* TrackElemType::minigolfHoleD */ { 3, { kMinigolfHoleDSeq0, kMinigolfHoleDSeq1, kMinigolfHoleDSeq2 } }, + /* TrackElemType::minigolfHoleE */ { 3, { kMinigolfHoleESeq0, kMinigolfHoleESeq1, kMinigolfHoleESeq2 } }, + /* TrackElemType::multiDimInvertedFlatToDown90QuarterLoop */ { 4, { kMultiDimInvertedFlatToDown90QuarterLoopSeq0, kMultiDimInvertedFlatToDown90QuarterLoopSeq1, kMultiDimInvertedFlatToDown90QuarterLoopSeq2, kMultiDimInvertedFlatToDown90QuarterLoopSeq3 } }, - /* TrackElemType::Up90ToInvertedFlatQuarterLoop */ + /* TrackElemType::up90ToInvertedFlatQuarterLoop */ { 3, { kUp90ToInvertedFlatQuarterLoopSeq0, kUp90ToInvertedFlatQuarterLoopSeq1, kUp90ToInvertedFlatQuarterLoopSeq2 } }, - /* TrackElemType::InvertedFlatToDown90QuarterLoop */ + /* TrackElemType::invertedFlatToDown90QuarterLoop */ { 4, { kInvertedFlatToDown90QuarterLoopSeq0, kInvertedFlatToDown90QuarterLoopSeq1, kInvertedFlatToDown90QuarterLoopSeq2, kInvertedFlatToDown90QuarterLoopSeq3 } }, - /* TrackElemType::LeftCurvedLiftHill */ + /* TrackElemType::leftCurvedLiftHill */ { 4, { kLeftCurvedLiftHillSeq0, kLeftCurvedLiftHillSeq1, kLeftCurvedLiftHillSeq2, kLeftCurvedLiftHillSeq3 } }, - /* TrackElemType::RightCurvedLiftHill */ + /* TrackElemType::rightCurvedLiftHill */ { 4, { kRightCurvedLiftHillSeq0, kRightCurvedLiftHillSeq1, kRightCurvedLiftHillSeq2, kRightCurvedLiftHillSeq3 } }, - /* TrackElemType::LeftReverser */ + /* TrackElemType::leftReverser */ { 6, { kLeftReverserSeq0, kLeftReverserSeq1, kLeftReverserSeq2, kLeftReverserSeq3, kLeftReverserSeq4, kLeftReverserSeq5 } }, - /* TrackElemType::RightReverser */ + /* TrackElemType::rightReverser */ { 6, { kRightReverserSeq0, kRightReverserSeq1, kRightReverserSeq2, kRightReverserSeq3, kRightReverserSeq4, kRightReverserSeq5 } }, - /* TrackElemType::AirThrustTopCap */ + /* TrackElemType::airThrustTopCap */ { 4, { kAirThrustTopCapSeq0, kAirThrustTopCapSeq1, kAirThrustTopCapSeq2, kAirThrustTopCapSeq3 } }, - /* TrackElemType::AirThrustVerticalDown */ { 2, { kAirThrustVerticalDownSeq0, kAirThrustVerticalDownSeq1 } }, - /* TrackElemType::AirThrustVerticalDownToLevel */ + /* TrackElemType::airThrustVerticalDown */ { 2, { kAirThrustVerticalDownSeq0, kAirThrustVerticalDownSeq1 } }, + /* TrackElemType::airThrustVerticalDownToLevel */ { 7, { kAirThrustVerticalDownToLevelSeq0, kAirThrustVerticalDownToLevelSeq1, kAirThrustVerticalDownToLevelSeq2, kAirThrustVerticalDownToLevelSeq3, kAirThrustVerticalDownToLevelSeq4, kAirThrustVerticalDownToLevelSeq5, kAirThrustVerticalDownToLevelSeq6 } }, - /* TrackElemType::BlockBrakes */ { 1, { kBlockBrakesSeq0 } }, - /* TrackElemType::LeftBankedQuarterTurn3TileUp25 */ + /* TrackElemType::blockBrakes */ { 1, { kBlockBrakesSeq0 } }, + /* TrackElemType::leftBankedQuarterTurn3TileUp25 */ { 4, { kLeftBankedQuarterTurn3TileUp25Seq0, kLeftBankedQuarterTurn3TileUp25Seq1, kLeftBankedQuarterTurn3TileUp25Seq2, kLeftBankedQuarterTurn3TileUp25Seq3 } }, - /* TrackElemType::RightBankedQuarterTurn3TileUp25 */ + /* TrackElemType::rightBankedQuarterTurn3TileUp25 */ { 4, { kRightBankedQuarterTurn3TileUp25Seq0, kRightBankedQuarterTurn3TileUp25Seq1, kRightBankedQuarterTurn3TileUp25Seq2, kRightBankedQuarterTurn3TileUp25Seq3 } }, - /* TrackElemType::LeftBankedQuarterTurn3TileDown25 */ + /* TrackElemType::leftBankedQuarterTurn3TileDown25 */ { 4, { kLeftBankedQuarterTurn3TileDown25Seq0, kLeftBankedQuarterTurn3TileDown25Seq1, kLeftBankedQuarterTurn3TileDown25Seq2, kLeftBankedQuarterTurn3TileDown25Seq3 } }, - /* TrackElemType::RightBankedQuarterTurn3TileDown25 */ + /* TrackElemType::rightBankedQuarterTurn3TileDown25 */ { 4, { kRightBankedQuarterTurn3TileDown25Seq0, kRightBankedQuarterTurn3TileDown25Seq1, kRightBankedQuarterTurn3TileDown25Seq2, kRightBankedQuarterTurn3TileDown25Seq3 } }, - /* TrackElemType::LeftBankedQuarterTurn5TileUp25 */ + /* TrackElemType::leftBankedQuarterTurn5TileUp25 */ { 7, { kLeftBankedQuarterTurn5TileUp25Seq0, kLeftBankedQuarterTurn5TileUp25Seq1, kLeftBankedQuarterTurn5TileUp25Seq2, kLeftBankedQuarterTurn5TileUp25Seq3, kLeftBankedQuarterTurn5TileUp25Seq4, kLeftBankedQuarterTurn5TileUp25Seq5, kLeftBankedQuarterTurn5TileUp25Seq6, kLeftBankedQuarterTurn5TileUp25Seq7 } }, - /* TrackElemType::RightBankedQuarterTurn5TileUp25 */ + /* TrackElemType::rightBankedQuarterTurn5TileUp25 */ { 7, { kRightBankedQuarterTurn5TileUp25Seq0, kRightBankedQuarterTurn5TileUp25Seq1, kRightBankedQuarterTurn5TileUp25Seq2, kRightBankedQuarterTurn5TileUp25Seq3, kRightBankedQuarterTurn5TileUp25Seq4, kRightBankedQuarterTurn5TileUp25Seq5, kRightBankedQuarterTurn5TileUp25Seq6, kRightBankedQuarterTurn5TileUp25Seq7 } }, - /* TrackElemType::LeftBankedQuarterTurn5TileDown25 */ + /* TrackElemType::leftBankedQuarterTurn5TileDown25 */ { 7, { kLeftBankedQuarterTurn5TileDown25Seq0, kLeftBankedQuarterTurn5TileDown25Seq1, kLeftBankedQuarterTurn5TileDown25Seq2, kLeftBankedQuarterTurn5TileDown25Seq3, kLeftBankedQuarterTurn5TileDown25Seq4, kLeftBankedQuarterTurn5TileDown25Seq5, kLeftBankedQuarterTurn5TileDown25Seq6, kLeftBankedQuarterTurn5TileDown25Seq7 } }, - /* TrackElemType::RightBankedQuarterTurn5TileDown25 */ + /* TrackElemType::rightBankedQuarterTurn5TileDown25 */ { 7, { kRightBankedQuarterTurn5TileDown25Seq0, kRightBankedQuarterTurn5TileDown25Seq1, kRightBankedQuarterTurn5TileDown25Seq2, kRightBankedQuarterTurn5TileDown25Seq3, kRightBankedQuarterTurn5TileDown25Seq4, kRightBankedQuarterTurn5TileDown25Seq5, kRightBankedQuarterTurn5TileDown25Seq6, kRightBankedQuarterTurn5TileDown25Seq7 } }, - /* TrackElemType::Up25ToLeftBankedUp25 */ { 1, { kUp25ToLeftBankedUp25Seq0 } }, - /* TrackElemType::Up25ToRightBankedUp25 */ { 1, { kUp25ToRightBankedUp25Seq0 } }, - /* TrackElemType::LeftBankedUp25ToUp25 */ { 1, { kLeftBankedUp25ToUp25Seq0 } }, - /* TrackElemType::RightBankedUp25ToUp25 */ { 1, { kRightBankedUp25ToUp25Seq0 } }, - /* TrackElemType::Down25ToLeftBankedDown25 */ { 1, { kDown25ToLeftBankedDown25Seq0 } }, - /* TrackElemType::Down25ToRightBankedDown25 */ { 1, { kDown25ToRightBankedDown25Seq0 } }, - /* TrackElemType::LeftBankedDown25ToDown25 */ { 1, { kLeftBankedDown25ToDown25Seq0 } }, - /* TrackElemType::RightBankedDown25ToDown25 */ { 1, { kRightBankedDown25ToDown25Seq0 } }, - /* TrackElemType::LeftBankedFlatToLeftBankedUp25 */ { 1, { kLeftBankedFlatToLeftBankedUp25Seq0 } }, - /* TrackElemType::RightBankedFlatToRightBankedUp25 */ { 1, { kRightBankedFlatToRightBankedUp25Seq0 } }, - /* TrackElemType::LeftBankedUp25ToLeftBankedFlat */ { 1, { kLeftBankedUp25ToLeftBankedFlatSeq0 } }, - /* TrackElemType::RightBankedUp25ToRightBankedFlat */ { 1, { kRightBankedUp25ToRightBankedFlatSeq0 } }, - /* TrackElemType::LeftBankedFlatToLeftBankedDown25 */ { 1, { kLeftBankedFlatToLeftBankedDown25Seq0 } }, - /* TrackElemType::RightBankedFlatToRightBankedDown25 */ { 1, { kRightBankedFlatToRightBankedDown25Seq0 } }, - /* TrackElemType::LeftBankedDown25ToLeftBankedFlat */ { 1, { kLeftBankedDown25ToLeftBankedFlatSeq0 } }, - /* TrackElemType::RightBankedDown25ToRightBankedFlat */ { 1, { kRightBankedDown25ToRightBankedFlatSeq0 } }, - /* TrackElemType::FlatToLeftBankedUp25 */ { 1, { kFlatToLeftBankedUp25Seq0 } }, - /* TrackElemType::FlatToRightBankedUp25 */ { 1, { kFlatToRightBankedUp25Seq0 } }, - /* TrackElemType::LeftBankedUp25ToFlat */ { 1, { kLeftBankedUp25ToFlatSeq0 } }, - /* TrackElemType::RightBankedUp25ToFlat */ { 1, { kRightBankedUp25ToFlatSeq0 } }, - /* TrackElemType::FlatToLeftBankedDown25 */ { 1, { kFlatToLeftBankedDown25Seq0 } }, - /* TrackElemType::FlatToRightBankedDown25 */ { 1, { kFlatToRightBankedDown25Seq0 } }, - /* TrackElemType::LeftBankedDown25ToFlat */ { 1, { kLeftBankedDown25ToFlatSeq0 } }, - /* TrackElemType::RightBankedDown25ToFlat */ { 1, { kRightBankedDown25ToFlatSeq0 } }, - /* TrackElemType::LeftQuarterTurn1TileUp90 */ { 2, { kLeftQuarterTurn1TileUp90Seq0, kLeftQuarterTurn1TileUp90Seq1 } }, - /* TrackElemType::RightQuarterTurn1TileUp90 */ + /* TrackElemType::up25ToLeftBankedUp25 */ { 1, { kUp25ToLeftBankedUp25Seq0 } }, + /* TrackElemType::up25ToRightBankedUp25 */ { 1, { kUp25ToRightBankedUp25Seq0 } }, + /* TrackElemType::leftBankedUp25ToUp25 */ { 1, { kLeftBankedUp25ToUp25Seq0 } }, + /* TrackElemType::rightBankedUp25ToUp25 */ { 1, { kRightBankedUp25ToUp25Seq0 } }, + /* TrackElemType::down25ToLeftBankedDown25 */ { 1, { kDown25ToLeftBankedDown25Seq0 } }, + /* TrackElemType::down25ToRightBankedDown25 */ { 1, { kDown25ToRightBankedDown25Seq0 } }, + /* TrackElemType::leftBankedDown25ToDown25 */ { 1, { kLeftBankedDown25ToDown25Seq0 } }, + /* TrackElemType::rightBankedDown25ToDown25 */ { 1, { kRightBankedDown25ToDown25Seq0 } }, + /* TrackElemType::leftBankedFlatToLeftBankedUp25 */ { 1, { kLeftBankedFlatToLeftBankedUp25Seq0 } }, + /* TrackElemType::rightBankedFlatToRightBankedUp25 */ { 1, { kRightBankedFlatToRightBankedUp25Seq0 } }, + /* TrackElemType::leftBankedUp25ToLeftBankedFlat */ { 1, { kLeftBankedUp25ToLeftBankedFlatSeq0 } }, + /* TrackElemType::rightBankedUp25ToRightBankedFlat */ { 1, { kRightBankedUp25ToRightBankedFlatSeq0 } }, + /* TrackElemType::leftBankedFlatToLeftBankedDown25 */ { 1, { kLeftBankedFlatToLeftBankedDown25Seq0 } }, + /* TrackElemType::rightBankedFlatToRightBankedDown25 */ { 1, { kRightBankedFlatToRightBankedDown25Seq0 } }, + /* TrackElemType::leftBankedDown25ToLeftBankedFlat */ { 1, { kLeftBankedDown25ToLeftBankedFlatSeq0 } }, + /* TrackElemType::rightBankedDown25ToRightBankedFlat */ { 1, { kRightBankedDown25ToRightBankedFlatSeq0 } }, + /* TrackElemType::flatToLeftBankedUp25 */ { 1, { kFlatToLeftBankedUp25Seq0 } }, + /* TrackElemType::flatToRightBankedUp25 */ { 1, { kFlatToRightBankedUp25Seq0 } }, + /* TrackElemType::leftBankedUp25ToFlat */ { 1, { kLeftBankedUp25ToFlatSeq0 } }, + /* TrackElemType::rightBankedUp25ToFlat */ { 1, { kRightBankedUp25ToFlatSeq0 } }, + /* TrackElemType::flatToLeftBankedDown25 */ { 1, { kFlatToLeftBankedDown25Seq0 } }, + /* TrackElemType::flatToRightBankedDown25 */ { 1, { kFlatToRightBankedDown25Seq0 } }, + /* TrackElemType::leftBankedDown25ToFlat */ { 1, { kLeftBankedDown25ToFlatSeq0 } }, + /* TrackElemType::rightBankedDown25ToFlat */ { 1, { kRightBankedDown25ToFlatSeq0 } }, + /* TrackElemType::leftQuarterTurn1TileUp90 */ { 2, { kLeftQuarterTurn1TileUp90Seq0, kLeftQuarterTurn1TileUp90Seq1 } }, + /* TrackElemType::rightQuarterTurn1TileUp90 */ { 2, { kRightQuarterTurn1TileUp90Seq0, kRightQuarterTurn1TileUp90Seq1 } }, - /* TrackElemType::LeftQuarterTurn1TileDown90 */ + /* TrackElemType::leftQuarterTurn1TileDown90 */ { 2, { kLeftQuarterTurn1TileDown90Seq0, kLeftQuarterTurn1TileDown90Seq1 } }, - /* TrackElemType::RightQuarterTurn1TileDown90 */ + /* TrackElemType::rightQuarterTurn1TileDown90 */ { 2, { kRightQuarterTurn1TileDown90Seq0, kRightQuarterTurn1TileDown90Seq1 } }, - /* TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop */ + /* TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop */ { 3, { kMultiDimUp90ToInvertedFlatQuarterLoopSeq0, kMultiDimUp90ToInvertedFlatQuarterLoopSeq1, kMultiDimUp90ToInvertedFlatQuarterLoopSeq2 } }, - /* TrackElemType::MultiDimFlatToDown90QuarterLoop */ + /* TrackElemType::multiDimFlatToDown90QuarterLoop */ { 4, { kMultiDimFlatToDown90QuarterLoopSeq0, kMultiDimFlatToDown90QuarterLoopSeq1, kMultiDimFlatToDown90QuarterLoopSeq2, kMultiDimFlatToDown90QuarterLoopSeq3 } }, - /* TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop */ + /* TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop */ { 3, { kMultiDimInvertedUp90ToFlatQuarterLoopSeq0, kMultiDimInvertedUp90ToFlatQuarterLoopSeq1, kMultiDimInvertedUp90ToFlatQuarterLoopSeq2 } }, - /* TrackElemType::RotationControlToggle */ { 1, { kRotationControlToggleSeq0 } }, - /* TrackElemType::FlatTrack1x4A */ + /* TrackElemType::rotationControlToggle */ { 1, { kRotationControlToggleSeq0 } }, + /* TrackElemType::flatTrack1x4A */ { 4, { kFlatTrack1x4ASeq0, kFlatTrack1x4ASeq1, kFlatTrack1x4ASeq2, kFlatTrack1x4ASeq3 } }, - /* TrackElemType::FlatTrack2x2 */ { 4, { kFlatTrack2x2Seq0, kFlatTrack2x2Seq1, kFlatTrack2x2Seq2, kFlatTrack2x2Seq3 } }, - /* TrackElemType::FlatTrack4x4 */ + /* TrackElemType::flatTrack2x2 */ { 4, { kFlatTrack2x2Seq0, kFlatTrack2x2Seq1, kFlatTrack2x2Seq2, kFlatTrack2x2Seq3 } }, + /* TrackElemType::flatTrack4x4 */ { 16, { kFlatTrack4x4Seq0, kFlatTrack4x4Seq1, kFlatTrack4x4Seq2, kFlatTrack4x4Seq3, kFlatTrack4x4Seq4, kFlatTrack4x4Seq5, kFlatTrack4x4Seq6, kFlatTrack4x4Seq7, kFlatTrack4x4Seq8, kFlatTrack4x4Seq9, kFlatTrack4x4Seq10, kFlatTrack4x4Seq11, kFlatTrack4x4Seq12, kFlatTrack4x4Seq13, kFlatTrack4x4Seq14, kFlatTrack4x4Seq15 } }, - /* TrackElemType::FlatTrack2x4 */ + /* TrackElemType::flatTrack2x4 */ { 8, { kFlatTrack2x4Seq0, kFlatTrack2x4Seq1, kFlatTrack2x4Seq2, kFlatTrack2x4Seq3, kFlatTrack2x4Seq4, kFlatTrack2x4Seq5, kFlatTrack2x4Seq6, kFlatTrack2x4Seq7 } }, - /* TrackElemType::FlatTrack1x5 */ + /* TrackElemType::flatTrack1x5 */ { 5, { kFlatTrack1x5Seq0, kFlatTrack1x5Seq1, kFlatTrack1x5Seq2, kFlatTrack1x5Seq3, kFlatTrack1x5Seq4 } }, - /* TrackElemType::FlatTrack1x1A */ { 1, { kFlatTrack1x1ASeq0 } }, - /* TrackElemType::FlatTrack1x4B */ + /* TrackElemType::flatTrack1x1A */ { 1, { kFlatTrack1x1ASeq0 } }, + /* TrackElemType::flatTrack1x4B */ { 4, { kFlatTrack1x4BSeq0, kFlatTrack1x4BSeq1, kFlatTrack1x4BSeq2, kFlatTrack1x4BSeq3 } }, - /* TrackElemType::FlatTrack1x1B */ { 1, { kFlatTrack1x1BSeq0 } }, - /* TrackElemType::FlatTrack1x4C */ + /* TrackElemType::flatTrack1x1B */ { 1, { kFlatTrack1x1BSeq0 } }, + /* TrackElemType::flatTrack1x4C */ { 4, { kFlatTrack1x4CSeq0, kFlatTrack1x4CSeq1, kFlatTrack1x4CSeq2, kFlatTrack1x4CSeq3 } }, - /* TrackElemType::FlatTrack3x3 */ + /* TrackElemType::flatTrack3x3 */ { 9, { kFlatTrack3x3Seq0, kFlatTrack3x3Seq1, kFlatTrack3x3Seq2, kFlatTrack3x3Seq3, kFlatTrack3x3Seq4, kFlatTrack3x3Seq5, kFlatTrack3x3Seq6, kFlatTrack3x3Seq7, kFlatTrack3x3Seq8 } }, - /* TrackElemType::LeftLargeCorkscrewUp */ + /* TrackElemType::leftLargeCorkscrewUp */ { 6, { kLeftLargeCorkscrewUpSeq0, kLeftLargeCorkscrewUpSeq1, kLeftLargeCorkscrewUpSeq2, kLeftLargeCorkscrewUpSeq3, kLeftLargeCorkscrewUpSeq4, kLeftLargeCorkscrewUpSeq5 } }, - /* TrackElemType::RightLargeCorkscrewUp */ + /* TrackElemType::rightLargeCorkscrewUp */ { 6, { kRightLargeCorkscrewUpSeq0, kRightLargeCorkscrewUpSeq1, kRightLargeCorkscrewUpSeq2, kRightLargeCorkscrewUpSeq3, kRightLargeCorkscrewUpSeq4, kRightLargeCorkscrewUpSeq5 } }, - /* TrackElemType::LeftLargeCorkscrewDown */ + /* TrackElemType::leftLargeCorkscrewDown */ { 6, { kLeftLargeCorkscrewDownSeq0, kLeftLargeCorkscrewDownSeq1, kLeftLargeCorkscrewDownSeq2, kLeftLargeCorkscrewDownSeq3, kLeftLargeCorkscrewDownSeq4, kLeftLargeCorkscrewDownSeq5 } }, - /* TrackElemType::RightLargeCorkscrewDown */ + /* TrackElemType::rightLargeCorkscrewDown */ { 6, { kRightLargeCorkscrewDownSeq0, kRightLargeCorkscrewDownSeq1, kRightLargeCorkscrewDownSeq2, kRightLargeCorkscrewDownSeq3, kRightLargeCorkscrewDownSeq4, kRightLargeCorkscrewDownSeq5 } }, - /* TrackElemType::LeftMediumHalfLoopUp */ + /* TrackElemType::leftMediumHalfLoopUp */ { 5, { kLeftMediumHalfLoopUpSeq0, kLeftMediumHalfLoopUpSeq1, kLeftMediumHalfLoopUpSeq2, kLeftMediumHalfLoopUpSeq3, kLeftMediumHalfLoopUpSeq4 } }, - /* TrackElemType::RightMediumHalfLoopUp */ + /* TrackElemType::rightMediumHalfLoopUp */ { 5, { kRightMediumHalfLoopUpSeq0, kRightMediumHalfLoopUpSeq1, kRightMediumHalfLoopUpSeq2, kRightMediumHalfLoopUpSeq3, kRightMediumHalfLoopUpSeq4 } }, - /* TrackElemType::LeftMediumHalfLoopDown */ + /* TrackElemType::leftMediumHalfLoopDown */ { 5, { kLeftMediumHalfLoopDownSeq0, kLeftMediumHalfLoopDownSeq1, kLeftMediumHalfLoopDownSeq2, kLeftMediumHalfLoopDownSeq3, kLeftMediumHalfLoopDownSeq4 } }, - /* TrackElemType::RightMediumHalfLoopDown */ + /* TrackElemType::rightMediumHalfLoopDown */ { 5, { kRightMediumHalfLoopDownSeq0, kRightMediumHalfLoopDownSeq1, kRightMediumHalfLoopDownSeq2, kRightMediumHalfLoopDownSeq3, kRightMediumHalfLoopDownSeq4 } }, - /* TrackElemType::LeftZeroGRollUp */ { 3, { kLeftZeroGRollUpSeq0, kLeftZeroGRollUpSeq1, kLeftZeroGRollUpSeq2 } }, - /* TrackElemType::RightZeroGRollUp */ { 3, { kRightZeroGRollUpSeq0, kRightZeroGRollUpSeq1, kRightZeroGRollUpSeq2 } }, - /* TrackElemType::LeftZeroGRollDown */ + /* TrackElemType::leftZeroGRollUp */ { 3, { kLeftZeroGRollUpSeq0, kLeftZeroGRollUpSeq1, kLeftZeroGRollUpSeq2 } }, + /* TrackElemType::rightZeroGRollUp */ { 3, { kRightZeroGRollUpSeq0, kRightZeroGRollUpSeq1, kRightZeroGRollUpSeq2 } }, + /* TrackElemType::leftZeroGRollDown */ { 3, { kLeftZeroGRollDownSeq0, kLeftZeroGRollDownSeq1, kLeftZeroGRollDownSeq2 } }, - /* TrackElemType::RightZeroGRollDown */ + /* TrackElemType::rightZeroGRollDown */ { 3, { kRightZeroGRollDownSeq0, kRightZeroGRollDownSeq1, kRightZeroGRollDownSeq2 } }, - /* TrackElemType::LeftLargeZeroGRollUp */ + /* TrackElemType::leftLargeZeroGRollUp */ { 4, { kLeftLargeZeroGRollUpSeq0, kLeftLargeZeroGRollUpSeq1, kLeftLargeZeroGRollUpSeq2, kLeftLargeZeroGRollUpSeq3 } }, - /* TrackElemType::RightLargeZeroGRollUp */ + /* TrackElemType::rightLargeZeroGRollUp */ { 4, { kRightLargeZeroGRollUpSeq0, kRightLargeZeroGRollUpSeq1, kRightLargeZeroGRollUpSeq2, kRightLargeZeroGRollUpSeq3 } }, - /* TrackElemType::LeftLargeZeroGRollDown */ + /* TrackElemType::leftLargeZeroGRollDown */ { 4, { kLeftLargeZeroGRollDownSeq0, kLeftLargeZeroGRollDownSeq1, kLeftLargeZeroGRollDownSeq2, kLeftLargeZeroGRollDownSeq3 } }, - /* TrackElemType::RightLargeZeroGRollDown */ + /* TrackElemType::rightLargeZeroGRollDown */ { 4, { kRightLargeZeroGRollDownSeq0, kRightLargeZeroGRollDownSeq1, kRightLargeZeroGRollDownSeq2, kRightLargeZeroGRollDownSeq3 } }, - /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp */ + /* TrackElemType::leftFlyerLargeHalfLoopUninvertedUp */ { 7, { kLeftFlyerLargeHalfLoopUninvertedUpSeq0, kLeftFlyerLargeHalfLoopUninvertedUpSeq1, kLeftFlyerLargeHalfLoopUninvertedUpSeq2, kLeftFlyerLargeHalfLoopUninvertedUpSeq3, kLeftFlyerLargeHalfLoopUninvertedUpSeq4, kLeftFlyerLargeHalfLoopUninvertedUpSeq5, kLeftFlyerLargeHalfLoopUninvertedUpSeq6 } }, - /* TrackElemType::RightFlyerLargeHalfLoopUninvertedUp */ + /* TrackElemType::rightFlyerLargeHalfLoopUninvertedUp */ { 7, { kRightFlyerLargeHalfLoopUninvertedUpSeq0, kRightFlyerLargeHalfLoopUninvertedUpSeq1, kRightFlyerLargeHalfLoopUninvertedUpSeq2, kRightFlyerLargeHalfLoopUninvertedUpSeq3, kRightFlyerLargeHalfLoopUninvertedUpSeq4, kRightFlyerLargeHalfLoopUninvertedUpSeq5, kRightFlyerLargeHalfLoopUninvertedUpSeq6 } }, - /* TrackElemType::LeftFlyerLargeHalfLoopInvertedDown */ + /* TrackElemType::leftFlyerLargeHalfLoopInvertedDown */ { 7, { kLeftFlyerLargeHalfLoopInvertedDownSeq0, kLeftFlyerLargeHalfLoopInvertedDownSeq1, kLeftFlyerLargeHalfLoopInvertedDownSeq2, kLeftFlyerLargeHalfLoopInvertedDownSeq3, kLeftFlyerLargeHalfLoopInvertedDownSeq4, kLeftFlyerLargeHalfLoopInvertedDownSeq5, kLeftFlyerLargeHalfLoopInvertedDownSeq6 } }, - /* TrackElemType::RightFlyerLargeHalfLoopInvertedDown */ + /* TrackElemType::rightFlyerLargeHalfLoopInvertedDown */ { 7, { kRightFlyerLargeHalfLoopInvertedDownSeq0, kRightFlyerLargeHalfLoopInvertedDownSeq1, kRightFlyerLargeHalfLoopInvertedDownSeq2, kRightFlyerLargeHalfLoopInvertedDownSeq3, kRightFlyerLargeHalfLoopInvertedDownSeq4, kRightFlyerLargeHalfLoopInvertedDownSeq5, kRightFlyerLargeHalfLoopInvertedDownSeq6 } }, - /* TrackElemType::LeftFlyerLargeHalfLoopInvertedUp */ + /* TrackElemType::leftFlyerLargeHalfLoopInvertedUp */ { 7, { kLeftFlyerLargeHalfLoopInvertedUpSeq0, kLeftFlyerLargeHalfLoopInvertedUpSeq1, kLeftFlyerLargeHalfLoopInvertedUpSeq2, kLeftFlyerLargeHalfLoopInvertedUpSeq3, kLeftFlyerLargeHalfLoopInvertedUpSeq4, kLeftFlyerLargeHalfLoopInvertedUpSeq5, kLeftFlyerLargeHalfLoopInvertedUpSeq6 } }, - /* TrackElemType::RightFlyerLargeHalfLoopInvertedUp */ + /* TrackElemType::rightFlyerLargeHalfLoopInvertedUp */ { 7, { kRightFlyerLargeHalfLoopInvertedUpSeq0, kRightFlyerLargeHalfLoopInvertedUpSeq1, kRightFlyerLargeHalfLoopInvertedUpSeq2, kRightFlyerLargeHalfLoopInvertedUpSeq3, kRightFlyerLargeHalfLoopInvertedUpSeq4, kRightFlyerLargeHalfLoopInvertedUpSeq5, kRightFlyerLargeHalfLoopInvertedUpSeq6 } }, - /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown */ + /* TrackElemType::leftFlyerLargeHalfLoopUninvertedDown */ { 7, { kLeftFlyerLargeHalfLoopUninvertedDownSeq0, kLeftFlyerLargeHalfLoopUninvertedDownSeq1, kLeftFlyerLargeHalfLoopUninvertedDownSeq2, kLeftFlyerLargeHalfLoopUninvertedDownSeq3, kLeftFlyerLargeHalfLoopUninvertedDownSeq4, kLeftFlyerLargeHalfLoopUninvertedDownSeq5, kLeftFlyerLargeHalfLoopUninvertedDownSeq6 } }, - /* TrackElemType::RightFlyerLargeHalfLoopUninvertedDown */ + /* TrackElemType::rightFlyerLargeHalfLoopUninvertedDown */ { 7, { kRightFlyerLargeHalfLoopUninvertedDownSeq0, kRightFlyerLargeHalfLoopUninvertedDownSeq1, kRightFlyerLargeHalfLoopUninvertedDownSeq2, kRightFlyerLargeHalfLoopUninvertedDownSeq3, kRightFlyerLargeHalfLoopUninvertedDownSeq4, kRightFlyerLargeHalfLoopUninvertedDownSeq5, kRightFlyerLargeHalfLoopUninvertedDownSeq6 } }, - /* TrackElemType::FlyerHalfLoopInvertedUp */ + /* TrackElemType::flyerHalfLoopInvertedUp */ { 4, { kFlyerHalfLoopInvertedUpSeq0, kFlyerHalfLoopInvertedUpSeq1, kFlyerHalfLoopInvertedUpSeq2, kFlyerHalfLoopInvertedUpSeq3 } }, - /* TrackElemType::FlyerHalfLoopUninvertedDown */ + /* TrackElemType::flyerHalfLoopUninvertedDown */ { 4, { kFlyerHalfLoopUninvertedDownSeq0, kFlyerHalfLoopUninvertedDownSeq1, kFlyerHalfLoopUninvertedDownSeq2, kFlyerHalfLoopUninvertedDownSeq3 } }, - /* TrackElemType::LeftEighthToDiagUp25 */ + /* TrackElemType::leftEighthToDiagUp25 */ { 5, { kLeftEighthToDiagUp25Seq0, kLeftEighthToDiagUp25Seq1, kLeftEighthToDiagUp25Seq2, kLeftEighthToDiagUp25Seq3, kLeftEighthToDiagUp25Seq4 } }, - /* TrackElemType::RightEighthToDiagUp25 */ + /* TrackElemType::rightEighthToDiagUp25 */ { 5, { kRightEighthToDiagUp25Seq0, kRightEighthToDiagUp25Seq1, kRightEighthToDiagUp25Seq2, kRightEighthToDiagUp25Seq3, kRightEighthToDiagUp25Seq4 } }, - /* TrackElemType::LeftEighthToDiagDown25 */ + /* TrackElemType::leftEighthToDiagDown25 */ { 5, { kLeftEighthToDiagDown25Seq0, kLeftEighthToDiagDown25Seq1, kLeftEighthToDiagDown25Seq2, kLeftEighthToDiagDown25Seq3, kLeftEighthToDiagDown25Seq4 } }, - /* TrackElemType::RightEighthToDiagDown25 */ + /* TrackElemType::rightEighthToDiagDown25 */ { 5, { kRightEighthToDiagDown25Seq0, kRightEighthToDiagDown25Seq1, kRightEighthToDiagDown25Seq2, kRightEighthToDiagDown25Seq3, kRightEighthToDiagDown25Seq4 } }, - /* TrackElemType::LeftEighthToOrthogonalUp25 */ + /* TrackElemType::leftEighthToOrthogonalUp25 */ { 5, { kLeftEighthToOrthogonalUp25Seq0, kLeftEighthToOrthogonalUp25Seq1, kLeftEighthToOrthogonalUp25Seq2, kLeftEighthToOrthogonalUp25Seq3, kLeftEighthToOrthogonalUp25Seq4 } }, - /* TrackElemType::RightEighthToOrthogonalUp25 */ + /* TrackElemType::rightEighthToOrthogonalUp25 */ { 5, { kRightEighthToOrthogonalUp25Seq0, kRightEighthToOrthogonalUp25Seq1, kRightEighthToOrthogonalUp25Seq2, kRightEighthToOrthogonalUp25Seq3, kRightEighthToOrthogonalUp25Seq4 } }, - /* TrackElemType::LeftEighthToOrthogonalDown25 */ + /* TrackElemType::leftEighthToOrthogonalDown25 */ { 5, { kLeftEighthToOrthogonalDown25Seq0, kLeftEighthToOrthogonalDown25Seq1, kLeftEighthToOrthogonalDown25Seq2, kLeftEighthToOrthogonalDown25Seq3, kLeftEighthToOrthogonalDown25Seq4 } }, - /* TrackElemType::RightEighthToOrthogonalDown25 */ + /* TrackElemType::rightEighthToOrthogonalDown25 */ { 5, { kRightEighthToOrthogonalDown25Seq0, kRightEighthToOrthogonalDown25Seq1, kRightEighthToOrthogonalDown25Seq2, kRightEighthToOrthogonalDown25Seq3, kRightEighthToOrthogonalDown25Seq4 } }, - /* TrackElemType::DiagUp25ToLeftBankedUp25 */ + /* TrackElemType::diagUp25ToLeftBankedUp25 */ { 4, { kDiagUp25ToLeftBankedUp25Seq0, kDiagUp25ToLeftBankedUp25Seq1, kDiagUp25ToLeftBankedUp25Seq2, kDiagUp25ToLeftBankedUp25Seq3 } }, - /* TrackElemType::DiagUp25ToRightBankedUp25 */ + /* TrackElemType::diagUp25ToRightBankedUp25 */ { 4, { kDiagUp25ToRightBankedUp25Seq0, kDiagUp25ToRightBankedUp25Seq1, kDiagUp25ToRightBankedUp25Seq2, kDiagUp25ToRightBankedUp25Seq3 } }, - /* TrackElemType::DiagLeftBankedUp25ToUp25 */ + /* TrackElemType::diagLeftBankedUp25ToUp25 */ { 4, { kDiagLeftBankedUp25ToUp25Seq0, kDiagLeftBankedUp25ToUp25Seq1, kDiagLeftBankedUp25ToUp25Seq2, kDiagLeftBankedUp25ToUp25Seq3 } }, - /* TrackElemType::DiagRightBankedUp25ToUp25 */ + /* TrackElemType::diagRightBankedUp25ToUp25 */ { 4, { kDiagRightBankedUp25ToUp25Seq0, kDiagRightBankedUp25ToUp25Seq1, kDiagRightBankedUp25ToUp25Seq2, kDiagRightBankedUp25ToUp25Seq3 } }, - /* TrackElemType::DiagDown25ToLeftBankedDown25 */ + /* TrackElemType::diagDown25ToLeftBankedDown25 */ { 4, { kDiagDown25ToLeftBankedDown25Seq0, kDiagDown25ToLeftBankedDown25Seq1, kDiagDown25ToLeftBankedDown25Seq2, kDiagDown25ToLeftBankedDown25Seq3 } }, - /* TrackElemType::DiagDown25ToRightBankedDown25 */ + /* TrackElemType::diagDown25ToRightBankedDown25 */ { 4, { kDiagDown25ToRightBankedDown25Seq0, kDiagDown25ToRightBankedDown25Seq1, kDiagDown25ToRightBankedDown25Seq2, kDiagDown25ToRightBankedDown25Seq3 } }, - /* TrackElemType::DiagLeftBankedDown25ToDown25 */ + /* TrackElemType::diagLeftBankedDown25ToDown25 */ { 4, { kDiagLeftBankedDown25ToDown25Seq0, kDiagLeftBankedDown25ToDown25Seq1, kDiagLeftBankedDown25ToDown25Seq2, kDiagLeftBankedDown25ToDown25Seq3 } }, - /* TrackElemType::DiagRightBankedDown25ToDown25 */ + /* TrackElemType::diagRightBankedDown25ToDown25 */ { 4, { kDiagRightBankedDown25ToDown25Seq0, kDiagRightBankedDown25ToDown25Seq1, kDiagRightBankedDown25ToDown25Seq2, kDiagRightBankedDown25ToDown25Seq3 } }, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 */ + /* TrackElemType::diagLeftBankedFlatToLeftBankedUp25 */ { 4, { kDiagLeftBankedFlatToLeftBankedUp25Seq0, kDiagLeftBankedFlatToLeftBankedUp25Seq1, kDiagLeftBankedFlatToLeftBankedUp25Seq2, kDiagLeftBankedFlatToLeftBankedUp25Seq3 } }, - /* TrackElemType::DiagRightBankedFlatToRightBankedUp25 */ + /* TrackElemType::diagRightBankedFlatToRightBankedUp25 */ { 4, { kDiagRightBankedFlatToRightBankedUp25Seq0, kDiagRightBankedFlatToRightBankedUp25Seq1, kDiagRightBankedFlatToRightBankedUp25Seq2, kDiagRightBankedFlatToRightBankedUp25Seq3 } }, - /* TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat */ + /* TrackElemType::diagLeftBankedUp25ToLeftBankedFlat */ { 4, { kDiagLeftBankedUp25ToLeftBankedFlatSeq0, kDiagLeftBankedUp25ToLeftBankedFlatSeq1, kDiagLeftBankedUp25ToLeftBankedFlatSeq2, kDiagLeftBankedUp25ToLeftBankedFlatSeq3 } }, - /* TrackElemType::DiagRightBankedUp25ToRightBankedFlat */ + /* TrackElemType::diagRightBankedUp25ToRightBankedFlat */ { 4, { kDiagRightBankedUp25ToRightBankedFlatSeq0, kDiagRightBankedUp25ToRightBankedFlatSeq1, kDiagRightBankedUp25ToRightBankedFlatSeq2, kDiagRightBankedUp25ToRightBankedFlatSeq3 } }, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 */ + /* TrackElemType::diagLeftBankedFlatToLeftBankedDown25 */ { 4, { kDiagLeftBankedFlatToLeftBankedDown25Seq0, kDiagLeftBankedFlatToLeftBankedDown25Seq1, kDiagLeftBankedFlatToLeftBankedDown25Seq2, kDiagLeftBankedFlatToLeftBankedDown25Seq3 } }, - /* TrackElemType::DiagRightBankedFlatToRightBankedDown25 */ + /* TrackElemType::diagRightBankedFlatToRightBankedDown25 */ { 4, { kDiagRightBankedFlatToRightBankedDown25Seq0, kDiagRightBankedFlatToRightBankedDown25Seq1, kDiagRightBankedFlatToRightBankedDown25Seq2, kDiagRightBankedFlatToRightBankedDown25Seq3 } }, - /* TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat */ + /* TrackElemType::diagLeftBankedDown25ToLeftBankedFlat */ { 4, { kDiagLeftBankedDown25ToLeftBankedFlatSeq0, kDiagLeftBankedDown25ToLeftBankedFlatSeq1, kDiagLeftBankedDown25ToLeftBankedFlatSeq2, kDiagLeftBankedDown25ToLeftBankedFlatSeq3 } }, - /* TrackElemType::DiagRightBankedDown25ToRightBankedFlat */ + /* TrackElemType::diagRightBankedDown25ToRightBankedFlat */ { 4, { kDiagRightBankedDown25ToRightBankedFlatSeq0, kDiagRightBankedDown25ToRightBankedFlatSeq1, kDiagRightBankedDown25ToRightBankedFlatSeq2, kDiagRightBankedDown25ToRightBankedFlatSeq3 } }, - /* TrackElemType::DiagFlatToLeftBankedUp25 */ + /* TrackElemType::diagFlatToLeftBankedUp25 */ { 4, { kDiagFlatToLeftBankedUp25Seq0, kDiagFlatToLeftBankedUp25Seq1, kDiagFlatToLeftBankedUp25Seq2, kDiagFlatToLeftBankedUp25Seq3 } }, - /* TrackElemType::DiagFlatToRightBankedUp25 */ + /* TrackElemType::diagFlatToRightBankedUp25 */ { 4, { kDiagFlatToRightBankedUp25Seq0, kDiagFlatToRightBankedUp25Seq1, kDiagFlatToRightBankedUp25Seq2, kDiagFlatToRightBankedUp25Seq3 } }, - /* TrackElemType::DiagLeftBankedUp25ToFlat */ + /* TrackElemType::diagLeftBankedUp25ToFlat */ { 4, { kDiagLeftBankedUp25ToFlatSeq0, kDiagLeftBankedUp25ToFlatSeq1, kDiagLeftBankedUp25ToFlatSeq2, kDiagLeftBankedUp25ToFlatSeq3 } }, - /* TrackElemType::DiagRightBankedUp25ToFlat */ + /* TrackElemType::diagRightBankedUp25ToFlat */ { 4, { kDiagRightBankedUp25ToFlatSeq0, kDiagRightBankedUp25ToFlatSeq1, kDiagRightBankedUp25ToFlatSeq2, kDiagRightBankedUp25ToFlatSeq3 } }, - /* TrackElemType::DiagFlatToLeftBankedDown25 */ + /* TrackElemType::diagFlatToLeftBankedDown25 */ { 4, { kDiagFlatToLeftBankedDown25Seq0, kDiagFlatToLeftBankedDown25Seq1, kDiagFlatToLeftBankedDown25Seq2, kDiagFlatToLeftBankedDown25Seq3 } }, - /* TrackElemType::DiagFlatToRightBankedDown25 */ + /* TrackElemType::diagFlatToRightBankedDown25 */ { 4, { kDiagFlatToRightBankedDown25Seq0, kDiagFlatToRightBankedDown25Seq1, kDiagFlatToRightBankedDown25Seq2, kDiagFlatToRightBankedDown25Seq3 } }, - /* TrackElemType::DiagLeftBankedDown25ToFlat */ + /* TrackElemType::diagLeftBankedDown25ToFlat */ { 4, { kDiagLeftBankedDown25ToFlatSeq0, kDiagLeftBankedDown25ToFlatSeq1, kDiagLeftBankedDown25ToFlatSeq2, kDiagLeftBankedDown25ToFlatSeq3 } }, - /* TrackElemType::DiagRightBankedDown25ToFlat */ + /* TrackElemType::diagRightBankedDown25ToFlat */ { 4, { kDiagRightBankedDown25ToFlatSeq0, kDiagRightBankedDown25ToFlatSeq1, kDiagRightBankedDown25ToFlatSeq2, kDiagRightBankedDown25ToFlatSeq3 } }, - /* TrackElemType::DiagUp25LeftBanked */ + /* TrackElemType::diagUp25LeftBanked */ { 4, { kDiagUp25LeftBankedSeq0, kDiagUp25LeftBankedSeq1, kDiagUp25LeftBankedSeq2, kDiagUp25LeftBankedSeq3 } }, - /* TrackElemType::DiagUp25RightBanked */ + /* TrackElemType::diagUp25RightBanked */ { 4, { kDiagUp25RightBankedSeq0, kDiagUp25RightBankedSeq1, kDiagUp25RightBankedSeq2, kDiagUp25RightBankedSeq3 } }, - /* TrackElemType::DiagDown25LeftBanked */ + /* TrackElemType::diagDown25LeftBanked */ { 4, { kDiagDown25LeftBankedSeq0, kDiagDown25LeftBankedSeq1, kDiagDown25LeftBankedSeq2, kDiagDown25LeftBankedSeq3 } }, - /* TrackElemType::DiagDown25RightBanked */ + /* TrackElemType::diagDown25RightBanked */ { 4, { kDiagDown25RightBankedSeq0, kDiagDown25RightBankedSeq1, kDiagDown25RightBankedSeq2, kDiagDown25RightBankedSeq3 } }, - /* TrackElemType::LeftEighthBankToDiagUp25 */ + /* TrackElemType::leftEighthBankToDiagUp25 */ { 5, { kLeftEighthBankToDiagUp25Seq0, kLeftEighthBankToDiagUp25Seq1, kLeftEighthBankToDiagUp25Seq2, kLeftEighthBankToDiagUp25Seq3, kLeftEighthBankToDiagUp25Seq4 } }, - /* TrackElemType::RightEighthBankToDiagUp25 */ + /* TrackElemType::rightEighthBankToDiagUp25 */ { 5, { kRightEighthBankToDiagUp25Seq0, kRightEighthBankToDiagUp25Seq1, kRightEighthBankToDiagUp25Seq2, kRightEighthBankToDiagUp25Seq3, kRightEighthBankToDiagUp25Seq4 } }, - /* TrackElemType::LeftEighthBankToDiagDown25 */ + /* TrackElemType::leftEighthBankToDiagDown25 */ { 5, { kLeftEighthBankToDiagDown25Seq0, kLeftEighthBankToDiagDown25Seq1, kLeftEighthBankToDiagDown25Seq2, kLeftEighthBankToDiagDown25Seq3, kLeftEighthBankToDiagDown25Seq4 } }, - /* TrackElemType::RightEighthBankToDiagDown25 */ + /* TrackElemType::rightEighthBankToDiagDown25 */ { 5, { kRightEighthBankToDiagDown25Seq0, kRightEighthBankToDiagDown25Seq1, kRightEighthBankToDiagDown25Seq2, kRightEighthBankToDiagDown25Seq3, kRightEighthBankToDiagDown25Seq4 } }, - /* TrackElemType::LeftEighthBankToOrthogonalUp25 */ + /* TrackElemType::leftEighthBankToOrthogonalUp25 */ { 5, { kLeftEighthBankToOrthogonalUp25Seq0, kLeftEighthBankToOrthogonalUp25Seq1, kLeftEighthBankToOrthogonalUp25Seq2, kLeftEighthBankToOrthogonalUp25Seq3, kLeftEighthBankToOrthogonalUp25Seq4 } }, - /* TrackElemType::RightEighthBankToOrthogonalUp25 */ + /* TrackElemType::rightEighthBankToOrthogonalUp25 */ { 5, { kRightEighthBankToOrthogonalUp25Seq0, kRightEighthBankToOrthogonalUp25Seq1, kRightEighthBankToOrthogonalUp25Seq2, kRightEighthBankToOrthogonalUp25Seq3, kRightEighthBankToOrthogonalUp25Seq4 } }, - /* TrackElemType::LeftEighthBankToOrthogonalDown25 */ + /* TrackElemType::leftEighthBankToOrthogonalDown25 */ { 5, { kLeftEighthBankToOrthogonalDown25Seq0, kLeftEighthBankToOrthogonalDown25Seq1, kLeftEighthBankToOrthogonalDown25Seq2, kLeftEighthBankToOrthogonalDown25Seq3, kLeftEighthBankToOrthogonalDown25Seq4 } }, - /* TrackElemType::RightEighthBankToOrthogonalDown25 */ + /* TrackElemType::rightEighthBankToOrthogonalDown25 */ { 5, { kRightEighthBankToOrthogonalDown25Seq0, kRightEighthBankToOrthogonalDown25Seq1, kRightEighthBankToOrthogonalDown25Seq2, kRightEighthBankToOrthogonalDown25Seq3, kRightEighthBankToOrthogonalDown25Seq4 } }, - /* TrackElemType::DiagBrakes */ { 4, { kDiagBrakesSeq0, kDiagBrakesSeq1, kDiagBrakesSeq2, kDiagBrakesSeq3 } }, - /* TrackElemType::DiagBlockBrakes */ + /* TrackElemType::diagBrakes */ { 4, { kDiagBrakesSeq0, kDiagBrakesSeq1, kDiagBrakesSeq2, kDiagBrakesSeq3 } }, + /* TrackElemType::diagBlockBrakes */ { 4, { kDiagBlockBrakesSeq0, kDiagBlockBrakesSeq1, kDiagBlockBrakesSeq2, kDiagBlockBrakesSeq3 } }, - /* TrackElemType::InclinedBrakes */ + /* TrackElemType::inclinedBrakes */ { 1, { kDown25Seq0 } }, - /* TrackElemType::DiagBooster */ { 4, { kDiagFlatSeq0, kDiagFlatSeq1, kDiagFlatSeq2, kDiagFlatSeq3 } }, - /* TrackElemType::DiagFlatToUp60LongBase */ + /* TrackElemType::diagBooster */ { 4, { kDiagFlatSeq0, kDiagFlatSeq1, kDiagFlatSeq2, kDiagFlatSeq3 } }, + /* TrackElemType::diagFlatToUp60LongBase */ { 10, { kDiagFlatToUp60LongBaseSeq0, kDiagFlatToUp60LongBaseSeq1, kDiagFlatToUp60LongBaseSeq2, kDiagFlatToUp60LongBaseSeq3, kDiagFlatToUp60LongBaseSeq4, kDiagFlatToUp60LongBaseSeq5, kDiagFlatToUp60LongBaseSeq6, kDiagFlatToUp60LongBaseSeq7, kDiagFlatToUp60LongBaseSeq8, kDiagFlatToUp60LongBaseSeq9 } }, - /* TrackElemType::DiagUp60ToFlatLongBase */ + /* TrackElemType::diagUp60ToFlatLongBase */ { 10, { kDiagUp60ToFlatLongBaseSeq0, kDiagUp60ToFlatLongBaseSeq1, kDiagUp60ToFlatLongBaseSeq2, kDiagUp60ToFlatLongBaseSeq3, kDiagUp60ToFlatLongBaseSeq4, kDiagUp60ToFlatLongBaseSeq5, kDiagUp60ToFlatLongBaseSeq6, kDiagUp60ToFlatLongBaseSeq7, kDiagUp60ToFlatLongBaseSeq8, kDiagUp60ToFlatLongBaseSeq9 } }, - /* TrackElemType::DiagFlatToDown60LongBase */ + /* TrackElemType::diagFlatToDown60LongBase */ { 10, { kDiagFlatToDown60LongBaseSeq0, kDiagFlatToDown60LongBaseSeq1, kDiagFlatToDown60LongBaseSeq2, kDiagFlatToDown60LongBaseSeq3, kDiagFlatToDown60LongBaseSeq4, kDiagFlatToDown60LongBaseSeq5, kDiagFlatToDown60LongBaseSeq6, kDiagFlatToDown60LongBaseSeq7, kDiagFlatToDown60LongBaseSeq8, kDiagFlatToDown60LongBaseSeq9 } }, - /* TrackElemType::DiagDown60ToFlatLongBase */ + /* TrackElemType::diagDown60ToFlatLongBase */ { 10, { kDiagDown60ToFlatLongBaseSeq0, kDiagDown60ToFlatLongBaseSeq1, kDiagDown60ToFlatLongBaseSeq2, kDiagDown60ToFlatLongBaseSeq3, kDiagDown60ToFlatLongBaseSeq4, kDiagDown60ToFlatLongBaseSeq5, kDiagDown60ToFlatLongBaseSeq6, kDiagDown60ToFlatLongBaseSeq7, kDiagDown60ToFlatLongBaseSeq8, kDiagDown60ToFlatLongBaseSeq9 } }, - /* TrackElemType::LeftEighthDiveLoopUpToOrthogonal */ + /* TrackElemType::leftEighthDiveLoopUpToOrthogonal */ { 6, { kLeftEighthDiveLoopUpToOrthogonalSeq0, kLeftEighthDiveLoopUpToOrthogonalSeq1, kLeftEighthDiveLoopUpToOrthogonalSeq2, kLeftEighthDiveLoopUpToOrthogonalSeq3, kLeftEighthDiveLoopUpToOrthogonalSeq4, kLeftEighthDiveLoopUpToOrthogonalSeq5 } }, - /* TrackElemType::RightEighthDiveLoopUpToOrthogonal */ + /* TrackElemType::rightEighthDiveLoopUpToOrthogonal */ { 6, { kRightEighthDiveLoopUpToOrthogonalSeq0, kRightEighthDiveLoopUpToOrthogonalSeq1, kRightEighthDiveLoopUpToOrthogonalSeq2, kRightEighthDiveLoopUpToOrthogonalSeq3, kRightEighthDiveLoopUpToOrthogonalSeq4, kRightEighthDiveLoopUpToOrthogonalSeq5 } }, - /* TrackElemType::LeftEighthDiveLoopDownToDiag */ + /* TrackElemType::leftEighthDiveLoopDownToDiag */ { 6, { kLeftEighthDiveLoopDownToDiagSeq0, kLeftEighthDiveLoopDownToDiagSeq1, kLeftEighthDiveLoopDownToDiagSeq2, kLeftEighthDiveLoopDownToDiagSeq3, kLeftEighthDiveLoopDownToDiagSeq4, kLeftEighthDiveLoopDownToDiagSeq5 } }, - /* TrackElemType::RightEighthDiveLoopDownToDiag */ + /* TrackElemType::rightEighthDiveLoopDownToDiag */ { 6, { kRightEighthDiveLoopDownToDiagSeq0, kRightEighthDiveLoopDownToDiagSeq1, kRightEighthDiveLoopDownToDiagSeq2, kRightEighthDiveLoopDownToDiagSeq3, kRightEighthDiveLoopDownToDiagSeq4, kRightEighthDiveLoopDownToDiagSeq5 } }, - /* TrackElemType::DiagDown25Brakes */ { 4, { kDiagDown25Seq0, kDiagDown25Seq1, kDiagDown25Seq2, kDiagDown25Seq3 } } + /* TrackElemType::diagDown25Brakes */ { 4, { kDiagDown25Seq0, kDiagDown25Seq1, kDiagDown25Seq2, kDiagDown25Seq3 } } }; #pragma endregion static constexpr auto BuildDescriptorTable() { - std::array res{}; + std::array res{}; - for (int i = 0; i < EnumValue(TrackElemType::Count); i++) + for (int i = 0; i < EnumValue(TrackElemType::count); i++) { TrackElementDescriptor& desc = res[i]; desc.description = kRideConfigurationStringIds[i]; diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 41aee8e13c68..231b47e340b8 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -69,11 +69,11 @@ namespace OpenRCT2::TrackMetaData constexpr DodgemsTrackSize GetDodgemsTrackSize(OpenRCT2::TrackElemType type) { - if (type == OpenRCT2::TrackElemType::FlatTrack2x2) + if (type == OpenRCT2::TrackElemType::flatTrack2x2) return { 4, 4, 59, 59 }; - if (type == OpenRCT2::TrackElemType::FlatTrack4x4) + if (type == OpenRCT2::TrackElemType::flatTrack4x4) return { 4, 4, 123, 123 }; - if (type == OpenRCT2::TrackElemType::FlatTrack2x4) + if (type == OpenRCT2::TrackElemType::flatTrack2x4) return { 4, 4, 59, 123 }; return { 0, 0, 0, 0 }; } diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 02e9215d95d3..d39094f2f236 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -224,7 +224,7 @@ ResultWithMessage TrackDesign::CreateTrackDesignTrack(TrackDesignState& tds, con const auto& element = trackElement.element->AsTrack(); // Remove this check for new track design format - if (element->GetTrackType() > TrackElemType::HighestAlias) + if (element->GetTrackType() > TrackElemType::highestAlias) { return { false, STR_TRACK_ELEM_UNSUPPORTED_TD6 }; } @@ -237,7 +237,7 @@ ResultWithMessage TrackDesign::CreateTrackDesignTrack(TrackDesignState& tds, con track.seatRotation = element->GetSeatRotation(); // This warning will not apply to new track design format - if (track.type == TrackElemType::BlockBrakes && element->GetBrakeBoosterSpeed() != kRCT2DefaultBlockBrakeSpeed) + if (track.type == TrackElemType::blockBrakes && element->GetBrakeBoosterSpeed() != kRCT2DefaultBlockBrakeSpeed) { warningMessage = STR_TRACK_DESIGN_BLOCK_BRAKE_SPEED_RESET; } diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index a4ec9fb4ab1d..61ad7b7c97c1 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -101,7 +101,7 @@ enum class TrackDesignTrackElementFlag : uint8_t struct TrackDesignTrackElement { - OpenRCT2::TrackElemType type = OpenRCT2::TrackElemType::Flat; + OpenRCT2::TrackElemType type = OpenRCT2::TrackElemType::flat; uint8_t flags = 0; uint8_t colourScheme = 0; ::StationIndex stationIndex = StationIndex::FromUnderlying(0); diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index b4df1ce96799..1679c1193a54 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -247,7 +247,7 @@ static bool TrackPaintUtilDrawStationImpl( // height += 5 (height + 5); hasFence = TrackPaintUtilHasFence(EDGE_NW, position, trackElement, ride, session.CurrentRotation); - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 0) { if (hasGreenLight) { @@ -260,7 +260,7 @@ static bool TrackPaintUtilDrawStationImpl( hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE); } } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 2) { imageId = session.SupportColours.WithIndex( (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE)); @@ -275,12 +275,12 @@ static bool TrackPaintUtilDrawStationImpl( TrackPaintUtilDrawStationCovers(session, EDGE_NW, hasFence, stationObj, coverHeight, stationColourScheme); // height += 5 (height + 5) - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 0) { imageId = session.SupportColours.WithIndex( (hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE)); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 2) { imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_SW_NE); } @@ -294,11 +294,11 @@ static bool TrackPaintUtilDrawStationImpl( hasFence = TrackPaintUtilHasFence(EDGE_SE, position, trackElement, ride, session.CurrentRotation); if (hasFence) { - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 0) { imageId = session.SupportColours.WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 2) { imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_ANGLE_FENCED_NE_SW); } @@ -308,13 +308,13 @@ static bool TrackPaintUtilDrawStationImpl( } PaintAddImageAsParent(session, imageId, { 0, 31, height + fenceOffsetB }, { 32, 1, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 0) { // Addition: draw only small fence if there is an entrance/exit at the beginning imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE); PaintAddImageAsParent(session, imageId, { 31, 23, height + fenceOffsetB }, { 1, 8, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 2) { // Addition: draw only small fence if there is an entrance/exit at the end imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW); @@ -324,12 +324,12 @@ static bool TrackPaintUtilDrawStationImpl( TrackPaintUtilDrawStationCovers(session, EDGE_SE, hasFence, stationObj, coverHeight, stationColourScheme); // height += 7 (height + 7) - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 0) { imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE); PaintAddImageAsParent(session, imageId, { 31, 0, height + fenceOffsetB }, { 1, 8, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 2) { imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW); PaintAddImageAsParent(session, imageId, { 31, 0, height + fenceOffsetB }, { 1, 8, 7 }); @@ -344,7 +344,7 @@ static bool TrackPaintUtilDrawStationImpl( // height += 5 (height + 5); hasFence = TrackPaintUtilHasFence(EDGE_NE, position, trackElement, ride, session.CurrentRotation); - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 3) { if (hasGreenLight) { @@ -357,7 +357,7 @@ static bool TrackPaintUtilDrawStationImpl( hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE); } } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 1) { imageId = session.SupportColours.WithIndex( (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE)); @@ -372,12 +372,12 @@ static bool TrackPaintUtilDrawStationImpl( TrackPaintUtilDrawStationCovers(session, EDGE_NE, hasFence, stationObj, coverHeight, stationColourScheme); // height += 5 (height + 5) - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 3) { imageId = session.SupportColours.WithIndex( (hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE)); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 1) { imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_NW_SE); } @@ -391,11 +391,11 @@ static bool TrackPaintUtilDrawStationImpl( hasFence = TrackPaintUtilHasFence(EDGE_SW, position, trackElement, ride, session.CurrentRotation); if (hasFence) { - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 3) { imageId = session.SupportColours.WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 1) { imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_ANGLE_FENCED_NW_SE); } @@ -405,13 +405,13 @@ static bool TrackPaintUtilDrawStationImpl( } PaintAddImageAsParent(session, imageId, { 31, 0, height + fenceOffsetB }, { 1, 32, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 3) { // Addition: draw only small fence if there is an entrance/exit at the beginning imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE); PaintAddImageAsParent(session, imageId, { 23, 31, height + fenceOffsetB }, { 8, 1, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 1) { // Addition: draw only small fence if there is an entrance/exit at the end imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE); @@ -422,12 +422,12 @@ static bool TrackPaintUtilDrawStationImpl( TrackPaintUtilDrawStationCovers(session, EDGE_SW, hasFence, stationObj, coverHeight, stationColourScheme); // height += 7 (height + 7) - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 3) { imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE); PaintAddImageAsParent(session, imageId, { 0, 31, height + fenceOffsetB }, { 8, 1, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 1) { imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE); PaintAddImageAsParent(session, imageId, { 0, 31, height + fenceOffsetB }, { 8, 1, 7 }); @@ -460,7 +460,7 @@ bool TrackPaintUtilDrawStationInverted( // height += 5 (height + 5); hasFence = TrackPaintUtilHasFence(EDGE_NW, position, trackElement, ride, session.CurrentRotation); - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 0) { if (hasGreenLight) { @@ -473,7 +473,7 @@ bool TrackPaintUtilDrawStationInverted( hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE); } } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 2) { imageId = session.SupportColours.WithIndex( (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE)); @@ -488,12 +488,12 @@ bool TrackPaintUtilDrawStationInverted( TrackPaintUtilDrawStationCovers2(session, EDGE_NW, hasFence, stationObj, height, stationVariant, colour); // height += 5 (height + 5) - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 0) { imageId = session.SupportColours.WithIndex( (hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE)); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 2) { imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_SW_NE); } @@ -507,11 +507,11 @@ bool TrackPaintUtilDrawStationInverted( hasFence = TrackPaintUtilHasFence(EDGE_SE, position, trackElement, ride, session.CurrentRotation); if (hasFence) { - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 0) { imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_BEGIN_ANGLE_FENCE_SW_NE); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 2) { imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_LIGHT_BACK_ANGLE_FENCED_NE_SW); } @@ -521,13 +521,13 @@ bool TrackPaintUtilDrawStationInverted( } PaintAddImageAsParent(session, imageId, { 0, 31, height + 8 }, { 32, 1, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 0) { // Addition: draw only small fence if there is an entrance/exit at the beginning imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE); PaintAddImageAsParent(session, imageId, { 31, 23, height + 8 }, { 1, 8, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 2) { // Addition: draw only small fence if there is an entrance/exit at the end imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW); @@ -537,12 +537,12 @@ bool TrackPaintUtilDrawStationInverted( TrackPaintUtilDrawStationCovers2(session, EDGE_SE, hasFence, stationObj, height, stationVariant, colour); // height += 7 (height + 7) - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 0) { imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE); PaintAddImageAsParent(session, imageId, { 31, 0, height + 8 }, { 1, 8, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 2) { imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW); PaintAddImageAsParent(session, imageId, { 31, 0, height + 8 }, { 1, 8, 7 }); @@ -557,7 +557,7 @@ bool TrackPaintUtilDrawStationInverted( // height += 5 (height + 5); hasFence = TrackPaintUtilHasFence(EDGE_NE, position, trackElement, ride, session.CurrentRotation); - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 3) { if (hasGreenLight) { @@ -570,7 +570,7 @@ bool TrackPaintUtilDrawStationInverted( hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE); } } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 1) { imageId = session.SupportColours.WithIndex( (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE)); @@ -585,12 +585,12 @@ bool TrackPaintUtilDrawStationInverted( TrackPaintUtilDrawStationCovers2(session, EDGE_NE, hasFence, stationObj, height, stationVariant, colour); // height += 5 (height + 5) - if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 3) { imageId = session.SupportColours.WithIndex( (hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE)); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 1) { imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_NW_SE); } @@ -604,11 +604,11 @@ bool TrackPaintUtilDrawStationInverted( hasFence = TrackPaintUtilHasFence(EDGE_SW, position, trackElement, ride, session.CurrentRotation); if (hasFence) { - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 3) { imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_BEGIN_ANGLE_FENCE_NW_SE); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 1) { imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_LIGHT_BACK_ANGLE_FENCED_NW_SE); } @@ -618,13 +618,13 @@ bool TrackPaintUtilDrawStationInverted( } PaintAddImageAsParent(session, imageId, { 31, 0, height + 8 }, { 1, 32, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3) + else if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 3) { // Addition: draw only small fence if there is an entrance/exit at the beginning imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE); PaintAddImageAsParent(session, imageId, { 23, 31, height + 8 }, { 8, 1, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 1) { // Addition: draw only small fence if there is an entrance/exit at the end imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE); @@ -635,12 +635,12 @@ bool TrackPaintUtilDrawStationInverted( TrackPaintUtilDrawStationCovers2(session, EDGE_SW, hasFence, stationObj, height, stationVariant, colour); // height += 7 (height + 7) - if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3) + if (trackElement.GetTrackType() == TrackElemType::beginStation && direction == 3) { imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE); PaintAddImageAsParent(session, imageId, { 0, 31, height + 8 }, { 8, 1, 7 }); } - else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1) + else if (trackElement.GetTrackType() == TrackElemType::endStation && direction == 1) { imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE); PaintAddImageAsParent(session, imageId, { 0, 31, height + 8 }, { 8, 1, 7 }); @@ -1978,7 +1978,7 @@ void PaintTrack(PaintSession& session, Direction direction, int32_t height, cons { session.InteractionType = ViewportInteractionItem::none; const auto& ted = GetTrackElementDescriptor(trackType); - if ((trackType == TrackElemType::Maze) + if ((trackType == TrackElemType::maze) || (trackSequence < ted.numSequences && ted.sequences[trackSequence].flags.has(SequenceFlag::hasHeightMarker))) { uint16_t ax = ride->getRideTypeDescriptor().Heights.VehicleZOffset; @@ -2000,7 +2000,7 @@ void PaintTrack(PaintSession& session, Direction direction, int32_t height, cons zOffset = 23; const auto* originElement = ride->getOriginElement(StationIndex::FromUnderlying(0)); - if (originElement != nullptr && originElement->GetTrackType() == TrackElemType::FlatTrack1x1B) + if (originElement != nullptr && originElement->GetTrackType() == TrackElemType::flatTrack1x1B) LightFx::AddKioskLights(session.MapPosition, height, zOffset); else if (kRideTypeDescriptors[ride->type].HasFlag(RtdFlag::isShopOrFacility)) LightFx::AddShopLights(session.MapPosition, trackElement.GetDirection(), height, zOffset); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index fe3529568a03..0e4597252102 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -517,7 +517,7 @@ void RideUpdateMeasurementsSpecialElements_MiniGolf(Ride& ride, const OpenRCT2:: void RideUpdateMeasurementsSpecialElements_WaterCoaster(Ride& ride, const OpenRCT2::TrackElemType trackType) { - if (trackType >= TrackElemType::FlatCovered && trackType <= TrackElemType::RightQuarterTurn3TilesCovered) + if (trackType >= TrackElemType::flatCovered && trackType <= TrackElemType::rightQuarterTurn3TilesCovered) { ride.specialTrackElements.set(SpecialElement::splash); } @@ -613,7 +613,7 @@ void Vehicle::UpdateMeasurements() return; auto trackElemType = GetTrackType(); - if (trackElemType == TrackElemType::PoweredLift || HasFlag(VehicleFlags::OnLiftHill)) + if (trackElemType == TrackElemType::poweredLift || HasFlag(VehicleFlags::OnLiftHill)) { if (!curRide->testingFlags.has(RideTestingFlag::poweredLift)) { @@ -632,22 +632,22 @@ void Vehicle::UpdateMeasurements() switch (trackElemType) { - case TrackElemType::Rapids: + case TrackElemType::rapids: curRide->specialTrackElements.set(SpecialElement::rapids); break; - case TrackElemType::SpinningTunnel: + case TrackElemType::spinningTunnel: curRide->specialTrackElements.set(SpecialElement::spinningTunnel); break; - case TrackElemType::Waterfall: + case TrackElemType::waterfall: curRide->specialTrackElements.set(SpecialElement::waterfall); break; - case TrackElemType::LogFlumeReverser: + case TrackElemType::logFlumeReverser: curRide->specialTrackElements.set(SpecialElement::reverser); break; - case TrackElemType::Whirlpool: + case TrackElemType::whirlpool: curRide->specialTrackElements.set(SpecialElement::whirlpool); break; - case TrackElemType::Watersplash: + case TrackElemType::watersplash: if (velocity >= 11.0_mph) { curRide->specialTrackElements.set(SpecialElement::splash); @@ -2127,7 +2127,7 @@ bool Vehicle::CurrentTowerElementIsTop() if (trackElement->GetRideIndex() != ride) continue; - if (trackElement->GetTrackType() != TrackElemType::TowerSection) + if (trackElement->GetTrackType() != TrackElemType::towerSection) continue; return false; @@ -2153,7 +2153,7 @@ void Vehicle::UpdateTravellingBoatHireSetup() var_35 = 0; // No longer on a track so reset to 0 for import/export SetTrackDirection(0); - SetTrackType(TrackElemType::Flat); + SetTrackType(TrackElemType::flat); SetState(Vehicle::Status::travellingBoat); remaining_distance += 27924; @@ -5262,7 +5262,7 @@ void Vehicle::CheckAndApplyBlockSectionStopSite() switch (trackType) { - case TrackElemType::BlockBrakes: + case TrackElemType::blockBrakes: // Check if this brake is the start of a cable lift if (curRide->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT) { @@ -5277,26 +5277,26 @@ void Vehicle::CheckAndApplyBlockSectionStopSite() } } [[fallthrough]]; - case TrackElemType::DiagBlockBrakes: + case TrackElemType::diagBlockBrakes: if (curRide->isBlockSectioned() && trackElement->AsTrack()->IsBrakeClosed()) ApplyStopBlockBrake(); else ApplyNonStopBlockBrake(); break; - case TrackElemType::EndStation: + case TrackElemType::endStation: if (trackElement->AsTrack()->IsBrakeClosed()) _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_BLOCK_BRAKE; break; - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: - case TrackElemType::CableLiftHill: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: + case TrackElemType::cableLiftHill: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: if (curRide->isBlockSectioned()) { - if (trackType == TrackElemType::CableLiftHill || trackElement->AsTrack()->HasChain()) + if (trackType == TrackElemType::cableLiftHill || trackElement->AsTrack()->HasChain()) { if (trackElement->AsTrack()->IsBrakeClosed()) { @@ -5347,7 +5347,7 @@ static void BlockBrakesOpenPreviousSection(const Ride& ride, const CoordsXYZ& ve MapInvalidateElement(location, reinterpret_cast(trackElement)); auto trackType = trackElement->GetTrackType(); - if (trackType == TrackElemType::EndStation) + if (trackType == TrackElemType::endStation) { OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::blockBrakeClose, location); } @@ -5362,40 +5362,40 @@ int32_t Vehicle::GetSwingAmount() const { switch (GetTrackType()) { - case TrackElemType::LeftQuarterTurn5Tiles: - case TrackElemType::BankedLeftQuarterTurn5Tiles: - case TrackElemType::LeftQuarterTurn5TilesUp25: - case TrackElemType::LeftQuarterTurn5TilesDown25: - case TrackElemType::LeftQuarterTurn5TilesCovered: - case TrackElemType::LeftHalfBankedHelixUpLarge: - case TrackElemType::LeftHalfBankedHelixDownLarge: - case TrackElemType::LeftQuarterBankedHelixLargeUp: - case TrackElemType::LeftQuarterBankedHelixLargeDown: - case TrackElemType::LeftQuarterHelixLargeUp: - case TrackElemType::LeftQuarterHelixLargeDown: - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: + case TrackElemType::leftQuarterTurn5Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesDown25: + case TrackElemType::leftQuarterTurn5TilesCovered: + case TrackElemType::leftHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: + case TrackElemType::leftQuarterBankedHelixLargeUp: + case TrackElemType::leftQuarterBankedHelixLargeDown: + case TrackElemType::leftQuarterHelixLargeUp: + case TrackElemType::leftQuarterHelixLargeDown: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: // Loc6D67E1 return 14; - case TrackElemType::RightQuarterTurn5Tiles: - case TrackElemType::BankedRightQuarterTurn5Tiles: - case TrackElemType::RightQuarterTurn5TilesUp25: - case TrackElemType::RightQuarterTurn5TilesDown25: - case TrackElemType::RightQuarterTurn5TilesCovered: - case TrackElemType::RightHalfBankedHelixUpLarge: - case TrackElemType::RightHalfBankedHelixDownLarge: - case TrackElemType::RightQuarterBankedHelixLargeUp: - case TrackElemType::RightQuarterBankedHelixLargeDown: - case TrackElemType::RightQuarterHelixLargeUp: - case TrackElemType::RightQuarterHelixLargeDown: - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: + case TrackElemType::rightQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesCovered: + case TrackElemType::rightHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: + case TrackElemType::rightQuarterBankedHelixLargeUp: + case TrackElemType::rightQuarterBankedHelixLargeDown: + case TrackElemType::rightQuarterHelixLargeUp: + case TrackElemType::rightQuarterHelixLargeDown: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: // Loc6D6804 return -14; - case TrackElemType::SBendLeft: - case TrackElemType::SBendLeftCovered: + case TrackElemType::sBendLeft: + case TrackElemType::sBendLeftCovered: // Loc6D67EF if (track_progress < 48) { @@ -5403,8 +5403,8 @@ int32_t Vehicle::GetSwingAmount() const } return -15; - case TrackElemType::SBendRight: - case TrackElemType::SBendRightCovered: + case TrackElemType::sBendRight: + case TrackElemType::sBendRightCovered: // Loc6D67CC if (track_progress < 48) { @@ -5412,59 +5412,59 @@ int32_t Vehicle::GetSwingAmount() const } return 15; - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::LeftBankedQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25: - case TrackElemType::LeftQuarterTurn3TilesCovered: - case TrackElemType::LeftHalfBankedHelixUpSmall: - case TrackElemType::LeftHalfBankedHelixDownSmall: - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::LeftCurvedLiftHill: - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::leftBankedQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25: + case TrackElemType::leftQuarterTurn3TilesCovered: + case TrackElemType::leftHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::leftCurvedLiftHill: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: // Loc6D67BE return 13; - case TrackElemType::RightQuarterTurn3Tiles: - case TrackElemType::RightBankedQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesDown25: - case TrackElemType::RightQuarterTurn3TilesCovered: - case TrackElemType::RightHalfBankedHelixUpSmall: - case TrackElemType::RightHalfBankedHelixDownSmall: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: - case TrackElemType::RightCurvedLiftHill: - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: + case TrackElemType::rightQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesCovered: + case TrackElemType::rightHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::rightCurvedLiftHill: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: // Loc6D67B0 return -13; - case TrackElemType::LeftQuarterTurn1Tile: - case TrackElemType::LeftQuarterTurn1TileUp60: - case TrackElemType::LeftQuarterTurn1TileDown60: + case TrackElemType::leftQuarterTurn1Tile: + case TrackElemType::leftQuarterTurn1TileUp60: + case TrackElemType::leftQuarterTurn1TileDown60: // Loc6D67A2 return 12; - case TrackElemType::RightQuarterTurn1Tile: - case TrackElemType::RightQuarterTurn1TileUp60: - case TrackElemType::RightQuarterTurn1TileDown60: + case TrackElemType::rightQuarterTurn1Tile: + case TrackElemType::rightQuarterTurn1TileUp60: + case TrackElemType::rightQuarterTurn1TileDown60: // Loc6D6794 return -12; - case TrackElemType::LeftEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: - case TrackElemType::LeftEighthBankToDiag: - case TrackElemType::LeftEighthBankToOrthogonal: + case TrackElemType::leftEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: + case TrackElemType::leftEighthBankToDiag: + case TrackElemType::leftEighthBankToOrthogonal: // Loc6D67D3 return 15; - case TrackElemType::RightEighthToDiag: - case TrackElemType::RightEighthToOrthogonal: - case TrackElemType::RightEighthBankToDiag: - case TrackElemType::RightEighthBankToOrthogonal: + case TrackElemType::rightEighthToDiag: + case TrackElemType::rightEighthToOrthogonal: + case TrackElemType::rightEighthBankToDiag: + case TrackElemType::rightEighthBankToOrthogonal: // Loc6D67F6 return -15; default: @@ -5553,15 +5553,15 @@ void Vehicle::UpdateSwingingCar() auto trackType = GetTrackType(); switch (trackType) { - case TrackElemType::BankedLeftQuarterTurn5Tiles: - case TrackElemType::LeftBank: - case TrackElemType::LeftBankedQuarterTurn3Tiles: + case TrackElemType::bankedLeftQuarterTurn5Tiles: + case TrackElemType::leftBank: + case TrackElemType::leftBankedQuarterTurn3Tiles: dx = 10831; cx = -819; break; - case TrackElemType::BankedRightQuarterTurn5Tiles: - case TrackElemType::RightBank: - case TrackElemType::RightBankedQuarterTurn3Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: + case TrackElemType::rightBank: + case TrackElemType::rightBankedQuarterTurn3Tiles: dx = 819; cx = -10831; break; @@ -6215,7 +6215,7 @@ void Vehicle::UpdateHandleWaterSplash() const } else { - if (trackType == TrackElemType::Down25ToFlat) + if (trackType == TrackElemType::down25ToFlat) { if (track_progress == 12) { @@ -6225,7 +6225,7 @@ void Vehicle::UpdateHandleWaterSplash() const } if (IsHead()) { - if (trackType == TrackElemType::Watersplash) + if (trackType == TrackElemType::watersplash) { if (track_progress == 48) { @@ -6525,7 +6525,7 @@ void Vehicle::Sub6DBF3E() _vehicleStationIndex = tileElement->AsTrack()->GetStationIndex(); } - if (trackType == TrackElemType::TowerBase && this == gCurrentVehicle) + if (trackType == TrackElemType::towerBase && this == gCurrentVehicle) { if (track_progress > 3 && !HasFlag(VehicleFlags::PoweredCarInReverse)) { @@ -6545,7 +6545,7 @@ void Vehicle::Sub6DBF3E() } } - if (trackType != TrackElemType::EndStation || this != gCurrentVehicle) + if (trackType != TrackElemType::endStation || this != gCurrentVehicle) { return; } @@ -6651,7 +6651,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( return false; } - if (trackType == TrackElemType::CableLiftHill && this == gCurrentVehicle) + if (trackType == TrackElemType::cableLiftHill && this == gCurrentVehicle) { _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_11; } @@ -6661,7 +6661,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( if (next_vehicle_on_train.IsNull()) { SetBrakeClosedMultiTile(*tileElement->AsTrack(), TrackLocation, true); - if (TrackTypeIsBlockBrakes(trackType) || trackType == TrackElemType::EndStation) + if (TrackTypeIsBlockBrakes(trackType) || trackType == TrackElemType::endStation) { if (!(rideEntry.Cars[0].flags & CAR_ENTRY_FLAG_POWERED)) { @@ -6726,8 +6726,8 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( tileElement = xyElement.element; location = { xyElement, curZ, static_cast(direction) }; } - if (tileElement->AsTrack()->GetTrackType() == TrackElemType::LeftReverser - || tileElement->AsTrack()->GetTrackType() == TrackElemType::RightReverser) + if (tileElement->AsTrack()->GetTrackType() == TrackElemType::leftReverser + || tileElement->AsTrack()->GetTrackType() == TrackElemType::rightReverser) { if (IsHead() && velocity <= 3.0_mph) { @@ -6771,12 +6771,12 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( if ((carEntry->flags & CAR_ENTRY_FLAG_GO_KART) && TrackSubposition < VehicleTrackSubposition::GoKartsMovingToRightLane) { trackType = tileElement->AsTrack()->GetTrackType(); - if (trackType == TrackElemType::Flat || trackType == TrackElemType::LeftQuarterTurn3Tiles - || trackType == TrackElemType::RightQuarterTurn3Tiles || trackType == TrackElemType::LeftQuarterTurn5Tiles - || trackType == TrackElemType::RightQuarterTurn5Tiles || trackType == TrackElemType::LeftEighthToDiag - || trackType == TrackElemType::RightEighthToDiag || trackType == TrackElemType::LeftEighthToOrthogonal - || trackType == TrackElemType::RightEighthToOrthogonal || trackType == TrackElemType::DiagFlat - || trackType == TrackElemType::SBendLeft || trackType == TrackElemType::SBendRight + if (trackType == TrackElemType::flat || trackType == TrackElemType::leftQuarterTurn3Tiles + || trackType == TrackElemType::rightQuarterTurn3Tiles || trackType == TrackElemType::leftQuarterTurn5Tiles + || trackType == TrackElemType::rightQuarterTurn5Tiles || trackType == TrackElemType::leftEighthToDiag + || trackType == TrackElemType::rightEighthToDiag || trackType == TrackElemType::leftEighthToOrthogonal + || trackType == TrackElemType::rightEighthToOrthogonal || trackType == TrackElemType::diagFlat + || trackType == TrackElemType::sBendLeft || trackType == TrackElemType::sBendRight || ((curRide.lifecycleFlags & RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING) && tileElement->AsTrack()->IsStation())) { UpdateGoKartAttemptSwitchLanes(); @@ -6807,7 +6807,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( } trackType = tileElement->AsTrack()->GetTrackType(); - if (trackType != TrackElemType::Brakes) + if (trackType != TrackElemType::brakes) { target_seat_rotation = tileElement->AsTrack()->GetSeatRotation(); } @@ -6818,12 +6818,12 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( { ClearFlag(VehicleFlags::StoppedOnHoldingBrake); } - if (trackType == TrackElemType::OnRidePhoto) + if (trackType == TrackElemType::onRidePhoto) { tileElement->AsTrack()->SetPhotoTimeout(); MapAnimations::CreateTemporary(TrackLocation, MapAnimations::TemporaryType::onRidePhoto); } - if (trackType == TrackElemType::RotationControlToggle) + if (trackType == TrackElemType::rotationControlToggle) { Flags ^= VehicleFlags::SpinningIsLocked; } @@ -6844,7 +6844,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu while (true) { auto trackType = GetTrackType(); - if (trackType == TrackElemType::HeartLineTransferUp || trackType == TrackElemType::HeartLineTransferDown) + if (trackType == TrackElemType::heartLineTransferUp || trackType == TrackElemType::heartLineTransferDown) { if (track_progress == 80) { @@ -6896,13 +6896,13 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu acceleration += CalculateRiderBraking(); } - if ((trackType == TrackElemType::Flat && curRide.getRideTypeDescriptor().HasFlag(RtdFlag::hasLsmBehaviourOnFlat)) - || (trackType == TrackElemType::PoweredLift)) + if ((trackType == TrackElemType::flat && curRide.getRideTypeDescriptor().HasFlag(RtdFlag::hasLsmBehaviourOnFlat)) + || (trackType == TrackElemType::poweredLift)) { acceleration = GetRideTypeDescriptor(curRide.type).LegacyBoosterSettings.PoweredLiftAcceleration << kBoosterAccelerationShiftAmount; } - if (trackType == TrackElemType::BrakeForDrop) + if (trackType == TrackElemType::brakeForDrop) { if (IsHead()) { @@ -6920,7 +6920,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu } } } - if (trackType == TrackElemType::LogFlumeReverser) + if (trackType == TrackElemType::logFlumeReverser) { if (track_progress != 16 || velocity < 4.0_mph) { @@ -6966,7 +6966,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu moveInfo->z + GetRideTypeDescriptor(curRide.type).Heights.VehicleZOffset }; bool useReverserDistance = TrackSubposition == VehicleTrackSubposition::ReverserRCFrontBogie - && (trackType == TrackElemType::LeftReverser || trackType == TrackElemType::RightReverser) + && (trackType == TrackElemType::leftReverser || trackType == TrackElemType::rightReverser) && track_progress >= 30 && track_progress <= 66; // Loc6DB8A5 @@ -6974,7 +6974,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu nextVehiclePosition - _vehicleCurPosition, useReverserDistance); if (TrackSubposition == VehicleTrackSubposition::ReverserRCRearBogie - && (trackType == TrackElemType::LeftReverser || trackType == TrackElemType::RightReverser) + && (trackType == TrackElemType::leftReverser || trackType == TrackElemType::rightReverser) && track_progress == 96) { ReverseReverserCar(); @@ -7113,7 +7113,7 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(TrackElemType trackType, con tileElement = trackBeginEnd.begin_element; trackType = tileElement->AsTrack()->GetTrackType(); - if (trackType == TrackElemType::LeftReverser || trackType == TrackElemType::RightReverser) + if (trackType == TrackElemType::leftReverser || trackType == TrackElemType::rightReverser) { return false; } @@ -7209,7 +7209,7 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(TrackElemType trackType, con } trackType = tileElement->AsTrack()->GetTrackType(); - if (trackType != TrackElemType::Brakes) + if (trackType != TrackElemType::brakes) { target_seat_rotation = tileElement->AsTrack()->GetSeatRotation(); } @@ -7238,7 +7238,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c while (true) { auto trackType = GetTrackType(); - if (trackType == TrackElemType::Flat && curRide.getRideTypeDescriptor().HasFlag(RtdFlag::hasLsmBehaviourOnFlat)) + if (trackType == TrackElemType::flat && curRide.getRideTypeDescriptor().HasFlag(RtdFlag::hasLsmBehaviourOnFlat)) { int32_t unkVelocity = _vehicleVelocityF64E08; if (unkVelocity < -524288) @@ -7911,7 +7911,7 @@ void Vehicle::Loc6DCE02(const Ride& curRide) return; } _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_3; - if (trackType != TrackElemType::EndStation) + if (trackType != TrackElemType::endStation) { return; } @@ -8073,11 +8073,11 @@ static uint8_t modified_speed(TrackElemType trackType, VehicleTrackSubposition t uint8_t speedModifier = FULL_SPEED; - if (trackType == TrackElemType::LeftQuarterTurn1Tile) + if (trackType == TrackElemType::leftQuarterTurn1Tile) { speedModifier = (trackSubposition == VehicleTrackSubposition::GoKartsLeftLane) ? HALF_SPEED : THREE_QUARTER_SPEED; } - else if (trackType == TrackElemType::RightQuarterTurn1Tile) + else if (trackType == TrackElemType::rightQuarterTurn1Tile) { speedModifier = (trackSubposition == VehicleTrackSubposition::GoKartsRightLane) ? HALF_SPEED : THREE_QUARTER_SPEED; } @@ -8363,7 +8363,7 @@ int32_t Vehicle::UpdateTrackMotion(int32_t* outStation) } } - if (vehicle->GetTrackType() == TrackElemType::Watersplash) + if (vehicle->GetTrackType() == TrackElemType::watersplash) { if (vehicle->track_progress >= 48 && vehicle->track_progress <= 128) { diff --git a/src/openrct2/ride/VehicleRiderControl.cpp b/src/openrct2/ride/VehicleRiderControl.cpp index 9e0224f314b1..e7aa9aee0306 100644 --- a/src/openrct2/ride/VehicleRiderControl.cpp +++ b/src/openrct2/ride/VehicleRiderControl.cpp @@ -165,54 +165,54 @@ int32_t Vehicle::CalculateRiderBraking() const auto trackType = GetTrackType(); switch (trackType) { - case TrackElemType::LeftQuarterTurn3Tiles: - case TrackElemType::RightQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn3Tiles: + case TrackElemType::rightQuarterTurn3Tiles: targetSpeed = riderSettings.minSpeed; brakeThreshold = riderSettings.brakeThreshold / 2; break; - case TrackElemType::LeftQuarterTurn3TilesUp25: - case TrackElemType::RightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25: - case TrackElemType::RightQuarterTurn3TilesDown25: - case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: - case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: - case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: - case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + case TrackElemType::leftQuarterTurn3TilesUp25: + case TrackElemType::rightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25: + case TrackElemType::rightQuarterTurn3TilesDown25: + case TrackElemType::leftBankToLeftQuarterTurn3TilesUp25: + case TrackElemType::rightBankToRightQuarterTurn3TilesUp25: + case TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank: + case TrackElemType::rightQuarterTurn3TilesDown25ToRightBank: targetSpeed = (riderSettings.maxSpeed + 3 * riderSettings.minSpeed) / 4; brakeThreshold = 3 * riderSettings.brakeThreshold / 4; break; - case TrackElemType::LeftHalfBankedHelixUpSmall: - case TrackElemType::RightHalfBankedHelixUpSmall: - case TrackElemType::LeftHalfBankedHelixDownSmall: - case TrackElemType::RightHalfBankedHelixDownSmall: - case TrackElemType::LeftBankedQuarterTurn3TileUp25: - case TrackElemType::RightBankedQuarterTurn3TileUp25: - case TrackElemType::LeftBankedQuarterTurn3TileDown25: - case TrackElemType::RightBankedQuarterTurn3TileDown25: - case TrackElemType::LeftBankedQuarterTurn3Tiles: - case TrackElemType::RightBankedQuarterTurn3Tiles: - case TrackElemType::LeftQuarterTurn5Tiles: - case TrackElemType::RightQuarterTurn5Tiles: + case TrackElemType::leftHalfBankedHelixUpSmall: + case TrackElemType::rightHalfBankedHelixUpSmall: + case TrackElemType::leftHalfBankedHelixDownSmall: + case TrackElemType::rightHalfBankedHelixDownSmall: + case TrackElemType::leftBankedQuarterTurn3TileUp25: + case TrackElemType::rightBankedQuarterTurn3TileUp25: + case TrackElemType::leftBankedQuarterTurn3TileDown25: + case TrackElemType::rightBankedQuarterTurn3TileDown25: + case TrackElemType::leftBankedQuarterTurn3Tiles: + case TrackElemType::rightBankedQuarterTurn3Tiles: + case TrackElemType::leftQuarterTurn5Tiles: + case TrackElemType::rightQuarterTurn5Tiles: targetSpeed = (riderSettings.maxSpeed + riderSettings.minSpeed) / 2; break; - case TrackElemType::LeftHalfBankedHelixUpLarge: - case TrackElemType::RightHalfBankedHelixUpLarge: - case TrackElemType::LeftHalfBankedHelixDownLarge: - case TrackElemType::RightHalfBankedHelixDownLarge: - case TrackElemType::LeftBankedQuarterTurn5TileUp25: - case TrackElemType::RightBankedQuarterTurn5TileUp25: - case TrackElemType::LeftBankedQuarterTurn5TileDown25: - case TrackElemType::RightBankedQuarterTurn5TileDown25: - case TrackElemType::BankedLeftQuarterTurn5Tiles: - case TrackElemType::BankedRightQuarterTurn5Tiles: - case TrackElemType::LeftQuarterTurn5TilesUp25: - case TrackElemType::RightQuarterTurn5TilesUp25: - case TrackElemType::LeftQuarterTurn5TilesDown25: - case TrackElemType::RightQuarterTurn5TilesDown25: - case TrackElemType::LeftEighthToDiag: - case TrackElemType::RightEighthToDiag: - case TrackElemType::LeftEighthToOrthogonal: - case TrackElemType::RightEighthToOrthogonal: + case TrackElemType::leftHalfBankedHelixUpLarge: + case TrackElemType::rightHalfBankedHelixUpLarge: + case TrackElemType::leftHalfBankedHelixDownLarge: + case TrackElemType::rightHalfBankedHelixDownLarge: + case TrackElemType::leftBankedQuarterTurn5TileUp25: + case TrackElemType::rightBankedQuarterTurn5TileUp25: + case TrackElemType::leftBankedQuarterTurn5TileDown25: + case TrackElemType::rightBankedQuarterTurn5TileDown25: + case TrackElemType::bankedLeftQuarterTurn5Tiles: + case TrackElemType::bankedRightQuarterTurn5Tiles: + case TrackElemType::leftQuarterTurn5TilesUp25: + case TrackElemType::rightQuarterTurn5TilesUp25: + case TrackElemType::leftQuarterTurn5TilesDown25: + case TrackElemType::rightQuarterTurn5TilesDown25: + case TrackElemType::leftEighthToDiag: + case TrackElemType::rightEighthToDiag: + case TrackElemType::leftEighthToOrthogonal: + case TrackElemType::rightEighthToOrthogonal: targetSpeed = (3 * riderSettings.maxSpeed + riderSettings.minSpeed) / 4; break; default: diff --git a/src/openrct2/ride/VehicleSubpositionData.cpp b/src/openrct2/ride/VehicleSubpositionData.cpp index ca6b4009c914..c71bc2864bb8 100644 --- a/src/openrct2/ride/VehicleSubpositionData.cpp +++ b/src/openrct2/ride/VehicleSubpositionData.cpp @@ -39624,65 +39624,65 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListDefault[] = { &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown0, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown1, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown2, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown3, // RightFlyerLargeHalfLoopUninvertedDown &TrackVehicleInfo_8E644E, &TrackVehicleInfo_8E69F9, &TrackVehicleInfo_8E6FA4, &TrackVehicleInfo_8E754F, // FlyerHalfLoopInvertedUp &TrackVehicleInfo_FlyerHalfLoopUninvertedDown0, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown1, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown2, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown3, // FlyerHalfLoopUninvertedDown - &TrackVehicleInfoLeftEighthToDiagUp250, &TrackVehicleInfoLeftEighthToDiagUp251, &TrackVehicleInfoLeftEighthToDiagUp252, &TrackVehicleInfoLeftEighthToDiagUp253, // TrackElemType::LeftEighthToDiagUp25 - &TrackVehicleInfoRightEighthToDiagUp250, &TrackVehicleInfoRightEighthToDiagUp251, &TrackVehicleInfoRightEighthToDiagUp252, &TrackVehicleInfoRightEighthToDiagUp253, // TrackElemType::RightEighthToDiagUp25 - &TrackVehicleInfoLeftEighthToDiagDown250, &TrackVehicleInfoLeftEighthToDiagDown251, &TrackVehicleInfoLeftEighthToDiagDown252, &TrackVehicleInfoLeftEighthToDiagDown253, // TrackElemType::LeftEighthToDiagDown25 - &TrackVehicleInfoRightEighthToDiagDown250, &TrackVehicleInfoRightEighthToDiagDown251, &TrackVehicleInfoRightEighthToDiagDown252, &TrackVehicleInfoRightEighthToDiagDown253, // TrackElemType::RightEighthToDiagDown25 - &TrackVehicleInfoLeftEighthToOrthogonalUp250, &TrackVehicleInfoLeftEighthToOrthogonalUp251, &TrackVehicleInfoLeftEighthToOrthogonalUp252, &TrackVehicleInfoLeftEighthToOrthogonalUp253, // TrackElemType::LeftEighthToOrthogonalUp25 - &TrackVehicleInfoRightEighthToOrthogonalUp250, &TrackVehicleInfoRightEighthToOrthogonalUp251, &TrackVehicleInfoRightEighthToOrthogonalUp252, &TrackVehicleInfoRightEighthToOrthogonalUp253, // TrackElemType::RightEighthToOrthogonalUp25 - &TrackVehicleInfoLeftEighthToOrthogonalDown250, &TrackVehicleInfoLeftEighthToOrthogonalDown251, &TrackVehicleInfoLeftEighthToOrthogonalDown252, &TrackVehicleInfoLeftEighthToOrthogonalDown253, // TrackElemType::LeftEighthToOrthogonalDown25 - &TrackVehicleInfoRightEighthToOrthogonalDown250, &TrackVehicleInfoRightEighthToOrthogonalDown251, &TrackVehicleInfoRightEighthToOrthogonalDown252, &TrackVehicleInfoRightEighthToOrthogonalDown253, // TrackElemType::RightEighthToOrthogonalDown25 - - &TrackVehicleInfoDiagUp25ToLeftBankedUp250, &TrackVehicleInfoDiagUp25ToLeftBankedUp251, &TrackVehicleInfoDiagUp25ToLeftBankedUp252, &TrackVehicleInfoDiagUp25ToLeftBankedUp253, // TrackElemType::DiagUp25ToLeftBankedUp25 - &TrackVehicleInfoDiagUp25ToRightBankedUp250, &TrackVehicleInfoDiagUp25ToRightBankedUp251, &TrackVehicleInfoDiagUp25ToRightBankedUp252, &TrackVehicleInfoDiagUp25ToRightBankedUp253, // TrackElemType::DiagUp25ToRightBankedUp25 - &TrackVehicleInfoDiagLeftBankedUp25ToUp250, &TrackVehicleInfoDiagLeftBankedUp25ToUp251, &TrackVehicleInfoDiagLeftBankedUp25ToUp252, &TrackVehicleInfoDiagLeftBankedUp25ToUp253, // TrackElemType::DiagLeftBankedUp25ToUp25 - &TrackVehicleInfoDiagRightBankedUp25ToUp250, &TrackVehicleInfoDiagRightBankedUp25ToUp251, &TrackVehicleInfoDiagRightBankedUp25ToUp252, &TrackVehicleInfoDiagRightBankedUp25ToUp253, // TrackElemType::DiagRightBankedUp25ToUp25 - &TrackVehicleInfoDiagDown25ToLeftBankedDown250, &TrackVehicleInfoDiagDown25ToLeftBankedDown251, &TrackVehicleInfoDiagDown25ToLeftBankedDown252, &TrackVehicleInfoDiagDown25ToLeftBankedDown253, // TrackElemType::DiagDown25ToLeftBankedDown25 - &TrackVehicleInfoDiagDown25ToRightBankedDown250, &TrackVehicleInfoDiagDown25ToRightBankedDown251, &TrackVehicleInfoDiagDown25ToRightBankedDown252, &TrackVehicleInfoDiagDown25ToRightBankedDown253, // TrackElemType::DiagDown25ToRightBankedDown25 - &TrackVehicleInfoDiagLeftBankedDown25ToDown250, &TrackVehicleInfoDiagLeftBankedDown25ToDown251, &TrackVehicleInfoDiagLeftBankedDown25ToDown252, &TrackVehicleInfoDiagLeftBankedDown25ToDown253, // TrackElemType::DiagLeftBankedDown25ToDown25 - &TrackVehicleInfoDiagRightBankedDown25ToDown250, &TrackVehicleInfoDiagRightBankedDown25ToDown251, &TrackVehicleInfoDiagRightBankedDown25ToDown252, &TrackVehicleInfoDiagRightBankedDown25ToDown253, // TrackElemType::DiagRightBankedDown25ToDown25 - &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp250, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp251, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp252, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp253, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp250, &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp251, &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp252, &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp253, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat0, &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat1, &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat2, &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat3, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat0, &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat1, &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat2, &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat3, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown250, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown251, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown252, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown253, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown250, &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown251, &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown252, &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown253, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat0, &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat1, &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat2, &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat3, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat0, &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat1, &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat2, &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat3, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - &TrackVehicleInfoDiagFlatToLeftBankedUp250, &TrackVehicleInfoDiagFlatToLeftBankedUp251, &TrackVehicleInfoDiagFlatToLeftBankedUp252, &TrackVehicleInfoDiagFlatToLeftBankedUp253, // TrackElemType::DiagFlatToLeftBankedUp25 - &TrackVehicleInfoDiagFlatToRightBankedUp250, &TrackVehicleInfoDiagFlatToRightBankedUp251, &TrackVehicleInfoDiagFlatToRightBankedUp252, &TrackVehicleInfoDiagFlatToRightBankedUp253, // TrackElemType::DiagFlatToRightBankedUp25 - &TrackVehicleInfoDiagLeftBankedUp25ToFlat0, &TrackVehicleInfoDiagLeftBankedUp25ToFlat1, &TrackVehicleInfoDiagLeftBankedUp25ToFlat2, &TrackVehicleInfoDiagLeftBankedUp25ToFlat3, // TrackElemType::DiagLeftBankedUp25ToFlat - &TrackVehicleInfoDiagRightBankedUp25ToFlat0, &TrackVehicleInfoDiagRightBankedUp25ToFlat1, &TrackVehicleInfoDiagRightBankedUp25ToFlat2, &TrackVehicleInfoDiagRightBankedUp25ToFlat3, // TrackElemType::DiagRightBankedUp25ToFlat - &TrackVehicleInfoDiagFlatToLeftBankedDown250, &TrackVehicleInfoDiagFlatToLeftBankedDown251, &TrackVehicleInfoDiagFlatToLeftBankedDown252, &TrackVehicleInfoDiagFlatToLeftBankedDown253, // TrackElemType::DiagFlatToLeftBankedDown25 - &TrackVehicleInfoDiagFlatToRightBankedDown250, &TrackVehicleInfoDiagFlatToRightBankedDown251, &TrackVehicleInfoDiagFlatToRightBankedDown252, &TrackVehicleInfoDiagFlatToRightBankedDown253, // TrackElemType::DiagFlatToRightBankedDown25 - &TrackVehicleInfoDiagLeftBankedDown25ToFlat0, &TrackVehicleInfoDiagLeftBankedDown25ToFlat1, &TrackVehicleInfoDiagLeftBankedDown25ToFlat2, &TrackVehicleInfoDiagLeftBankedDown25ToFlat3, // TrackElemType::DiagLeftBankedDown25ToFlat - &TrackVehicleInfoDiagRightBankedDown25ToFlat0, &TrackVehicleInfoDiagRightBankedDown25ToFlat1, &TrackVehicleInfoDiagRightBankedDown25ToFlat2, &TrackVehicleInfoDiagRightBankedDown25ToFlat3, // TrackElemType::DiagRightBankedDown25ToFlat - &TrackVehicleInfoDiagUp25LeftBanked0, &TrackVehicleInfoDiagUp25LeftBanked1, &TrackVehicleInfoDiagUp25LeftBanked2, &TrackVehicleInfoDiagUp25LeftBanked3, // TrackElemType::DiagUp25LeftBanked - &TrackVehicleInfoDiagUp25RightBanked0, &TrackVehicleInfoDiagUp25RightBanked1, &TrackVehicleInfoDiagUp25RightBanked2, &TrackVehicleInfoDiagUp25RightBanked3, // TrackElemType::DiagUp25RightBanked - &TrackVehicleInfoDiagDown25LeftBanked0, &TrackVehicleInfoDiagDown25LeftBanked1, &TrackVehicleInfoDiagDown25LeftBanked2, &TrackVehicleInfoDiagDown25LeftBanked3, // TrackElemType::DiagDown25LeftBanked - &TrackVehicleInfoDiagDown25RightBanked0, &TrackVehicleInfoDiagDown25RightBanked1, &TrackVehicleInfoDiagDown25RightBanked2, &TrackVehicleInfoDiagDown25RightBanked3, // TrackElemType::DiagDown25RightBanked - - &TrackVehicleInfoLeftEighthBankToDiagUp250, &TrackVehicleInfoLeftEighthBankToDiagUp251, &TrackVehicleInfoLeftEighthBankToDiagUp252, &TrackVehicleInfoLeftEighthBankToDiagUp253, // TrackElemType::LeftEighthBankBankToDiagUp25 - &TrackVehicleInfoRightEighthBankToDiagUp250, &TrackVehicleInfoRightEighthBankToDiagUp251, &TrackVehicleInfoRightEighthBankToDiagUp252, &TrackVehicleInfoRightEighthBankToDiagUp253, // TrackElemType::RightEighthBankBankToDiagUp25 - &TrackVehicleInfoLeftEighthBankToDiagDown250, &TrackVehicleInfoLeftEighthBankToDiagDown251, &TrackVehicleInfoLeftEighthBankToDiagDown252, &TrackVehicleInfoLeftEighthBankToDiagDown253, // TrackElemType::LeftEighthBankBankToDiagDown25 - &TrackVehicleInfoRightEighthBankToDiagDown250, &TrackVehicleInfoRightEighthBankToDiagDown251, &TrackVehicleInfoRightEighthBankToDiagDown252, &TrackVehicleInfoRightEighthBankToDiagDown253, // TrackElemType::RightEighthBankBankToDiagDown25 - &TrackVehicleInfoLeftEighthBankToOrthogonalUp250, &TrackVehicleInfoLeftEighthBankToOrthogonalUp251, &TrackVehicleInfoLeftEighthBankToOrthogonalUp252, &TrackVehicleInfoLeftEighthBankToOrthogonalUp253, // TrackElemType::LeftEighthBankBankToOrthogonalUp25 - &TrackVehicleInfoRightEighthBankToOrthogonalUp250, &TrackVehicleInfoRightEighthBankToOrthogonalUp251, &TrackVehicleInfoRightEighthBankToOrthogonalUp252, &TrackVehicleInfoRightEighthBankToOrthogonalUp253, // TrackElemType::RightEighthBankBankToOrthogonalUp25 - &TrackVehicleInfoLeftEighthBankToOrthogonalDown250, &TrackVehicleInfoLeftEighthBankToOrthogonalDown251, &TrackVehicleInfoLeftEighthBankToOrthogonalDown252, &TrackVehicleInfoLeftEighthBankToOrthogonalDown253, // TrackElemType::LeftEighthBankBankToOrthogonalDown25 - &TrackVehicleInfoRightEighthBankToOrthogonalDown250, &TrackVehicleInfoRightEighthBankToOrthogonalDown251, &TrackVehicleInfoRightEighthBankToOrthogonalDown252, &TrackVehicleInfoRightEighthBankToOrthogonalDown253, // TrackElemType::RightEighthBankBankToOrthogonalDown25 + &TrackVehicleInfoLeftEighthToDiagUp250, &TrackVehicleInfoLeftEighthToDiagUp251, &TrackVehicleInfoLeftEighthToDiagUp252, &TrackVehicleInfoLeftEighthToDiagUp253, // TrackElemType::leftEighthToDiagUp25 + &TrackVehicleInfoRightEighthToDiagUp250, &TrackVehicleInfoRightEighthToDiagUp251, &TrackVehicleInfoRightEighthToDiagUp252, &TrackVehicleInfoRightEighthToDiagUp253, // TrackElemType::rightEighthToDiagUp25 + &TrackVehicleInfoLeftEighthToDiagDown250, &TrackVehicleInfoLeftEighthToDiagDown251, &TrackVehicleInfoLeftEighthToDiagDown252, &TrackVehicleInfoLeftEighthToDiagDown253, // TrackElemType::leftEighthToDiagDown25 + &TrackVehicleInfoRightEighthToDiagDown250, &TrackVehicleInfoRightEighthToDiagDown251, &TrackVehicleInfoRightEighthToDiagDown252, &TrackVehicleInfoRightEighthToDiagDown253, // TrackElemType::rightEighthToDiagDown25 + &TrackVehicleInfoLeftEighthToOrthogonalUp250, &TrackVehicleInfoLeftEighthToOrthogonalUp251, &TrackVehicleInfoLeftEighthToOrthogonalUp252, &TrackVehicleInfoLeftEighthToOrthogonalUp253, // TrackElemType::leftEighthToOrthogonalUp25 + &TrackVehicleInfoRightEighthToOrthogonalUp250, &TrackVehicleInfoRightEighthToOrthogonalUp251, &TrackVehicleInfoRightEighthToOrthogonalUp252, &TrackVehicleInfoRightEighthToOrthogonalUp253, // TrackElemType::rightEighthToOrthogonalUp25 + &TrackVehicleInfoLeftEighthToOrthogonalDown250, &TrackVehicleInfoLeftEighthToOrthogonalDown251, &TrackVehicleInfoLeftEighthToOrthogonalDown252, &TrackVehicleInfoLeftEighthToOrthogonalDown253, // TrackElemType::leftEighthToOrthogonalDown25 + &TrackVehicleInfoRightEighthToOrthogonalDown250, &TrackVehicleInfoRightEighthToOrthogonalDown251, &TrackVehicleInfoRightEighthToOrthogonalDown252, &TrackVehicleInfoRightEighthToOrthogonalDown253, // TrackElemType::rightEighthToOrthogonalDown25 + + &TrackVehicleInfoDiagUp25ToLeftBankedUp250, &TrackVehicleInfoDiagUp25ToLeftBankedUp251, &TrackVehicleInfoDiagUp25ToLeftBankedUp252, &TrackVehicleInfoDiagUp25ToLeftBankedUp253, // TrackElemType::diagUp25ToLeftBankedUp25 + &TrackVehicleInfoDiagUp25ToRightBankedUp250, &TrackVehicleInfoDiagUp25ToRightBankedUp251, &TrackVehicleInfoDiagUp25ToRightBankedUp252, &TrackVehicleInfoDiagUp25ToRightBankedUp253, // TrackElemType::diagUp25ToRightBankedUp25 + &TrackVehicleInfoDiagLeftBankedUp25ToUp250, &TrackVehicleInfoDiagLeftBankedUp25ToUp251, &TrackVehicleInfoDiagLeftBankedUp25ToUp252, &TrackVehicleInfoDiagLeftBankedUp25ToUp253, // TrackElemType::diagLeftBankedUp25ToUp25 + &TrackVehicleInfoDiagRightBankedUp25ToUp250, &TrackVehicleInfoDiagRightBankedUp25ToUp251, &TrackVehicleInfoDiagRightBankedUp25ToUp252, &TrackVehicleInfoDiagRightBankedUp25ToUp253, // TrackElemType::diagRightBankedUp25ToUp25 + &TrackVehicleInfoDiagDown25ToLeftBankedDown250, &TrackVehicleInfoDiagDown25ToLeftBankedDown251, &TrackVehicleInfoDiagDown25ToLeftBankedDown252, &TrackVehicleInfoDiagDown25ToLeftBankedDown253, // TrackElemType::diagDown25ToLeftBankedDown25 + &TrackVehicleInfoDiagDown25ToRightBankedDown250, &TrackVehicleInfoDiagDown25ToRightBankedDown251, &TrackVehicleInfoDiagDown25ToRightBankedDown252, &TrackVehicleInfoDiagDown25ToRightBankedDown253, // TrackElemType::diagDown25ToRightBankedDown25 + &TrackVehicleInfoDiagLeftBankedDown25ToDown250, &TrackVehicleInfoDiagLeftBankedDown25ToDown251, &TrackVehicleInfoDiagLeftBankedDown25ToDown252, &TrackVehicleInfoDiagLeftBankedDown25ToDown253, // TrackElemType::diagLeftBankedDown25ToDown25 + &TrackVehicleInfoDiagRightBankedDown25ToDown250, &TrackVehicleInfoDiagRightBankedDown25ToDown251, &TrackVehicleInfoDiagRightBankedDown25ToDown252, &TrackVehicleInfoDiagRightBankedDown25ToDown253, // TrackElemType::diagRightBankedDown25ToDown25 + &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp250, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp251, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp252, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedUp253, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp250, &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp251, &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp252, &TrackVehicleInfoDiagRightBankedFlatToRightBankedUp253, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat0, &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat1, &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat2, &TrackVehicleInfoDiagLeftBankedUp25ToLeftBankedFlat3, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat0, &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat1, &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat2, &TrackVehicleInfoDiagRightBankedUp25ToRightBankedFlat3, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown250, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown251, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown252, &TrackVehicleInfoDiagLeftBankedFlatToLeftBankedDown253, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown250, &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown251, &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown252, &TrackVehicleInfoDiagRightBankedFlatToRightBankedDown253, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat0, &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat1, &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat2, &TrackVehicleInfoDiagLeftBankedDown25ToLeftBankedFlat3, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat0, &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat1, &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat2, &TrackVehicleInfoDiagRightBankedDown25ToRightBankedFlat3, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + &TrackVehicleInfoDiagFlatToLeftBankedUp250, &TrackVehicleInfoDiagFlatToLeftBankedUp251, &TrackVehicleInfoDiagFlatToLeftBankedUp252, &TrackVehicleInfoDiagFlatToLeftBankedUp253, // TrackElemType::diagFlatToLeftBankedUp25 + &TrackVehicleInfoDiagFlatToRightBankedUp250, &TrackVehicleInfoDiagFlatToRightBankedUp251, &TrackVehicleInfoDiagFlatToRightBankedUp252, &TrackVehicleInfoDiagFlatToRightBankedUp253, // TrackElemType::diagFlatToRightBankedUp25 + &TrackVehicleInfoDiagLeftBankedUp25ToFlat0, &TrackVehicleInfoDiagLeftBankedUp25ToFlat1, &TrackVehicleInfoDiagLeftBankedUp25ToFlat2, &TrackVehicleInfoDiagLeftBankedUp25ToFlat3, // TrackElemType::diagLeftBankedUp25ToFlat + &TrackVehicleInfoDiagRightBankedUp25ToFlat0, &TrackVehicleInfoDiagRightBankedUp25ToFlat1, &TrackVehicleInfoDiagRightBankedUp25ToFlat2, &TrackVehicleInfoDiagRightBankedUp25ToFlat3, // TrackElemType::diagRightBankedUp25ToFlat + &TrackVehicleInfoDiagFlatToLeftBankedDown250, &TrackVehicleInfoDiagFlatToLeftBankedDown251, &TrackVehicleInfoDiagFlatToLeftBankedDown252, &TrackVehicleInfoDiagFlatToLeftBankedDown253, // TrackElemType::diagFlatToLeftBankedDown25 + &TrackVehicleInfoDiagFlatToRightBankedDown250, &TrackVehicleInfoDiagFlatToRightBankedDown251, &TrackVehicleInfoDiagFlatToRightBankedDown252, &TrackVehicleInfoDiagFlatToRightBankedDown253, // TrackElemType::diagFlatToRightBankedDown25 + &TrackVehicleInfoDiagLeftBankedDown25ToFlat0, &TrackVehicleInfoDiagLeftBankedDown25ToFlat1, &TrackVehicleInfoDiagLeftBankedDown25ToFlat2, &TrackVehicleInfoDiagLeftBankedDown25ToFlat3, // TrackElemType::diagLeftBankedDown25ToFlat + &TrackVehicleInfoDiagRightBankedDown25ToFlat0, &TrackVehicleInfoDiagRightBankedDown25ToFlat1, &TrackVehicleInfoDiagRightBankedDown25ToFlat2, &TrackVehicleInfoDiagRightBankedDown25ToFlat3, // TrackElemType::diagRightBankedDown25ToFlat + &TrackVehicleInfoDiagUp25LeftBanked0, &TrackVehicleInfoDiagUp25LeftBanked1, &TrackVehicleInfoDiagUp25LeftBanked2, &TrackVehicleInfoDiagUp25LeftBanked3, // TrackElemType::diagUp25LeftBanked + &TrackVehicleInfoDiagUp25RightBanked0, &TrackVehicleInfoDiagUp25RightBanked1, &TrackVehicleInfoDiagUp25RightBanked2, &TrackVehicleInfoDiagUp25RightBanked3, // TrackElemType::diagUp25RightBanked + &TrackVehicleInfoDiagDown25LeftBanked0, &TrackVehicleInfoDiagDown25LeftBanked1, &TrackVehicleInfoDiagDown25LeftBanked2, &TrackVehicleInfoDiagDown25LeftBanked3, // TrackElemType::diagDown25LeftBanked + &TrackVehicleInfoDiagDown25RightBanked0, &TrackVehicleInfoDiagDown25RightBanked1, &TrackVehicleInfoDiagDown25RightBanked2, &TrackVehicleInfoDiagDown25RightBanked3, // TrackElemType::diagDown25RightBanked + + &TrackVehicleInfoLeftEighthBankToDiagUp250, &TrackVehicleInfoLeftEighthBankToDiagUp251, &TrackVehicleInfoLeftEighthBankToDiagUp252, &TrackVehicleInfoLeftEighthBankToDiagUp253, // TrackElemType::leftEighthBankBankToDiagUp25 + &TrackVehicleInfoRightEighthBankToDiagUp250, &TrackVehicleInfoRightEighthBankToDiagUp251, &TrackVehicleInfoRightEighthBankToDiagUp252, &TrackVehicleInfoRightEighthBankToDiagUp253, // TrackElemType::rightEighthBankBankToDiagUp25 + &TrackVehicleInfoLeftEighthBankToDiagDown250, &TrackVehicleInfoLeftEighthBankToDiagDown251, &TrackVehicleInfoLeftEighthBankToDiagDown252, &TrackVehicleInfoLeftEighthBankToDiagDown253, // TrackElemType::leftEighthBankBankToDiagDown25 + &TrackVehicleInfoRightEighthBankToDiagDown250, &TrackVehicleInfoRightEighthBankToDiagDown251, &TrackVehicleInfoRightEighthBankToDiagDown252, &TrackVehicleInfoRightEighthBankToDiagDown253, // TrackElemType::rightEighthBankBankToDiagDown25 + &TrackVehicleInfoLeftEighthBankToOrthogonalUp250, &TrackVehicleInfoLeftEighthBankToOrthogonalUp251, &TrackVehicleInfoLeftEighthBankToOrthogonalUp252, &TrackVehicleInfoLeftEighthBankToOrthogonalUp253, // TrackElemType::leftEighthBankBankToOrthogonalUp25 + &TrackVehicleInfoRightEighthBankToOrthogonalUp250, &TrackVehicleInfoRightEighthBankToOrthogonalUp251, &TrackVehicleInfoRightEighthBankToOrthogonalUp252, &TrackVehicleInfoRightEighthBankToOrthogonalUp253, // TrackElemType::rightEighthBankBankToOrthogonalUp25 + &TrackVehicleInfoLeftEighthBankToOrthogonalDown250, &TrackVehicleInfoLeftEighthBankToOrthogonalDown251, &TrackVehicleInfoLeftEighthBankToOrthogonalDown252, &TrackVehicleInfoLeftEighthBankToOrthogonalDown253, // TrackElemType::leftEighthBankBankToOrthogonalDown25 + &TrackVehicleInfoRightEighthBankToOrthogonalDown250, &TrackVehicleInfoRightEighthBankToOrthogonalDown251, &TrackVehicleInfoRightEighthBankToOrthogonalDown252, &TrackVehicleInfoRightEighthBankToOrthogonalDown253, // TrackElemType::rightEighthBankBankToOrthogonalDown25 &TrackVehicleInfo_9162E6, &TrackVehicleInfo_916408, &TrackVehicleInfo_91652A, &TrackVehicleInfo_91664C, // DiagBrakes &TrackVehicleInfo_9162E6, &TrackVehicleInfo_916408, &TrackVehicleInfo_91652A, &TrackVehicleInfo_91664C, // DiagBlockBrakes &TrackVehicleInfo_8C27B2, &TrackVehicleInfo_8C28D4, &TrackVehicleInfo_8C29F6, &TrackVehicleInfo_8C2B18, // SlopedBrakes &TrackVehicleInfo_9162E6, &TrackVehicleInfo_916408, &TrackVehicleInfo_91652A, &TrackVehicleInfo_91664C, // DiagBooster - &TrackVehicleInfoDiagFlatToUp60LongBase0 , &TrackVehicleInfoDiagFlatToUp60LongBase1 , &TrackVehicleInfoDiagFlatToUp60LongBase2 , &TrackVehicleInfoDiagFlatToUp60LongBase3 , //TrackElemType::DiagFlatToUp60LongBase, - &TrackVehicleInfoDiagUp60ToFlatLongBase0 , &TrackVehicleInfoDiagUp60ToFlatLongBase1 , &TrackVehicleInfoDiagUp60ToFlatLongBase2 , &TrackVehicleInfoDiagUp60ToFlatLongBase3 , //TrackElemType::DiagUp60ToFlatLongBase, - &TrackVehicleInfoDiagFlatToDown60LongBase0, &TrackVehicleInfoDiagFlatToDown60LongBase1, &TrackVehicleInfoDiagFlatToDown60LongBase2, &TrackVehicleInfoDiagFlatToDown60LongBase3, //TrackElemType::DiagFlatToDown60LongBase, - &TrackVehicleInfoDiagDown60ToFlatLongBase0, &TrackVehicleInfoDiagDown60ToFlatLongBase1, &TrackVehicleInfoDiagDown60ToFlatLongBase2, &TrackVehicleInfoDiagDown60ToFlatLongBase3, //TrackElemType::DiagDown60ToFlatLongBase, - - &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal0 , &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal1 , &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal2 , &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal3 , //TrackElemType::LeftEighthDiveLoopUpToOrthogonal - &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal0 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal1 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal2 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal3 , //TrackElemType::RightEighthDiveLoopUpToOrthogonal - &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal0 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal1 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal2 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal3 , //TrackElemType::LeftEighthDiveLoopDownToOrthogonal - &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal0, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal1, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal2, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal3, //TrackElemType::RightEighthDiveLoopDownToOrthogonal + &TrackVehicleInfoDiagFlatToUp60LongBase0 , &TrackVehicleInfoDiagFlatToUp60LongBase1 , &TrackVehicleInfoDiagFlatToUp60LongBase2 , &TrackVehicleInfoDiagFlatToUp60LongBase3 , //TrackElemType::diagFlatToUp60LongBase, + &TrackVehicleInfoDiagUp60ToFlatLongBase0 , &TrackVehicleInfoDiagUp60ToFlatLongBase1 , &TrackVehicleInfoDiagUp60ToFlatLongBase2 , &TrackVehicleInfoDiagUp60ToFlatLongBase3 , //TrackElemType::diagUp60ToFlatLongBase, + &TrackVehicleInfoDiagFlatToDown60LongBase0, &TrackVehicleInfoDiagFlatToDown60LongBase1, &TrackVehicleInfoDiagFlatToDown60LongBase2, &TrackVehicleInfoDiagFlatToDown60LongBase3, //TrackElemType::diagFlatToDown60LongBase, + &TrackVehicleInfoDiagDown60ToFlatLongBase0, &TrackVehicleInfoDiagDown60ToFlatLongBase1, &TrackVehicleInfoDiagDown60ToFlatLongBase2, &TrackVehicleInfoDiagDown60ToFlatLongBase3, //TrackElemType::diagDown60ToFlatLongBase, + + &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal0 , &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal1 , &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal2 , &TrackVehicleInfoLeftEighthDiveLoopUpToOrthogonal3 , //TrackElemType::leftEighthDiveLoopUpToOrthogonal + &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal0 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal1 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal2 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal3 , //TrackElemType::rightEighthDiveLoopUpToOrthogonal + &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal0 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal1 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal2 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal3 , //TrackElemType::leftEighthDiveLoopDownToOrthogonal + &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal0, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal1, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal2, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal3, //TrackElemType::rightEighthDiveLoopDownToOrthogonal &TrackVehicleInfo_916BF6, &TrackVehicleInfo_916D18, &TrackVehicleInfo_916E3A, &TrackVehicleInfo_916F5C, // DiagDown25Brakes }; static_assert(std::size(TrackVehicleInfoListDefault) == VehicleTrackSubpositionSizeDefault); @@ -40020,58 +40020,58 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListChairliftStartBullwh }; static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsLeftLane[] = { - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::Flat - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::EndStation - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::BeginStation - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::MiddleStation - &TrackVehicleInfo_900E52, &TrackVehicleInfo_900F74, &TrackVehicleInfo_901096, &TrackVehicleInfo_9011B8, // TrackElemType::Up25 - &LeftLane::TrackVehicleInfoUp600, &LeftLane::TrackVehicleInfoUp601, &LeftLane::TrackVehicleInfoUp602, &LeftLane::TrackVehicleInfoUp603, // TrackElemType::Up60 - &TrackVehicleInfo_8FFBEA, &TrackVehicleInfo_8FFD0C, &TrackVehicleInfo_8FFE2E, &TrackVehicleInfo_8FFF50, // TrackElemType::FlatToUp25 - &LeftLane::TrackVehicleInfoUp25ToUp600, &LeftLane::TrackVehicleInfoUp25ToUp601, &LeftLane::TrackVehicleInfoUp25ToUp602, &LeftLane::TrackVehicleInfoUp25ToUp603, // TrackElemType::Up25ToUp60 - &LeftLane::TrackVehicleInfoUp60ToUp250, &LeftLane::TrackVehicleInfoUp60ToUp251, &LeftLane::TrackVehicleInfoUp60ToUp252, &LeftLane::TrackVehicleInfoUp60ToUp253, // TrackElemType::Up60ToUp25 - &TrackVehicleInfo_900072, &TrackVehicleInfo_9001A6, &TrackVehicleInfo_9002DA, &TrackVehicleInfo_90040E, // TrackElemType::Up25ToFlat - &TrackVehicleInfo_9012DA, &TrackVehicleInfo_9013FC, &TrackVehicleInfo_90151E, &TrackVehicleInfo_901640, // TrackElemType::Down25 - &LeftLane::TrackVehicleInfoDown600, &LeftLane::TrackVehicleInfoDown601, &LeftLane::TrackVehicleInfoDown602, &LeftLane::TrackVehicleInfoDown603, // TrackElemType::Down60 - &TrackVehicleInfo_9009CA, &TrackVehicleInfo_900AEC, &TrackVehicleInfo_900C0E, &TrackVehicleInfo_900D30, // TrackElemType::FlatToDown25 - &LeftLane::TrackVehicleInfoDown25ToDown600, &LeftLane::TrackVehicleInfoDown25ToDown601, &LeftLane::TrackVehicleInfoDown25ToDown602, &LeftLane::TrackVehicleInfoDown25ToDown603, // TrackElemType::Down25ToDown60 - &LeftLane::TrackVehicleInfoDown60ToDown250, &LeftLane::TrackVehicleInfoDown60ToDown251, &LeftLane::TrackVehicleInfoDown60ToDown252, &LeftLane::TrackVehicleInfoDown60ToDown253, // TrackElemType::Down60ToDown25 - &TrackVehicleInfo_900542, &TrackVehicleInfo_900664, &TrackVehicleInfo_900786, &TrackVehicleInfo_9008A8, // TrackElemType::Down25ToFlat - &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::LeftQuarterTurn5Tiles - &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::RightQuarterTurn5Tiles - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::FlatToLeftBank - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::FlatToRightBank - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::LeftBankToFlat - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::RightBankToFlat - &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::BankedLeftQuarterTurn5Tiles - &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::BankedRightQuarterTurn5Tiles - &TrackVehicleInfo_8FFBEA, &TrackVehicleInfo_8FFD0C, &TrackVehicleInfo_8FFE2E, &TrackVehicleInfo_8FFF50, // TrackElemType::LeftBankToUp25 - &TrackVehicleInfo_8FFBEA, &TrackVehicleInfo_8FFD0C, &TrackVehicleInfo_8FFE2E, &TrackVehicleInfo_8FFF50, // TrackElemType::RightBankToUp25 - &TrackVehicleInfo_900072, &TrackVehicleInfo_9001A6, &TrackVehicleInfo_9002DA, &TrackVehicleInfo_90040E, // TrackElemType::Up25ToLeftBank - &TrackVehicleInfo_900072, &TrackVehicleInfo_9001A6, &TrackVehicleInfo_9002DA, &TrackVehicleInfo_90040E, // TrackElemType::Up25ToRightBank - &TrackVehicleInfo_9009CA, &TrackVehicleInfo_900AEC, &TrackVehicleInfo_900C0E, &TrackVehicleInfo_900D30, // TrackElemType::LeftBankToDown25 - &TrackVehicleInfo_9009CA, &TrackVehicleInfo_900AEC, &TrackVehicleInfo_900C0E, &TrackVehicleInfo_900D30, // TrackElemType::RightBankToDown25 - &TrackVehicleInfo_900542, &TrackVehicleInfo_900664, &TrackVehicleInfo_900786, &TrackVehicleInfo_9008A8, // TrackElemType::Down25ToLeftBank - &TrackVehicleInfo_900542, &TrackVehicleInfo_900664, &TrackVehicleInfo_900786, &TrackVehicleInfo_9008A8, // TrackElemType::Down25ToRightBank - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::LeftBank - &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::RightBank - &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp3, // TrackElemType::LeftQuarterTurn5TilesUp25 - &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp3, // TrackElemType::RightQuarterTurn5TilesUp25 - &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown3, // TrackElemType::LeftQuarterTurn5TilesDown25 - &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown3, // TrackElemType::RightQuarterTurn5TilesDown25 - &LeftLane::TrackVehicleInfoLeftSBend0, &LeftLane::TrackVehicleInfoLeftSBend1, &LeftLane::TrackVehicleInfoLeftSBend2, &LeftLane::TrackVehicleInfoLeftSBend3, // TrackElemType::SBendLeft - &LeftLane::TrackVehicleInfoRightSBend0, &LeftLane::TrackVehicleInfoRightSBend1, &LeftLane::TrackVehicleInfoRightSBend2, &LeftLane::TrackVehicleInfoRightSBend3, // TrackElemType::SBendRight - &TrackVehicleInfo_8D44BE, &TrackVehicleInfo_8D4FA6, &TrackVehicleInfo_8D5A8E, &TrackVehicleInfo_8D6576, // TrackElemType::LeftVerticalLoop - &TrackVehicleInfo_8D705E, &TrackVehicleInfo_8D7B46, &TrackVehicleInfo_8D862E, &TrackVehicleInfo_8D9116, // TrackElemType::RightVerticalLoop - &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::LeftQuarterTurn3Tiles - &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::RightQuarterTurn3Tiles - &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::LeftBankedQuarterTurn3Tiles - &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::RightBankedQuarterTurn3Tiles - &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp3, // TrackElemType::LeftQuarterTurn3TilesUp25 - &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp3, // TrackElemType::RightQuarterTurn3TilesUp25 - &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown3, // TrackElemType::LeftQuarterTurn3TilesDown25 - &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown3, // TrackElemType::RightQuarterTurn3TilesDown25 - &TrackVehicleInfo_901C05, &TrackVehicleInfo_901C7C, &TrackVehicleInfo_901CFC, &TrackVehicleInfo_901D73, // TrackElemType::LeftQuarterTurn1Tile - &TrackVehicleInfo_901762, &TrackVehicleInfo_901884, &TrackVehicleInfo_9019AF, &TrackVehicleInfo_901AE3, // TrackElemType::RightQuarterTurn1Tile + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::flat + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::endStation + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::beginStation + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::middleStation + &TrackVehicleInfo_900E52, &TrackVehicleInfo_900F74, &TrackVehicleInfo_901096, &TrackVehicleInfo_9011B8, // TrackElemType::up25 + &LeftLane::TrackVehicleInfoUp600, &LeftLane::TrackVehicleInfoUp601, &LeftLane::TrackVehicleInfoUp602, &LeftLane::TrackVehicleInfoUp603, // TrackElemType::up60 + &TrackVehicleInfo_8FFBEA, &TrackVehicleInfo_8FFD0C, &TrackVehicleInfo_8FFE2E, &TrackVehicleInfo_8FFF50, // TrackElemType::flatToUp25 + &LeftLane::TrackVehicleInfoUp25ToUp600, &LeftLane::TrackVehicleInfoUp25ToUp601, &LeftLane::TrackVehicleInfoUp25ToUp602, &LeftLane::TrackVehicleInfoUp25ToUp603, // TrackElemType::up25ToUp60 + &LeftLane::TrackVehicleInfoUp60ToUp250, &LeftLane::TrackVehicleInfoUp60ToUp251, &LeftLane::TrackVehicleInfoUp60ToUp252, &LeftLane::TrackVehicleInfoUp60ToUp253, // TrackElemType::up60ToUp25 + &TrackVehicleInfo_900072, &TrackVehicleInfo_9001A6, &TrackVehicleInfo_9002DA, &TrackVehicleInfo_90040E, // TrackElemType::up25ToFlat + &TrackVehicleInfo_9012DA, &TrackVehicleInfo_9013FC, &TrackVehicleInfo_90151E, &TrackVehicleInfo_901640, // TrackElemType::down25 + &LeftLane::TrackVehicleInfoDown600, &LeftLane::TrackVehicleInfoDown601, &LeftLane::TrackVehicleInfoDown602, &LeftLane::TrackVehicleInfoDown603, // TrackElemType::down60 + &TrackVehicleInfo_9009CA, &TrackVehicleInfo_900AEC, &TrackVehicleInfo_900C0E, &TrackVehicleInfo_900D30, // TrackElemType::flatToDown25 + &LeftLane::TrackVehicleInfoDown25ToDown600, &LeftLane::TrackVehicleInfoDown25ToDown601, &LeftLane::TrackVehicleInfoDown25ToDown602, &LeftLane::TrackVehicleInfoDown25ToDown603, // TrackElemType::down25ToDown60 + &LeftLane::TrackVehicleInfoDown60ToDown250, &LeftLane::TrackVehicleInfoDown60ToDown251, &LeftLane::TrackVehicleInfoDown60ToDown252, &LeftLane::TrackVehicleInfoDown60ToDown253, // TrackElemType::down60ToDown25 + &TrackVehicleInfo_900542, &TrackVehicleInfo_900664, &TrackVehicleInfo_900786, &TrackVehicleInfo_9008A8, // TrackElemType::down25ToFlat + &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::leftQuarterTurn5Tiles + &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::rightQuarterTurn5Tiles + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::flatToLeftBank + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::flatToRightBank + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::leftBankToFlat + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::rightBankToFlat + &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::bankedLeftQuarterTurn5Tiles + &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::bankedRightQuarterTurn5Tiles + &TrackVehicleInfo_8FFBEA, &TrackVehicleInfo_8FFD0C, &TrackVehicleInfo_8FFE2E, &TrackVehicleInfo_8FFF50, // TrackElemType::leftBankToUp25 + &TrackVehicleInfo_8FFBEA, &TrackVehicleInfo_8FFD0C, &TrackVehicleInfo_8FFE2E, &TrackVehicleInfo_8FFF50, // TrackElemType::rightBankToUp25 + &TrackVehicleInfo_900072, &TrackVehicleInfo_9001A6, &TrackVehicleInfo_9002DA, &TrackVehicleInfo_90040E, // TrackElemType::up25ToLeftBank + &TrackVehicleInfo_900072, &TrackVehicleInfo_9001A6, &TrackVehicleInfo_9002DA, &TrackVehicleInfo_90040E, // TrackElemType::up25ToRightBank + &TrackVehicleInfo_9009CA, &TrackVehicleInfo_900AEC, &TrackVehicleInfo_900C0E, &TrackVehicleInfo_900D30, // TrackElemType::leftBankToDown25 + &TrackVehicleInfo_9009CA, &TrackVehicleInfo_900AEC, &TrackVehicleInfo_900C0E, &TrackVehicleInfo_900D30, // TrackElemType::rightBankToDown25 + &TrackVehicleInfo_900542, &TrackVehicleInfo_900664, &TrackVehicleInfo_900786, &TrackVehicleInfo_9008A8, // TrackElemType::down25ToLeftBank + &TrackVehicleInfo_900542, &TrackVehicleInfo_900664, &TrackVehicleInfo_900786, &TrackVehicleInfo_9008A8, // TrackElemType::down25ToRightBank + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::leftBank + &TrackVehicleInfo_8FF2DA, &TrackVehicleInfo_8FF3FC, &TrackVehicleInfo_8FF51E, &TrackVehicleInfo_8FF640, // TrackElemType::rightBank + &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp3, // TrackElemType::leftQuarterTurn5TilesUp25 + &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp3, // TrackElemType::rightQuarterTurn5TilesUp25 + &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown0, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown1, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown2, &LeftLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown3, // TrackElemType::leftQuarterTurn5TilesDown25 + &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown0, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown1, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown2, &LeftLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown3, // TrackElemType::rightQuarterTurn5TilesDown25 + &LeftLane::TrackVehicleInfoLeftSBend0, &LeftLane::TrackVehicleInfoLeftSBend1, &LeftLane::TrackVehicleInfoLeftSBend2, &LeftLane::TrackVehicleInfoLeftSBend3, // TrackElemType::sBendLeft + &LeftLane::TrackVehicleInfoRightSBend0, &LeftLane::TrackVehicleInfoRightSBend1, &LeftLane::TrackVehicleInfoRightSBend2, &LeftLane::TrackVehicleInfoRightSBend3, // TrackElemType::sBendRight + &TrackVehicleInfo_8D44BE, &TrackVehicleInfo_8D4FA6, &TrackVehicleInfo_8D5A8E, &TrackVehicleInfo_8D6576, // TrackElemType::leftVerticalLoop + &TrackVehicleInfo_8D705E, &TrackVehicleInfo_8D7B46, &TrackVehicleInfo_8D862E, &TrackVehicleInfo_8D9116, // TrackElemType::rightVerticalLoop + &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::leftQuarterTurn3Tiles + &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::rightQuarterTurn3Tiles + &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::leftBankedQuarterTurn3Tiles + &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::rightBankedQuarterTurn3Tiles + &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp3, // TrackElemType::leftQuarterTurn3TilesUp25 + &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp3, // TrackElemType::rightQuarterTurn3TilesUp25 + &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown0, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown1, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown2, &LeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown3, // TrackElemType::leftQuarterTurn3TilesDown25 + &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown0, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown1, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown2, &LeftLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown3, // TrackElemType::rightQuarterTurn3TilesDown25 + &TrackVehicleInfo_901C05, &TrackVehicleInfo_901C7C, &TrackVehicleInfo_901CFC, &TrackVehicleInfo_901D73, // TrackElemType::leftQuarterTurn1Tile + &TrackVehicleInfo_901762, &TrackVehicleInfo_901884, &TrackVehicleInfo_9019AF, &TrackVehicleInfo_901AE3, // TrackElemType::rightQuarterTurn1Tile &TrackVehicleInfo_8D9BFE, &TrackVehicleInfo_8D9F60, &TrackVehicleInfo_8DA2C2, &TrackVehicleInfo_8DA624, // LeftTwistDownToUp &TrackVehicleInfo_8DA986, &TrackVehicleInfo_8DACE8, &TrackVehicleInfo_8DB04A, &TrackVehicleInfo_8DB3AC, // RightTwistDownToUp &TrackVehicleInfo_8DB70E, &TrackVehicleInfo_8DBA70, &TrackVehicleInfo_8DBDD2, &TrackVehicleInfo_8DC134, // LeftTwistUpToDown @@ -40313,69 +40313,69 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsLeftLane[] = &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown0, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown1, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown2, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown3, // RightFlyerLargeHalfLoopUninvertedDown &TrackVehicleInfo_8E644E, &TrackVehicleInfo_8E69F9, &TrackVehicleInfo_8E6FA4, &TrackVehicleInfo_8E754F, // FlyerHalfLoopInvertedUp &TrackVehicleInfo_FlyerHalfLoopUninvertedDown0, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown1, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown2, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown3, // FlyerHalfLoopUninvertedDown - &LeftLane::TrackVehicleInfoLeftEighthToDiagUp250, &LeftLane::TrackVehicleInfoLeftEighthToDiagUp251, &LeftLane::TrackVehicleInfoLeftEighthToDiagUp252, &LeftLane::TrackVehicleInfoLeftEighthToDiagUp253, // TrackElemType::LeftEighthToDiagUp25 - &LeftLane::TrackVehicleInfoRightEighthToDiagUp250, &LeftLane::TrackVehicleInfoRightEighthToDiagUp251, &LeftLane::TrackVehicleInfoRightEighthToDiagUp252, &LeftLane::TrackVehicleInfoRightEighthToDiagUp253, // TrackElemType::RightEighthToDiagUp25 - &LeftLane::TrackVehicleInfoLeftEighthToDiagDown250, &LeftLane::TrackVehicleInfoLeftEighthToDiagDown251, &LeftLane::TrackVehicleInfoLeftEighthToDiagDown252, &LeftLane::TrackVehicleInfoLeftEighthToDiagDown253, // TrackElemType::LeftEighthToDiagDown25 - &LeftLane::TrackVehicleInfoRightEighthToDiagDown250, &LeftLane::TrackVehicleInfoRightEighthToDiagDown251, &LeftLane::TrackVehicleInfoRightEighthToDiagDown252, &LeftLane::TrackVehicleInfoRightEighthToDiagDown253, // TrackElemType::RightEighthToDiagDown25 - &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp250, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp251, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp252, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp253, // TrackElemType::LeftEighthToOrthogonalUp25 - &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp250, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp251, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp252, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp253, // TrackElemType::RightEighthToOrthogonalUp25 - &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown250, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown251, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown252, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown253, // TrackElemType::LeftEighthToOrthogonalDown25 - &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown250, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown251, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown252, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown253, // TrackElemType::RightEighthToOrthogonalDown25 + &LeftLane::TrackVehicleInfoLeftEighthToDiagUp250, &LeftLane::TrackVehicleInfoLeftEighthToDiagUp251, &LeftLane::TrackVehicleInfoLeftEighthToDiagUp252, &LeftLane::TrackVehicleInfoLeftEighthToDiagUp253, // TrackElemType::leftEighthToDiagUp25 + &LeftLane::TrackVehicleInfoRightEighthToDiagUp250, &LeftLane::TrackVehicleInfoRightEighthToDiagUp251, &LeftLane::TrackVehicleInfoRightEighthToDiagUp252, &LeftLane::TrackVehicleInfoRightEighthToDiagUp253, // TrackElemType::rightEighthToDiagUp25 + &LeftLane::TrackVehicleInfoLeftEighthToDiagDown250, &LeftLane::TrackVehicleInfoLeftEighthToDiagDown251, &LeftLane::TrackVehicleInfoLeftEighthToDiagDown252, &LeftLane::TrackVehicleInfoLeftEighthToDiagDown253, // TrackElemType::leftEighthToDiagDown25 + &LeftLane::TrackVehicleInfoRightEighthToDiagDown250, &LeftLane::TrackVehicleInfoRightEighthToDiagDown251, &LeftLane::TrackVehicleInfoRightEighthToDiagDown252, &LeftLane::TrackVehicleInfoRightEighthToDiagDown253, // TrackElemType::rightEighthToDiagDown25 + &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp250, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp251, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp252, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalUp253, // TrackElemType::leftEighthToOrthogonalUp25 + &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp250, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp251, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp252, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalUp253, // TrackElemType::rightEighthToOrthogonalUp25 + &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown250, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown251, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown252, &LeftLane::TrackVehicleInfoLeftEighthToOrthogonalDown253, // TrackElemType::leftEighthToOrthogonalDown25 + &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown250, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown251, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown252, &LeftLane::TrackVehicleInfoRightEighthToOrthogonalDown253, // TrackElemType::rightEighthToOrthogonalDown25 }; static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsRightLane[] = { - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::Flat - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::EndStation - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::BeginStation - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::MiddleStation - &TrackVehicleInfo_9034D1, &TrackVehicleInfo_9035F3, &TrackVehicleInfo_903715, &TrackVehicleInfo_903837, // TrackElemType::Up25 - &RightLane::TrackVehicleInfoUp600, &RightLane::TrackVehicleInfoUp601, &RightLane::TrackVehicleInfoUp602, &RightLane::TrackVehicleInfoUp603, // TrackElemType::Up60 - &TrackVehicleInfo_902269, &TrackVehicleInfo_90238B, &TrackVehicleInfo_9024AD, &TrackVehicleInfo_9025CF, // TrackElemType::FlatToUp25 - &RightLane::TrackVehicleInfoUp25ToUp600, &RightLane::TrackVehicleInfoUp25ToUp601, &RightLane::TrackVehicleInfoUp25ToUp602, &RightLane::TrackVehicleInfoUp25ToUp603, // TrackElemType::Up25ToUp60 - &RightLane::TrackVehicleInfoUp60ToUp250, &RightLane::TrackVehicleInfoUp60ToUp251, &RightLane::TrackVehicleInfoUp60ToUp252, &RightLane::TrackVehicleInfoUp60ToUp253, // TrackElemType::Up60ToUp25 - &TrackVehicleInfo_9026F1, &TrackVehicleInfo_902825, &TrackVehicleInfo_902959, &TrackVehicleInfo_902A8D, // TrackElemType::Up25ToFlat - &TrackVehicleInfo_903959, &TrackVehicleInfo_903A7B, &TrackVehicleInfo_903B9D, &TrackVehicleInfo_903CBF, // TrackElemType::Down25 - &RightLane::TrackVehicleInfoDown600, &RightLane::TrackVehicleInfoDown601, &RightLane::TrackVehicleInfoDown602, &RightLane::TrackVehicleInfoDown603, // TrackElemType::Down60 - &TrackVehicleInfo_903049, &TrackVehicleInfo_90316B, &TrackVehicleInfo_90328D, &TrackVehicleInfo_9033AF, // TrackElemType::FlatToDown25 - &RightLane::TrackVehicleInfoDown25ToDown600, &RightLane::TrackVehicleInfoDown25ToDown601, &RightLane::TrackVehicleInfoDown25ToDown602, &RightLane::TrackVehicleInfoDown25ToDown603, // TrackElemType::Down25ToDown60 - &RightLane::TrackVehicleInfoDown60ToDown250, &RightLane::TrackVehicleInfoDown60ToDown251, &RightLane::TrackVehicleInfoDown60ToDown252, &RightLane::TrackVehicleInfoDown60ToDown253, // TrackElemType::Down60ToDown25 - &TrackVehicleInfo_902BC1, &TrackVehicleInfo_902CE3, &TrackVehicleInfo_902E05, &TrackVehicleInfo_902F27, // TrackElemType::Down25ToFlat - &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::LeftQuarterTurn5Tiles - &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::RightQuarterTurn5Tiles - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::FlatToLeftBank - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::FlatToRightBank - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::LeftBankToFlat - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::RightBankToFlat - &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::BankedLeftQuarterTurn5Tiles - &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::BankedRightQuarterTurn5Tiles - &TrackVehicleInfo_902269, &TrackVehicleInfo_90238B, &TrackVehicleInfo_9024AD, &TrackVehicleInfo_9025CF, // TrackElemType::LeftBankToUp25 - &TrackVehicleInfo_902269, &TrackVehicleInfo_90238B, &TrackVehicleInfo_9024AD, &TrackVehicleInfo_9025CF, // TrackElemType::RightBankToUp25 - &TrackVehicleInfo_9026F1, &TrackVehicleInfo_902825, &TrackVehicleInfo_902959, &TrackVehicleInfo_902A8D, // TrackElemType::Up25ToLeftBank - &TrackVehicleInfo_9026F1, &TrackVehicleInfo_902825, &TrackVehicleInfo_902959, &TrackVehicleInfo_902A8D, // TrackElemType::Up25ToRightBank - &TrackVehicleInfo_903049, &TrackVehicleInfo_90316B, &TrackVehicleInfo_90328D, &TrackVehicleInfo_9033AF, // TrackElemType::LeftBankToDown25 - &TrackVehicleInfo_903049, &TrackVehicleInfo_90316B, &TrackVehicleInfo_90328D, &TrackVehicleInfo_9033AF, // TrackElemType::RightBankToDown25 - &TrackVehicleInfo_902BC1, &TrackVehicleInfo_902CE3, &TrackVehicleInfo_902E05, &TrackVehicleInfo_902F27, // TrackElemType::Down25ToLeftBank - &TrackVehicleInfo_902BC1, &TrackVehicleInfo_902CE3, &TrackVehicleInfo_902E05, &TrackVehicleInfo_902F27, // TrackElemType::Down25ToRightBank - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::LeftBank - &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::RightBank - &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp3, // TrackElemType::LeftQuarterTurn5TilesUp25 - &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp3, // TrackElemType::RightQuarterTurn5TilesUp25 - &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown3, // TrackElemType::LeftQuarterTurn5TilesDown25 - &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown3, // TrackElemType::RightQuarterTurn5TilesDown25 - &RightLane::TrackVehicleInfoLeftSBend0, &RightLane::TrackVehicleInfoLeftSBend1, &RightLane::TrackVehicleInfoLeftSBend2, &RightLane::TrackVehicleInfoLeftSBend3, // TrackElemType::SBendLeft - &RightLane::TrackVehicleInfoRightSBend0, &RightLane::TrackVehicleInfoRightSBend1, &RightLane::TrackVehicleInfoRightSBend2, &RightLane::TrackVehicleInfoRightSBend3, // TrackElemType::SBendRight - &TrackVehicleInfo_8D44BE, &TrackVehicleInfo_8D4FA6, &TrackVehicleInfo_8D5A8E, &TrackVehicleInfo_8D6576, // TrackElemType::LeftVerticalLoop - &TrackVehicleInfo_8D705E, &TrackVehicleInfo_8D7B46, &TrackVehicleInfo_8D862E, &TrackVehicleInfo_8D9116, // TrackElemType::RightVerticalLoop - &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::LeftQuarterTurn3Tiles - &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::RightQuarterTurn3Tiles - &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::LeftBankedQuarterTurn3Tiles - &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::RightBankedQuarterTurn3Tiles - &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp3, // TrackElemType::LeftQuarterTurn3TilesUp25 - &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp3, // TrackElemType::RightQuarterTurn3TilesUp25 - &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown3, // TrackElemType::LeftQuarterTurn3TilesDown25 - &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown3, // TrackElemType::RightQuarterTurn3TilesDown25 - &TrackVehicleInfo_903DE1, &TrackVehicleInfo_903F0C, &TrackVehicleInfo_904040, &TrackVehicleInfo_904162, // TrackElemType::LeftQuarterTurn1Tile - &TrackVehicleInfo_904284, &TrackVehicleInfo_9042F2, &TrackVehicleInfo_904369, &TrackVehicleInfo_9043E9, // TrackElemType::RightQuarterTurn1Tile + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::flat + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::endStation + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::beginStation + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::middleStation + &TrackVehicleInfo_9034D1, &TrackVehicleInfo_9035F3, &TrackVehicleInfo_903715, &TrackVehicleInfo_903837, // TrackElemType::up25 + &RightLane::TrackVehicleInfoUp600, &RightLane::TrackVehicleInfoUp601, &RightLane::TrackVehicleInfoUp602, &RightLane::TrackVehicleInfoUp603, // TrackElemType::up60 + &TrackVehicleInfo_902269, &TrackVehicleInfo_90238B, &TrackVehicleInfo_9024AD, &TrackVehicleInfo_9025CF, // TrackElemType::flatToUp25 + &RightLane::TrackVehicleInfoUp25ToUp600, &RightLane::TrackVehicleInfoUp25ToUp601, &RightLane::TrackVehicleInfoUp25ToUp602, &RightLane::TrackVehicleInfoUp25ToUp603, // TrackElemType::up25ToUp60 + &RightLane::TrackVehicleInfoUp60ToUp250, &RightLane::TrackVehicleInfoUp60ToUp251, &RightLane::TrackVehicleInfoUp60ToUp252, &RightLane::TrackVehicleInfoUp60ToUp253, // TrackElemType::up60ToUp25 + &TrackVehicleInfo_9026F1, &TrackVehicleInfo_902825, &TrackVehicleInfo_902959, &TrackVehicleInfo_902A8D, // TrackElemType::up25ToFlat + &TrackVehicleInfo_903959, &TrackVehicleInfo_903A7B, &TrackVehicleInfo_903B9D, &TrackVehicleInfo_903CBF, // TrackElemType::down25 + &RightLane::TrackVehicleInfoDown600, &RightLane::TrackVehicleInfoDown601, &RightLane::TrackVehicleInfoDown602, &RightLane::TrackVehicleInfoDown603, // TrackElemType::down60 + &TrackVehicleInfo_903049, &TrackVehicleInfo_90316B, &TrackVehicleInfo_90328D, &TrackVehicleInfo_9033AF, // TrackElemType::flatToDown25 + &RightLane::TrackVehicleInfoDown25ToDown600, &RightLane::TrackVehicleInfoDown25ToDown601, &RightLane::TrackVehicleInfoDown25ToDown602, &RightLane::TrackVehicleInfoDown25ToDown603, // TrackElemType::down25ToDown60 + &RightLane::TrackVehicleInfoDown60ToDown250, &RightLane::TrackVehicleInfoDown60ToDown251, &RightLane::TrackVehicleInfoDown60ToDown252, &RightLane::TrackVehicleInfoDown60ToDown253, // TrackElemType::down60ToDown25 + &TrackVehicleInfo_902BC1, &TrackVehicleInfo_902CE3, &TrackVehicleInfo_902E05, &TrackVehicleInfo_902F27, // TrackElemType::down25ToFlat + &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::leftQuarterTurn5Tiles + &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::rightQuarterTurn5Tiles + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::flatToLeftBank + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::flatToRightBank + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::leftBankToFlat + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::rightBankToFlat + &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles3, // TrackElemType::bankedLeftQuarterTurn5Tiles + &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles3, // TrackElemType::bankedRightQuarterTurn5Tiles + &TrackVehicleInfo_902269, &TrackVehicleInfo_90238B, &TrackVehicleInfo_9024AD, &TrackVehicleInfo_9025CF, // TrackElemType::leftBankToUp25 + &TrackVehicleInfo_902269, &TrackVehicleInfo_90238B, &TrackVehicleInfo_9024AD, &TrackVehicleInfo_9025CF, // TrackElemType::rightBankToUp25 + &TrackVehicleInfo_9026F1, &TrackVehicleInfo_902825, &TrackVehicleInfo_902959, &TrackVehicleInfo_902A8D, // TrackElemType::up25ToLeftBank + &TrackVehicleInfo_9026F1, &TrackVehicleInfo_902825, &TrackVehicleInfo_902959, &TrackVehicleInfo_902A8D, // TrackElemType::up25ToRightBank + &TrackVehicleInfo_903049, &TrackVehicleInfo_90316B, &TrackVehicleInfo_90328D, &TrackVehicleInfo_9033AF, // TrackElemType::leftBankToDown25 + &TrackVehicleInfo_903049, &TrackVehicleInfo_90316B, &TrackVehicleInfo_90328D, &TrackVehicleInfo_9033AF, // TrackElemType::rightBankToDown25 + &TrackVehicleInfo_902BC1, &TrackVehicleInfo_902CE3, &TrackVehicleInfo_902E05, &TrackVehicleInfo_902F27, // TrackElemType::down25ToLeftBank + &TrackVehicleInfo_902BC1, &TrackVehicleInfo_902CE3, &TrackVehicleInfo_902E05, &TrackVehicleInfo_902F27, // TrackElemType::down25ToRightBank + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::leftBank + &TrackVehicleInfo_901DE1, &TrackVehicleInfo_901F03, &TrackVehicleInfo_902025, &TrackVehicleInfo_902147, // TrackElemType::rightBank + &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegUp3, // TrackElemType::leftQuarterTurn5TilesUp25 + &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegUp3, // TrackElemType::rightQuarterTurn5TilesUp25 + &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown0, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown1, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown2, &RightLane::TrackVehicleInfoLeftQuarterTurn5Tiles25DegDown3, // TrackElemType::leftQuarterTurn5TilesDown25 + &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown0, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown1, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown2, &RightLane::TrackVehicleInfoRightQuarterTurn5Tiles25DegDown3, // TrackElemType::rightQuarterTurn5TilesDown25 + &RightLane::TrackVehicleInfoLeftSBend0, &RightLane::TrackVehicleInfoLeftSBend1, &RightLane::TrackVehicleInfoLeftSBend2, &RightLane::TrackVehicleInfoLeftSBend3, // TrackElemType::sBendLeft + &RightLane::TrackVehicleInfoRightSBend0, &RightLane::TrackVehicleInfoRightSBend1, &RightLane::TrackVehicleInfoRightSBend2, &RightLane::TrackVehicleInfoRightSBend3, // TrackElemType::sBendRight + &TrackVehicleInfo_8D44BE, &TrackVehicleInfo_8D4FA6, &TrackVehicleInfo_8D5A8E, &TrackVehicleInfo_8D6576, // TrackElemType::leftVerticalLoop + &TrackVehicleInfo_8D705E, &TrackVehicleInfo_8D7B46, &TrackVehicleInfo_8D862E, &TrackVehicleInfo_8D9116, // TrackElemType::rightVerticalLoop + &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::leftQuarterTurn3Tiles + &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::rightQuarterTurn3Tiles + &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // TrackElemType::leftBankedQuarterTurn3Tiles + &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles3, // TrackElemType::rightBankedQuarterTurn3Tiles + &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegUp3, // TrackElemType::leftQuarterTurn3TilesUp25 + &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegUp3, // TrackElemType::rightQuarterTurn3TilesUp25 + &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown0, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown1, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown2, &RightLane::TrackVehicleInfoLeftQuarterTurn3Tiles25DegDown3, // TrackElemType::leftQuarterTurn3TilesDown25 + &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown0, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown1, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown2, &RightLane::TrackVehicleInfoRightQuarterTurn3Tiles25DegDown3, // TrackElemType::rightQuarterTurn3TilesDown25 + &TrackVehicleInfo_903DE1, &TrackVehicleInfo_903F0C, &TrackVehicleInfo_904040, &TrackVehicleInfo_904162, // TrackElemType::leftQuarterTurn1Tile + &TrackVehicleInfo_904284, &TrackVehicleInfo_9042F2, &TrackVehicleInfo_904369, &TrackVehicleInfo_9043E9, // TrackElemType::rightQuarterTurn1Tile &TrackVehicleInfo_8D9BFE, &TrackVehicleInfo_8D9F60, &TrackVehicleInfo_8DA2C2, &TrackVehicleInfo_8DA624, // LeftTwistDownToUp &TrackVehicleInfo_8DA986, &TrackVehicleInfo_8DACE8, &TrackVehicleInfo_8DB04A, &TrackVehicleInfo_8DB3AC, // RightTwistDownToUp &TrackVehicleInfo_8DB70E, &TrackVehicleInfo_8DBA70, &TrackVehicleInfo_8DBDD2, &TrackVehicleInfo_8DC134, // LeftTwistUpToDown @@ -40617,14 +40617,14 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsRightLane[] = &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown0, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown1, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown2, &TrackVehicleInfo_RightFlyerLargeHalfLoopUninvertedDown3, // RightFlyerLargeHalfLoopUninvertedDown &TrackVehicleInfo_8E644E, &TrackVehicleInfo_8E69F9, &TrackVehicleInfo_8E6FA4, &TrackVehicleInfo_8E754F, // FlyerHalfLoopInvertedUp &TrackVehicleInfo_FlyerHalfLoopUninvertedDown0, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown1, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown2, &TrackVehicleInfo_FlyerHalfLoopUninvertedDown3, // FlyerHalfLoopUninvertedDown - &RightLane::TrackVehicleInfoLeftEighthToDiagUp250, &RightLane::TrackVehicleInfoLeftEighthToDiagUp251, &RightLane::TrackVehicleInfoLeftEighthToDiagUp252, &RightLane::TrackVehicleInfoLeftEighthToDiagUp253, // TrackElemType::LeftEighthToDiagUp25 - &RightLane::TrackVehicleInfoRightEighthToDiagUp250, &RightLane::TrackVehicleInfoRightEighthToDiagUp251, &RightLane::TrackVehicleInfoRightEighthToDiagUp252, &RightLane::TrackVehicleInfoRightEighthToDiagUp253, // TrackElemType::RightEighthToDiagUp25 - &RightLane::TrackVehicleInfoLeftEighthToDiagDown250, &RightLane::TrackVehicleInfoLeftEighthToDiagDown251, &RightLane::TrackVehicleInfoLeftEighthToDiagDown252, &RightLane::TrackVehicleInfoLeftEighthToDiagDown253, // TrackElemType::LeftEighthToDiagDown25 - &RightLane::TrackVehicleInfoRightEighthToDiagDown250, &RightLane::TrackVehicleInfoRightEighthToDiagDown251, &RightLane::TrackVehicleInfoRightEighthToDiagDown252, &RightLane::TrackVehicleInfoRightEighthToDiagDown253, // TrackElemType::RightEighthToDiagDown25 - &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp250, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp251, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp252, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp253, // TrackElemType::LeftEighthToOrthogonalUp25 - &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp250, &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp251, &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp252, &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp253, // TrackElemType::RightEighthToOrthogonalUp25 - &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown250, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown251, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown252, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown253, // TrackElemType::LeftEighthToOrthogonalDown25 - &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown250, &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown251, &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown252, &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown253, // TrackElemType::RightEighthToOrthogonalDown25 + &RightLane::TrackVehicleInfoLeftEighthToDiagUp250, &RightLane::TrackVehicleInfoLeftEighthToDiagUp251, &RightLane::TrackVehicleInfoLeftEighthToDiagUp252, &RightLane::TrackVehicleInfoLeftEighthToDiagUp253, // TrackElemType::leftEighthToDiagUp25 + &RightLane::TrackVehicleInfoRightEighthToDiagUp250, &RightLane::TrackVehicleInfoRightEighthToDiagUp251, &RightLane::TrackVehicleInfoRightEighthToDiagUp252, &RightLane::TrackVehicleInfoRightEighthToDiagUp253, // TrackElemType::rightEighthToDiagUp25 + &RightLane::TrackVehicleInfoLeftEighthToDiagDown250, &RightLane::TrackVehicleInfoLeftEighthToDiagDown251, &RightLane::TrackVehicleInfoLeftEighthToDiagDown252, &RightLane::TrackVehicleInfoLeftEighthToDiagDown253, // TrackElemType::leftEighthToDiagDown25 + &RightLane::TrackVehicleInfoRightEighthToDiagDown250, &RightLane::TrackVehicleInfoRightEighthToDiagDown251, &RightLane::TrackVehicleInfoRightEighthToDiagDown252, &RightLane::TrackVehicleInfoRightEighthToDiagDown253, // TrackElemType::rightEighthToDiagDown25 + &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp250, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp251, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp252, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalUp253, // TrackElemType::leftEighthToOrthogonalUp25 + &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp250, &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp251, &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp252, &RightLane::TrackVehicleInfoRightEighthToOrthogonalUp253, // TrackElemType::rightEighthToOrthogonalUp25 + &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown250, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown251, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown252, &RightLane::TrackVehicleInfoLeftEighthToOrthogonalDown253, // TrackElemType::leftEighthToOrthogonalDown25 + &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown250, &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown251, &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown252, &RightLane::TrackVehicleInfoRightEighthToOrthogonalDown253, // TrackElemType::rightEighthToOrthogonalDown25 }; static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsMovingToRightLane[] = { @@ -40666,8 +40666,8 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsMovingToRight &TrackVehicleInfo_8D148E, &TrackVehicleInfo_8D1889, &TrackVehicleInfo_8D1C8D, &TrackVehicleInfo_8D209A, // RightQuarterTurn5TilesUp25 &TrackVehicleInfo_8D249E, &TrackVehicleInfo_8D28A2, &TrackVehicleInfo_8D2CAF, &TrackVehicleInfo_8D30B3, // LeftQuarterTurn5TilesDown25 &TrackVehicleInfo_8D34AE, &TrackVehicleInfo_8D38A9, &TrackVehicleInfo_8D3CAD, &TrackVehicleInfo_8D40BA, // RightQuarterTurn5TilesDown25 - &MovingToRightLane::TrackVehicleInfoLeftSBend0, &MovingToRightLane::TrackVehicleInfoLeftSBend1, &MovingToRightLane::TrackVehicleInfoLeftSBend2, &MovingToRightLane::TrackVehicleInfoLeftSBend3, // TrackElemType::SBendLeft - &MovingToRightLane::TrackVehicleInfoRightSBend0, &MovingToRightLane::TrackVehicleInfoRightSBend1, &MovingToRightLane::TrackVehicleInfoRightSBend2, &MovingToRightLane::TrackVehicleInfoRightSBend3, // TrackElemType::SBendRight + &MovingToRightLane::TrackVehicleInfoLeftSBend0, &MovingToRightLane::TrackVehicleInfoLeftSBend1, &MovingToRightLane::TrackVehicleInfoLeftSBend2, &MovingToRightLane::TrackVehicleInfoLeftSBend3, // TrackElemType::sBendLeft + &MovingToRightLane::TrackVehicleInfoRightSBend0, &MovingToRightLane::TrackVehicleInfoRightSBend1, &MovingToRightLane::TrackVehicleInfoRightSBend2, &MovingToRightLane::TrackVehicleInfoRightSBend3, // TrackElemType::sBendRight &TrackVehicleInfo_8D44BE, &TrackVehicleInfo_8D4FA6, &TrackVehicleInfo_8D5A8E, &TrackVehicleInfo_8D6576, // LeftVerticalLoop &TrackVehicleInfo_8D705E, &TrackVehicleInfo_8D7B46, &TrackVehicleInfo_8D862E, &TrackVehicleInfo_8D9116, // RightVerticalLoop &MovingToRightLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &MovingToRightLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &MovingToRightLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &MovingToRightLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // LeftQuarterTurn3Tiles @@ -40811,8 +40811,8 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListGoKartsMovingToLeftL &TrackVehicleInfo_8D148E, &TrackVehicleInfo_8D1889, &TrackVehicleInfo_8D1C8D, &TrackVehicleInfo_8D209A, // RightQuarterTurn5TilesUp25 &TrackVehicleInfo_8D249E, &TrackVehicleInfo_8D28A2, &TrackVehicleInfo_8D2CAF, &TrackVehicleInfo_8D30B3, // LeftQuarterTurn5TilesDown25 &TrackVehicleInfo_8D34AE, &TrackVehicleInfo_8D38A9, &TrackVehicleInfo_8D3CAD, &TrackVehicleInfo_8D40BA, // RightQuarterTurn5TilesDown25 - &MovingToLeftLane::TrackVehicleInfoLeftSBend0, &MovingToLeftLane::TrackVehicleInfoLeftSBend1, &MovingToLeftLane::TrackVehicleInfoLeftSBend2, &MovingToLeftLane::TrackVehicleInfoLeftSBend3, // TrackElemType::SBendLeft - &MovingToLeftLane::TrackVehicleInfoRightSBend0, &MovingToLeftLane::TrackVehicleInfoRightSBend1, &MovingToLeftLane::TrackVehicleInfoRightSBend2, &MovingToLeftLane::TrackVehicleInfoRightSBend3, // TrackElemType::SBendRight + &MovingToLeftLane::TrackVehicleInfoLeftSBend0, &MovingToLeftLane::TrackVehicleInfoLeftSBend1, &MovingToLeftLane::TrackVehicleInfoLeftSBend2, &MovingToLeftLane::TrackVehicleInfoLeftSBend3, // TrackElemType::sBendLeft + &MovingToLeftLane::TrackVehicleInfoRightSBend0, &MovingToLeftLane::TrackVehicleInfoRightSBend1, &MovingToLeftLane::TrackVehicleInfoRightSBend2, &MovingToLeftLane::TrackVehicleInfoRightSBend3, // TrackElemType::sBendRight &TrackVehicleInfo_8D44BE, &TrackVehicleInfo_8D4FA6, &TrackVehicleInfo_8D5A8E, &TrackVehicleInfo_8D6576, // LeftVerticalLoop &TrackVehicleInfo_8D705E, &TrackVehicleInfo_8D7B46, &TrackVehicleInfo_8D862E, &TrackVehicleInfo_8D9116, // RightVerticalLoop &MovingToLeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles0, &MovingToLeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles1, &MovingToLeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles2, &MovingToLeftLane::TrackVehicleInfoLeftQuarterTurn3Tiles3, // LeftQuarterTurn3Tiles diff --git a/src/openrct2/ride/VehicleSubpositionData.h b/src/openrct2/ride/VehicleSubpositionData.h index 22a35ac56f50..e87ff24c9ddc 100644 --- a/src/openrct2/ride/VehicleSubpositionData.h +++ b/src/openrct2/ride/VehicleSubpositionData.h @@ -14,7 +14,7 @@ #include -constexpr const size_t VehicleTrackSubpositionSizeDefault = EnumValue(OpenRCT2::TrackElemType::Count) +constexpr const size_t VehicleTrackSubpositionSizeDefault = EnumValue(OpenRCT2::TrackElemType::count) * kNumOrthogonalDirections; struct VehicleInfo; diff --git a/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h b/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h index 10193e0eda94..94e3ee823a4d 100644 --- a/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h +++ b/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor AirPoweredVerticalCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::airPoweredVerticalCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/AlpineCoaster.h b/src/openrct2/ride/rtd/coaster/AlpineCoaster.h index d4d7bba43506..97d506704828 100644 --- a/src/openrct2/ride/rtd/coaster/AlpineCoaster.h +++ b/src/openrct2/ride/rtd/coaster/AlpineCoaster.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor AlpineCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::alpineCoaster, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h b/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h index 8362f2071dd0..ea10ef8e371c 100644 --- a/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h +++ b/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor BobsleighCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::bobsleighCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h index 74ba628a2c0f..e7ce01f72f2b 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ClassicMiniRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::juniorRollerCoaster, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h index 9596ad05ec61..a9704480fd9e 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ClassicStandUpRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::classicStandUpRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h index 1c36c3d6bee4..ada5aaa0aebe 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ClassicWoodenRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::classicWoodenRollerCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h index 3f220a06c6b2..82d9db3e3e06 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ClassicWoodenTwisterRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::classicWoodenTwisterRollerCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h b/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h index 9feb2a3a1799..5db6538ade7e 100644 --- a/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h +++ b/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CompactInvertedCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::compactInvertedCoaster, .supportType = MetalSupportType::tubesInverted, diff --git a/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h b/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h index 56180b678372..5f82e978e464 100644 --- a/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CorkscrewRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::corkscrewRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h b/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h index e87e58e0eb42..0b0cbf7cbf02 100644 --- a/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor FlyingRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::flyingRollerCoaster, .supportType = MetalSupportType::tubesInverted, @@ -99,7 +99,7 @@ constexpr RideTypeDescriptor FlyingRollerCoasterRTD = constexpr RideTypeDescriptor FlyingRollerCoasterAltRTD = { .Category = RideCategory::none, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::null, .enabledTrackGroups = { }, diff --git a/src/openrct2/ride/rtd/coaster/GigaCoaster.h b/src/openrct2/ride/rtd/coaster/GigaCoaster.h index b33e454aac80..2979f1511e65 100644 --- a/src/openrct2/ride/rtd/coaster/GigaCoaster.h +++ b/src/openrct2/ride/rtd/coaster/GigaCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor GigaCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::latticeTriangle, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h b/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h index 3401adc44258..98b91408b479 100644 --- a/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h +++ b/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor HeartlineTwisterCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::heartlineTwisterCoaster, .supportType = WoodenSupportType::mine, diff --git a/src/openrct2/ride/rtd/coaster/HybridCoaster.h b/src/openrct2/ride/rtd/coaster/HybridCoaster.h index a4a6045f5d08..a0d7716e9986 100644 --- a/src/openrct2/ride/rtd/coaster/HybridCoaster.h +++ b/src/openrct2/ride/rtd/coaster/HybridCoaster.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor HybridCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::hybridCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/HyperTwister.h b/src/openrct2/ride/rtd/coaster/HyperTwister.h index 62bb10249b6c..ee3bfcdd1c62 100644 --- a/src/openrct2/ride/rtd/coaster/HyperTwister.h +++ b/src/openrct2/ride/rtd/coaster/HyperTwister.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor HyperTwisterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::twisterRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/Hypercoaster.h b/src/openrct2/ride/rtd/coaster/Hypercoaster.h index e48a545af393..3c2fd9b00b30 100644 --- a/src/openrct2/ride/rtd/coaster/Hypercoaster.h +++ b/src/openrct2/ride/rtd/coaster/Hypercoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor HypercoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::corkscrewRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h index 3017104be96c..efb832c6822f 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor InvertedHairpinCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::invertedHairpinCoaster, .supportType = MetalSupportType::tubesInverted, diff --git a/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h index fe86bb95a652..104c8b035f0b 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor InvertedImpulseCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::invertedImpulseCoaster, .supportType = MetalSupportType::tubesInverted, diff --git a/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h index a3eef9b7abe1..9748b0786acb 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor InvertedRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::invertedRollerCoaster, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h b/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h index 78ccf41052eb..6848a93b0d3a 100644 --- a/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor JuniorRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::juniorRollerCoaster, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h index 615478a07c74..b0231e783ee1 100644 --- a/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LIMLaunchedRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::limLaunchedRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h index db2c78e04a41..3ffe932c08af 100644 --- a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LSMLaunchedRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::latticeTriangleAlt, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h index 5be964e847bf..35ad14edd5e2 100644 --- a/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LayDownRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor( { .trackStyle = TrackStyle::corkscrewRollerCoaster, @@ -98,7 +98,7 @@ constexpr RideTypeDescriptor LayDownRollerCoasterRTD = constexpr RideTypeDescriptor LayDownRollerCoasterAltRTD = { .Category = RideCategory::none, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::null, .enabledTrackGroups = { }, diff --git a/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h index 7d172b53a8ec..d0c86a9d7a3c 100644 --- a/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LoopingRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::loopingRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/MineRide.h b/src/openrct2/ride/rtd/coaster/MineRide.h index 7e3988683abe..0d38cf3153e0 100644 --- a/src/openrct2/ride/rtd/coaster/MineRide.h +++ b/src/openrct2/ride/rtd/coaster/MineRide.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MineRideRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::mineRide, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h b/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h index d46ca376539a..94662c8ca518 100644 --- a/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MineTrainCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::mineTrainCoaster, .supportType = WoodenSupportType::mine, diff --git a/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h b/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h index 432b8e516501..171a40ec5370 100644 --- a/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MiniRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::miniRollerCoaster, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h b/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h index 3049551613bd..8feb069df1f1 100644 --- a/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MiniSuspendedCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::miniSuspendedCoaster, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h b/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h index e8925af0bb6f..93239d1493b4 100644 --- a/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MultiDimensionRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::multiDimensionRollerCoaster, .supportType = MetalSupportType::tubesInverted, @@ -98,7 +98,7 @@ constexpr RideTypeDescriptor MultiDimensionRollerCoasterRTD = constexpr RideTypeDescriptor MultiDimensionRollerCoasterAltRTD = { .Category = RideCategory::none, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::null, .enabledTrackGroups = { }, diff --git a/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h b/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h index 29423a6ac2a9..3a1df06beb45 100644 --- a/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ReverseFreefallCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::reverseFreefallCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h index c5242562288b..c5bfecf56a95 100644 --- a/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ReverserRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::reverserRollerCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h index c5cb42a850b3..08f61f0b5131 100644 --- a/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SideFrictionRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::sideFrictionRollerCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h index c1e44b1726de..91b38c937c87 100644 --- a/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SingleRailRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::singleRailRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h b/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h index 4c8b5d8bb477..977212ca0c53 100644 --- a/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SpinningWildMouseRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::steelWildMouse, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h index 1f5e6cddab6c..8183018bbad4 100644 --- a/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SpiralRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::miniRollerCoaster, .supportType = MetalSupportType::fork, diff --git a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h index c5da1ccc4b2e..26d56a5bbbe2 100644 --- a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor StandUpRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::standUpRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/SteelWildMouse.h b/src/openrct2/ride/rtd/coaster/SteelWildMouse.h index 2b9af8ebac61..039434790158 100644 --- a/src/openrct2/ride/rtd/coaster/SteelWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/SteelWildMouse.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SteelWildMouseRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::steelWildMouse, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/Steeplechase.h b/src/openrct2/ride/rtd/coaster/Steeplechase.h index a5d4afdfe002..7e626b6c70c4 100644 --- a/src/openrct2/ride/rtd/coaster/Steeplechase.h +++ b/src/openrct2/ride/rtd/coaster/Steeplechase.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SteeplechaseRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::steeplechase, .supportType = MetalSupportType::stick, diff --git a/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h b/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h index 6fa9852e47b7..53e3219a5dc9 100644 --- a/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SuspendedSwingingCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::suspendedSwingingCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h b/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h index daf11b1d3e16..9bc1308ed4ad 100644 --- a/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor TwisterRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::twisterRollerCoaster, .supportType = MetalSupportType::tubes, diff --git a/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h b/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h index 204db0f746e4..617e05a91772 100644 --- a/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h +++ b/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor VerticalDropCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::twisterRollerCoaster, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/coaster/VirginiaReel.h b/src/openrct2/ride/rtd/coaster/VirginiaReel.h index 327a8d5445b7..b75bc4c7d15d 100644 --- a/src/openrct2/ride/rtd/coaster/VirginiaReel.h +++ b/src/openrct2/ride/rtd/coaster/VirginiaReel.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor VirginiaReelRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::virginiaReel, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/WaterCoaster.h b/src/openrct2/ride/rtd/coaster/WaterCoaster.h index 298f55db22f3..20227abbe8c2 100644 --- a/src/openrct2/ride/rtd/coaster/WaterCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WaterCoaster.h @@ -22,7 +22,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor WaterCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor( { .trackStyle = TrackStyle::waterCoaster, diff --git a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h index 1de1d7074c95..37c2e6b4b4ad 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor WoodenRollerCoasterRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::woodenRollerCoaster, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h b/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h index 9e32e89ddeb1..8701007ebe9b 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor WoodenWildMouseRTD = { .Category = RideCategory::rollerCoaster, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::woodenWildMouse, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/gentle/CarRide.h b/src/openrct2/ride/rtd/gentle/CarRide.h index f8ea14a464cc..54572dfaa551 100644 --- a/src/openrct2/ride/rtd/gentle/CarRide.h +++ b/src/openrct2/ride/rtd/gentle/CarRide.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CarRideRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::carRide, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/gentle/Circus.h b/src/openrct2/ride/rtd/gentle/Circus.h index af9371e32cc7..8da007045503 100644 --- a/src/openrct2/ride/rtd/gentle/Circus.h +++ b/src/openrct2/ride/rtd/gentle/Circus.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CircusRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::circus, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/CrookedHouse.h b/src/openrct2/ride/rtd/gentle/CrookedHouse.h index e43e0858276e..be6621394711 100644 --- a/src/openrct2/ride/rtd/gentle/CrookedHouse.h +++ b/src/openrct2/ride/rtd/gentle/CrookedHouse.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CrookedHouseRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::crookedHouse, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/Dodgems.h b/src/openrct2/ride/rtd/gentle/Dodgems.h index f17f36cf66c1..8e1ce7691780 100644 --- a/src/openrct2/ride/rtd/gentle/Dodgems.h +++ b/src/openrct2/ride/rtd/gentle/Dodgems.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor DodgemsRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack4x4, + .StartTrackPiece = TrackElemType::flatTrack4x4, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::dodgems, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/FerrisWheel.h b/src/openrct2/ride/rtd/gentle/FerrisWheel.h index 6ca6c9d1f9f5..170e3a260773 100644 --- a/src/openrct2/ride/rtd/gentle/FerrisWheel.h +++ b/src/openrct2/ride/rtd/gentle/FerrisWheel.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor FerrisWheelRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack1x4C, + .StartTrackPiece = TrackElemType::flatTrack1x4C, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::ferrisWheel, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/FlyingSaucers.h b/src/openrct2/ride/rtd/gentle/FlyingSaucers.h index 7908cd658d91..b7eac2f4fca5 100644 --- a/src/openrct2/ride/rtd/gentle/FlyingSaucers.h +++ b/src/openrct2/ride/rtd/gentle/FlyingSaucers.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor FlyingSaucersRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack4x4, + .StartTrackPiece = TrackElemType::flatTrack4x4, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::flyingSaucers, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/GhostTrain.h b/src/openrct2/ride/rtd/gentle/GhostTrain.h index e5c3abc8a9ac..245c6fa25b7f 100644 --- a/src/openrct2/ride/rtd/gentle/GhostTrain.h +++ b/src/openrct2/ride/rtd/gentle/GhostTrain.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor GhostTrainRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::ghostTrain, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/gentle/HauntedHouse.h b/src/openrct2/ride/rtd/gentle/HauntedHouse.h index 760b3397805b..4bcfd7cc2ff7 100644 --- a/src/openrct2/ride/rtd/gentle/HauntedHouse.h +++ b/src/openrct2/ride/rtd/gentle/HauntedHouse.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor HauntedHouseRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::hauntedHouse, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/Maze.h b/src/openrct2/ride/rtd/gentle/Maze.h index 4ce8056d23d7..be4beddff9ab 100644 --- a/src/openrct2/ride/rtd/gentle/Maze.h +++ b/src/openrct2/ride/rtd/gentle/Maze.h @@ -22,7 +22,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MazeRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::Maze, + .StartTrackPiece = TrackElemType::maze, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::maze, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/MerryGoRound.h b/src/openrct2/ride/rtd/gentle/MerryGoRound.h index 48fbdd592a85..fee4262319d0 100644 --- a/src/openrct2/ride/rtd/gentle/MerryGoRound.h +++ b/src/openrct2/ride/rtd/gentle/MerryGoRound.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MerryGoRoundRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::merryGoRound, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/MiniGolf.h b/src/openrct2/ride/rtd/gentle/MiniGolf.h index 4afc86b725a1..db2a18e14386 100644 --- a/src/openrct2/ride/rtd/gentle/MiniGolf.h +++ b/src/openrct2/ride/rtd/gentle/MiniGolf.h @@ -19,7 +19,7 @@ namespace OpenRCT2 { constexpr RideTypeDescriptor MiniGolfRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::miniGolf, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/gentle/MiniHelicopters.h b/src/openrct2/ride/rtd/gentle/MiniHelicopters.h index b70f41ec2f60..c8d5a6f04187 100644 --- a/src/openrct2/ride/rtd/gentle/MiniHelicopters.h +++ b/src/openrct2/ride/rtd/gentle/MiniHelicopters.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MiniHelicoptersRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::miniHelicopters, .supportType = MetalSupportType::stick, diff --git a/src/openrct2/ride/rtd/gentle/MonorailCycles.h b/src/openrct2/ride/rtd/gentle/MonorailCycles.h index 7f4169695711..b2f5fd0b4bb8 100644 --- a/src/openrct2/ride/rtd/gentle/MonorailCycles.h +++ b/src/openrct2/ride/rtd/gentle/MonorailCycles.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MonorailCyclesRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::monorailCycles, .supportType = MetalSupportType::stick, diff --git a/src/openrct2/ride/rtd/gentle/MonsterTrucks.h b/src/openrct2/ride/rtd/gentle/MonsterTrucks.h index 95b6f94dc630..a1ac95b240ed 100644 --- a/src/openrct2/ride/rtd/gentle/MonsterTrucks.h +++ b/src/openrct2/ride/rtd/gentle/MonsterTrucks.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MonsterTrucksRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::carRide, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/gentle/ObservationTower.h b/src/openrct2/ride/rtd/gentle/ObservationTower.h index e7fc6e158745..b15a4c9f3ba8 100644 --- a/src/openrct2/ride/rtd/gentle/ObservationTower.h +++ b/src/openrct2/ride/rtd/gentle/ObservationTower.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ObservationTowerRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::TowerBase, + .StartTrackPiece = TrackElemType::towerBase, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::observationTower, .enabledTrackGroups = {TrackGroup::tower}, diff --git a/src/openrct2/ride/rtd/gentle/SpaceRings.h b/src/openrct2/ride/rtd/gentle/SpaceRings.h index 68f2506cd1ae..a55c18c99fcb 100644 --- a/src/openrct2/ride/rtd/gentle/SpaceRings.h +++ b/src/openrct2/ride/rtd/gentle/SpaceRings.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SpaceRingsRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::spaceRings, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/gentle/SpiralSlide.h b/src/openrct2/ride/rtd/gentle/SpiralSlide.h index 5340d229a7c7..43681f3aee56 100644 --- a/src/openrct2/ride/rtd/gentle/SpiralSlide.h +++ b/src/openrct2/ride/rtd/gentle/SpiralSlide.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SpiralSlideRTD = { .Category = RideCategory::gentle, - .StartTrackPiece = TrackElemType::FlatTrack2x2, + .StartTrackPiece = TrackElemType::flatTrack2x2, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::spiralSlide, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/CashMachine.h b/src/openrct2/ride/rtd/shops/CashMachine.h index 16ef56ca7fb6..1716535dd4fc 100644 --- a/src/openrct2/ride/rtd/shops/CashMachine.h +++ b/src/openrct2/ride/rtd/shops/CashMachine.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CashMachineRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1A, + .StartTrackPiece = TrackElemType::flatTrack1x1A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::shop, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/DrinkStall.h b/src/openrct2/ride/rtd/shops/DrinkStall.h index d59796e0aa75..e1553be812cc 100644 --- a/src/openrct2/ride/rtd/shops/DrinkStall.h +++ b/src/openrct2/ride/rtd/shops/DrinkStall.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor DrinkStallRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1A, + .StartTrackPiece = TrackElemType::flatTrack1x1A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::shop, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/FirstAid.h b/src/openrct2/ride/rtd/shops/FirstAid.h index 2f9bef002741..96864e0ccda5 100644 --- a/src/openrct2/ride/rtd/shops/FirstAid.h +++ b/src/openrct2/ride/rtd/shops/FirstAid.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor FirstAidRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1A, + .StartTrackPiece = TrackElemType::flatTrack1x1A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::facility, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/FoodStall.h b/src/openrct2/ride/rtd/shops/FoodStall.h index 09bb7ea951d0..09a4cb8bc298 100644 --- a/src/openrct2/ride/rtd/shops/FoodStall.h +++ b/src/openrct2/ride/rtd/shops/FoodStall.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor FoodStallRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1A, + .StartTrackPiece = TrackElemType::flatTrack1x1A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::shop, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/InformationKiosk.h b/src/openrct2/ride/rtd/shops/InformationKiosk.h index e0442945622e..a6c3d89050ef 100644 --- a/src/openrct2/ride/rtd/shops/InformationKiosk.h +++ b/src/openrct2/ride/rtd/shops/InformationKiosk.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor InformationKioskRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1B, + .StartTrackPiece = TrackElemType::flatTrack1x1B, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::shop, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/Shop.h b/src/openrct2/ride/rtd/shops/Shop.h index 835cf9a3145f..2cd68409f7a6 100644 --- a/src/openrct2/ride/rtd/shops/Shop.h +++ b/src/openrct2/ride/rtd/shops/Shop.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ShopRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1A, + .StartTrackPiece = TrackElemType::flatTrack1x1A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::shop, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/shops/Toilets.h b/src/openrct2/ride/rtd/shops/Toilets.h index 90c7f4370c71..93f00b4c1d8b 100644 --- a/src/openrct2/ride/rtd/shops/Toilets.h +++ b/src/openrct2/ride/rtd/shops/Toilets.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ToiletsRTD = { .Category = RideCategory::shop, - .StartTrackPiece = TrackElemType::FlatTrack1x1A, + .StartTrackPiece = TrackElemType::flatTrack1x1A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::facility, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/3DCinema.h b/src/openrct2/ride/rtd/thrill/3DCinema.h index 9c0d1b1301ad..ac0664ce8ffb 100644 --- a/src/openrct2/ride/rtd/thrill/3DCinema.h +++ b/src/openrct2/ride/rtd/thrill/3DCinema.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor CinemaRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::_3DCinema, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/Enterprise.h b/src/openrct2/ride/rtd/thrill/Enterprise.h index 6d6d269bb1b8..6ee517e3c5ad 100644 --- a/src/openrct2/ride/rtd/thrill/Enterprise.h +++ b/src/openrct2/ride/rtd/thrill/Enterprise.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor EnterpriseRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack4x4, + .StartTrackPiece = TrackElemType::flatTrack4x4, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::enterprise, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/GoKarts.h b/src/openrct2/ride/rtd/thrill/GoKarts.h index 22dd8e49c52d..2bcf23da8e30 100644 --- a/src/openrct2/ride/rtd/thrill/GoKarts.h +++ b/src/openrct2/ride/rtd/thrill/GoKarts.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor GoKartsRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::goKarts, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h b/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h index 6f39b68faffe..f97a8ab16eb1 100644 --- a/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h +++ b/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LaunchedFreefallRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::TowerBase, + .StartTrackPiece = TrackElemType::towerBase, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::launchedFreefall, .enabledTrackGroups = {TrackGroup::tower}, diff --git a/src/openrct2/ride/rtd/thrill/MagicCarpet.h b/src/openrct2/ride/rtd/thrill/MagicCarpet.h index e7e72326e1c6..41628ebfe562 100644 --- a/src/openrct2/ride/rtd/thrill/MagicCarpet.h +++ b/src/openrct2/ride/rtd/thrill/MagicCarpet.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MagicCarpetRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack1x4A, + .StartTrackPiece = TrackElemType::flatTrack1x4A, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::magicCarpet, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/MotionSimulator.h b/src/openrct2/ride/rtd/thrill/MotionSimulator.h index a38c942257db..ff180ceda6f0 100644 --- a/src/openrct2/ride/rtd/thrill/MotionSimulator.h +++ b/src/openrct2/ride/rtd/thrill/MotionSimulator.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MotionSimulatorRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack2x2, + .StartTrackPiece = TrackElemType::flatTrack2x2, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::motionSimulator, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/RotoDrop.h b/src/openrct2/ride/rtd/thrill/RotoDrop.h index 86ec8e70a772..926234eb849e 100644 --- a/src/openrct2/ride/rtd/thrill/RotoDrop.h +++ b/src/openrct2/ride/rtd/thrill/RotoDrop.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor RotoDropRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::TowerBase, + .StartTrackPiece = TrackElemType::towerBase, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::rotoDrop, .enabledTrackGroups = {TrackGroup::tower}, diff --git a/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h b/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h index 359d8db36b07..d7aa63896414 100644 --- a/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h +++ b/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SwingingInverterShipRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack1x4B, + .StartTrackPiece = TrackElemType::flatTrack1x4B, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::swingingInverterShip, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/SwingingShip.h b/src/openrct2/ride/rtd/thrill/SwingingShip.h index fde428342eec..649924cb7b9e 100644 --- a/src/openrct2/ride/rtd/thrill/SwingingShip.h +++ b/src/openrct2/ride/rtd/thrill/SwingingShip.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SwingingShipRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack1x5, + .StartTrackPiece = TrackElemType::flatTrack1x5, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::swingingShip, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/TopSpin.h b/src/openrct2/ride/rtd/thrill/TopSpin.h index ded2100ddc88..48fc899f2d58 100644 --- a/src/openrct2/ride/rtd/thrill/TopSpin.h +++ b/src/openrct2/ride/rtd/thrill/TopSpin.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor TopSpinRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::topSpin, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/thrill/Twist.h b/src/openrct2/ride/rtd/thrill/Twist.h index 98dfe8589202..d9ccb8455880 100644 --- a/src/openrct2/ride/rtd/thrill/Twist.h +++ b/src/openrct2/ride/rtd/thrill/Twist.h @@ -19,7 +19,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor TwistRTD = { .Category = RideCategory::thrill, - .StartTrackPiece = TrackElemType::FlatTrack3x3, + .StartTrackPiece = TrackElemType::flatTrack3x3, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::twist, .enabledTrackGroups = {}, diff --git a/src/openrct2/ride/rtd/transport/Chairlift.h b/src/openrct2/ride/rtd/transport/Chairlift.h index e91f83ed1a79..9f17363ef38a 100644 --- a/src/openrct2/ride/rtd/transport/Chairlift.h +++ b/src/openrct2/ride/rtd/transport/Chairlift.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor ChairliftRTD = { .Category = RideCategory::transport, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::chairlift, .supportType = MetalSupportType::truss, diff --git a/src/openrct2/ride/rtd/transport/Lift.h b/src/openrct2/ride/rtd/transport/Lift.h index c1d1f2a4a145..c45437d2f302 100644 --- a/src/openrct2/ride/rtd/transport/Lift.h +++ b/src/openrct2/ride/rtd/transport/Lift.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LiftRTD = { .Category = RideCategory::transport, - .StartTrackPiece = TrackElemType::TowerBase, + .StartTrackPiece = TrackElemType::towerBase, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::lift, .enabledTrackGroups = {TrackGroup::tower}, diff --git a/src/openrct2/ride/rtd/transport/MiniatureRailway.h b/src/openrct2/ride/rtd/transport/MiniatureRailway.h index 13d40550b93c..a0815449e08c 100644 --- a/src/openrct2/ride/rtd/transport/MiniatureRailway.h +++ b/src/openrct2/ride/rtd/transport/MiniatureRailway.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor MiniatureRailwayRTD = { .Category = RideCategory::transport, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::miniatureRailway, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/transport/Monorail.h b/src/openrct2/ride/rtd/transport/Monorail.h index 674b31499f1f..140ef4de932f 100644 --- a/src/openrct2/ride/rtd/transport/Monorail.h +++ b/src/openrct2/ride/rtd/transport/Monorail.h @@ -20,7 +20,7 @@ namespace OpenRCT2 { constexpr RideTypeDescriptor MonorailRTD = { .Category = RideCategory::transport, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::monorail, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/transport/SuspendedMonorail.h b/src/openrct2/ride/rtd/transport/SuspendedMonorail.h index ed5dfd3c692d..5aee285603a8 100644 --- a/src/openrct2/ride/rtd/transport/SuspendedMonorail.h +++ b/src/openrct2/ride/rtd/transport/SuspendedMonorail.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SuspendedMonorailRTD = { .Category = RideCategory::transport, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::suspendedMonorail, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/water/BoatHire.h b/src/openrct2/ride/rtd/water/BoatHire.h index b48d8f53a687..06815749fe08 100644 --- a/src/openrct2/ride/rtd/water/BoatHire.h +++ b/src/openrct2/ride/rtd/water/BoatHire.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor BoatHireRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::boatHire, .enabledTrackGroups = {TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::curveVerySmall, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::sBend}, diff --git a/src/openrct2/ride/rtd/water/DinghySlide.h b/src/openrct2/ride/rtd/water/DinghySlide.h index d7d79ba84a41..aed7d861589f 100644 --- a/src/openrct2/ride/rtd/water/DinghySlide.h +++ b/src/openrct2/ride/rtd/water/DinghySlide.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor DinghySlideRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor( { .trackStyle = TrackStyle::dinghySlide, diff --git a/src/openrct2/ride/rtd/water/LogFlume.h b/src/openrct2/ride/rtd/water/LogFlume.h index 6111c9a0042e..4ea6dc87d9ad 100644 --- a/src/openrct2/ride/rtd/water/LogFlume.h +++ b/src/openrct2/ride/rtd/water/LogFlume.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor LogFlumeRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::logFlume, .supportType = MetalSupportType::boxed, diff --git a/src/openrct2/ride/rtd/water/RiverRafts.h b/src/openrct2/ride/rtd/water/RiverRafts.h index 3a60b70723c1..fe08b506a7c1 100644 --- a/src/openrct2/ride/rtd/water/RiverRafts.h +++ b/src/openrct2/ride/rtd/water/RiverRafts.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor RiverRaftsRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::splashBoats, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/water/RiverRapids.h b/src/openrct2/ride/rtd/water/RiverRapids.h index d425bc4f292f..953585855aa2 100644 --- a/src/openrct2/ride/rtd/water/RiverRapids.h +++ b/src/openrct2/ride/rtd/water/RiverRapids.h @@ -20,7 +20,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor RiverRapidsRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::riverRapids, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/water/SplashBoats.h b/src/openrct2/ride/rtd/water/SplashBoats.h index 964c493d76b8..2494ce90bfea 100644 --- a/src/openrct2/ride/rtd/water/SplashBoats.h +++ b/src/openrct2/ride/rtd/water/SplashBoats.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SplashBoatsRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::splashBoats, .supportType = WoodenSupportType::truss, diff --git a/src/openrct2/ride/rtd/water/SubmarineRide.h b/src/openrct2/ride/rtd/water/SubmarineRide.h index 34de4624981d..809052649fe2 100644 --- a/src/openrct2/ride/rtd/water/SubmarineRide.h +++ b/src/openrct2/ride/rtd/water/SubmarineRide.h @@ -21,7 +21,7 @@ namespace OpenRCT2 constexpr RideTypeDescriptor SubmarineRideRTD = { .Category = RideCategory::water, - .StartTrackPiece = TrackElemType::EndStation, + .StartTrackPiece = TrackElemType::endStation, .TrackPaintFunctions = TrackDrawerDescriptor({ .trackStyle = TrackStyle::submarineRide, .supportType = MetalSupportType::stick, diff --git a/src/openrct2/scripting/bindings/game/ScContext.hpp b/src/openrct2/scripting/bindings/game/ScContext.hpp index 59625fe7e6c2..3a5e2a32dcea 100644 --- a/src/openrct2/scripting/bindings/game/ScContext.hpp +++ b/src/openrct2/scripting/bindings/game/ScContext.hpp @@ -189,7 +189,7 @@ namespace OpenRCT2::Scripting DukValue getTrackSegment(uint16_t type) { auto ctx = GetContext()->GetScriptEngine().GetContext(); - if (type >= EnumValue(TrackElemType::Count)) + if (type >= EnumValue(TrackElemType::count)) { return ToDuk(ctx, nullptr); } @@ -204,7 +204,7 @@ namespace OpenRCT2::Scripting auto ctx = GetContext()->GetScriptEngine().GetContext(); std::vector result; - for (uint16_t type = 0; type < EnumValue(TrackElemType::Count); type++) + for (uint16_t type = 0; type < EnumValue(TrackElemType::count); type++) { auto obj = std::make_shared(static_cast(type)); if (obj != nullptr) diff --git a/src/openrct2/scripting/bindings/ride/ScTrackIterator.cpp b/src/openrct2/scripting/bindings/ride/ScTrackIterator.cpp index b23fe59bc6ff..a596b7988624 100644 --- a/src/openrct2/scripting/bindings/ride/ScTrackIterator.cpp +++ b/src/openrct2/scripting/bindings/ride/ScTrackIterator.cpp @@ -64,7 +64,7 @@ DukValue ScTrackIterator::segment_get() const auto& scriptEngine = GetContext()->GetScriptEngine(); auto ctx = scriptEngine.GetContext(); - if (_type >= TrackElemType::Count) + if (_type >= TrackElemType::count) return ToDuk(ctx, nullptr); return GetObjectAsDukValue(ctx, std::make_shared(_type)); diff --git a/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp b/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp index afa982c48ba1..7705c4bb5a0b 100644 --- a/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp +++ b/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp @@ -242,7 +242,7 @@ DukValue ScTrackSegment::getMirrorElement() const { const auto ctx = GetContext()->GetScriptEngine().GetContext(); const auto& ted = GetTrackElementDescriptor(_type); - if (ted.mirrorElement == TrackElemType::None) + if (ted.mirrorElement == TrackElemType::none) return ToDuk(ctx, nullptr); return ToDuk(ctx, EnumValue(ted.mirrorElement)); } @@ -251,7 +251,7 @@ DukValue ScTrackSegment::getAlternativeElement() const { const auto ctx = GetContext()->GetScriptEngine().GetContext(); const auto& ted = GetTrackElementDescriptor(_type); - if (ted.alternativeType == TrackElemType::None) + if (ted.alternativeType == TrackElemType::none) return ToDuk(ctx, nullptr); return ToDuk(ctx, EnumValue(ted.alternativeType)); } diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 3d61e31aa4db..43b61e6ab381 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -96,7 +96,7 @@ static bool landSlopeFitsUnderTrack(int32_t baseZ, uint8_t slope, const TrackEle const TrackElemType trackElemType = trackElement.GetTrackType(); const auto& ted = OpenRCT2::TrackMetaData::GetTrackElementDescriptor(trackElemType); - const uint8_t sequenceIndex = trackElemType == TrackElemType::Maze ? 0 : trackElement.GetSequenceIndex(); + const uint8_t sequenceIndex = trackElemType == TrackElemType::maze ? 0 : trackElement.GetSequenceIndex(); const auto& trackClearances = ted.sequences[sequenceIndex].clearance; const auto trackQuarters = trackClearances.quarterTile.Rotate(trackElement.GetDirection()); const auto trackQuarterHeights = trackQuarters.GetQuarterHeights(trackElement.GetBaseZ()); @@ -158,7 +158,7 @@ static bool MapLoc68BABCShouldContinue( else if ( crossingMode == CreateCrossingMode::pathOverTrack && canBuildCrossing && tileElement->GetType() == TileElementType::Track && tileElement->GetBaseZ() == pos.baseZ - && tileElement->AsTrack()->GetTrackType() == TrackElemType::Flat) + && tileElement->AsTrack()->GetTrackType() == TrackElemType::flat) { auto ride = GetRide(tileElement->AsTrack()->GetRideIndex()); if (ride != nullptr && ride->getRideTypeDescriptor().HasFlag(RtdFlag::supportsLevelCrossings)) diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 5cbb9ef1c13f..688e619c601b 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -153,7 +153,7 @@ void MazeEntranceHedgeReplacement(const CoordsXYE& entrance) continue; if (tileElement->GetBaseZ() != z) continue; - if (tileElement->AsTrack()->GetTrackType() != TrackElemType::Maze) + if (tileElement->AsTrack()->GetTrackType() != TrackElemType::maze) continue; // Each maze element is split into 4 sections with 4 different walls @@ -190,7 +190,7 @@ void MazeEntranceHedgeRemoval(const CoordsXYE& entrance) continue; if (tileElement->GetBaseZ() != z) continue; - if (tileElement->AsTrack()->GetTrackType() != TrackElemType::Maze) + if (tileElement->AsTrack()->GetTrackType() != TrackElemType::maze) continue; // Each maze element is split into 4 sections with 4 different walls diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 4f0784b3f83b..e897bc6d3bb4 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -1910,7 +1910,7 @@ bool PathElement::IsLevelCrossing(const CoordsXY& coords) const return false; } - if (trackElement->GetTrackType() != TrackElemType::Flat) + if (trackElement->GetTrackType() != TrackElemType::flat) { return false; } diff --git a/src/openrct2/world/MapAnimation.cpp b/src/openrct2/world/MapAnimation.cpp index 8784c1f1435f..9a730d6effc2 100644 --- a/src/openrct2/world/MapAnimation.cpp +++ b/src/openrct2/world/MapAnimation.cpp @@ -209,20 +209,20 @@ static bool UpdateTrackAnimation(TrackElement& track, const CoordsXYZ& loc, cons { switch (track.GetTrackType()) { - case TrackElemType::Waterfall: + case TrackElemType::waterfall: if constexpr (invalidate) { Invalidate(viewport, loc.x, loc.y, baseZ + 14, baseZ + 46, kMaxZoom); } return true; - case TrackElemType::Rapids: - case TrackElemType::Whirlpool: + case TrackElemType::rapids: + case TrackElemType::whirlpool: if constexpr (invalidate) { Invalidate(viewport, loc.x, loc.y, baseZ + 14, baseZ + 18, kMaxZoom); } return true; - case TrackElemType::SpinningTunnel: + case TrackElemType::spinningTunnel: if constexpr (invalidate) { Invalidate(viewport, loc.x, loc.y, baseZ + 14, baseZ + 32, kMaxZoom); @@ -485,7 +485,7 @@ static bool UpdateTemporaryAnimation(const TemporaryMapAnimation& animation) case MapAnimations::TemporaryType::onRidePhoto: { if (tileElement->GetType() == TileElementType::Track && tileElement->BaseHeight == tileCoords.z - && tileElement->AsTrack()->GetTrackType() == TrackElemType::OnRidePhoto) + && tileElement->AsTrack()->GetTrackType() == TrackElemType::onRidePhoto) { isAnimating |= UpdateOnRidePhotoAnimation(*tileElement->AsTrack(), animation.location); } @@ -581,10 +581,10 @@ static std::optional IsElementAnimated(const TileElementBase& elemen const auto* const track = element.AsTrack(); switch (track->GetTrackType()) { - case TrackElemType::Waterfall: - case TrackElemType::Rapids: - case TrackElemType::Whirlpool: - case TrackElemType::SpinningTunnel: + case TrackElemType::waterfall: + case TrackElemType::rapids: + case TrackElemType::whirlpool: + case TrackElemType::spinningTunnel: return std::optional(UpdateType::invalidate); default: break; diff --git a/src/openrct2/world/tile_element/TrackElement.cpp b/src/openrct2/world/tile_element/TrackElement.cpp index 1175b7532f33..cd0cb160afaf 100644 --- a/src/openrct2/world/tile_element/TrackElement.cpp +++ b/src/openrct2/world/tile_element/TrackElement.cpp @@ -41,15 +41,15 @@ namespace OpenRCT2 { switch (GetTrackType()) { - case TrackElemType::EndStation: - case TrackElemType::CableLiftHill: - case TrackElemType::BlockBrakes: - case TrackElemType::DiagBlockBrakes: + case TrackElemType::endStation: + case TrackElemType::cableLiftHill: + case TrackElemType::blockBrakes: + case TrackElemType::diagBlockBrakes: return true; - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: return HasChain(); default: return false; From a48e7d50188f77af506d4a4c942e6696579e11a4 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 19:19:40 +0100 Subject: [PATCH 148/222] Rename members of TrackCurve --- src/openrct2-ui/windows/RideConstruction.cpp | 188 ++-- src/openrct2/ride/Track.h | 20 +- src/openrct2/ride/TrackData.cpp | 990 +++++++++--------- .../bindings/ride/ScTrackSegment.cpp | 18 +- 4 files changed, 608 insertions(+), 608 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 6a3a53f114df..02118e0119a2 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -466,10 +466,10 @@ namespace OpenRCT2::Ui::Windows { switch (_currentlySelectedTrack.curve) { - case TrackCurve::LeftVerySmall: - case TrackCurve::LeftSmall: - case TrackCurve::Left: - case TrackCurve::LeftLarge: + case TrackCurve::leftVerySmall: + case TrackCurve::leftSmall: + case TrackCurve::left: + case TrackCurve::leftLarge: newDisabledWidgets |= (1uLL << WIDX_BANK_RIGHT); if (_previousTrackRollEnd == TrackRoll::None) { @@ -480,10 +480,10 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_BANK_STRAIGHT); } break; - case TrackCurve::RightLarge: - case TrackCurve::Right: - case TrackCurve::RightSmall: - case TrackCurve::RightVerySmall: + case TrackCurve::rightLarge: + case TrackCurve::right: + case TrackCurve::rightSmall: + case TrackCurve::rightVerySmall: newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT); if (_previousTrackRollEnd == TrackRoll::None) { @@ -548,7 +548,7 @@ namespace OpenRCT2::Ui::Windows { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_DOWN); } - if (_currentlySelectedTrack != TrackCurve::None + if (_currentlySelectedTrack != TrackCurve::none || (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::diagSlopeSteepLong))) { @@ -594,7 +594,7 @@ namespace OpenRCT2::Ui::Windows switch (_previousTrackPitchEnd) { case TrackPitch::None: - if (_currentlySelectedTrack != TrackCurve::None + if (_currentlySelectedTrack != TrackCurve::none || (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::slopeSteepLong))) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP); @@ -655,7 +655,7 @@ namespace OpenRCT2::Ui::Windows } if (TrackPieceDirectionIsDiagonal(_currentTrackPieceDirection) - && (_currentlySelectedTrack == TrackCurve::LeftLarge || _currentlySelectedTrack == TrackCurve::RightLarge) + && (_currentlySelectedTrack == TrackCurve::leftLarge || _currentlySelectedTrack == TrackCurve::rightLarge) && (_previousTrackPitchEnd == TrackPitch::Up25 || _previousTrackPitchEnd == TrackPitch::Down25) && !IsTrackEnabled(TrackGroup::diagSlope)) { @@ -714,7 +714,7 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP) | (1uLL << WIDX_CHAIN_LIFT); } - if (_currentlySelectedTrack != TrackCurve::None) + if (_currentlySelectedTrack != TrackCurve::none) { if (!IsTrackEnabled(TrackGroup::liftHillCurve)) { @@ -756,7 +756,7 @@ namespace OpenRCT2::Ui::Windows | (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_STRAIGHT) | (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_LARGE); } - if (_currentlySelectedTrack != TrackCurve::None) + if (_currentlySelectedTrack != TrackCurve::none) { if (_currentTrackPitchEnd == TrackPitch::None) { @@ -767,7 +767,7 @@ namespace OpenRCT2::Ui::Windows if (_currentTrackPitchEnd == TrackPitch::Up25) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP_STEEP); - if (_currentlySelectedTrack == TrackCurve::Left || _currentlySelectedTrack == TrackCurve::Right + if (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right || _rideConstructionState != RideConstructionState::Back || !IsTrackEnabled(TrackGroup::slopeCurveBanked)) { @@ -777,7 +777,7 @@ namespace OpenRCT2::Ui::Windows if (_currentTrackPitchEnd == TrackPitch::Down25) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP); - if (_currentlySelectedTrack == TrackCurve::Left || _currentlySelectedTrack == TrackCurve::Right + if (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right || _rideConstructionState != RideConstructionState::Front || !IsTrackEnabled(TrackGroup::slopeCurveBanked)) { @@ -818,21 +818,21 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP); newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN); } - if (_currentlySelectedTrack == TrackCurve::LeftSmall) + if (_currentlySelectedTrack == TrackCurve::leftSmall) { newDisabledWidgets &= ~(1uLL << WIDX_LEFT_CURVE_SMALL); } - if (_currentlySelectedTrack == TrackCurve::RightSmall) + if (_currentlySelectedTrack == TrackCurve::rightSmall) { newDisabledWidgets &= ~(1uLL << WIDX_RIGHT_CURVE_SMALL); } } } - if (_currentlySelectedTrack != TrackCurve::None && _currentTrackPitchEnd == TrackPitch::Up60) + if (_currentlySelectedTrack != TrackCurve::none && _currentTrackPitchEnd == TrackPitch::Up60) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP); } - if (_currentlySelectedTrack != TrackCurve::None && _currentTrackPitchEnd == TrackPitch::Down60) + if (_currentlySelectedTrack != TrackCurve::none && _currentTrackPitchEnd == TrackPitch::Down60) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN); } @@ -852,17 +852,17 @@ namespace OpenRCT2::Ui::Windows } } } - if (_previousTrackPitchEnd == TrackPitch::Up60 && _currentlySelectedTrack != TrackCurve::None) + if (_previousTrackPitchEnd == TrackPitch::Up60 && _currentlySelectedTrack != TrackCurve::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_LEVEL); } - if (_previousTrackPitchEnd == TrackPitch::Down60 && _currentlySelectedTrack != TrackCurve::None) + if (_previousTrackPitchEnd == TrackPitch::Down60 && _currentlySelectedTrack != TrackCurve::none) { newDisabledWidgets |= (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP_STEEP); } if (_currentTrackPitchEnd == TrackPitch::Up90 || _previousTrackPitchEnd == TrackPitch::Up90) { - if (_currentlySelectedTrack != TrackCurve::None) + if (_currentlySelectedTrack != TrackCurve::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP_STEEP); } @@ -876,7 +876,7 @@ namespace OpenRCT2::Ui::Windows } else if (_currentTrackPitchEnd == TrackPitch::Down90 || _previousTrackPitchEnd == TrackPitch::Down90) { - if (_currentlySelectedTrack != TrackCurve::None) + if (_currentlySelectedTrack != TrackCurve::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP); } @@ -893,7 +893,7 @@ namespace OpenRCT2::Ui::Windows { // If the bank is none, attempt to show unbanked quarter helixes if (_currentTrackRollEnd == TrackRoll::None - && (_currentlySelectedTrack == TrackCurve::Left || _currentlySelectedTrack == TrackCurve::Right)) + && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { if (IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter)) newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN_STEEP); @@ -904,7 +904,7 @@ namespace OpenRCT2::Ui::Windows // buttons for half or quarter helixes else if ( (_currentTrackRollEnd == TrackRoll::Left || _currentTrackRollEnd == TrackRoll::Right) - && (_currentlySelectedTrack == TrackCurve::Left || _currentlySelectedTrack == TrackCurve::Right)) + && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { if (IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixDownBankedQuarter)) newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN_STEEP); @@ -915,7 +915,7 @@ namespace OpenRCT2::Ui::Windows // for half helixes else if ( (_currentTrackRollEnd == TrackRoll::Left || _currentTrackRollEnd == TrackRoll::Right) - && (_currentlySelectedTrack == TrackCurve::LeftSmall || _currentlySelectedTrack == TrackCurve::RightSmall)) + && (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall)) { if (IsTrackEnabled(TrackGroup::helixDownBankedHalf)) newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN_STEEP); @@ -927,7 +927,7 @@ namespace OpenRCT2::Ui::Windows { if (_rideConstructionState == RideConstructionState::Front) { - if (_currentlySelectedTrack == TrackCurve::LeftSmall || _currentlySelectedTrack == TrackCurve::RightSmall) + if (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall) { if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::None && (!currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::upInclineRequiresLift) @@ -939,7 +939,7 @@ namespace OpenRCT2::Ui::Windows } else if (_rideConstructionState == RideConstructionState::Back) { - if (_currentlySelectedTrack == TrackCurve::LeftSmall || _currentlySelectedTrack == TrackCurve::RightSmall) + if (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall) { if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::None) { @@ -1148,57 +1148,57 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_LEFT_CURVE: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::Left; + _currentlySelectedTrack = TrackCurve::left; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_RIGHT_CURVE: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::Right; + _currentlySelectedTrack = TrackCurve::right; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_LEFT_CURVE_SMALL: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::LeftSmall; + _currentlySelectedTrack = TrackCurve::leftSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_RIGHT_CURVE_SMALL: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::RightSmall; + _currentlySelectedTrack = TrackCurve::rightSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_LEFT_CURVE_VERY_SMALL: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::LeftVerySmall; + _currentlySelectedTrack = TrackCurve::leftVerySmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_RIGHT_CURVE_VERY_SMALL: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::RightVerySmall; + _currentlySelectedTrack = TrackCurve::rightVerySmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_LEFT_CURVE_LARGE: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::LeftLarge; + _currentlySelectedTrack = TrackCurve::leftLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_RIGHT_CURVE_LARGE: RideConstructionInvalidateCurrentTrack(); - _currentlySelectedTrack = TrackCurve::RightLarge; + _currentlySelectedTrack = TrackCurve::rightLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; case WIDX_STRAIGHT: RideConstructionInvalidateCurrentTrack(); - if (_currentlySelectedTrack != TrackCurve::None) + if (_currentlySelectedTrack != TrackCurve::none) _currentTrackRollEnd = TrackRoll::None; - _currentlySelectedTrack = TrackCurve::None; + _currentlySelectedTrack = TrackCurve::none; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; @@ -1210,28 +1210,28 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) { - if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixDownLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixDownLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::LeftSmall && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::leftSmall && _currentTrackRollEnd == TrackRoll::Left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixDownSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::RightSmall && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::rightSmall && _currentTrackRollEnd == TrackRoll::Right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixDownSmall; _currentTrackPrice = kMoney64Undefined; @@ -1241,14 +1241,14 @@ namespace OpenRCT2::Ui::Windows } if (IsTrackEnabled(TrackGroup::helixDownBankedQuarter) || IsTrackEnabled(TrackGroup::helixUpBankedQuarter)) { - if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) { _currentlySelectedTrack = TrackElemType::leftQuarterBankedHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) { _currentlySelectedTrack = TrackElemType::rightQuarterBankedHelixLargeDown; _currentTrackPrice = kMoney64Undefined; @@ -1261,14 +1261,14 @@ namespace OpenRCT2::Ui::Windows { if (_currentTrackRollEnd == TrackRoll::None) { - if (_currentlySelectedTrack == TrackCurve::Left) + if (_currentlySelectedTrack == TrackCurve::left) { _currentlySelectedTrack = TrackElemType::leftQuarterHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::Right) + if (_currentlySelectedTrack == TrackCurve::right) { _currentlySelectedTrack = TrackElemType::rightQuarterHelixLargeDown; _currentTrackPrice = kMoney64Undefined; @@ -1292,11 +1292,11 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (_rideConstructionState == RideConstructionState::Front && _previousTrackPitchEnd == TrackPitch::Down25) { - if (_currentlySelectedTrack == TrackCurve::LeftSmall) + if (_currentlySelectedTrack == TrackCurve::leftSmall) { _currentTrackRollEnd = TrackRoll::Left; } - else if (_currentlySelectedTrack == TrackCurve::RightSmall) + else if (_currentlySelectedTrack == TrackCurve::rightSmall) { _currentTrackRollEnd = TrackRoll::Right; } @@ -1304,11 +1304,11 @@ namespace OpenRCT2::Ui::Windows else if ( _rideConstructionState == RideConstructionState::Back && _previousTrackPitchEnd == TrackPitch::Up25) { - if (_currentlySelectedTrack == TrackCurve::LeftSmall) + if (_currentlySelectedTrack == TrackCurve::leftSmall) { _currentTrackRollEnd = TrackRoll::Left; } - else if (_currentlySelectedTrack == TrackCurve::RightSmall) + else if (_currentlySelectedTrack == TrackCurve::rightSmall) { _currentTrackRollEnd = TrackRoll::Right; } @@ -1324,7 +1324,7 @@ namespace OpenRCT2::Ui::Windows if (currentRide->getRideTypeDescriptor().SupportsTrackGroup(TrackGroup::reverseFreefall)) { if (_rideConstructionState == RideConstructionState::Front - && _currentlySelectedTrack == TrackCurve::None) + && _currentlySelectedTrack == TrackCurve::none) { _currentlySelectedTrack = TrackElemType::reverseFreefallSlope; WindowRideConstructionUpdateActiveElements(); @@ -1339,28 +1339,28 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) { - if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixUpLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixUpLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::LeftSmall && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::leftSmall && _currentTrackRollEnd == TrackRoll::Left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixUpSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::RightSmall && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::rightSmall && _currentTrackRollEnd == TrackRoll::Right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixUpSmall; _currentTrackPrice = kMoney64Undefined; @@ -1370,14 +1370,14 @@ namespace OpenRCT2::Ui::Windows } if (IsTrackEnabled(TrackGroup::helixDownBankedQuarter) || IsTrackEnabled(TrackGroup::helixUpBankedQuarter)) { - if (_currentlySelectedTrack == TrackCurve::Left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) { _currentlySelectedTrack = TrackElemType::leftQuarterBankedHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::Right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) { _currentlySelectedTrack = TrackElemType::rightQuarterBankedHelixLargeUp; _currentTrackPrice = kMoney64Undefined; @@ -1390,14 +1390,14 @@ namespace OpenRCT2::Ui::Windows { if (_currentTrackRollEnd == TrackRoll::None) { - if (_currentlySelectedTrack == TrackCurve::Left) + if (_currentlySelectedTrack == TrackCurve::left) { _currentlySelectedTrack = TrackElemType::leftQuarterHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::Right) + if (_currentlySelectedTrack == TrackCurve::right) { _currentlySelectedTrack = TrackElemType::rightQuarterHelixLargeUp; _currentTrackPrice = kMoney64Undefined; @@ -1837,9 +1837,9 @@ namespace OpenRCT2::Ui::Windows if ((IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) && _currentTrackRollEnd != TrackRoll::None && _currentTrackPitchEnd == TrackPitch::None) { - const bool hasHelixEquivalent = _currentlySelectedTrack == TrackCurve::Left - || _currentlySelectedTrack == TrackCurve::Right || _currentlySelectedTrack == TrackCurve::LeftSmall - || _currentlySelectedTrack == TrackCurve::RightSmall; + const bool hasHelixEquivalent = _currentlySelectedTrack == TrackCurve::left + || _currentlySelectedTrack == TrackCurve::right || _currentlySelectedTrack == TrackCurve::leftSmall + || _currentlySelectedTrack == TrackCurve::rightSmall; if (hasHelixEquivalent) { // Enable helix @@ -1901,7 +1901,7 @@ namespace OpenRCT2::Ui::Windows if ((IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter) || IsTrackEnabled(TrackGroup::helixUpUnbankedQuarter)) && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd == TrackRoll::None - && (_currentlySelectedTrack == TrackCurve::Left || _currentlySelectedTrack == TrackCurve::Right)) + && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); widgets[WIDX_SLOPE_DOWN_STEEP].tooltip = STR_RIDE_CONSTRUCTION_HELIX_DOWN_TIP; @@ -1928,9 +1928,9 @@ namespace OpenRCT2::Ui::Windows if (IsTrackEnabled(TrackGroup::helixDownBankedQuarter) || IsTrackEnabled(TrackGroup::helixUpBankedQuarter) || IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) { - const bool hasHelixEquivalent = _currentlySelectedTrack == TrackCurve::Left - || _currentlySelectedTrack == TrackCurve::Right || _currentlySelectedTrack == TrackCurve::LeftSmall - || _currentlySelectedTrack == TrackCurve::RightSmall; + const bool hasHelixEquivalent = _currentlySelectedTrack == TrackCurve::left + || _currentlySelectedTrack == TrackCurve::right || _currentlySelectedTrack == TrackCurve::leftSmall + || _currentlySelectedTrack == TrackCurve::rightSmall; if (hasHelixEquivalent && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd != TrackRoll::None) { @@ -2131,31 +2131,31 @@ namespace OpenRCT2::Ui::Windows { switch (_currentlySelectedTrack.curve) { - case TrackCurve::None: + case TrackCurve::none: widgetIndex = WIDX_STRAIGHT; break; - case TrackCurve::Left: + case TrackCurve::left: widgetIndex = WIDX_LEFT_CURVE; break; - case TrackCurve::Right: + case TrackCurve::right: widgetIndex = WIDX_RIGHT_CURVE; break; - case TrackCurve::LeftSmall: + case TrackCurve::leftSmall: widgetIndex = WIDX_LEFT_CURVE_SMALL; break; - case TrackCurve::RightSmall: + case TrackCurve::rightSmall: widgetIndex = WIDX_RIGHT_CURVE_SMALL; break; - case TrackCurve::LeftVerySmall: + case TrackCurve::leftVerySmall: widgetIndex = WIDX_LEFT_CURVE_VERY_SMALL; break; - case TrackCurve::RightVerySmall: + case TrackCurve::rightVerySmall: widgetIndex = WIDX_RIGHT_CURVE_VERY_SMALL; break; - case TrackCurve::LeftLarge: + case TrackCurve::leftLarge: widgetIndex = WIDX_LEFT_CURVE_LARGE; break; - case TrackCurve::RightLarge: + case TrackCurve::rightLarge: widgetIndex = WIDX_RIGHT_CURVE_LARGE; break; } @@ -3823,14 +3823,14 @@ namespace OpenRCT2::Ui::Windows switch (_currentlySelectedTrack.curve) { - case TrackCurve::LeftSmall: + case TrackCurve::leftSmall: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE_VERY_SMALL) && w->widgets[WIDX_LEFT_CURVE_VERY_SMALL].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE_VERY_SMALL); } break; - case TrackCurve::Left: + case TrackCurve::left: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE_SMALL) && w->widgets[WIDX_LEFT_CURVE_SMALL].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE_SMALL); @@ -3846,7 +3846,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::LeftLarge: + case TrackCurve::leftLarge: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE) && w->widgets[WIDX_LEFT_CURVE].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE); @@ -3867,7 +3867,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::None: + case TrackCurve::none: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE_LARGE) && w->widgets[WIDX_LEFT_CURVE_LARGE].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE_LARGE); @@ -3892,7 +3892,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::RightLarge: + case TrackCurve::rightLarge: if (!widgetIsDisabled(*w, WIDX_STRAIGHT) && w->widgets[WIDX_STRAIGHT].type != WidgetType::empty) { w->onMouseDown(WIDX_STRAIGHT); @@ -3922,7 +3922,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::Right: + case TrackCurve::right: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE_LARGE) && w->widgets[WIDX_RIGHT_CURVE_LARGE].type != WidgetType::empty) { @@ -3957,7 +3957,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::RightSmall: + case TrackCurve::rightSmall: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE) && w->widgets[WIDX_RIGHT_CURVE].type != WidgetType::empty) { w->onMouseDown(WIDX_RIGHT_CURVE); @@ -3997,7 +3997,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::RightVerySmall: + case TrackCurve::rightVerySmall: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE_SMALL) && w->widgets[WIDX_RIGHT_CURVE_SMALL].type != WidgetType::empty) { @@ -4042,7 +4042,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::LeftVerySmall: + case TrackCurve::leftVerySmall: break; } } @@ -4061,14 +4061,14 @@ namespace OpenRCT2::Ui::Windows switch (_currentlySelectedTrack.curve) { - case TrackCurve::RightSmall: + case TrackCurve::rightSmall: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE_VERY_SMALL) && w->widgets[WIDX_RIGHT_CURVE_VERY_SMALL].type != WidgetType::empty) { w->onMouseDown(WIDX_RIGHT_CURVE_VERY_SMALL); } break; - case TrackCurve::Right: + case TrackCurve::right: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE_SMALL) && w->widgets[WIDX_RIGHT_CURVE_SMALL].type != WidgetType::empty) { @@ -4085,7 +4085,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::RightLarge: + case TrackCurve::rightLarge: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE) && w->widgets[WIDX_RIGHT_CURVE].type != WidgetType::empty) { w->onMouseDown(WIDX_RIGHT_CURVE); @@ -4107,7 +4107,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::None: + case TrackCurve::none: if (!widgetIsDisabled(*w, WIDX_RIGHT_CURVE_LARGE) && w->widgets[WIDX_RIGHT_CURVE_LARGE].type != WidgetType::empty) { @@ -4134,7 +4134,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::LeftLarge: + case TrackCurve::leftLarge: if (!widgetIsDisabled(*w, WIDX_STRAIGHT) && w->widgets[WIDX_STRAIGHT].type != WidgetType::empty) { w->onMouseDown(WIDX_STRAIGHT); @@ -4166,7 +4166,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::Left: + case TrackCurve::left: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE_LARGE) && w->widgets[WIDX_LEFT_CURVE_LARGE].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE_LARGE); @@ -4202,7 +4202,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::LeftSmall: + case TrackCurve::leftSmall: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE) && w->widgets[WIDX_LEFT_CURVE].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE); @@ -4243,7 +4243,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::LeftVerySmall: + case TrackCurve::leftVerySmall: if (!widgetIsDisabled(*w, WIDX_LEFT_CURVE_SMALL) && w->widgets[WIDX_LEFT_CURVE_SMALL].type != WidgetType::empty) { w->onMouseDown(WIDX_LEFT_CURVE_SMALL); @@ -4288,7 +4288,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackCurve::RightVerySmall: + case TrackCurve::rightVerySmall: break; } } @@ -4837,7 +4837,7 @@ namespace OpenRCT2::Ui::Windows } bool startsDiagonal = (_currentTrackPieceDirection & (1 << 2)) != 0; - if (selectedTrack == TrackCurve::LeftLarge || selectedTrack == TrackCurve::RightLarge) + if (selectedTrack == TrackCurve::leftLarge || selectedTrack == TrackCurve::rightLarge) { if (_rideConstructionState == RideConstructionState::Back) { diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index f96c230995b2..019c5b24eb0a 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -228,15 +228,15 @@ constexpr uint8_t const DEFAULT_SEAT_ROTATION = 4; enum class TrackCurve : uint8_t { - LeftVerySmall = 5, - LeftSmall = 3, - Left = 1, - LeftLarge = 7, - None = 0, - RightLarge = 8, - Right = 2, - RightSmall = 4, - RightVerySmall = 6 + leftVerySmall = 5, + leftSmall = 3, + left = 1, + leftLarge = 7, + none = 0, + rightLarge = 8, + right = 2, + rightSmall = 4, + rightVerySmall = 6 }; constexpr const uint8_t kHighestCurveValue = 8; @@ -681,7 +681,7 @@ struct TypeOrCurve constexpr TypeOrCurve() noexcept { isTrackType = false; - curve = TrackCurve::None; + curve = TrackCurve::none; } constexpr bool operator==(OpenRCT2::TrackElemType rhs) diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 9d3a0c53e768..f5c31e0dc7a8 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -739,93 +739,93 @@ namespace OpenRCT2::TrackMetaData // rct2: 0x00998C95 static constexpr TrackCurveChain kTrackCurveChain[] = { - { TrackCurve::None, TrackCurve::None }, + { TrackCurve::none, TrackCurve::none }, { TrackElemType::endStation, TrackElemType::endStation }, { TrackElemType::endStation, TrackElemType::endStation }, { TrackElemType::endStation, TrackElemType::endStation }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftVerySmall, TrackCurve::LeftVerySmall }, - { TrackCurve::RightVerySmall, TrackCurve::RightVerySmall }, - { TrackElemType::leftTwistUpToDown, TrackCurve::None }, - { TrackElemType::rightTwistUpToDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::leftTwistDownToUp }, - { TrackCurve::None, TrackElemType::rightTwistDownToUp }, - { TrackElemType::halfLoopDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::halfLoopUp }, - { TrackElemType::rightCorkscrewDown, TrackCurve::None }, - { TrackElemType::leftCorkscrewDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::rightCorkscrewUp }, - { TrackCurve::None, TrackElemType::leftCorkscrewUp }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackElemType::towerSection, TrackCurve::None }, - { TrackElemType::towerSection, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftVerySmall, TrackCurve::leftVerySmall }, + { TrackCurve::rightVerySmall, TrackCurve::rightVerySmall }, + { TrackElemType::leftTwistUpToDown, TrackCurve::none }, + { TrackElemType::rightTwistUpToDown, TrackCurve::none }, + { TrackCurve::none, TrackElemType::leftTwistDownToUp }, + { TrackCurve::none, TrackElemType::rightTwistDownToUp }, + { TrackElemType::halfLoopDown, TrackCurve::none }, + { TrackCurve::none, TrackElemType::halfLoopUp }, + { TrackElemType::rightCorkscrewDown, TrackCurve::none }, + { TrackElemType::leftCorkscrewDown, TrackCurve::none }, + { TrackCurve::none, TrackElemType::rightCorkscrewUp }, + { TrackCurve::none, TrackElemType::leftCorkscrewUp }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackElemType::towerSection, TrackCurve::none }, + { TrackElemType::towerSection, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, { TrackElemType::leftHalfBankedHelixUpSmall, TrackElemType::leftHalfBankedHelixUpSmall }, { TrackElemType::rightHalfBankedHelixUpSmall, TrackElemType::rightHalfBankedHelixUpSmall }, { TrackElemType::leftHalfBankedHelixDownSmall, TrackElemType::leftHalfBankedHelixDownSmall }, @@ -834,13 +834,13 @@ namespace OpenRCT2::TrackMetaData { TrackElemType::rightHalfBankedHelixUpLarge, TrackElemType::rightHalfBankedHelixUpLarge }, { TrackElemType::leftHalfBankedHelixDownLarge, TrackElemType::leftHalfBankedHelixDownLarge }, { TrackElemType::rightHalfBankedHelixDownLarge, TrackElemType::rightHalfBankedHelixDownLarge }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, { TrackElemType::brakes, TrackElemType::brakes }, { TrackElemType::booster, TrackElemType::booster }, - { TrackCurve::None, TrackCurve::None }, + { TrackCurve::none, TrackCurve::none }, { TrackElemType::leftQuarterBankedHelixLargeUp, TrackElemType::leftQuarterBankedHelixLargeUp }, { TrackElemType::rightQuarterBankedHelixLargeUp, TrackElemType::rightQuarterBankedHelixLargeUp }, { TrackElemType::leftQuarterBankedHelixLargeDown, TrackElemType::leftQuarterBankedHelixLargeDown }, @@ -849,156 +849,156 @@ namespace OpenRCT2::TrackMetaData { TrackElemType::rightQuarterHelixLargeUp, TrackElemType::rightQuarterHelixLargeUp }, { TrackElemType::leftQuarterHelixLargeDown, TrackElemType::leftQuarterHelixLargeDown }, { TrackElemType::rightQuarterHelixLargeDown, TrackElemType::rightQuarterHelixLargeDown }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, { TrackElemType::waterfall, TrackElemType::waterfall }, { TrackElemType::rapids, TrackElemType::rapids }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackElemType::reverseFreefallVertical, TrackCurve::None }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackElemType::reverseFreefallVertical, TrackCurve::none }, { TrackElemType::reverseFreefallVertical, TrackElemType::reverseFreefallVertical }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, - { TrackCurve::RightLarge, TrackCurve::RightLarge }, - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, - { TrackCurve::RightLarge, TrackCurve::RightLarge }, - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, - { TrackCurve::RightLarge, TrackCurve::RightLarge }, - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, - { TrackCurve::RightLarge, TrackCurve::RightLarge }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::LeftLarge, TrackCurve::None }, - { TrackCurve::RightLarge, TrackCurve::None }, - { TrackCurve::None, TrackCurve::LeftLarge }, - { TrackCurve::None, TrackCurve::RightLarge }, - { TrackCurve::None, TrackCurve::LeftLarge }, - { TrackCurve::None, TrackCurve::RightLarge }, - { TrackCurve::LeftLarge, TrackCurve::None }, - { TrackCurve::RightLarge, TrackCurve::None }, - { TrackCurve::None, TrackCurve::LeftLarge }, - { TrackCurve::None, TrackCurve::RightLarge }, - { TrackCurve::LeftLarge, TrackCurve::None }, - { TrackCurve::RightLarge, TrackCurve::None }, - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, - { TrackCurve::RightLarge, TrackCurve::RightLarge }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackElemType::leftBarrelRollDownToUp, TrackCurve::None }, - { TrackElemType::rightBarrelRollDownToUp, TrackCurve::None }, - { TrackCurve::None, TrackElemType::leftBarrelRollUpToDown }, - { TrackCurve::None, TrackElemType::rightBarrelRollUpToDown }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::leftLarge, TrackCurve::leftLarge }, + { TrackCurve::rightLarge, TrackCurve::rightLarge }, + { TrackCurve::leftLarge, TrackCurve::leftLarge }, + { TrackCurve::rightLarge, TrackCurve::rightLarge }, + { TrackCurve::leftLarge, TrackCurve::leftLarge }, + { TrackCurve::rightLarge, TrackCurve::rightLarge }, + { TrackCurve::leftLarge, TrackCurve::leftLarge }, + { TrackCurve::rightLarge, TrackCurve::rightLarge }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::leftLarge, TrackCurve::none }, + { TrackCurve::rightLarge, TrackCurve::none }, + { TrackCurve::none, TrackCurve::leftLarge }, + { TrackCurve::none, TrackCurve::rightLarge }, + { TrackCurve::none, TrackCurve::leftLarge }, + { TrackCurve::none, TrackCurve::rightLarge }, + { TrackCurve::leftLarge, TrackCurve::none }, + { TrackCurve::rightLarge, TrackCurve::none }, + { TrackCurve::none, TrackCurve::leftLarge }, + { TrackCurve::none, TrackCurve::rightLarge }, + { TrackCurve::leftLarge, TrackCurve::none }, + { TrackCurve::rightLarge, TrackCurve::none }, + { TrackCurve::leftLarge, TrackCurve::leftLarge }, + { TrackCurve::rightLarge, TrackCurve::rightLarge }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackElemType::leftBarrelRollDownToUp, TrackCurve::none }, + { TrackElemType::rightBarrelRollDownToUp, TrackCurve::none }, + { TrackCurve::none, TrackElemType::leftBarrelRollUpToDown }, + { TrackCurve::none, TrackElemType::rightBarrelRollUpToDown }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, { TrackElemType::poweredLift, TrackElemType::poweredLift }, - { TrackElemType::rightLargeHalfLoopDown, TrackCurve::None }, - { TrackElemType::leftLargeHalfLoopDown, TrackCurve::None }, - { TrackCurve::None, TrackElemType::rightLargeHalfLoopUp }, - { TrackCurve::None, TrackElemType::leftLargeHalfLoopUp }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackElemType::invertedFlatToDown90QuarterLoop, TrackCurve::None }, - { TrackCurve::None, TrackElemType::up90ToInvertedFlatQuarterLoop }, + { TrackElemType::rightLargeHalfLoopDown, TrackCurve::none }, + { TrackElemType::leftLargeHalfLoopDown, TrackCurve::none }, + { TrackCurve::none, TrackElemType::rightLargeHalfLoopUp }, + { TrackCurve::none, TrackElemType::leftLargeHalfLoopUp }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackElemType::invertedFlatToDown90QuarterLoop, TrackCurve::none }, + { TrackCurve::none, TrackElemType::up90ToInvertedFlatQuarterLoop }, { TrackElemType::leftCurvedLiftHill, TrackElemType::leftCurvedLiftHill }, { TrackElemType::rightCurvedLiftHill, TrackElemType::rightCurvedLiftHill }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, { TrackElemType::airThrustVerticalDown, TrackElemType::reverseFreefallVertical }, { TrackElemType::airThrustVerticalDown, TrackElemType::airThrustVerticalDown }, - { TrackCurve::None, TrackElemType::airThrustVerticalDown }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::Left }, - { TrackCurve::Right, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::Left, TrackCurve::None }, - { TrackCurve::Right, TrackCurve::None }, - { TrackCurve::None, TrackCurve::Left }, - { TrackCurve::None, TrackCurve::Right }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::LeftSmall, TrackCurve::LeftSmall }, - { TrackCurve::RightSmall, TrackCurve::RightSmall }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, - { TrackCurve::None, TrackCurve::None }, + { TrackCurve::none, TrackElemType::airThrustVerticalDown }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::left }, + { TrackCurve::right, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::left, TrackCurve::none }, + { TrackCurve::right, TrackCurve::none }, + { TrackCurve::none, TrackCurve::left }, + { TrackCurve::none, TrackCurve::right }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::leftSmall, TrackCurve::leftSmall }, + { TrackCurve::rightSmall, TrackCurve::rightSmall }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, + { TrackCurve::none, TrackCurve::none }, { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x4A - { TrackCurve::None, TrackCurve::None }, // TrackElemType::flatTrack2x2 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::flatTrack4x4 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::flatTrack2x2 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::flatTrack4x4 { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack2x4 { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x5 { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x1A @@ -1006,279 +1006,279 @@ namespace OpenRCT2::TrackMetaData { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x1B { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack1x4C { TrackElemType::none, TrackElemType::none }, // TrackElemType::flatTrack3x3 - { TrackElemType::rightLargeCorkscrewDown, TrackCurve::None }, // TrackElemType::leftLargeCorkscrewUp - { TrackElemType::leftLargeCorkscrewDown, TrackCurve::None }, // TrackElemType::rightLargeCorkscrewUp - { TrackCurve::None, TrackElemType::rightLargeCorkscrewUp }, // TrackElemType::leftLargeCorkscrewDown - { TrackCurve::None, TrackElemType::leftLargeCorkscrewUp }, // TrackElemType::rightCorkscrewDown - { TrackElemType::rightMediumHalfLoopDown, TrackCurve::None }, // TrackElemType::leftMediumHalfLoopUp - { TrackElemType::leftMediumHalfLoopDown, TrackCurve::None }, // TrackElemType::rightMediumHalfLoopUp - { TrackCurve::None, TrackElemType::rightMediumHalfLoopUp }, // TrackElemType::leftMediumHalfLoopDown - { TrackCurve::None, TrackElemType::leftMediumHalfLoopUp }, // TrackElemType::rightMediumHalfLoopDown - { TrackElemType::leftZeroGRollDown, TrackCurve::None }, // TrackElemType::leftZeroGRollUp - { TrackElemType::rightZeroGRollDown, TrackCurve::None }, // TrackElemType::rightZeroGRollUp - { TrackCurve::None, TrackElemType::leftZeroGRollUp }, // TrackElemType::leftZeroGRollDown - { TrackCurve::None, TrackElemType::rightZeroGRollUp }, // TrackElemType::rightZeroGRollDown - { TrackElemType::leftLargeZeroGRollDown, TrackCurve::None }, // TrackElemType::leftLargeZeroGRollUp - { TrackElemType::rightLargeZeroGRollDown, TrackCurve::None }, // TrackElemType::rightLargeZeroGRollUp - { TrackCurve::None, TrackElemType::leftLargeZeroGRollUp }, // TrackElemType::leftLargeZeroGRollDown - { TrackCurve::None, TrackElemType::rightLargeZeroGRollUp }, // TrackElemType::rightLargeZeroGRollDown - { TrackElemType::rightFlyerLargeHalfLoopInvertedDown, TrackCurve::None }, // LeftFlyerLargeHalfLoopUninvertedUp - { TrackElemType::leftFlyerLargeHalfLoopInvertedDown, TrackCurve::None }, // RightFlyerLargeHalfLoopUninvertedUp - { TrackCurve::None, TrackElemType::rightFlyerLargeHalfLoopUninvertedUp }, // LeftFlyerLargeHalfLoopInvertedDown - { TrackCurve::None, TrackElemType::leftFlyerLargeHalfLoopUninvertedUp }, // RightFlyerLargeHalfLoopInvertedDown - { TrackElemType::rightFlyerLargeHalfLoopUninvertedDown, TrackCurve::None }, // LeftFlyerLargeHalfLoopInvertedUp - { TrackElemType::leftFlyerLargeHalfLoopUninvertedDown, TrackCurve::None }, // RightFlyerLargeHalfLoopInvertedUp - { TrackCurve::None, TrackElemType::rightFlyerLargeHalfLoopInvertedUp }, // LeftFlyerLargeHalfLoopUninvertedDown - { TrackCurve::None, TrackElemType::leftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown - { TrackCurve::None, TrackCurve::None }, // FlyerHalfLoopInvertedUp - { TrackCurve::None, TrackCurve::None }, // FlyerHalfLoopUninvertedUp - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToDiagUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToDiagUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToDiagDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToDiagDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToOrthogonalUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToOrthogonalUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthToOrthogonalDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthToOrthogonalDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagUp25ToLeftBankedUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagUp25ToRightBankedUp25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedUp25ToUp25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedUp25ToUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagDown25ToLeftBankedDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagDown25ToRightBankedDown25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedDown25ToDown25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedDown25ToDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagFlatToLeftBankedUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagFlatToRightBankedUp25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedUp25ToFlat - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedUp25ToFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagFlatToLeftBankedDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagFlatToRightBankedDown25 - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagLeftBankedDown25ToFlat - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagRightBankedDown25ToFlat - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagUp25LeftBanked - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagUp25RightBanked - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::diagDown25LeftBanked - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::diagDown25RightBanked - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToDiagUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToDiagUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToDiagDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToDiagDown25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToOrthogonalUp25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToOrthogonalUp25 - { TrackCurve::LeftLarge, TrackCurve::LeftLarge }, // TrackElemType::leftEighthBankToOrthogonalDown25 - { TrackCurve::RightLarge, TrackCurve::RightLarge }, // TrackElemType::rightEighthBankToOrthogonalDown25 + { TrackElemType::rightLargeCorkscrewDown, TrackCurve::none }, // TrackElemType::leftLargeCorkscrewUp + { TrackElemType::leftLargeCorkscrewDown, TrackCurve::none }, // TrackElemType::rightLargeCorkscrewUp + { TrackCurve::none, TrackElemType::rightLargeCorkscrewUp }, // TrackElemType::leftLargeCorkscrewDown + { TrackCurve::none, TrackElemType::leftLargeCorkscrewUp }, // TrackElemType::rightCorkscrewDown + { TrackElemType::rightMediumHalfLoopDown, TrackCurve::none }, // TrackElemType::leftMediumHalfLoopUp + { TrackElemType::leftMediumHalfLoopDown, TrackCurve::none }, // TrackElemType::rightMediumHalfLoopUp + { TrackCurve::none, TrackElemType::rightMediumHalfLoopUp }, // TrackElemType::leftMediumHalfLoopDown + { TrackCurve::none, TrackElemType::leftMediumHalfLoopUp }, // TrackElemType::rightMediumHalfLoopDown + { TrackElemType::leftZeroGRollDown, TrackCurve::none }, // TrackElemType::leftZeroGRollUp + { TrackElemType::rightZeroGRollDown, TrackCurve::none }, // TrackElemType::rightZeroGRollUp + { TrackCurve::none, TrackElemType::leftZeroGRollUp }, // TrackElemType::leftZeroGRollDown + { TrackCurve::none, TrackElemType::rightZeroGRollUp }, // TrackElemType::rightZeroGRollDown + { TrackElemType::leftLargeZeroGRollDown, TrackCurve::none }, // TrackElemType::leftLargeZeroGRollUp + { TrackElemType::rightLargeZeroGRollDown, TrackCurve::none }, // TrackElemType::rightLargeZeroGRollUp + { TrackCurve::none, TrackElemType::leftLargeZeroGRollUp }, // TrackElemType::leftLargeZeroGRollDown + { TrackCurve::none, TrackElemType::rightLargeZeroGRollUp }, // TrackElemType::rightLargeZeroGRollDown + { TrackElemType::rightFlyerLargeHalfLoopInvertedDown, TrackCurve::none }, // LeftFlyerLargeHalfLoopUninvertedUp + { TrackElemType::leftFlyerLargeHalfLoopInvertedDown, TrackCurve::none }, // RightFlyerLargeHalfLoopUninvertedUp + { TrackCurve::none, TrackElemType::rightFlyerLargeHalfLoopUninvertedUp }, // LeftFlyerLargeHalfLoopInvertedDown + { TrackCurve::none, TrackElemType::leftFlyerLargeHalfLoopUninvertedUp }, // RightFlyerLargeHalfLoopInvertedDown + { TrackElemType::rightFlyerLargeHalfLoopUninvertedDown, TrackCurve::none }, // LeftFlyerLargeHalfLoopInvertedUp + { TrackElemType::leftFlyerLargeHalfLoopUninvertedDown, TrackCurve::none }, // RightFlyerLargeHalfLoopInvertedUp + { TrackCurve::none, TrackElemType::rightFlyerLargeHalfLoopInvertedUp }, // LeftFlyerLargeHalfLoopUninvertedDown + { TrackCurve::none, TrackElemType::leftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown + { TrackCurve::none, TrackCurve::none }, // FlyerHalfLoopInvertedUp + { TrackCurve::none, TrackCurve::none }, // FlyerHalfLoopUninvertedUp + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthToDiagUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthToDiagUp25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthToDiagDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthToDiagDown25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthToOrthogonalUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthToOrthogonalUp25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthToOrthogonalDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthToOrthogonalDown25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagUp25ToLeftBankedUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagUp25ToRightBankedUp25 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagLeftBankedUp25ToUp25 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagRightBankedUp25ToUp25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagDown25ToLeftBankedDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagDown25ToRightBankedDown25 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagLeftBankedDown25ToDown25 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagRightBankedDown25ToDown25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagFlatToLeftBankedUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagFlatToRightBankedUp25 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagLeftBankedUp25ToFlat + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagRightBankedUp25ToFlat + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagFlatToLeftBankedDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagFlatToRightBankedDown25 + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagLeftBankedDown25ToFlat + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagRightBankedDown25ToFlat + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagUp25LeftBanked + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagUp25RightBanked + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::diagDown25LeftBanked + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::diagDown25RightBanked + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthBankToDiagUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthBankToDiagUp25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthBankToDiagDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthBankToDiagDown25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthBankToOrthogonalUp25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthBankToOrthogonalUp25 + { TrackCurve::leftLarge, TrackCurve::leftLarge }, // TrackElemType::leftEighthBankToOrthogonalDown25 + { TrackCurve::rightLarge, TrackCurve::rightLarge }, // TrackElemType::rightEighthBankToOrthogonalDown25 { TrackElemType::diagBrakes, TrackElemType::diagBrakes }, // TrackElemType::diagBrakes - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagBlockBrakes + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagBlockBrakes { TrackElemType::down25Brakes, TrackElemType::down25Brakes }, // TrackElemType::down25Brakes { TrackElemType::diagBooster, TrackElemType::diagBooster }, // TrackElemType::diagBooster - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagFlatToUp60LongBase, - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagUp60ToFlatLongBase, - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagFlatToDown60LongBase, - { TrackCurve::None, TrackCurve::None }, // TrackElemType::diagDown60ToFlatLongBase, - { TrackElemType::rightEighthDiveLoopDownToDiag , TrackCurve::None }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal - { TrackElemType::leftEighthDiveLoopDownToDiag, TrackCurve::None }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal - { TrackCurve::None, TrackElemType::rightEighthDiveLoopUpToOrthogonal }, // TrackElemType::leftEighthDiveLoopDownToDiag - { TrackCurve::None, TrackElemType::leftEighthDiveLoopUpToOrthogonal }, // TrackElemType::rightEighthDiveLoopDownToDiag + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagFlatToUp60LongBase, + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagUp60ToFlatLongBase, + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagFlatToDown60LongBase, + { TrackCurve::none, TrackCurve::none }, // TrackElemType::diagDown60ToFlatLongBase, + { TrackElemType::rightEighthDiveLoopDownToDiag , TrackCurve::none }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + { TrackElemType::leftEighthDiveLoopDownToDiag, TrackCurve::none }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + { TrackCurve::none, TrackElemType::rightEighthDiveLoopUpToOrthogonal }, // TrackElemType::leftEighthDiveLoopDownToDiag + { TrackCurve::none, TrackElemType::leftEighthDiveLoopUpToOrthogonal }, // TrackElemType::rightEighthDiveLoopDownToDiag { TrackElemType::diagDown25Brakes, TrackElemType::diagDown25Brakes }, // TrackElemType::diagDown25Brakes }; static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::count)); const TrackDescriptor gTrackDescriptors[186] = { - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown60 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown60ToDown25 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown60ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown25ToDown60 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagDown25ToLeftBank }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagDown25ToRightBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankToFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagFlatToDown60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagFlatToDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagFlatToLeftBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagFlatToRightBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagFlatToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagFlatToUp60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankToFlat }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBank }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankToUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonal }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagUp25ToLeftBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagUp25ToRightBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp25ToUp60 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp60ToFlat }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp60ToUp25 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::down90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::down90ToDown60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::down60ToDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::down60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::down60ToDown25 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::down60ToFlat }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown60 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25LeftBanked }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Left, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::down25ToDown60 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25ToLeftBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::down25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25ToRightBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::down25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::down25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::down25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Right, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25RightBanked }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedDown25ToRightBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::Left, TrackPitch::None, TrackRoll::Left, TrackElemType::bankedLeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBank }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankToFlat }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::Left, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::flatToDown60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::flatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::flatToDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::flatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::flatToLeftBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::flat }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::flatToRightBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::flatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::flatToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::flatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::flatToUp60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::Right, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankToFlat }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBank }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::Right, TrackPitch::None, TrackRoll::Right, TrackElemType::bankedRightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25LeftBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Left, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::up25ToLeftBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::up25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::up25ToRightBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25ToLeftBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::up25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25ToRightBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::up25ToUp60 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Right, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedUp25ToRightBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::up60ToFlat }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::up60ToUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::up60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::up60ToUp90 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::up90ToUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::up90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp90 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalDown25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25ToLeftBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25ToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToUp25 }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankedUp25ToUp25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25ToLeftBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25ToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToDown25 }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankedDown25ToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedUp25ToFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedDown25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25LeftBanked }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25RightBanked }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25LeftBanked }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalDown25 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown60 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown60ToDown25 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown60ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown25ToDown60 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagDown25ToLeftBank }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagDown25ToRightBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankToFlat }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagFlatToDown60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagFlatToDown25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagFlatToLeftBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagFlatToRightBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagFlatToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagFlatToUp60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankToFlat }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBank }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankToUp25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonal }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagUp25ToLeftBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagUp25ToRightBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp25ToUp60 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp60ToFlat }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp60ToUp25 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::none, TrackPitch::Down90, TrackRoll::None, TrackElemType::down90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::down90ToDown60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down90, TrackRoll::None, TrackElemType::down60ToDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::down60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::down60ToDown25 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::down60ToFlat }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown60 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25LeftBanked }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::left, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::down25ToDown60 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25ToLeftBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::down25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25ToRightBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::down25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::down25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::down25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::right, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25RightBanked }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedDown25ToRightBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::left, TrackPitch::None, TrackRoll::Left, TrackElemType::bankedLeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBank }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankToFlat }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::left, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::flatToDown60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::flatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::flatToDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::flatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::flatToLeftBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::flat }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::leftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::rightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::flatToRightBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::flatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::flatToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::flatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::flatToUp60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::right, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankToFlat }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBank }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::right, TrackPitch::None, TrackRoll::Right, TrackElemType::bankedRightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25LeftBanked }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::left, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::up25ToLeftBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::up25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::up25ToRightBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25ToLeftBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::up25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25ToRightBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::up25ToUp60 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::right, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedUp25ToRightBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::up60ToFlat }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::up60ToUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::up60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up90, TrackRoll::None, TrackElemType::up60ToUp90 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::up90ToUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::none, TrackPitch::Up90, TrackRoll::None, TrackElemType::up90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp90 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToDiagUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToDiagUp25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToDiagDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToDiagDown25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalUp25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalDown25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25ToLeftBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25ToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToUp25 }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankedUp25ToUp25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25ToLeftBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25ToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToDown25 }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankedDown25ToDown25 }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedUp25ToFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedDown25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedDown25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25LeftBanked }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25RightBanked }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25LeftBanked }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagUp25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagDown25 }, + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalUp25 }, + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalUp25 }, + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalDown25 }, + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalDown25 }, }; /** rct2: 0x00993D1C */ diff --git a/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp b/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp index 7705c4bb5a0b..698ba75d75f9 100644 --- a/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp +++ b/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp @@ -199,15 +199,15 @@ static DukValue _trackCurveToString(duk_context* ctx, TrackCurve curve) { static const EnumMap map( { - { "straight", TrackCurve::None }, - { "left", TrackCurve::Left }, - { "right", TrackCurve::Right }, - { "left_small", TrackCurve::LeftSmall }, - { "right_small", TrackCurve::RightSmall }, - { "left_very_small", TrackCurve::LeftVerySmall }, - { "right_very_small", TrackCurve::RightVerySmall }, - { "left_large", TrackCurve::LeftLarge }, - { "right_large", TrackCurve::RightLarge }, + { "straight", TrackCurve::none }, + { "left", TrackCurve::left }, + { "right", TrackCurve::right }, + { "left_small", TrackCurve::leftSmall }, + { "right_small", TrackCurve::rightSmall }, + { "left_very_small", TrackCurve::leftVerySmall }, + { "right_very_small", TrackCurve::rightVerySmall }, + { "left_large", TrackCurve::leftLarge }, + { "right_large", TrackCurve::rightLarge }, }); u8string text = u8string(map[curve]); From c645ec2a12cb58db8076d0d3ad43ca1463504c40 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 19:49:03 +0100 Subject: [PATCH 149/222] Create enum class for MazeBuildMode --- src/openrct2-ui/windows/MazeConstruction.cpp | 10 ++++++---- src/openrct2-ui/windows/RideConstruction.cpp | 8 ++++---- src/openrct2/actions/MazeSetTrackAction.cpp | 13 +++++++------ src/openrct2/actions/MazeSetTrackAction.h | 11 +++++++++-- src/openrct2/actions/RideDemolishAction.cpp | 2 +- src/openrct2/ride/Track.h | 7 ------- 6 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 94aa0c51a151..0612c82890e4 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -34,6 +34,7 @@ using OpenRCT2::GameActions::CommandFlag; using OpenRCT2::GameActions::CommandFlags; +using OpenRCT2::GameActions::MazeBuildMode; namespace OpenRCT2::Ui::Windows { @@ -399,7 +400,8 @@ namespace OpenRCT2::Ui::Windows void WindowMazeConstructionConstruct(int32_t direction) { - int32_t x, y, z, mode; + int32_t x, y, z; + MazeBuildMode mode; CommandFlags actionFlags = {}; _currentTrackSelectionFlags.clearAll(); @@ -413,15 +415,15 @@ namespace OpenRCT2::Ui::Windows switch (_rideConstructionState) { case RideConstructionState::MazeBuild: - mode = GC_SET_MAZE_TRACK_BUILD; + mode = MazeBuildMode::build; break; case RideConstructionState::MazeMove: - mode = GC_SET_MAZE_TRACK_MOVE; + mode = MazeBuildMode::move; actionFlags = { CommandFlag::allowDuringPaused }; break; default: case RideConstructionState::MazeFill: - mode = GC_SET_MAZE_TRACK_FILL; + mode = MazeBuildMode::fill; break; } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 02118e0119a2..245aa0ef7132 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -67,6 +67,7 @@ using namespace OpenRCT2::Numerics; using namespace OpenRCT2::TrackMetaData; using OpenRCT2::GameActions::CommandFlag; using OpenRCT2::GameActions::CommandFlags; +using OpenRCT2::GameActions::MazeBuildMode; namespace OpenRCT2::Ui::Windows { @@ -3698,7 +3699,7 @@ namespace OpenRCT2::Ui::Windows gDisableErrorWindowSound = true; auto gameAction = GameActions::MazeSetTrackAction( - CoordsXYZD{ _currentTrackBegin, 0 }, true, _currentRideIndex, GC_SET_MAZE_TRACK_BUILD); + CoordsXYZD{ _currentTrackBegin, 0 }, true, _currentRideIndex, MazeBuildMode::build); auto mazeSetTrackResult = GameActions::Execute(&gameAction, getGameState()); if (mazeSetTrackResult.error == GameActions::Status::ok) { @@ -4757,8 +4758,7 @@ namespace OpenRCT2::Ui::Windows if (rtd.specialType == RtdSpecialType::maze) { CommandFlags flags = { CommandFlag::allowDuringPaused, CommandFlag::noSpend, CommandFlag::ghost }; - auto gameAction = GameActions::MazeSetTrackAction( - CoordsXYZD{ trackPos, 0 }, true, rideIndex, GC_SET_MAZE_TRACK_BUILD); + auto gameAction = GameActions::MazeSetTrackAction(CoordsXYZD{ trackPos, 0 }, true, rideIndex, MazeBuildMode::build); gameAction.SetFlags(flags); auto result = GameActions::Execute(&gameAction, getGameState()); @@ -5146,7 +5146,7 @@ namespace OpenRCT2::Ui::Windows }; for (const auto& quadrant : quadrants) { - auto gameAction = GameActions::MazeSetTrackAction(quadrant, false, rideIndex, GC_SET_MAZE_TRACK_FILL); + auto gameAction = GameActions::MazeSetTrackAction(quadrant, false, rideIndex, MazeBuildMode::fill); gameAction.SetFlags(flags); auto res = GameActions::Execute(&gameAction, getGameState()); } diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index a864f482acd0..86fa63997a24 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -58,7 +58,8 @@ namespace OpenRCT2::GameActions }; // clang-format on - MazeSetTrackAction::MazeSetTrackAction(const CoordsXYZD& location, bool initialPlacement, RideId rideIndex, uint8_t mode) + MazeSetTrackAction::MazeSetTrackAction( + const CoordsXYZD& location, bool initialPlacement, RideId rideIndex, MazeBuildMode mode) : _loc(location) , _initialPlacement(initialPlacement) , _rideIndex(rideIndex) @@ -87,7 +88,7 @@ namespace OpenRCT2::GameActions res.position = _loc + CoordsXYZ{ 8, 8, 0 }; res.expenditure = ExpenditureType::rideConstruction; res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - if ((_loc.z & 0xF) != 0 && _mode == GC_SET_MAZE_TRACK_BUILD) + if ((_loc.z & 0xF) != 0 && _mode == MazeBuildMode::build) { res.error = Status::unknown; res.errorMessage = STR_INVALID_HEIGHT; @@ -143,7 +144,7 @@ namespace OpenRCT2::GameActions TileElement* tileElement = MapGetTrackElementAtOfTypeFromRide(_loc, TrackElemType::maze, _rideIndex); if (tileElement == nullptr) { - if (_mode != GC_SET_MAZE_TRACK_BUILD) + if (_mode != MazeBuildMode::build) { res.error = Status::unknown; res.errorMessage = STR_INVALID_SELECTION_OF_OBJECTS; @@ -245,7 +246,7 @@ namespace OpenRCT2::GameActions switch (_mode) { - case GC_SET_MAZE_TRACK_BUILD: + case MazeBuildMode::build: { uint8_t segmentOffset = MazeGetSegmentBit(_loc); @@ -278,10 +279,10 @@ namespace OpenRCT2::GameActions break; } - case GC_SET_MAZE_TRACK_MOVE: + case MazeBuildMode::move: break; - case GC_SET_MAZE_TRACK_FILL: + case MazeBuildMode::fill: if (!_initialPlacement) { auto previousSegment = CoordsXY{ _loc.x - CoordsDirectionDelta[_loc.direction].x / 2, diff --git a/src/openrct2/actions/MazeSetTrackAction.h b/src/openrct2/actions/MazeSetTrackAction.h index 72a0f221a15e..f504b9dbecfe 100644 --- a/src/openrct2/actions/MazeSetTrackAction.h +++ b/src/openrct2/actions/MazeSetTrackAction.h @@ -13,17 +13,24 @@ namespace OpenRCT2::GameActions { + enum class MazeBuildMode : uint8_t + { + build, + move, + fill, + }; + class MazeSetTrackAction final : public GameActionBase { private: CoordsXYZD _loc; bool _initialPlacement{}; RideId _rideIndex{ RideId::GetNull() }; - uint8_t _mode{}; + MazeBuildMode _mode{}; public: MazeSetTrackAction() = default; - MazeSetTrackAction(const CoordsXYZD& location, bool initialPlacement, RideId rideIndex, uint8_t mode); + MazeSetTrackAction(const CoordsXYZD& location, bool initialPlacement, RideId rideIndex, MazeBuildMode mode); void AcceptParameters(GameActionParameterVisitor&) final; void Serialise(DataSerialiser& stream) override; diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index 1672a63a678e..d73215282a43 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -179,7 +179,7 @@ namespace OpenRCT2::GameActions money64 RideDemolishAction::MazeRemoveTrack(GameState_t& gameState, const CoordsXYZD& coords) const { - auto setMazeTrack = MazeSetTrackAction(coords, false, _rideIndex, GC_SET_MAZE_TRACK_FILL); + auto setMazeTrack = MazeSetTrackAction(coords, false, _rideIndex, MazeBuildMode::fill); setMazeTrack.SetFlags(GetFlags()); auto execRes = ExecuteNested(&setMazeTrack, gameState); diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 019c5b24eb0a..914710a1d408 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -651,13 +651,6 @@ enum class SequenceFlag : uint8_t hasHeightMarker, // Displays a height marker on this sequence block }; -enum -{ - GC_SET_MAZE_TRACK_BUILD = 0, - GC_SET_MAZE_TRACK_MOVE = 1, - GC_SET_MAZE_TRACK_FILL = 2, -}; - struct TrackCircuitIterator { CoordsXYE last; From 3a70b2459a0aaecfef93e4e8cc747a9fd7e7aaec Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 19:52:05 +0100 Subject: [PATCH 150/222] Rename members of TrackRoll --- src/openrct2-ui/windows/RideConstruction.cpp | 116 +- src/openrct2/actions/WallPlaceAction.cpp | 4 +- src/openrct2/ride/RideConstruction.cpp | 16 +- src/openrct2/ride/Track.cpp | 8 +- src/openrct2/ride/Track.h | 8 +- src/openrct2/ride/TrackData.cpp | 1072 +++++++++--------- src/openrct2/scripting/ScriptEngine.cpp | 8 +- 7 files changed, 616 insertions(+), 616 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 245aa0ef7132..57e46a8aafe6 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -263,14 +263,14 @@ namespace OpenRCT2::Ui::Windows _currentlySelectedTrack = currentRide->getRideTypeDescriptor().StartTrackPiece; _currentTrackPitchEnd = TrackPitch::None; - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; _currentTrackAlternative.clearAll(); if (currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::startConstructionInverted)) _currentTrackAlternative.set(AlternativeTrackFlag::inverted); - _previousTrackRollEnd = TrackRoll::None; + _previousTrackRollEnd = TrackRoll::none; _previousTrackPitchEnd = TrackPitch::None; _currentTrackPieceDirection = 0; @@ -441,7 +441,7 @@ namespace OpenRCT2::Ui::Windows { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } - else if (_currentTrackRollEnd != TrackRoll::None) + else if (_currentTrackRollEnd != TrackRoll::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_SLOPE_UP); } @@ -454,7 +454,7 @@ namespace OpenRCT2::Ui::Windows || _currentTrackPitchEnd == TrackPitch::Up25 || _currentTrackPitchEnd == TrackPitch::Up60) newDisabledWidgets |= 1uLL << WIDX_CHAIN_LIFT | (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); // Disable upward slope if current track piece is not flat - if ((_previousTrackPitchEnd != TrackPitch::None || _previousTrackRollEnd != TrackRoll::None) + if ((_previousTrackPitchEnd != TrackPitch::None || _previousTrackRollEnd != TrackRoll::none) && !(_currentTrackHasLiftHill)) newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP); } @@ -472,7 +472,7 @@ namespace OpenRCT2::Ui::Windows case TrackCurve::left: case TrackCurve::leftLarge: newDisabledWidgets |= (1uLL << WIDX_BANK_RIGHT); - if (_previousTrackRollEnd == TrackRoll::None) + if (_previousTrackRollEnd == TrackRoll::none) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT); } @@ -486,7 +486,7 @@ namespace OpenRCT2::Ui::Windows case TrackCurve::rightSmall: case TrackCurve::rightVerySmall: newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT); - if (_previousTrackRollEnd == TrackRoll::None) + if (_previousTrackRollEnd == TrackRoll::none) { newDisabledWidgets |= (1uLL << WIDX_BANK_RIGHT); } @@ -501,7 +501,7 @@ namespace OpenRCT2::Ui::Windows } if (!IsTrackEnabled(TrackGroup::slopeRollBanking)) { - if (_currentTrackRollEnd != TrackRoll::None) + if (_currentTrackRollEnd != TrackRoll::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_SLOPE_UP); } @@ -663,12 +663,12 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= 1uLL << WIDX_STRAIGHT; } - if (_previousTrackRollEnd == TrackRoll::Left) + if (_previousTrackRollEnd == TrackRoll::left) { newDisabledWidgets |= (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_LARGE) | (1uLL << WIDX_BANK_RIGHT); } - if (_previousTrackRollEnd == TrackRoll::Right) + if (_previousTrackRollEnd == TrackRoll::right) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_BANK_LEFT); @@ -710,7 +710,7 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } } - if (_currentTrackRollEnd != TrackRoll::None || _previousTrackRollEnd != TrackRoll::None) + if (_currentTrackRollEnd != TrackRoll::none || _previousTrackRollEnd != TrackRoll::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP) | (1uLL << WIDX_CHAIN_LIFT); @@ -735,7 +735,7 @@ namespace OpenRCT2::Ui::Windows } // Ensures that you can build an "unbanking turn", but not select a turn that start banked and // turns to level (as that does not exist). - if (_currentTrackRollEnd != TrackRoll::None && _currentTrackPitchEnd != TrackPitch::None) + if (_currentTrackRollEnd != TrackRoll::none && _currentTrackPitchEnd != TrackPitch::None) { newDisabledWidgets |= (1uLL << WIDX_LEVEL); } @@ -751,7 +751,7 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } } - if (_previousTrackRollEnd == TrackRoll::UpsideDown) + if (_previousTrackRollEnd == TrackRoll::upsideDown) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_STRAIGHT) | (1uLL << WIDX_RIGHT_CURVE_SMALL) @@ -789,17 +789,17 @@ namespace OpenRCT2::Ui::Windows else if (IsTrackEnabled(TrackGroup::slopeCurveBanked)) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP); - if (_currentTrackRollEnd == TrackRoll::Left) + if (_currentTrackRollEnd == TrackRoll::left) { newDisabledWidgets |= (1uLL << WIDX_BANK_STRAIGHT) | (1uLL << WIDX_BANK_RIGHT); newDisabledWidgets &= ~(1uLL << WIDX_BANK_LEFT); } - if (_currentTrackRollEnd == TrackRoll::Right) + if (_currentTrackRollEnd == TrackRoll::right) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_STRAIGHT); newDisabledWidgets &= ~(1uLL << WIDX_BANK_RIGHT); } - if (_currentTrackRollEnd == TrackRoll::None) + if (_currentTrackRollEnd == TrackRoll::none) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); newDisabledWidgets &= ~(1uLL << WIDX_BANK_STRAIGHT); @@ -893,7 +893,7 @@ namespace OpenRCT2::Ui::Windows if (_currentTrackPitchEnd == TrackPitch::None && _currentTrackPitchEnd == _previousTrackPitchEnd) { // If the bank is none, attempt to show unbanked quarter helixes - if (_currentTrackRollEnd == TrackRoll::None + if (_currentTrackRollEnd == TrackRoll::none && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { if (IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter)) @@ -904,7 +904,7 @@ namespace OpenRCT2::Ui::Windows // If the track is banked left or right and curvature is standard size (2.5 tile radius), attempt to show // buttons for half or quarter helixes else if ( - (_currentTrackRollEnd == TrackRoll::Left || _currentTrackRollEnd == TrackRoll::Right) + (_currentTrackRollEnd == TrackRoll::left || _currentTrackRollEnd == TrackRoll::right) && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { if (IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixDownBankedQuarter)) @@ -915,7 +915,7 @@ namespace OpenRCT2::Ui::Windows // If the track is banked left or right and curvature is small size (1.5 tile radius), attempt to show buttons // for half helixes else if ( - (_currentTrackRollEnd == TrackRoll::Left || _currentTrackRollEnd == TrackRoll::Right) + (_currentTrackRollEnd == TrackRoll::left || _currentTrackRollEnd == TrackRoll::right) && (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall)) { if (IsTrackEnabled(TrackGroup::helixDownBankedHalf)) @@ -930,7 +930,7 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall) { - if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::None + if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::none && (!currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::upInclineRequiresLift) || getGameState().cheats.enableAllDrawableTrackPieces)) { @@ -942,7 +942,7 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall) { - if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::None) + if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::none) { newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN); } @@ -1198,7 +1198,7 @@ namespace OpenRCT2::Ui::Windows case WIDX_STRAIGHT: RideConstructionInvalidateCurrentTrack(); if (_currentlySelectedTrack != TrackCurve::none) - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; _currentlySelectedTrack = TrackCurve::none; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); @@ -1211,28 +1211,28 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) { - if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixDownLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixDownLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::leftSmall && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::leftSmall && _currentTrackRollEnd == TrackRoll::left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixDownSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::rightSmall && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::rightSmall && _currentTrackRollEnd == TrackRoll::right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixDownSmall; _currentTrackPrice = kMoney64Undefined; @@ -1242,14 +1242,14 @@ namespace OpenRCT2::Ui::Windows } if (IsTrackEnabled(TrackGroup::helixDownBankedQuarter) || IsTrackEnabled(TrackGroup::helixUpBankedQuarter)) { - if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::left) { _currentlySelectedTrack = TrackElemType::leftQuarterBankedHelixLargeDown; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::right) { _currentlySelectedTrack = TrackElemType::rightQuarterBankedHelixLargeDown; _currentTrackPrice = kMoney64Undefined; @@ -1260,7 +1260,7 @@ namespace OpenRCT2::Ui::Windows if (IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter) || IsTrackEnabled(TrackGroup::helixUpUnbankedQuarter)) { - if (_currentTrackRollEnd == TrackRoll::None) + if (_currentTrackRollEnd == TrackRoll::none) { if (_currentlySelectedTrack == TrackCurve::left) { @@ -1283,9 +1283,9 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_SLOPE_DOWN: RideConstructionInvalidateCurrentTrack(); - if (_rideConstructionState == RideConstructionState::Back && _currentTrackRollEnd != TrackRoll::None) + if (_rideConstructionState == RideConstructionState::Back && _currentTrackRollEnd != TrackRoll::none) { - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; } UpdateLiftHillSelected(TrackPitch::Down25); break; @@ -1295,11 +1295,11 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::leftSmall) { - _currentTrackRollEnd = TrackRoll::Left; + _currentTrackRollEnd = TrackRoll::left; } else if (_currentlySelectedTrack == TrackCurve::rightSmall) { - _currentTrackRollEnd = TrackRoll::Right; + _currentTrackRollEnd = TrackRoll::right; } } else if ( @@ -1307,20 +1307,20 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::leftSmall) { - _currentTrackRollEnd = TrackRoll::Left; + _currentTrackRollEnd = TrackRoll::left; } else if (_currentlySelectedTrack == TrackCurve::rightSmall) { - _currentTrackRollEnd = TrackRoll::Right; + _currentTrackRollEnd = TrackRoll::right; } } UpdateLiftHillSelected(TrackPitch::None); break; case WIDX_SLOPE_UP: RideConstructionInvalidateCurrentTrack(); - if (_rideConstructionState == RideConstructionState::Front && _currentTrackRollEnd != TrackRoll::None) + if (_rideConstructionState == RideConstructionState::Front && _currentTrackRollEnd != TrackRoll::none) { - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; } if (currentRide->getRideTypeDescriptor().SupportsTrackGroup(TrackGroup::reverseFreefall)) { @@ -1340,28 +1340,28 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) { - if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixUpLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixUpLarge; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::leftSmall && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::leftSmall && _currentTrackRollEnd == TrackRoll::left) { _currentlySelectedTrack = TrackElemType::leftHalfBankedHelixUpSmall; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::rightSmall && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::rightSmall && _currentTrackRollEnd == TrackRoll::right) { _currentlySelectedTrack = TrackElemType::rightHalfBankedHelixUpSmall; _currentTrackPrice = kMoney64Undefined; @@ -1371,14 +1371,14 @@ namespace OpenRCT2::Ui::Windows } if (IsTrackEnabled(TrackGroup::helixDownBankedQuarter) || IsTrackEnabled(TrackGroup::helixUpBankedQuarter)) { - if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::Left) + if (_currentlySelectedTrack == TrackCurve::left && _currentTrackRollEnd == TrackRoll::left) { _currentlySelectedTrack = TrackElemType::leftQuarterBankedHelixLargeUp; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::Right) + if (_currentlySelectedTrack == TrackCurve::right && _currentTrackRollEnd == TrackRoll::right) { _currentlySelectedTrack = TrackElemType::rightQuarterBankedHelixLargeUp; _currentTrackPrice = kMoney64Undefined; @@ -1389,7 +1389,7 @@ namespace OpenRCT2::Ui::Windows if (IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter) || IsTrackEnabled(TrackGroup::helixUpUnbankedQuarter)) { - if (_currentTrackRollEnd == TrackRoll::None) + if (_currentTrackRollEnd == TrackRoll::none) { if (_currentlySelectedTrack == TrackCurve::left) { @@ -1426,7 +1426,7 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (!_currentlyShowingBrakeOrBoosterSpeed) { - _currentTrackRollEnd = TrackRoll::Left; + _currentTrackRollEnd = TrackRoll::left; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); } @@ -1435,7 +1435,7 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (!_currentlyShowingBrakeOrBoosterSpeed) { - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); } @@ -1462,7 +1462,7 @@ namespace OpenRCT2::Ui::Windows RideConstructionInvalidateCurrentTrack(); if (!_currentlyShowingBrakeOrBoosterSpeed) { - _currentTrackRollEnd = TrackRoll::Right; + _currentTrackRollEnd = TrackRoll::right; _currentTrackPrice = kMoney64Undefined; WindowRideConstructionUpdateActiveElements(); } @@ -1556,7 +1556,7 @@ namespace OpenRCT2::Ui::Windows break; case TrackElemType::leftVerticalLoop: case TrackElemType::rightVerticalLoop: - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; break; case TrackElemType::blockBrakes: @@ -1836,7 +1836,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_SLOPE_UP].type = WidgetType::flatBtn; } if ((IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) - && _currentTrackRollEnd != TrackRoll::None && _currentTrackPitchEnd == TrackPitch::None) + && _currentTrackRollEnd != TrackRoll::none && _currentTrackPitchEnd == TrackPitch::None) { const bool hasHelixEquivalent = _currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right || _currentlySelectedTrack == TrackCurve::leftSmall @@ -1901,7 +1901,7 @@ namespace OpenRCT2::Ui::Windows } if ((IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter) || IsTrackEnabled(TrackGroup::helixUpUnbankedQuarter)) - && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd == TrackRoll::None + && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd == TrackRoll::none && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); @@ -1933,7 +1933,7 @@ namespace OpenRCT2::Ui::Windows || _currentlySelectedTrack == TrackCurve::right || _currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall; - if (hasHelixEquivalent && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd != TrackRoll::None) + if (hasHelixEquivalent && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd != TrackRoll::none) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); widgets[WIDX_SLOPE_DOWN_STEEP].tooltip = STR_RIDE_CONSTRUCTION_HELIX_DOWN_TIP; @@ -2205,10 +2205,10 @@ namespace OpenRCT2::Ui::Windows } switch (_currentTrackRollEnd) { - case TrackRoll::Left: + case TrackRoll::left: widgetIndex = WIDX_BANK_LEFT; break; - case TrackRoll::None: + case TrackRoll::none: widgetIndex = WIDX_BANK_STRAIGHT; break; default: @@ -4551,13 +4551,13 @@ namespace OpenRCT2::Ui::Windows switch (_currentTrackRollEnd) { - case TrackRoll::None: + case TrackRoll::none: if (!widgetIsDisabled(*w, WIDX_BANK_LEFT) && w->widgets[WIDX_BANK_LEFT].type != WidgetType::empty) { w->onMouseDown(WIDX_BANK_LEFT); } break; - case TrackRoll::Right: + case TrackRoll::right: if (!widgetIsDisabled(*w, WIDX_BANK_STRAIGHT) && w->widgets[WIDX_BANK_STRAIGHT].type != WidgetType::empty) { w->onMouseDown(WIDX_BANK_STRAIGHT); @@ -4588,13 +4588,13 @@ namespace OpenRCT2::Ui::Windows switch (_currentTrackRollEnd) { - case TrackRoll::None: + case TrackRoll::none: if (!widgetIsDisabled(*w, WIDX_BANK_RIGHT) && w->widgets[WIDX_BANK_RIGHT].type != WidgetType::empty) { w->onMouseDown(WIDX_BANK_RIGHT); } break; - case TrackRoll::Left: + case TrackRoll::left: if (!widgetIsDisabled(*w, WIDX_BANK_STRAIGHT) && w->widgets[WIDX_BANK_STRAIGHT].type != WidgetType::empty) { w->onMouseDown(WIDX_BANK_STRAIGHT); @@ -4866,7 +4866,7 @@ namespace OpenRCT2::Ui::Windows return std::make_pair(false, OpenRCT2::TrackElemType::flat); } - if (startBank != TrackRoll::None || endBank != TrackRoll::None) + if (startBank != TrackRoll::none || endBank != TrackRoll::none) { return std::make_pair(false, OpenRCT2::TrackElemType::flat); } @@ -4875,7 +4875,7 @@ namespace OpenRCT2::Ui::Windows case TrackElemType::leftVerticalLoop: case TrackElemType::rightVerticalLoop: - if (startBank != TrackRoll::None || endBank != TrackRoll::None) + if (startBank != TrackRoll::none || endBank != TrackRoll::none) { return std::make_pair(false, OpenRCT2::TrackElemType::flat); } diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index a17cb60da1fd..585fd24d8e15 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -443,7 +443,7 @@ namespace OpenRCT2::GameActions return false; } - if (ted.definition.rollStart == TrackRoll::None) + if (ted.definition.rollStart == TrackRoll::none) { if (!(ted.coordinates.rotationBegin & 4)) { @@ -467,7 +467,7 @@ namespace OpenRCT2::GameActions return false; } - if (ted.definition.rollEnd != TrackRoll::None) + if (ted.definition.rollEnd != TrackRoll::none) { return false; } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 7e18f16572b2..fe530f7f45ee 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -557,7 +557,7 @@ static void ride_construction_reset_current_piece() { _currentlySelectedTrack = rtd.StartTrackPiece; _currentTrackPitchEnd = TrackPitch::None; - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; _currentTrackAlternative.clearAll(); if (rtd.HasFlag(RtdFlag::startConstructionInverted)) @@ -565,7 +565,7 @@ static void ride_construction_reset_current_piece() _currentTrackAlternative.set(AlternativeTrackFlag::inverted); } _previousTrackPitchEnd = TrackPitch::None; - _previousTrackRollEnd = TrackRoll::None; + _previousTrackRollEnd = TrackRoll::none; } else { @@ -634,9 +634,9 @@ void RideConstructionSetDefaultNextPiece() // Set track banking if (rtd.HasFlag(RtdFlag::hasInvertedVariant)) { - if (bank == TrackRoll::UpsideDown) + if (bank == TrackRoll::upsideDown) { - bank = TrackRoll::None; + bank = TrackRoll::none; _currentTrackAlternative.flip(AlternativeTrackFlag::inverted); } } @@ -693,9 +693,9 @@ void RideConstructionSetDefaultNextPiece() // Set track banking if (rtd.HasFlag(RtdFlag::hasInvertedVariant)) { - if (bank == TrackRoll::UpsideDown) + if (bank == TrackRoll::upsideDown) { - bank = TrackRoll::None; + bank = TrackRoll::none; _currentTrackAlternative.flip(AlternativeTrackFlag::inverted); } } @@ -1084,14 +1084,14 @@ int32_t RideInitialiseConstructionWindow(Ride& ride) _currentlySelectedTrack = ride.getRideTypeDescriptor().StartTrackPiece; _currentTrackPitchEnd = TrackPitch::None; - _currentTrackRollEnd = TrackRoll::None; + _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; _currentTrackAlternative.clearAll(); if (ride.getRideTypeDescriptor().HasFlag(RtdFlag::startConstructionInverted)) _currentTrackAlternative.set(AlternativeTrackFlag::inverted); - _previousTrackRollEnd = TrackRoll::None; + _previousTrackRollEnd = TrackRoll::none; _previousTrackPitchEnd = TrackPitch::None; _currentTrackPieceDirection = 0; diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 080fbac084b7..e07f7aca4774 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -593,13 +593,13 @@ TrackRoll TrackGetActualBank2(ride_type_t rideType, bool isInverted, TrackRoll b { if (isInverted) { - if (bank == TrackRoll::None) + if (bank == TrackRoll::none) { - bank = TrackRoll::UpsideDown; + bank = TrackRoll::upsideDown; } - else if (bank == TrackRoll::UpsideDown) + else if (bank == TrackRoll::upsideDown) { - bank = TrackRoll::None; + bank = TrackRoll::none; } } } diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 914710a1d408..7426227d0716 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -36,10 +36,10 @@ struct ResultWithMessage; enum class TrackRoll : uint8_t { - None = 0, - Left = 2, - Right = 4, - UpsideDown = 15, + none = 0, + left = 2, + right = 4, + upsideDown = 15, }; enum class TrackPitch : uint8_t diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index f5c31e0dc7a8..dcaa031455d8 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -1093,192 +1093,192 @@ namespace OpenRCT2::TrackMetaData static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::count)); const TrackDescriptor gTrackDescriptors[186] = { - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown60 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown60ToDown25 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown60ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagDown25ToDown60 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagDown25ToLeftBank }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagDown25ToRightBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankToFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::diagFlatToDown60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagFlatToDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagFlatToLeftBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagFlatToRightBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagFlatToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagFlatToUp60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankToFlat }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBank }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankToUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonal }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagUp25ToLeftBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagUp25ToRightBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp25ToUp60 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagUp60ToFlat }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagUp60ToUp25 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::diagUp60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::none, TrackPitch::Down90, TrackRoll::None, TrackElemType::down90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::down90ToDown60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileDown60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down90, TrackRoll::None, TrackElemType::down60ToDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::down60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::down60ToDown25 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::down60ToFlat }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileDown60 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25LeftBanked }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::left, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::down25ToDown60 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::down25ToLeftBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::down25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25ToRightBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::down25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::down25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::down25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::right, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::down25RightBanked }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedDown25ToRightBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::left, TrackPitch::None, TrackRoll::Left, TrackElemType::bankedLeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::leftEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBank }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankToFlat }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::left, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::leftEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down60, TrackRoll::None, TrackElemType::flatToDown60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::flatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::flatToDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::flatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::flatToLeftBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::flat }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::leftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::leftQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::rightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::flatToRightBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::flatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::flatToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::flatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::flatToUp60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::rightEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::right, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::rightQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankToFlat }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBank }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedFlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::rightEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::right, TrackPitch::None, TrackRoll::Right, TrackElemType::bankedRightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::leftBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25LeftBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::left, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::up25ToLeftBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::up25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::up25ToRightBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::up25ToLeftBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::up25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25ToRightBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::up25ToUp60 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::right, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::rightBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::rightBankedUp25ToRightBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::up25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::up60ToFlat }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::up60ToUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::up60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::none, TrackPitch::Up90, TrackRoll::None, TrackElemType::up60ToUp90 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::leftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::leftQuarterTurn1TileUp90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::none, TrackPitch::Up60, TrackRoll::None, TrackElemType::up90ToUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::none, TrackPitch::Up90, TrackRoll::None, TrackElemType::up90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::rightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::rightQuarterTurn1TileUp90 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::leftEighthToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::rightEighthToOrthogonalDown25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25ToLeftBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25ToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToUp25 }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::None, TrackElemType::diagRightBankedUp25ToUp25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25ToLeftBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25ToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToDown25 }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::None, TrackElemType::diagRightBankedDown25ToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::Left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::Right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedUp25ToFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagLeftBankedDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::None, TrackRoll::None, TrackElemType::diagRightBankedDown25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::none, TrackPitch::Up25, TrackRoll::Left, TrackElemType::diagUp25LeftBanked }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::none, TrackPitch::Up25, TrackRoll::Right, TrackElemType::diagUp25RightBanked }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::none, TrackPitch::Down25, TrackRoll::Left, TrackElemType::diagDown25LeftBanked }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::none, TrackPitch::Down25, TrackRoll::Right, TrackElemType::diagDown25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::leftEighthBankToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::rightEighthBankToOrthogonalDown25 }, + { true, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::diagDown60 }, + { true, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagDown60ToDown25 }, + { true, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagDown60ToFlat }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::diagDown25ToDown60 }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagDown25 }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagDown25ToLeftBank }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagDown25ToRightBank }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonal }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagLeftBankToDown25 }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagLeftBank }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagLeftBankToFlat }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagLeftBankToUp25 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::none, TrackElemType::leftEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::diagFlatToDown60 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagFlatToDown25 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagFlatToLeftBank }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagFlat }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagFlatToRightBank }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagFlatToUp25 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::diagFlatToUp60 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::none, TrackElemType::rightEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagRightBankToDown25 }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagRightBankToFlat }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagRightBank }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagRightBankToUp25 }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonal }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagUp25ToLeftBank }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagUp25ToRightBank }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagUp25 }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::diagUp25ToUp60 }, + { true, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagUp60ToFlat }, + { true, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagUp60ToUp25 }, + { true, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::diagUp60 }, + { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Down90, TrackRoll::none, TrackElemType::leftQuarterTurn1TileDown90 }, + { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::none, TrackPitch::Down90, TrackRoll::none, TrackElemType::down90 }, + { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::down90ToDown60 }, + { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Down90, TrackRoll::none, TrackElemType::rightQuarterTurn1TileDown90 }, + { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Down60, TrackRoll::none, TrackElemType::leftQuarterTurn1TileDown60 }, + { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down90, TrackRoll::none, TrackElemType::down60ToDown90 }, + { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::down60 }, + { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::down60ToDown25 }, + { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::down60ToFlat }, + { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Down60, TrackRoll::none, TrackElemType::rightQuarterTurn1TileDown60 }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::left, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::down25LeftBanked }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::leftBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::left, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::down25ToDown60 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::down25ToLeftBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::down25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::down25ToRightBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::down25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::down25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::down25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::right, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::down25RightBanked }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::rightBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::rightBankedDown25ToRightBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::right, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::left, TrackPitch::None, TrackRoll::left, TrackElemType::bankedLeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::left, TrackElemType::leftEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftBankToDown25 }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::leftBank }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::leftBankToFlat }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftBankToUp25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::none, TrackElemType::leftQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::left, TrackPitch::None, TrackRoll::none, TrackElemType::leftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::none, TrackElemType::leftEighthToDiag }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::flatToDown60 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::flatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::flatToDown25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::flatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::flatToLeftBank }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::flat }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::leftVerySmall, TrackPitch::None, TrackRoll::none, TrackElemType::leftQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::rightVerySmall, TrackPitch::None, TrackRoll::none, TrackElemType::rightQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::flatToRightBank }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::flatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::flatToUp25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::flatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::flatToUp60 }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::none, TrackElemType::rightEighthToDiag }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::right, TrackPitch::None, TrackRoll::none, TrackElemType::rightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::none, TrackElemType::rightQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightBankToDown25 }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightBankedFlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::rightBankToFlat }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::rightBank }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightBankToUp25 }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightBankedFlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::right, TrackElemType::rightEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::right, TrackPitch::None, TrackRoll::right, TrackElemType::bankedRightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::left, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::leftBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::up25LeftBanked }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::left, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::up25ToLeftBank }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::up25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::up25ToRightBank }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::up25ToLeftBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::up25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::up25ToRightBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::up25ToUp60 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::right, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::rightBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::rightBankedUp25ToRightBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::up25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::right, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Up60, TrackRoll::none, TrackElemType::leftQuarterTurn1TileUp60 }, + { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::up60ToFlat }, + { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::up60ToUp25 }, + { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::up60 }, + { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up90, TrackRoll::none, TrackElemType::up60ToUp90 }, + { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Up60, TrackRoll::none, TrackElemType::rightQuarterTurn1TileUp60 }, + { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Up90, TrackRoll::none, TrackElemType::leftQuarterTurn1TileUp90 }, + { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::up90ToUp60 }, + { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::none, TrackPitch::Up90, TrackRoll::none, TrackElemType::up90 }, + { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Up90, TrackRoll::none, TrackElemType::rightQuarterTurn1TileUp90 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftEighthToDiagUp25 }, + { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightEighthToDiagUp25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftEighthToDiagDown25 }, + { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightEighthToDiagDown25 }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftEighthToOrthogonalUp25 }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightEighthToOrthogonalUp25 }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftEighthToOrthogonalDown25 }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightEighthToOrthogonalDown25 }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagUp25ToLeftBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagUp25ToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagLeftBankedUp25ToUp25 }, + { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagRightBankedUp25ToUp25 }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagDown25ToLeftBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagDown25ToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagLeftBankedDown25ToDown25 }, + { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagRightBankedDown25ToDown25 }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, + { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, + { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, + { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, + { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagFlatToLeftBankedUp25 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagFlatToRightBankedUp25 }, + { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagLeftBankedUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagRightBankedUp25ToFlat }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagFlatToLeftBankedDown25 }, + { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagFlatToRightBankedDown25 }, + { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagLeftBankedDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagRightBankedDown25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagUp25LeftBanked }, + { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagUp25RightBanked }, + { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagDown25LeftBanked }, + { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagDown25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftEighthBankToDiagUp25 }, + { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightEighthBankToDiagUp25 }, + { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftEighthBankToDiagDown25 }, + { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightEighthBankToDiagDown25 }, + { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonalUp25 }, + { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonalUp25 }, + { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonalDown25 }, + { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonalDown25 }, }; /** rct2: 0x00993D1C */ @@ -2707,356 +2707,356 @@ namespace OpenRCT2::TrackMetaData static constexpr TrackDefinition kTrackDefinitions[] = { // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET - { TrackGroup::straight, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flat - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::endStation - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::beginStation - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::middleStation - { TrackGroup::slope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25 - { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60 - { TrackGroup::slope, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp25 - { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToUp60 - { TrackGroup::slopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToUp25 - { TrackGroup::slope, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToFlat - { TrackGroup::slope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25 - { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60 - { TrackGroup::slope, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown25 - { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToDown60 - { TrackGroup::slopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToDown25 - { TrackGroup::slope, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToFlat - { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5Tiles - { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::flatToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::flatToRightBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToFlat - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToFlat - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::bankedLeftQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::bankedRightQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToUp25 - { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToUp25 - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::up25ToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::up25ToRightBank - { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToDown25 - { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToDown25 - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::down25ToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::down25ToRightBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBank - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5TilesDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5TilesDown25 - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendLeft - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendRight - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // TrackElemType::leftVerticalLoop - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // TrackElemType::rightVerticalLoop - { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3Tiles - { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn3Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn3Tiles - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25 - { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1Tile - { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1Tile - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftTwistDownToUp - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightTwistDownToUp - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::leftTwistUpToDown - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::rightTwistUpToDown - { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::halfLoopUp - { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::halfLoopDown - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftCorkscrewUp - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightCorkscrewUp - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::leftCorkscrewDown - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::rightCorkscrewDown - { TrackGroup::flatToSteepSlope, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp60 - { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToFlat - { TrackGroup::flatToSteepSlope, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown60 - { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToFlat - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::towerBase - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::towerSection - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatCovered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25Covered - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60Covered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp25Covered - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToUp60Covered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToUp25Covered - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up25ToFlatCovered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25Covered - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60Covered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown25Covered - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToDown60Covered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToDown25Covered - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25ToFlatCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn5TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn5TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendLeftCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::sBendRightCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesCovered - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixUpSmall - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixUpSmall - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixDownSmall - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixDownSmall - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixUpLarge - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixUpLarge - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftHalfBankedHelixDownLarge - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightHalfBankedHelixDownLarge - { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileUp60 - { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileUp60 - { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileDown60 - { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileDown60 - { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::brakes - { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::booster - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::maze - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeUp - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeUp - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeDown - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeDown - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterHelixLargeUp - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterHelixLargeUp - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterHelixLargeDown - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterHelixLargeDown - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::up25LeftBanked - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::up25RightBanked - { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::waterfall - { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rapids - { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::onRidePhoto - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::down25LeftBanked - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::down25RightBanked - { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::watersplash - { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToUp60LongBase - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToFlatLongBase - { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::whirlpool - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToFlatLongBase - { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatToDown60LongBase - { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::cableLiftHill - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::reverseFreefallSlope - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall,TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::reverseFreefallVertical - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up90 - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down90 - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up60ToUp90 - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down90ToDown60 - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::up90ToUp60 - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down60ToDown90 - { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::brakeForDrop - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftEighthToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightEighthToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftEighthToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightEighthToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftEighthBankToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightEighthBankToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftEighthBankToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightEighthBankToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlat - { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp25 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp60 - { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToUp25 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToUp60 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp60ToUp25 - { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToFlat - { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown60 - { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToDown25 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToDown60 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown60ToDown25 - { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToFlat - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToUp60 - { TrackGroup::diagSlopeSteepUp, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagUp60ToFlat - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagFlatToDown60 - { TrackGroup::diagSlopeSteepDown, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown60ToFlat - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagFlatToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagFlatToRightBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankToFlat - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankToFlat - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankToUp25 - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankToUp25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToRightBank - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankToDown25 - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankToDown25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToRightBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBank - { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::logFlumeReverser - { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::spinningTunnel - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftBarrelRollUpToDown - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightBarrelRollUpToDown - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::leftBarrelRollDownToUp - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::rightBarrelRollDownToUp - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank - { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::poweredLift - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftLargeHalfLoopUp - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightLargeHalfLoopUp - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::leftLargeHalfLoopDown - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::rightLargeHalfLoopDown - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftFlyerTwistUp - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightFlyerTwistUp - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftFlyerTwistDown - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightFlyerTwistDown - {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::flyerHalfLoopUninvertedUp - {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::flyerHalfLoopInvertedDown - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftFlyerCorkscrewUp - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightFlyerCorkscrewUp - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // TrackElemType::leftFlyerCorkscrewDown - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // TrackElemType::rightFlyerCorkscrewDown - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::heartLineTransferUp - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::heartLineTransferDown - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftHeartLineRoll - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightHeartLineRoll - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleA - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleB - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleC - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleD - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::minigolfHoleE - { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop - { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::up90ToInvertedFlatQuarterLoop - { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::invertedFlatToDown90QuarterLoop - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftCurvedLiftHill - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightCurvedLiftHill - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftReverser - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightReverser - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::airThrustTopCap - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::airThrustVerticalDown - { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::airThrustVerticalDownToLevel - { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::blockBrakes - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::up25ToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::up25ToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedUp25ToUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedUp25ToUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::down25ToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::down25ToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedDown25ToDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedDown25ToDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedFlatToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedUp25ToRightBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedFlatToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::leftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::rightBankedDown25ToRightBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::flatToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::flatToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedUp25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedUp25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::flatToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::flatToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::leftBankedDown25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::rightBankedDown25ToFlat - { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileUp90 - { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileUp90 - { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::leftQuarterTurn1TileDown90 - { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rightQuarterTurn1TileDown90 - { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop - { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimFlatToDown90QuarterLoop - { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop - { TrackGroup::rotationControlToggle, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::rotationControlToggle - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x4A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack2x2 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack4x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack2x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x5 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x1A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x4B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack1x1B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, -40 }, // TrackElemType::flatTrack1x4C - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::flatTrack3x3 - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::leftLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::rightLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::leftLargeCorkscrewDown - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::rightLargeCorkscrewDown - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::leftMediumHalfLoopDown - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::rightMediumHalfLoopDown - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::leftZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::rightZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::leftZeroGRollDown - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::rightZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::leftLargeZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::rightLargeZeroGRollDown - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::flyerHalfLoopInvertedUp - { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::flyerHalfLoopUninvertedDown - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::leftEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::rightEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::leftEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::rightEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::leftEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::rightEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::leftEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::rightEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagUp25ToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagDown25ToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::diagFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::diagFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::diagLeftBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::diagRightBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::up25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::up25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::down25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::down25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::leftEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::rightEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::leftEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::rightEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::leftEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::rightEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::leftEighthBankToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::rightEighthBankToOrthogonalDown25 - { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagBrakes - { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagBlockBrakes - { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::down25Brakes - { TrackGroup::diagBooster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagBooster - { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::diagFlatToUp60LongBase, - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 48 }, // TrackElemType::diagUp60ToFlatLongBase, - { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, -32 }, // TrackElemType::diagFlatToDown60LongBase, - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, -24 }, // TrackElemType::diagDown60ToFlatLongBase, - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::leftEighthDiveLoopDownToDiag - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::rightEighthDiveLoopDownToDiag - { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::diagDown25 + { TrackGroup::straight, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flat + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::endStation + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::beginStation + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::middleStation + { TrackGroup::slope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25 + { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60 + { TrackGroup::slope, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp25 + { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToUp60 + { TrackGroup::slopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp25 + { TrackGroup::slope, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToFlat + { TrackGroup::slope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25 + { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60 + { TrackGroup::slope, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown25 + { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToDown60 + { TrackGroup::slopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown25 + { TrackGroup::slope, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToFlat + { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5Tiles + { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToFlat + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToFlat + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::bankedLeftQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::bankedRightQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToUp25 + { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToUp25 + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::up25ToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::up25ToRightBank + { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToDown25 + { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToDown25 + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::down25ToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::down25ToRightBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBank + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBank + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesDown25 + { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendLeft + { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendRight + { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, -48 }, // TrackElemType::leftVerticalLoop + { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, -48 }, // TrackElemType::rightVerticalLoop + { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3Tiles + { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3Tiles + { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3Tiles + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25 + { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1Tile + { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1Tile + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftTwistDownToUp + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightTwistDownToUp + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftTwistUpToDown + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightTwistUpToDown + { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::halfLoopUp + { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::halfLoopDown + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftCorkscrewUp + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightCorkscrewUp + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::leftCorkscrewDown + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::rightCorkscrewDown + { TrackGroup::flatToSteepSlope, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp60 + { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToFlat + { TrackGroup::flatToSteepSlope, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown60 + { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToFlat + { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::towerBase + { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::towerSection + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatCovered + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25Covered + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60Covered + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp25Covered + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToUp60Covered + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp25Covered + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToFlatCovered + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25Covered + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60Covered + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown25Covered + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToDown60Covered + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown25Covered + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToFlatCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendLeftCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendRightCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesCovered + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesCovered + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixUpSmall + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixUpSmall + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixDownSmall + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixDownSmall + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixUpLarge + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixUpLarge + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixDownLarge + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixDownLarge + { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileUp60 + { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileUp60 + { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileDown60 + { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileDown60 + { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::brakes + { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::booster + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::maze + { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeUp + { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeUp + { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeDown + { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeDown + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterHelixLargeUp + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterHelixLargeUp + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterHelixLargeDown + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterHelixLargeDown + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::up25LeftBanked + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::up25RightBanked + { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::waterfall + { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rapids + { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::onRidePhoto + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::down25LeftBanked + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::down25RightBanked + { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::watersplash + { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp60LongBase + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToFlatLongBase + { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::whirlpool + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToFlatLongBase + { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown60LongBase + { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::cableLiftHill + { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::reverseFreefallSlope + { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall,TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::reverseFreefallVertical + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up90 + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down90 + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp90 + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down90ToDown60 + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up90ToUp60 + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown90 + { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::brakeForDrop + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftEighthToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightEighthToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftEighthToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightEighthToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftEighthBankToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightEighthBankToDiag + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftEighthBankToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightEighthBankToOrthogonal + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlat + { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25 + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60 + { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToUp25 + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToUp60 + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60ToUp25 + { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToFlat + { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25 + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60 + { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToDown25 + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToDown60 + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60ToDown25 + { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToFlat + { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToUp60 + { TrackGroup::diagSlopeSteepUp, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60ToFlat + { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToDown60 + { TrackGroup::diagSlopeSteepDown, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60ToFlat + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToFlat + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToFlat + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToUp25 + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToUp25 + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToRightBank + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToDown25 + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToDown25 + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToRightBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBank + { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::logFlumeReverser + { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::spinningTunnel + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftBarrelRollUpToDown + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightBarrelRollUpToDown + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftBarrelRollDownToUp + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightBarrelRollDownToUp + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank + { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::poweredLift + {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftLargeHalfLoopUp + {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightLargeHalfLoopUp + {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftLargeHalfLoopDown + {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightLargeHalfLoopDown + {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerTwistUp + {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerTwistUp + {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerTwistDown + {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerTwistDown + {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::flyerHalfLoopUninvertedUp + {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::flyerHalfLoopInvertedDown + {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerCorkscrewUp + {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerCorkscrewUp + {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -32 }, // TrackElemType::leftFlyerCorkscrewDown + {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -32 }, // TrackElemType::rightFlyerCorkscrewDown + {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::heartLineTransferUp + {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::heartLineTransferDown + {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftHeartLineRoll + {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightHeartLineRoll + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleA + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleB + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleC + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleD + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleE + { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop + { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::up90ToInvertedFlatQuarterLoop + { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::invertedFlatToDown90QuarterLoop + { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftCurvedLiftHill + { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightCurvedLiftHill + { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftReverser + { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightReverser + { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustTopCap + { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustVerticalDown + { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustVerticalDownToLevel + { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::blockBrakes + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileDown25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileUp25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileDown25 + { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::up25ToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::up25ToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::down25ToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::down25ToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedFlatToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToRightBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedFlatToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToRightBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToFlat + { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileUp90 + { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileUp90 + { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileDown90 + { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileDown90 + { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop + { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimFlatToDown90QuarterLoop + { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop + { TrackGroup::rotationControlToggle, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rotationControlToggle + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x4A + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack2x2 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack4x4 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack2x4 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x5 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x1A + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x4B + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x1B + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, -40 }, // TrackElemType::flatTrack1x4C + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack3x3 + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 32 }, // TrackElemType::leftLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 32 }, // TrackElemType::rightLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::leftLargeCorkscrewDown + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::rightLargeCorkscrewDown + { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftMediumHalfLoopDown + { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightMediumHalfLoopDown + { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftZeroGRollDown + { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftLargeZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightLargeZeroGRollDown + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::flyerHalfLoopInvertedUp + { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::flyerHalfLoopUninvertedDown + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::leftEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::rightEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::leftEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::rightEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::leftEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::rightEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::leftEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::rightEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::up25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::up25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::down25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::down25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 16 }, // TrackElemType::leftEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 16 }, // TrackElemType::rightEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, -16 }, // TrackElemType::leftEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, -16 }, // TrackElemType::rightEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 16 }, // TrackElemType::leftEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 16 }, // TrackElemType::rightEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, -16 }, // TrackElemType::leftEighthBankToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, -16 }, // TrackElemType::rightEighthBankToOrthogonalDown25 + { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBrakes + { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBlockBrakes + { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25Brakes + { TrackGroup::diagBooster, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBooster + { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::diagFlatToUp60LongBase, + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 48 }, // TrackElemType::diagUp60ToFlatLongBase, + { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, -32 }, // TrackElemType::diagFlatToDown60LongBase, + { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, -24 }, // TrackElemType::diagDown60ToFlatLongBase, + { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 56 }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 56 }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -56 }, // TrackElemType::leftEighthDiveLoopDownToDiag + { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -56 }, // TrackElemType::rightEighthDiveLoopDownToDiag + { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25 }; static_assert(std::size(kTrackDefinitions) == EnumValue(TrackElemType::count)); diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index e3201a7f38a1..1db7d9ba4c12 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -545,10 +545,10 @@ void ScriptEngine::RegisterConstants() .Constant("Up90", EnumValue(TrackPitch::Up90)) .Constant("Down90", EnumValue(TrackPitch::Down90)); builder.Namespace("TrackBanking") - .Constant("None", EnumValue(TrackRoll::None)) - .Constant("BankLeft", EnumValue(TrackRoll::Left)) - .Constant("BankRight", EnumValue(TrackRoll::Right)) - .Constant("UpsideDown", EnumValue(TrackRoll::UpsideDown)); + .Constant("None", EnumValue(TrackRoll::none)) + .Constant("BankLeft", EnumValue(TrackRoll::left)) + .Constant("BankRight", EnumValue(TrackRoll::right)) + .Constant("UpsideDown", EnumValue(TrackRoll::upsideDown)); } void ScriptEngine::RefreshPlugins() From 366441d245d8406833cbec6439b7c85231acf508 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 19:53:25 +0100 Subject: [PATCH 151/222] Rename members of TrackPitch --- src/openrct2-ui/windows/RideConstruction.cpp | 212 ++-- src/openrct2/ride/RideConstruction.cpp | 10 +- src/openrct2/ride/Track.h | 20 +- src/openrct2/ride/TrackData.cpp | 1072 +++++++++--------- src/openrct2/scripting/ScriptEngine.cpp | 14 +- 5 files changed, 664 insertions(+), 664 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 57e46a8aafe6..7efb2573bc3d 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -262,7 +262,7 @@ namespace OpenRCT2::Ui::Windows _currentSeatRotationAngle = 4; _currentlySelectedTrack = currentRide->getRideTypeDescriptor().StartTrackPiece; - _currentTrackPitchEnd = TrackPitch::None; + _currentTrackPitchEnd = TrackPitch::none; _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; _currentTrackAlternative.clearAll(); @@ -271,7 +271,7 @@ namespace OpenRCT2::Ui::Windows _currentTrackAlternative.set(AlternativeTrackFlag::inverted); _previousTrackRollEnd = TrackRoll::none; - _previousTrackPitchEnd = TrackPitch::None; + _previousTrackPitchEnd = TrackPitch::none; _currentTrackPieceDirection = 0; _rideConstructionState = RideConstructionState::Place; @@ -367,11 +367,11 @@ namespace OpenRCT2::Ui::Windows } // Disable large curves if the start or end of the track is sloped and large sloped curves are not available - if ((_previousTrackPitchEnd != TrackPitch::None || _currentTrackPitchEnd != TrackPitch::None)) + if ((_previousTrackPitchEnd != TrackPitch::none || _currentTrackPitchEnd != TrackPitch::none)) { if (!IsTrackEnabled(TrackGroup::slopeCurveLarge) - || !(_previousTrackPitchEnd == TrackPitch::Up25 || _previousTrackPitchEnd == TrackPitch::Down25) - || !(_currentTrackPitchEnd == TrackPitch::Up25 || _currentTrackPitchEnd == TrackPitch::Down25)) + || !(_previousTrackPitchEnd == TrackPitch::up25 || _previousTrackPitchEnd == TrackPitch::down25) + || !(_currentTrackPitchEnd == TrackPitch::up25 || _currentTrackPitchEnd == TrackPitch::down25)) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_RIGHT_CURVE_LARGE); } @@ -379,7 +379,7 @@ namespace OpenRCT2::Ui::Windows if (IsTrackEnabled(TrackGroup::slopeCurve) && IsTrackEnabled(TrackGroup::curveVerySmall)) { // Disable small curves if the start or end of the track is sloped. - if (_previousTrackPitchEnd != TrackPitch::None || _currentTrackPitchEnd != TrackPitch::None) + if (_previousTrackPitchEnd != TrackPitch::none || _currentTrackPitchEnd != TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_VERY_SMALL) | (1uLL << WIDX_RIGHT_CURVE_VERY_SMALL); } @@ -389,9 +389,9 @@ namespace OpenRCT2::Ui::Windows if (IsTrackEnabled(TrackGroup::curveVertical)) { // Disable all curves only on vertical track - if (_previousTrackPitchEnd != TrackPitch::Up90 || _currentTrackPitchEnd != TrackPitch::Up90) + if (_previousTrackPitchEnd != TrackPitch::up90 || _currentTrackPitchEnd != TrackPitch::up90) { - if (_previousTrackPitchEnd != TrackPitch::Down90 || _currentTrackPitchEnd != TrackPitch::Down90) + if (_previousTrackPitchEnd != TrackPitch::down90 || _currentTrackPitchEnd != TrackPitch::down90) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_VERY_SMALL) | (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_SMALL) @@ -402,7 +402,7 @@ namespace OpenRCT2::Ui::Windows else { // Disable all curves on sloped track - if (_previousTrackPitchEnd != TrackPitch::None || _currentTrackPitchEnd != TrackPitch::None) + if (_previousTrackPitchEnd != TrackPitch::none || _currentTrackPitchEnd != TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_VERY_SMALL) | (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_SMALL) @@ -417,8 +417,8 @@ namespace OpenRCT2::Ui::Windows | (1uLL << WIDX_BANK_RIGHT); } // Disable banking if the start track is steep and the end of the track becomes flat. - if ((_previousTrackPitchEnd == TrackPitch::Down60 || _previousTrackPitchEnd == TrackPitch::Up60) - && _currentTrackPitchEnd == TrackPitch::None) + if ((_previousTrackPitchEnd == TrackPitch::down60 || _previousTrackPitchEnd == TrackPitch::up60) + && _currentTrackPitchEnd == TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } @@ -437,7 +437,7 @@ namespace OpenRCT2::Ui::Windows // diagonals if (!IsTrackEnabled(TrackGroup::slopeCurveLarge) && TrackPieceDirectionIsDiagonal(_currentTrackPieceDirection)) { - if (_currentTrackPitchEnd != TrackPitch::None) + if (_currentTrackPitchEnd != TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } @@ -450,11 +450,11 @@ namespace OpenRCT2::Ui::Windows && !getGameState().cheats.enableAllDrawableTrackPieces) { // Disable lift hill toggle and banking if current track piece is uphill - if (_previousTrackPitchEnd == TrackPitch::Up25 || _previousTrackPitchEnd == TrackPitch::Up60 - || _currentTrackPitchEnd == TrackPitch::Up25 || _currentTrackPitchEnd == TrackPitch::Up60) + if (_previousTrackPitchEnd == TrackPitch::up25 || _previousTrackPitchEnd == TrackPitch::up60 + || _currentTrackPitchEnd == TrackPitch::up25 || _currentTrackPitchEnd == TrackPitch::up60) newDisabledWidgets |= 1uLL << WIDX_CHAIN_LIFT | (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); // Disable upward slope if current track piece is not flat - if ((_previousTrackPitchEnd != TrackPitch::None || _previousTrackRollEnd != TrackRoll::none) + if ((_previousTrackPitchEnd != TrackPitch::none || _previousTrackRollEnd != TrackRoll::none) && !(_currentTrackHasLiftHill)) newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP); } @@ -510,8 +510,8 @@ namespace OpenRCT2::Ui::Windows { switch (_currentTrackPitchEnd) { - case TrackPitch::Up60: - case TrackPitch::Down60: + case TrackPitch::up60: + case TrackPitch::down60: newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_VERY_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_VERY_SMALL); if (!IsTrackEnabled(TrackGroup::slopeCurveSteep)) @@ -519,8 +519,8 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE_SMALL); } break; - case TrackPitch::Up90: - case TrackPitch::Down90: + case TrackPitch::up90: + case TrackPitch::down90: newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_VERY_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_VERY_SMALL); if (!IsTrackEnabled(TrackGroup::curveVertical)) @@ -544,7 +544,7 @@ namespace OpenRCT2::Ui::Windows { switch (_previousTrackPitchEnd) { - case TrackPitch::None: + case TrackPitch::none: if (!IsTrackEnabled(TrackGroup::diagSlope)) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_DOWN); @@ -556,36 +556,36 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP); } break; - case TrackPitch::Down25: + case TrackPitch::down25: newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_UP_STEEP); if (!IsTrackEnabled(TrackGroup::diagSlopeSteepDown)) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP); } break; - case TrackPitch::Down60: + case TrackPitch::down60: newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_UP_STEEP); if (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::diagSlopeSteepLong)) { newDisabledWidgets |= (1uLL << WIDX_LEVEL); } break; - case TrackPitch::Up25: + case TrackPitch::up25: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_DOWN); if (!IsTrackEnabled(TrackGroup::diagSlopeSteepUp)) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP_STEEP); } break; - case TrackPitch::Up60: + case TrackPitch::up60: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_DOWN); if (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::diagSlopeSteepLong)) { newDisabledWidgets |= (1uLL << WIDX_LEVEL); } break; - case TrackPitch::Down90: - case TrackPitch::Up90: + case TrackPitch::down90: + case TrackPitch::up90: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP); break; } @@ -594,61 +594,61 @@ namespace OpenRCT2::Ui::Windows { switch (_previousTrackPitchEnd) { - case TrackPitch::None: + case TrackPitch::none: if (_currentlySelectedTrack != TrackCurve::none || (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::slopeSteepLong))) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP); } break; - case TrackPitch::Down25: + case TrackPitch::down25: newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_UP_STEEP); if (!IsTrackEnabled(TrackGroup::slopeSteepDown)) { newDisabledWidgets |= 1uLL << WIDX_SLOPE_DOWN_STEEP; } break; - case TrackPitch::Down60: + case TrackPitch::down60: newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_UP_STEEP); if (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::slopeSteepLong)) { newDisabledWidgets |= (1uLL << WIDX_LEVEL); } break; - case TrackPitch::Up25: + case TrackPitch::up25: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_DOWN); if (!IsTrackEnabled(TrackGroup::slopeSteepUp)) { newDisabledWidgets |= 1uLL << WIDX_SLOPE_UP_STEEP; } break; - case TrackPitch::Up60: + case TrackPitch::up60: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_DOWN); if (!IsTrackEnabled(TrackGroup::flatToSteepSlope) && !IsTrackEnabled(TrackGroup::slopeSteepLong)) { newDisabledWidgets |= (1uLL << WIDX_LEVEL); } break; - case TrackPitch::Down90: + case TrackPitch::down90: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP) | (1uLL << WIDX_SLOPE_UP_STEEP); break; - case TrackPitch::Up90: + case TrackPitch::up90: newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP); break; } if (IsTrackEnabled(TrackGroup::slopeVertical)) { - if (_previousTrackPitchEnd == TrackPitch::Up60 && _currentTrackPieceDirection < 4) + if (_previousTrackPitchEnd == TrackPitch::up60 && _currentTrackPieceDirection < 4) { newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_UP_VERTICAL); } - if (_previousTrackPitchEnd == TrackPitch::Up90) + if (_previousTrackPitchEnd == TrackPitch::up90) { newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_UP_VERTICAL); } - if (_previousTrackPitchEnd == TrackPitch::Down60 && _currentTrackPieceDirection < 4) + if (_previousTrackPitchEnd == TrackPitch::down60 && _currentTrackPieceDirection < 4) { newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN_VERTICAL); } @@ -657,7 +657,7 @@ namespace OpenRCT2::Ui::Windows if (TrackPieceDirectionIsDiagonal(_currentTrackPieceDirection) && (_currentlySelectedTrack == TrackCurve::leftLarge || _currentlySelectedTrack == TrackCurve::rightLarge) - && (_previousTrackPitchEnd == TrackPitch::Up25 || _previousTrackPitchEnd == TrackPitch::Down25) + && (_previousTrackPitchEnd == TrackPitch::up25 || _previousTrackPitchEnd == TrackPitch::down25) && !IsTrackEnabled(TrackGroup::diagSlope)) { newDisabledWidgets |= 1uLL << WIDX_STRAIGHT; @@ -679,13 +679,13 @@ namespace OpenRCT2::Ui::Windows | (1uLL << WIDX_RIGHT_CURVE_LARGE) | (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE); } - if (_currentTrackPitchEnd != TrackPitch::None) + if (_currentTrackPitchEnd != TrackPitch::none) { if (IsTrackEnabled(TrackGroup::slopeRollBanking)) { - if (_previousTrackPitchEnd == TrackPitch::None) + if (_previousTrackPitchEnd == TrackPitch::none) { - if (_currentTrackPitchEnd != TrackPitch::Up25 && _currentTrackPitchEnd != TrackPitch::Down25) + if (_currentTrackPitchEnd != TrackPitch::up25 && _currentTrackPitchEnd != TrackPitch::down25) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } @@ -698,7 +698,7 @@ namespace OpenRCT2::Ui::Windows } else { - if (_currentTrackPitchEnd != TrackPitch::Up25 && _currentTrackPitchEnd != TrackPitch::Down25) + if (_currentTrackPitchEnd != TrackPitch::up25 && _currentTrackPitchEnd != TrackPitch::down25) { newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } @@ -721,32 +721,32 @@ namespace OpenRCT2::Ui::Windows { newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } - if (_currentTrackPitchEnd == TrackPitch::None) + if (_currentTrackPitchEnd == TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } - if (_currentTrackPitchEnd == TrackPitch::Up60) + if (_currentTrackPitchEnd == TrackPitch::up60) { newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } - if (_currentTrackPitchEnd == TrackPitch::Down60) + if (_currentTrackPitchEnd == TrackPitch::down60) { newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } // Ensures that you can build an "unbanking turn", but not select a turn that start banked and // turns to level (as that does not exist). - if (_currentTrackRollEnd != TrackRoll::none && _currentTrackPitchEnd != TrackPitch::None) + if (_currentTrackRollEnd != TrackRoll::none && _currentTrackPitchEnd != TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_LEVEL); } } - if (_currentTrackPitchEnd == TrackPitch::Up90 || _previousTrackPitchEnd == TrackPitch::Up90) + if (_currentTrackPitchEnd == TrackPitch::up90 || _previousTrackPitchEnd == TrackPitch::up90) { newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } if (!IsTrackEnabled(TrackGroup::liftHillSteep)) { - if (_previousTrackPitchEnd == TrackPitch::Up60 || _currentTrackPitchEnd == TrackPitch::Up60) + if (_previousTrackPitchEnd == TrackPitch::up60 || _currentTrackPitchEnd == TrackPitch::up60) { newDisabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } @@ -759,13 +759,13 @@ namespace OpenRCT2::Ui::Windows } if (_currentlySelectedTrack != TrackCurve::none) { - if (_currentTrackPitchEnd == TrackPitch::None) + if (_currentTrackPitchEnd == TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_SLOPE_UP); } if (_currentTrackPitchEnd == _previousTrackPitchEnd) { - if (_currentTrackPitchEnd == TrackPitch::Up25) + if (_currentTrackPitchEnd == TrackPitch::up25) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP_STEEP); if (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right @@ -775,7 +775,7 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_LEVEL); } } - if (_currentTrackPitchEnd == TrackPitch::Down25) + if (_currentTrackPitchEnd == TrackPitch::down25) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP); if (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right @@ -804,17 +804,17 @@ namespace OpenRCT2::Ui::Windows newDisabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); newDisabledWidgets &= ~(1uLL << WIDX_BANK_STRAIGHT); } - if (_currentTrackPitchEnd == TrackPitch::None) + if (_currentTrackPitchEnd == TrackPitch::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_SLOPE_UP); newDisabledWidgets &= ~(1uLL << WIDX_LEVEL); } - if (_currentTrackPitchEnd == TrackPitch::Up25) + if (_currentTrackPitchEnd == TrackPitch::up25) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_LEVEL); newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_UP); } - if (_currentTrackPitchEnd == TrackPitch::Down25) + if (_currentTrackPitchEnd == TrackPitch::down25) { newDisabledWidgets |= (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP); newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN); @@ -829,17 +829,17 @@ namespace OpenRCT2::Ui::Windows } } } - if (_currentlySelectedTrack != TrackCurve::none && _currentTrackPitchEnd == TrackPitch::Up60) + if (_currentlySelectedTrack != TrackCurve::none && _currentTrackPitchEnd == TrackPitch::up60) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_UP); } - if (_currentlySelectedTrack != TrackCurve::none && _currentTrackPitchEnd == TrackPitch::Down60) + if (_currentlySelectedTrack != TrackCurve::none && _currentTrackPitchEnd == TrackPitch::down60) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN); } if ((_currentTrackHasLiftHill) && !getGameState().cheats.enableChainLiftOnAllTrack) { - if (_currentTrackPitchEnd != TrackPitch::None && !IsTrackEnabled(TrackGroup::liftHillCurve)) + if (_currentTrackPitchEnd != TrackPitch::none && !IsTrackEnabled(TrackGroup::liftHillCurve)) { newDisabledWidgets |= (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE) @@ -853,15 +853,15 @@ namespace OpenRCT2::Ui::Windows } } } - if (_previousTrackPitchEnd == TrackPitch::Up60 && _currentlySelectedTrack != TrackCurve::none) + if (_previousTrackPitchEnd == TrackPitch::up60 && _currentlySelectedTrack != TrackCurve::none) { newDisabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_LEVEL); } - if (_previousTrackPitchEnd == TrackPitch::Down60 && _currentlySelectedTrack != TrackCurve::none) + if (_previousTrackPitchEnd == TrackPitch::down60 && _currentlySelectedTrack != TrackCurve::none) { newDisabledWidgets |= (1uLL << WIDX_LEVEL) | (1uLL << WIDX_SLOPE_UP_STEEP); } - if (_currentTrackPitchEnd == TrackPitch::Up90 || _previousTrackPitchEnd == TrackPitch::Up90) + if (_currentTrackPitchEnd == TrackPitch::up90 || _previousTrackPitchEnd == TrackPitch::up90) { if (_currentlySelectedTrack != TrackCurve::none) { @@ -875,7 +875,7 @@ namespace OpenRCT2::Ui::Windows | (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE); } } - else if (_currentTrackPitchEnd == TrackPitch::Down90 || _previousTrackPitchEnd == TrackPitch::Down90) + else if (_currentTrackPitchEnd == TrackPitch::down90 || _previousTrackPitchEnd == TrackPitch::down90) { if (_currentlySelectedTrack != TrackCurve::none) { @@ -890,7 +890,7 @@ namespace OpenRCT2::Ui::Windows } } // If the previous track is flat and the next track is flat, attempt to show buttons for helixes - if (_currentTrackPitchEnd == TrackPitch::None && _currentTrackPitchEnd == _previousTrackPitchEnd) + if (_currentTrackPitchEnd == TrackPitch::none && _currentTrackPitchEnd == _previousTrackPitchEnd) { // If the bank is none, attempt to show unbanked quarter helixes if (_currentTrackRollEnd == TrackRoll::none @@ -930,7 +930,7 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall) { - if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::none + if (_currentTrackPitchEnd == TrackPitch::none && _previousTrackRollEnd != TrackRoll::none && (!currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::upInclineRequiresLift) || getGameState().cheats.enableAllDrawableTrackPieces)) { @@ -942,7 +942,7 @@ namespace OpenRCT2::Ui::Windows { if (_currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall) { - if (_currentTrackPitchEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::none) + if (_currentTrackPitchEnd == TrackPitch::none && _previousTrackRollEnd != TrackRoll::none) { newDisabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN); } @@ -1205,7 +1205,7 @@ namespace OpenRCT2::Ui::Windows break; case WIDX_SLOPE_DOWN_VERTICAL: RideConstructionInvalidateCurrentTrack(); - UpdateLiftHillSelected(TrackPitch::Down90); + UpdateLiftHillSelected(TrackPitch::down90); break; case WIDX_SLOPE_DOWN_STEEP: RideConstructionInvalidateCurrentTrack(); @@ -1279,7 +1279,7 @@ namespace OpenRCT2::Ui::Windows } } - UpdateLiftHillSelected(TrackPitch::Down60); + UpdateLiftHillSelected(TrackPitch::down60); break; case WIDX_SLOPE_DOWN: RideConstructionInvalidateCurrentTrack(); @@ -1287,11 +1287,11 @@ namespace OpenRCT2::Ui::Windows { _currentTrackRollEnd = TrackRoll::none; } - UpdateLiftHillSelected(TrackPitch::Down25); + UpdateLiftHillSelected(TrackPitch::down25); break; case WIDX_LEVEL: RideConstructionInvalidateCurrentTrack(); - if (_rideConstructionState == RideConstructionState::Front && _previousTrackPitchEnd == TrackPitch::Down25) + if (_rideConstructionState == RideConstructionState::Front && _previousTrackPitchEnd == TrackPitch::down25) { if (_currentlySelectedTrack == TrackCurve::leftSmall) { @@ -1303,7 +1303,7 @@ namespace OpenRCT2::Ui::Windows } } else if ( - _rideConstructionState == RideConstructionState::Back && _previousTrackPitchEnd == TrackPitch::Up25) + _rideConstructionState == RideConstructionState::Back && _previousTrackPitchEnd == TrackPitch::up25) { if (_currentlySelectedTrack == TrackCurve::leftSmall) { @@ -1314,7 +1314,7 @@ namespace OpenRCT2::Ui::Windows _currentTrackRollEnd = TrackRoll::right; } } - UpdateLiftHillSelected(TrackPitch::None); + UpdateLiftHillSelected(TrackPitch::none); break; case WIDX_SLOPE_UP: RideConstructionInvalidateCurrentTrack(); @@ -1333,7 +1333,7 @@ namespace OpenRCT2::Ui::Windows } else { - UpdateLiftHillSelected(TrackPitch::Up25); + UpdateLiftHillSelected(TrackPitch::up25); } break; case WIDX_SLOPE_UP_STEEP: @@ -1408,11 +1408,11 @@ namespace OpenRCT2::Ui::Windows } } - UpdateLiftHillSelected(TrackPitch::Up60); + UpdateLiftHillSelected(TrackPitch::up60); break; case WIDX_SLOPE_UP_VERTICAL: RideConstructionInvalidateCurrentTrack(); - UpdateLiftHillSelected(TrackPitch::Up90); + UpdateLiftHillSelected(TrackPitch::up90); break; case WIDX_CHAIN_LIFT: RideConstructionInvalidateCurrentTrack(); @@ -1552,7 +1552,7 @@ namespace OpenRCT2::Ui::Windows case TrackElemType::endStation: case TrackElemType::sBendLeft: case TrackElemType::sBendRight: - _currentTrackPitchEnd = TrackPitch::None; + _currentTrackPitchEnd = TrackPitch::none; break; case TrackElemType::leftVerticalLoop: case TrackElemType::rightVerticalLoop: @@ -1836,7 +1836,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_SLOPE_UP].type = WidgetType::flatBtn; } if ((IsTrackEnabled(TrackGroup::helixDownBankedHalf) || IsTrackEnabled(TrackGroup::helixUpBankedHalf)) - && _currentTrackRollEnd != TrackRoll::none && _currentTrackPitchEnd == TrackPitch::None) + && _currentTrackRollEnd != TrackRoll::none && _currentTrackPitchEnd == TrackPitch::none) { const bool hasHelixEquivalent = _currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right || _currentlySelectedTrack == TrackCurve::leftSmall @@ -1861,7 +1861,7 @@ namespace OpenRCT2::Ui::Windows const auto& gameState = getGameState(); if (currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::upInclineRequiresLift) - && (_currentTrackPitchEnd == TrackPitch::Up25 || _currentTrackPitchEnd == TrackPitch::Up60) + && (_currentTrackPitchEnd == TrackPitch::up25 || _currentTrackPitchEnd == TrackPitch::up60) && !gameState.cheats.enableAllDrawableTrackPieces) { _currentTrackHasLiftHill = true; @@ -1890,18 +1890,18 @@ namespace OpenRCT2::Ui::Windows if (IsTrackEnabled(TrackGroup::slopeVertical) && !TrackPieceDirectionIsDiagonal(_currentTrackPieceDirection)) { - if (_previousTrackPitchEnd == TrackPitch::Up60 || _previousTrackPitchEnd == TrackPitch::Up90) + if (_previousTrackPitchEnd == TrackPitch::up60 || _previousTrackPitchEnd == TrackPitch::up90) { widgets[WIDX_SLOPE_UP_VERTICAL].type = WidgetType::flatBtn; } - else if (_previousTrackPitchEnd == TrackPitch::Down60 || _previousTrackPitchEnd == TrackPitch::Down90) + else if (_previousTrackPitchEnd == TrackPitch::down60 || _previousTrackPitchEnd == TrackPitch::down90) { widgets[WIDX_SLOPE_DOWN_VERTICAL].type = WidgetType::flatBtn; } } if ((IsTrackEnabled(TrackGroup::helixDownUnbankedQuarter) || IsTrackEnabled(TrackGroup::helixUpUnbankedQuarter)) - && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd == TrackRoll::none + && _currentTrackPitchEnd == TrackPitch::none && _currentTrackRollEnd == TrackRoll::none && (_currentlySelectedTrack == TrackCurve::left || _currentlySelectedTrack == TrackCurve::right)) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); @@ -1933,7 +1933,7 @@ namespace OpenRCT2::Ui::Windows || _currentlySelectedTrack == TrackCurve::right || _currentlySelectedTrack == TrackCurve::leftSmall || _currentlySelectedTrack == TrackCurve::rightSmall; - if (hasHelixEquivalent && _currentTrackPitchEnd == TrackPitch::None && _currentTrackRollEnd != TrackRoll::none) + if (hasHelixEquivalent && _currentTrackPitchEnd == TrackPitch::none && _currentTrackRollEnd != TrackRoll::none) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); widgets[WIDX_SLOPE_DOWN_STEEP].tooltip = STR_RIDE_CONSTRUCTION_HELIX_DOWN_TIP; @@ -2166,22 +2166,22 @@ namespace OpenRCT2::Ui::Windows switch (_currentTrackPitchEnd) { - case TrackPitch::Down90: + case TrackPitch::down90: widgetIndex = WIDX_SLOPE_DOWN_VERTICAL; break; - case TrackPitch::Down60: + case TrackPitch::down60: widgetIndex = WIDX_SLOPE_DOWN_STEEP; break; - case TrackPitch::Down25: + case TrackPitch::down25: widgetIndex = WIDX_SLOPE_DOWN; break; - case TrackPitch::Up25: + case TrackPitch::up25: widgetIndex = WIDX_SLOPE_UP; break; - case TrackPitch::Up60: + case TrackPitch::up60: widgetIndex = WIDX_SLOPE_UP_STEEP; break; - case TrackPitch::Up90: + case TrackPitch::up90: widgetIndex = WIDX_SLOPE_UP_VERTICAL; break; default: @@ -2369,7 +2369,7 @@ namespace OpenRCT2::Ui::Windows const bool helixSelected = (_currentlySelectedTrack.isTrackType) && TrackTypeIsHelix(_currentlySelectedTrack.trackType); - if (helixSelected || (_currentTrackPitchEnd != TrackPitch::None)) + if (helixSelected || (_currentTrackPitchEnd != TrackPitch::none)) { ViewportSetVisibility(ViewportVisibility::trackHeights); } @@ -2554,9 +2554,9 @@ namespace OpenRCT2::Ui::Windows { switch (slope) { - case TrackPitch::None: - case TrackPitch::Up25: - case TrackPitch::Up60: + case TrackPitch::none: + case TrackPitch::up25: + case TrackPitch::up60: break; default: _currentTrackHasLiftHill = false; @@ -4336,20 +4336,20 @@ namespace OpenRCT2::Ui::Windows switch (_currentTrackPitchEnd) { - case TrackPitch::Down60: + case TrackPitch::down60: if (IsTrackEnabled(TrackGroup::slopeVertical) && !widgetIsDisabled(*w, WIDX_SLOPE_DOWN_VERTICAL) && w->widgets[WIDX_SLOPE_DOWN_VERTICAL].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_DOWN_VERTICAL); } break; - case TrackPitch::Down25: + case TrackPitch::down25: if (!widgetIsDisabled(*w, WIDX_SLOPE_DOWN_STEEP) && w->widgets[WIDX_SLOPE_DOWN_STEEP].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_DOWN_STEEP); } break; - case TrackPitch::None: + case TrackPitch::none: if (!widgetIsDisabled(*w, WIDX_SLOPE_DOWN) && w->widgets[WIDX_SLOPE_DOWN].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_DOWN); @@ -4368,7 +4368,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackPitch::Up25: + case TrackPitch::up25: if (!widgetIsDisabled(*w, WIDX_LEVEL) && w->widgets[WIDX_LEVEL].type != WidgetType::empty) { w->onMouseDown(WIDX_LEVEL); @@ -4387,7 +4387,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackPitch::Up60: + case TrackPitch::up60: if (!widgetIsDisabled(*w, WIDX_SLOPE_UP) && w->widgets[WIDX_SLOPE_UP].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_UP); @@ -4414,7 +4414,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackPitch::Up90: + case TrackPitch::up90: if (IsTrackEnabled(TrackGroup::slopeVertical) && !widgetIsDisabled(*w, WIDX_SLOPE_UP_STEEP) && w->widgets[WIDX_SLOPE_UP_VERTICAL].type != WidgetType::empty) { @@ -4437,20 +4437,20 @@ namespace OpenRCT2::Ui::Windows switch (_currentTrackPitchEnd) { - case TrackPitch::Up60: + case TrackPitch::up60: if (IsTrackEnabled(TrackGroup::slopeVertical) && !widgetIsDisabled(*w, WIDX_SLOPE_UP_VERTICAL) && w->widgets[WIDX_SLOPE_UP_VERTICAL].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_UP_VERTICAL); } break; - case TrackPitch::Up25: + case TrackPitch::up25: if (!widgetIsDisabled(*w, WIDX_SLOPE_UP_STEEP) && w->widgets[WIDX_SLOPE_UP_STEEP].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_UP_STEEP); } break; - case TrackPitch::None: + case TrackPitch::none: if (!widgetIsDisabled(*w, WIDX_SLOPE_UP) && w->widgets[WIDX_SLOPE_UP].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_UP); @@ -4469,7 +4469,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackPitch::Down25: + case TrackPitch::down25: if (!widgetIsDisabled(*w, WIDX_LEVEL) && w->widgets[WIDX_LEVEL].type != WidgetType::empty) { w->onMouseDown(WIDX_LEVEL); @@ -4488,7 +4488,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackPitch::Down60: + case TrackPitch::down60: if (!widgetIsDisabled(*w, WIDX_SLOPE_DOWN) && w->widgets[WIDX_SLOPE_DOWN].type != WidgetType::empty) { w->onMouseDown(WIDX_SLOPE_DOWN); @@ -4515,7 +4515,7 @@ namespace OpenRCT2::Ui::Windows return; } break; - case TrackPitch::Down90: + case TrackPitch::down90: if (IsTrackEnabled(TrackGroup::slopeVertical) && !widgetIsDisabled(*w, WIDX_SLOPE_DOWN_STEEP) && w->widgets[WIDX_SLOPE_DOWN_STEEP].type != WidgetType::empty) { @@ -4768,7 +4768,7 @@ namespace OpenRCT2::Ui::Windows _unkF440C5 = { trackPos, static_cast(trackDirection) }; _currentTrackSelectionFlags.set(TrackSelectionFlag::track); ViewportSetVisibility(ViewportVisibility::undergroundViewOff); - if (_currentTrackPitchEnd != TrackPitch::None) + if (_currentTrackPitchEnd != TrackPitch::none) ViewportSetVisibility(ViewportVisibility::trackHeights); return result.cost; @@ -4803,7 +4803,7 @@ namespace OpenRCT2::Ui::Windows const auto visiblity = (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) ? ViewportVisibility::undergroundViewOn : ViewportVisibility::undergroundViewOff; ViewportSetVisibility(visiblity); - if (_currentTrackPitchEnd != TrackPitch::None) + if (_currentTrackPitchEnd != TrackPitch::none) ViewportSetVisibility(ViewportVisibility::trackHeights); if (!gMapSelectFlags.has(MapSelectFlag::enable)) @@ -4861,7 +4861,7 @@ namespace OpenRCT2::Ui::Windows case TrackElemType::endStation: case TrackElemType::sBendLeft: case TrackElemType::sBendRight: - if (startSlope != TrackPitch::None || endSlope != TrackPitch::None) + if (startSlope != TrackPitch::none || endSlope != TrackPitch::none) { return std::make_pair(false, OpenRCT2::TrackElemType::flat); } @@ -4882,14 +4882,14 @@ namespace OpenRCT2::Ui::Windows if (_rideConstructionState == RideConstructionState::Back) { - if (endSlope != TrackPitch::Down25) + if (endSlope != TrackPitch::down25) { return std::make_pair(false, OpenRCT2::TrackElemType::flat); } } else { - if (startSlope != TrackPitch::Up25) + if (startSlope != TrackPitch::up25) { return std::make_pair(false, OpenRCT2::TrackElemType::flat); } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index fe530f7f45ee..1cb93b6a8039 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -556,7 +556,7 @@ static void ride_construction_reset_current_piece() if (rtd.HasFlag(RtdFlag::hasTrack) || ride->numStations == 0) { _currentlySelectedTrack = rtd.StartTrackPiece; - _currentTrackPitchEnd = TrackPitch::None; + _currentTrackPitchEnd = TrackPitch::none; _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; _currentTrackAlternative.clearAll(); @@ -564,7 +564,7 @@ static void ride_construction_reset_current_piece() { _currentTrackAlternative.set(AlternativeTrackFlag::inverted); } - _previousTrackPitchEnd = TrackPitch::None; + _previousTrackPitchEnd = TrackPitch::none; _previousTrackRollEnd = TrackRoll::none; } else @@ -649,7 +649,7 @@ void RideConstructionSetDefaultNextPiece() _currentTrackPitchEnd = slope; _previousTrackPitchEnd = slope; _currentTrackHasLiftHill = trackElement->HasChain() - && ((slope != TrackPitch::Down25 && slope != TrackPitch::Down60) + && ((slope != TrackPitch::down25 && slope != TrackPitch::down60) || getGameState().cheats.enableChainLiftOnAllTrack); if (TrackTypeHasSpeedSetting(trackElement->GetTrackType())) @@ -1083,7 +1083,7 @@ int32_t RideInitialiseConstructionWindow(Ride& ride) gInputFlags.set(InputFlag::allowRightMouseRemoval); _currentlySelectedTrack = ride.getRideTypeDescriptor().StartTrackPiece; - _currentTrackPitchEnd = TrackPitch::None; + _currentTrackPitchEnd = TrackPitch::none; _currentTrackRollEnd = TrackRoll::none; _currentTrackHasLiftHill = false; _currentTrackAlternative.clearAll(); @@ -1092,7 +1092,7 @@ int32_t RideInitialiseConstructionWindow(Ride& ride) _currentTrackAlternative.set(AlternativeTrackFlag::inverted); _previousTrackRollEnd = TrackRoll::none; - _previousTrackPitchEnd = TrackPitch::None; + _previousTrackPitchEnd = TrackPitch::none; _currentTrackPieceDirection = 0; _rideConstructionState = RideConstructionState::Place; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 7426227d0716..3d8bd38650e9 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -44,16 +44,16 @@ enum class TrackRoll : uint8_t enum class TrackPitch : uint8_t { - None = 0, - Up25 = 2, - Up60 = 4, - Down25 = 6, - Down60 = 8, - Up90 = 10, - Down90 = 18, - - Tower = 10, - ReverseFreefall = 10 + none = 0, + up25 = 2, + up60 = 4, + down25 = 6, + down60 = 8, + up90 = 10, + down90 = 18, + + tower = 10, + reverseFreefall = 10 }; // Vehicle sprite groups required by track groups are defined in ride_entry_get_supported_track_pieces diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index dcaa031455d8..03bb7dab3e85 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -1093,192 +1093,192 @@ namespace OpenRCT2::TrackMetaData static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::count)); const TrackDescriptor gTrackDescriptors[186] = { - { true, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::diagDown60 }, - { true, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagDown60ToDown25 }, - { true, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagDown60ToFlat }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::diagDown25ToDown60 }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagDown25 }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagDown25ToLeftBank }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagDown25ToRightBank }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonal }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagLeftBankToDown25 }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagLeftBank }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagLeftBankToFlat }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagLeftBankToUp25 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::none, TrackElemType::leftEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::diagFlatToDown60 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagFlatToDown25 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagFlatToLeftBank }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagFlat }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagFlatToRightBank }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagFlatToUp25 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::diagFlatToUp60 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::none, TrackElemType::rightEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagRightBankToDown25 }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagRightBankToFlat }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagRightBank }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagRightBankToUp25 }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonal }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagUp25ToLeftBank }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagUp25ToRightBank }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagUp25 }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::diagUp25ToUp60 }, - { true, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagUp60ToFlat }, - { true, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagUp60ToUp25 }, - { true, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::diagUp60 }, - { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Down90, TrackRoll::none, TrackElemType::leftQuarterTurn1TileDown90 }, - { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::none, TrackPitch::Down90, TrackRoll::none, TrackElemType::down90 }, - { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::down90ToDown60 }, - { false, TrackPitch::Down90, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Down90, TrackRoll::none, TrackElemType::rightQuarterTurn1TileDown90 }, - { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Down60, TrackRoll::none, TrackElemType::leftQuarterTurn1TileDown60 }, - { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down90, TrackRoll::none, TrackElemType::down60ToDown90 }, - { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::down60 }, - { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::down60ToDown25 }, - { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::down60ToFlat }, - { false, TrackPitch::Down60, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Down60, TrackRoll::none, TrackElemType::rightQuarterTurn1TileDown60 }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::left, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::down25LeftBanked }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::leftBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::left, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::down25ToDown60 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::down25ToLeftBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::down25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::down25ToRightBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::down25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::down25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::down25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::right, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::down25RightBanked }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::rightBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::rightBankedDown25ToRightBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::right, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::left, TrackPitch::None, TrackRoll::left, TrackElemType::bankedLeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::left, TrackElemType::leftEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftBankToDown25 }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::leftBank }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::leftBankToFlat }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftBankToUp25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::None, TrackRoll::none, TrackElemType::leftQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::left, TrackPitch::None, TrackRoll::none, TrackElemType::leftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::None, TrackRoll::none, TrackElemType::leftEighthToDiag }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down60, TrackRoll::none, TrackElemType::flatToDown60 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::flatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::flatToDown25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::flatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::flatToLeftBank }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::flat }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::leftVerySmall, TrackPitch::None, TrackRoll::none, TrackElemType::leftQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::rightVerySmall, TrackPitch::None, TrackRoll::none, TrackElemType::rightQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::flatToRightBank }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::flatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::flatToUp25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::flatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::flatToUp60 }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::none, TrackElemType::rightEighthToDiag }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::right, TrackPitch::None, TrackRoll::none, TrackElemType::rightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::none, TrackElemType::rightQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightBankToDown25 }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightBankedFlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::rightBankToFlat }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::rightBank }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightBankToUp25 }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightBankedFlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::None, TrackRoll::right, TrackElemType::rightEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::right, TrackPitch::None, TrackRoll::right, TrackElemType::bankedRightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::None, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::left, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::leftBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::up25LeftBanked }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::left, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::up25ToLeftBank }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::up25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::up25ToRightBank }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::up25ToLeftBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::up25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::up25ToRightBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::up25ToUp60 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::right, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::rightBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::rightBankedUp25ToRightBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::up25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::right, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Up60, TrackRoll::none, TrackElemType::leftQuarterTurn1TileUp60 }, - { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::up60ToFlat }, - { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::up60ToUp25 }, - { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::up60 }, - { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::none, TrackPitch::Up90, TrackRoll::none, TrackElemType::up60ToUp90 }, - { false, TrackPitch::Up60, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Up60, TrackRoll::none, TrackElemType::rightQuarterTurn1TileUp60 }, - { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::Up90, TrackRoll::none, TrackElemType::leftQuarterTurn1TileUp90 }, - { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::none, TrackPitch::Up60, TrackRoll::none, TrackElemType::up90ToUp60 }, - { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::none, TrackPitch::Up90, TrackRoll::none, TrackElemType::up90 }, - { false, TrackPitch::Up90, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::Up90, TrackRoll::none, TrackElemType::rightQuarterTurn1TileUp90 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftEighthToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightEighthToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftEighthToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightEighthToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::leftEighthToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::none, TrackElemType::rightEighthToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::leftEighthToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::none, TrackElemType::rightEighthToOrthogonalDown25 }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagUp25ToLeftBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagUp25ToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagLeftBankedUp25ToUp25 }, - { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::none, TrackElemType::diagRightBankedUp25ToUp25 }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagDown25ToLeftBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagDown25ToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagLeftBankedDown25ToDown25 }, - { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::none, TrackElemType::diagRightBankedDown25ToDown25 }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, - { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, - { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagFlatToLeftBankedUp25 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagFlatToRightBankedUp25 }, - { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagLeftBankedUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagRightBankedUp25ToFlat }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagFlatToLeftBankedDown25 }, - { true, TrackPitch::None, TrackRoll::none, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagFlatToRightBankedDown25 }, - { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagLeftBankedDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::None, TrackRoll::none, TrackElemType::diagRightBankedDown25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::none, TrackPitch::Up25, TrackRoll::left, TrackElemType::diagUp25LeftBanked }, - { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::none, TrackPitch::Up25, TrackRoll::right, TrackElemType::diagUp25RightBanked }, - { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::none, TrackPitch::Down25, TrackRoll::left, TrackElemType::diagDown25LeftBanked }, - { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::none, TrackPitch::Down25, TrackRoll::right, TrackElemType::diagDown25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftEighthBankToDiagUp25 }, - { false, TrackPitch::Up25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightEighthBankToDiagUp25 }, - { false, TrackPitch::Down25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftEighthBankToDiagDown25 }, - { false, TrackPitch::Down25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightEighthBankToDiagDown25 }, - { true, TrackPitch::Up25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Up25, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Up25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Up25, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonalUp25 }, - { true, TrackPitch::Down25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::Down25, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonalDown25 }, - { true, TrackPitch::Down25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::Down25, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonalDown25 }, + { true, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::diagDown60 }, + { true, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagDown60ToDown25 }, + { true, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagDown60ToFlat }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::diagDown25ToDown60 }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagDown25 }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::diagDown25ToLeftBank }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagDown25ToFlat }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::diagDown25ToRightBank }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::none, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonal }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagLeftBankToDown25 }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::diagLeftBank }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagLeftBankToFlat }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagLeftBankToUp25 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::none, TrackRoll::none, TrackElemType::leftEighthToOrthogonal }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::diagFlatToDown60 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagFlatToDown25 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::diagFlatToLeftBank }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagFlat }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::diagFlatToRightBank }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagFlatToUp25 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::diagFlatToUp60 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::none, TrackRoll::none, TrackElemType::rightEighthToOrthogonal }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagRightBankToDown25 }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagRightBankToFlat }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::diagRightBank }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagRightBankToUp25 }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::none, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonal }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::diagUp25ToLeftBank }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagUp25ToFlat }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::diagUp25ToRightBank }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagUp25 }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::diagUp25ToUp60 }, + { true, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagUp60ToFlat }, + { true, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagUp60ToUp25 }, + { true, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::diagUp60 }, + { false, TrackPitch::down90, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::down90, TrackRoll::none, TrackElemType::leftQuarterTurn1TileDown90 }, + { false, TrackPitch::down90, TrackRoll::none, TrackCurve::none, TrackPitch::down90, TrackRoll::none, TrackElemType::down90 }, + { false, TrackPitch::down90, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::down90ToDown60 }, + { false, TrackPitch::down90, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::down90, TrackRoll::none, TrackElemType::rightQuarterTurn1TileDown90 }, + { false, TrackPitch::down60, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::down60, TrackRoll::none, TrackElemType::leftQuarterTurn1TileDown60 }, + { false, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::down90, TrackRoll::none, TrackElemType::down60ToDown90 }, + { false, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::down60 }, + { false, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::down60ToDown25 }, + { false, TrackPitch::down60, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::down60ToFlat }, + { false, TrackPitch::down60, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::down60, TrackRoll::none, TrackElemType::rightQuarterTurn1TileDown60 }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::down25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::left, TrackPitch::down25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::down25LeftBanked }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::leftBankedDown25ToDown25 }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::leftBankedDown25ToLeftBankedFlat }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::leftBankedDown25ToFlat }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::down25, TrackRoll::none, TrackElemType::leftQuarterTurn3TilesDown25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::none, TrackRoll::left, TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::left, TrackPitch::down25, TrackRoll::none, TrackElemType::leftQuarterTurn5TilesDown25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::down25ToDown60 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::down25ToLeftBankedDown25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::down25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::down25ToRightBankedDown25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::down25ToLeftBank }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::down25ToFlat }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::down25ToRightBank }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::right, TrackPitch::down25, TrackRoll::none, TrackElemType::rightQuarterTurn5TilesDown25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::none, TrackRoll::right, TrackElemType::rightQuarterTurn3TilesDown25ToRightBank }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::down25, TrackRoll::none, TrackElemType::rightQuarterTurn3TilesDown25 }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::rightBankedDown25ToDown25 }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::down25RightBanked }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::rightBankedDown25ToFlat }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::rightBankedDown25ToRightBankedFlat }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::right, TrackPitch::down25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::down25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::none, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3Tiles }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::up25, TrackRoll::none, TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::left, TrackPitch::none, TrackRoll::left, TrackElemType::bankedLeftQuarterTurn5Tiles }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::none, TrackRoll::left, TrackElemType::leftEighthBankToDiag }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::leftBankedFlatToLeftBankedDown25 }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::leftBankToDown25 }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::leftBank }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::leftBankToFlat }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::leftBankedFlatToLeftBankedUp25 }, + { false, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::leftBankToUp25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::none, TrackRoll::none, TrackElemType::leftQuarterTurn3Tiles }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::left, TrackPitch::none, TrackRoll::none, TrackElemType::leftQuarterTurn5Tiles }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::none, TrackRoll::none, TrackElemType::leftEighthToDiag }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down60, TrackRoll::none, TrackElemType::flatToDown60 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::flatToLeftBankedDown25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::flatToDown25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::flatToRightBankedDown25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::flatToLeftBank }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::flat }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::leftVerySmall, TrackPitch::none, TrackRoll::none, TrackElemType::leftQuarterTurn1Tile }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::rightVerySmall, TrackPitch::none, TrackRoll::none, TrackElemType::rightQuarterTurn1Tile }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::flatToRightBank }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::flatToLeftBankedUp25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::flatToUp25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::flatToRightBankedUp25 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::flatToUp60 }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::none, TrackRoll::none, TrackElemType::rightEighthToDiag }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::right, TrackPitch::none, TrackRoll::none, TrackElemType::rightQuarterTurn5Tiles }, + { false, TrackPitch::none, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::none, TrackRoll::none, TrackElemType::rightQuarterTurn3Tiles }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::rightBankToDown25 }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::rightBankedFlatToRightBankedDown25 }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::rightBankToFlat }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::rightBank }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::rightBankToUp25 }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::rightBankedFlatToRightBankedUp25 }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::none, TrackRoll::right, TrackElemType::rightEighthBankToDiag }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::right, TrackPitch::none, TrackRoll::right, TrackElemType::bankedRightQuarterTurn5Tiles }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::none, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3Tiles }, + { false, TrackPitch::none, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::up25, TrackRoll::none, TrackElemType::rightBankToRightQuarterTurn3TilesUp25 }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::leftSmall, TrackPitch::up25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::left, TrackPitch::up25, TrackRoll::left, TrackElemType::leftBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::leftBankedUp25ToLeftBankedFlat }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::leftBankedUp25ToFlat }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::up25LeftBanked }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::leftBankedUp25ToUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::up25, TrackRoll::none, TrackElemType::leftQuarterTurn3TilesUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::left, TrackPitch::up25, TrackRoll::none, TrackElemType::leftQuarterTurn5TilesUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::up25ToLeftBank }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::up25ToFlat }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::up25ToRightBank }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::up25ToLeftBankedUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::up25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::up25ToRightBankedUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::up25ToUp60 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::right, TrackPitch::up25, TrackRoll::none, TrackElemType::rightQuarterTurn5TilesUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::up25, TrackRoll::none, TrackElemType::rightQuarterTurn3TilesUp25 }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::rightBankedUp25ToFlat }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::rightBankedUp25ToRightBankedFlat }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::rightBankedUp25ToUp25 }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::up25RightBanked }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::right, TrackPitch::up25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::rightSmall, TrackPitch::up25, TrackRoll::right, TrackElemType::rightBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::up60, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::up60, TrackRoll::none, TrackElemType::leftQuarterTurn1TileUp60 }, + { false, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::up60ToFlat }, + { false, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::up60ToUp25 }, + { false, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::up60 }, + { false, TrackPitch::up60, TrackRoll::none, TrackCurve::none, TrackPitch::up90, TrackRoll::none, TrackElemType::up60ToUp90 }, + { false, TrackPitch::up60, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::up60, TrackRoll::none, TrackElemType::rightQuarterTurn1TileUp60 }, + { false, TrackPitch::up90, TrackRoll::none, TrackCurve::leftSmall, TrackPitch::up90, TrackRoll::none, TrackElemType::leftQuarterTurn1TileUp90 }, + { false, TrackPitch::up90, TrackRoll::none, TrackCurve::none, TrackPitch::up60, TrackRoll::none, TrackElemType::up90ToUp60 }, + { false, TrackPitch::up90, TrackRoll::none, TrackCurve::none, TrackPitch::up90, TrackRoll::none, TrackElemType::up90 }, + { false, TrackPitch::up90, TrackRoll::none, TrackCurve::rightSmall, TrackPitch::up90, TrackRoll::none, TrackElemType::rightQuarterTurn1TileUp90 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::up25, TrackRoll::none, TrackElemType::leftEighthToDiagUp25 }, + { false, TrackPitch::up25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::up25, TrackRoll::none, TrackElemType::rightEighthToDiagUp25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::down25, TrackRoll::none, TrackElemType::leftEighthToDiagDown25 }, + { false, TrackPitch::down25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::down25, TrackRoll::none, TrackElemType::rightEighthToDiagDown25 }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::up25, TrackRoll::none, TrackElemType::leftEighthToOrthogonalUp25 }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::up25, TrackRoll::none, TrackElemType::rightEighthToOrthogonalUp25 }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::leftLarge, TrackPitch::down25, TrackRoll::none, TrackElemType::leftEighthToOrthogonalDown25 }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::rightLarge, TrackPitch::down25, TrackRoll::none, TrackElemType::rightEighthToOrthogonalDown25 }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::diagUp25ToLeftBankedUp25 }, + { true, TrackPitch::up25, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::diagUp25ToRightBankedUp25 }, + { true, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagLeftBankedUp25ToUp25 }, + { true, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::none, TrackElemType::diagRightBankedUp25ToUp25 }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::diagDown25ToLeftBankedDown25 }, + { true, TrackPitch::down25, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::diagDown25ToRightBankedDown25 }, + { true, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagLeftBankedDown25ToDown25 }, + { true, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::none, TrackElemType::diagRightBankedDown25ToDown25 }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::diagLeftBankedFlatToLeftBankedUp25 }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::diagRightBankedFlatToRightBankedUp25 }, + { true, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::diagLeftBankedUp25ToLeftBankedFlat }, + { true, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::diagRightBankedUp25ToRightBankedFlat }, + { true, TrackPitch::none, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::diagLeftBankedFlatToLeftBankedDown25 }, + { true, TrackPitch::none, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::diagRightBankedFlatToRightBankedDown25 }, + { true, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::left, TrackElemType::diagLeftBankedDown25ToLeftBankedFlat }, + { true, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::right, TrackElemType::diagRightBankedDown25ToRightBankedFlat }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::diagFlatToLeftBankedUp25 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::diagFlatToRightBankedUp25 }, + { true, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagLeftBankedUp25ToFlat }, + { true, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagRightBankedUp25ToFlat }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::diagFlatToLeftBankedDown25 }, + { true, TrackPitch::none, TrackRoll::none, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::diagFlatToRightBankedDown25 }, + { true, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagLeftBankedDown25ToFlat }, + { true, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::none, TrackRoll::none, TrackElemType::diagRightBankedDown25ToFlat }, + { true, TrackPitch::up25, TrackRoll::left, TrackCurve::none, TrackPitch::up25, TrackRoll::left, TrackElemType::diagUp25LeftBanked }, + { true, TrackPitch::up25, TrackRoll::right, TrackCurve::none, TrackPitch::up25, TrackRoll::right, TrackElemType::diagUp25RightBanked }, + { true, TrackPitch::down25, TrackRoll::left, TrackCurve::none, TrackPitch::down25, TrackRoll::left, TrackElemType::diagDown25LeftBanked }, + { true, TrackPitch::down25, TrackRoll::right, TrackCurve::none, TrackPitch::down25, TrackRoll::right, TrackElemType::diagDown25RightBanked }, + { false, TrackPitch::up25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::up25, TrackRoll::left, TrackElemType::leftEighthBankToDiagUp25 }, + { false, TrackPitch::up25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::up25, TrackRoll::right, TrackElemType::rightEighthBankToDiagUp25 }, + { false, TrackPitch::down25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::down25, TrackRoll::left, TrackElemType::leftEighthBankToDiagDown25 }, + { false, TrackPitch::down25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::down25, TrackRoll::right, TrackElemType::rightEighthBankToDiagDown25 }, + { true, TrackPitch::up25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::up25, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonalUp25 }, + { true, TrackPitch::up25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::up25, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonalUp25 }, + { true, TrackPitch::down25, TrackRoll::left, TrackCurve::leftLarge, TrackPitch::down25, TrackRoll::left, TrackElemType::leftEighthBankToOrthogonalDown25 }, + { true, TrackPitch::down25, TrackRoll::right, TrackCurve::rightLarge, TrackPitch::down25, TrackRoll::right, TrackElemType::rightEighthBankToOrthogonalDown25 }, }; /** rct2: 0x00993D1C */ @@ -2707,356 +2707,356 @@ namespace OpenRCT2::TrackMetaData static constexpr TrackDefinition kTrackDefinitions[] = { // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET - { TrackGroup::straight, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flat - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::endStation - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::beginStation - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::middleStation - { TrackGroup::slope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25 - { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60 - { TrackGroup::slope, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp25 - { TrackGroup::slopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToUp60 - { TrackGroup::slopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp25 - { TrackGroup::slope, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToFlat - { TrackGroup::slope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25 - { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60 - { TrackGroup::slope, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown25 - { TrackGroup::slopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToDown60 - { TrackGroup::slopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown25 - { TrackGroup::slope, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToFlat - { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5Tiles - { TrackGroup::curve, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToFlat - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToFlat - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::bankedLeftQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::bankedRightQuarterTurn5Tiles - { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToUp25 - { TrackGroup::flatRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToUp25 - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::up25ToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::up25ToRightBank - { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToDown25 - { TrackGroup::flatRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToDown25 - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::down25ToLeftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::down25ToRightBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBank - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBank - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesDown25 - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendLeft - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendRight - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, -48 }, // TrackElemType::leftVerticalLoop - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, -48 }, // TrackElemType::rightVerticalLoop - { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3Tiles - { TrackGroup::curveSmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3Tiles - { TrackGroup::flatRollBanking, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3Tiles - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25 - { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1Tile - { TrackGroup::curveVerySmall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1Tile - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftTwistDownToUp - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightTwistDownToUp - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftTwistUpToDown - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightTwistUpToDown - { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::halfLoopUp - { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::halfLoopDown - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftCorkscrewUp - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightCorkscrewUp - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::leftCorkscrewDown - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::rightCorkscrewDown - { TrackGroup::flatToSteepSlope, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp60 - { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToFlat - { TrackGroup::flatToSteepSlope, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown60 - { TrackGroup::flatToSteepSlope, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToFlat - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::towerBase - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::towerSection - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatCovered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25Covered - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60Covered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp25Covered - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToUp60Covered - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp25Covered - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToFlatCovered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25Covered - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60Covered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown25Covered - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToDown60Covered - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown25Covered - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToFlatCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendLeftCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendRightCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesCovered - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesCovered - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixUpSmall - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixUpSmall - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixDownSmall - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixDownSmall - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixUpLarge - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixUpLarge - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixDownLarge - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixDownLarge - { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileUp60 - { TrackGroup::slopeCurveSteep, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileUp60 - { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileDown60 - { TrackGroup::slopeCurveSteep, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileDown60 - { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::brakes - { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::booster - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::maze - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeUp - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeUp - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeDown - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeDown - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterHelixLargeUp - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterHelixLargeUp - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterHelixLargeDown - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterHelixLargeDown - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::up25LeftBanked - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::up25RightBanked - { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::waterfall - { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rapids - { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::onRidePhoto - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::down25LeftBanked - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::down25RightBanked - { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::watersplash - { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp60LongBase - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToFlatLongBase - { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::whirlpool - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToFlatLongBase - { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown60LongBase - { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::cableLiftHill - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::reverseFreefallSlope - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall,TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::reverseFreefallVertical - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up90 - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down90 - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp90 - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down90ToDown60 - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up90ToUp60 - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown90 - { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::brakeForDrop - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftEighthToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightEighthToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftEighthToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightEighthToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftEighthBankToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightEighthBankToDiag - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftEighthBankToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightEighthBankToOrthogonal - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlat - { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60 - { TrackGroup::diagSlope, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToUp25 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToUp60 - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60ToUp25 - { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToFlat - { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60 - { TrackGroup::diagSlope, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToDown25 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToDown60 - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60ToDown25 - { TrackGroup::diagSlope, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToFlat - { TrackGroup::diagSlopeSteepUp, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToUp60 - { TrackGroup::diagSlopeSteepUp, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60ToFlat - { TrackGroup::diagSlopeSteepDown, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToDown60 - { TrackGroup::diagSlopeSteepDown, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60ToFlat - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToFlat - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToFlat - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToUp25 - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToUp25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToRightBank - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToDown25 - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToDown25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToRightBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBank - { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::logFlumeReverser - { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::spinningTunnel - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftBarrelRollUpToDown - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightBarrelRollUpToDown - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftBarrelRollDownToUp - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightBarrelRollDownToUp - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank - { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::poweredLift - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftLargeHalfLoopUp - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightLargeHalfLoopUp - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftLargeHalfLoopDown - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightLargeHalfLoopDown - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerTwistUp - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerTwistUp - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerTwistDown - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerTwistDown - {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::flyerHalfLoopUninvertedUp - {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::flyerHalfLoopInvertedDown - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerCorkscrewUp - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerCorkscrewUp - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -32 }, // TrackElemType::leftFlyerCorkscrewDown - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -32 }, // TrackElemType::rightFlyerCorkscrewDown - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::heartLineTransferUp - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::heartLineTransferDown - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftHeartLineRoll - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightHeartLineRoll - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleA - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleB - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleC - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleD - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleE - { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop - { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::up90ToInvertedFlatQuarterLoop - { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::invertedFlatToDown90QuarterLoop - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftCurvedLiftHill - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightCurvedLiftHill - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftReverser - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightReverser - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustTopCap - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustVerticalDown - { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustVerticalDownToLevel - { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::blockBrakes - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileUp25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileDown25 - { TrackGroup::slopeCurve, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::up25ToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::up25ToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::down25ToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::down25ToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedFlatToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToRightBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedFlatToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToRightBankedFlat - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBankedUp25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBankedDown25 - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToFlat - { TrackGroup::slopeRollBanking, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToFlat - { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileUp90 - { TrackGroup::slopeCurveSteep, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileUp90 - { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileDown90 - { TrackGroup::slopeCurveSteep, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileDown90 - { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop - { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimFlatToDown90QuarterLoop - { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop - { TrackGroup::rotationControlToggle, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rotationControlToggle - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x4A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack2x2 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack4x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack2x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x5 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x1A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x4B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x1B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, -40 }, // TrackElemType::flatTrack1x4C - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack3x3 - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 32 }, // TrackElemType::leftLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, 32 }, // TrackElemType::rightLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::leftLargeCorkscrewDown - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::rightLargeCorkscrewDown - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftMediumHalfLoopDown - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightMediumHalfLoopDown - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftZeroGRollDown - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftLargeZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightLargeZeroGRollDown - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::flyerHalfLoopInvertedUp - { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::flyerHalfLoopUninvertedDown - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::leftEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::rightEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::leftEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::rightEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::leftEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::rightEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::leftEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::rightEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::up25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::up25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::down25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::down25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 16 }, // TrackElemType::leftEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 16 }, // TrackElemType::rightEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, -16 }, // TrackElemType::leftEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, -16 }, // TrackElemType::rightEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::left, TrackRoll::left, 16 }, // TrackElemType::leftEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::right, TrackRoll::right, 16 }, // TrackElemType::rightEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::left, TrackRoll::left, -16 }, // TrackElemType::leftEighthBankToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::right, TrackRoll::right, -16 }, // TrackElemType::rightEighthBankToOrthogonalDown25 - { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBrakes - { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBlockBrakes - { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25Brakes - { TrackGroup::diagBooster, TrackPitch::None, TrackPitch::None, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBooster - { TrackGroup::slopeSteepLong, TrackPitch::Up60, TrackPitch::None, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::diagFlatToUp60LongBase, - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Up60, TrackRoll::none, TrackRoll::none, 48 }, // TrackElemType::diagUp60ToFlatLongBase, - { TrackGroup::slopeSteepLong, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::none, -32 }, // TrackElemType::diagFlatToDown60LongBase, - { TrackGroup::slopeSteepLong, TrackPitch::None, TrackPitch::Down60, TrackRoll::none, TrackRoll::none, -24 }, // TrackElemType::diagDown60ToFlatLongBase, - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 56 }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::upsideDown, TrackRoll::none, 56 }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -56 }, // TrackElemType::leftEighthDiveLoopDownToDiag - { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::none, TrackRoll::upsideDown, -56 }, // TrackElemType::rightEighthDiveLoopDownToDiag - { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25 + { TrackGroup::straight, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flat + { TrackGroup::stationEnd, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::endStation + { TrackGroup::stationEnd, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::beginStation + { TrackGroup::stationEnd, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::middleStation + { TrackGroup::slope, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25 + { TrackGroup::slopeSteepUp, TrackPitch::up60, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60 + { TrackGroup::slope, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp25 + { TrackGroup::slopeSteepUp, TrackPitch::up60, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToUp60 + { TrackGroup::slopeSteepUp, TrackPitch::up25, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp25 + { TrackGroup::slope, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToFlat + { TrackGroup::slope, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25 + { TrackGroup::slopeSteepDown, TrackPitch::down60, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60 + { TrackGroup::slope, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown25 + { TrackGroup::slopeSteepDown, TrackPitch::down60, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToDown60 + { TrackGroup::slopeSteepDown, TrackPitch::down25, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown25 + { TrackGroup::slope, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToFlat + { TrackGroup::curve, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5Tiles + { TrackGroup::curve, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBank + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToFlat + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToFlat + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::bankedLeftQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::bankedRightQuarterTurn5Tiles + { TrackGroup::flatRollBanking, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToUp25 + { TrackGroup::flatRollBanking, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToUp25 + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::up25ToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::up25ToRightBank + { TrackGroup::flatRollBanking, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToDown25 + { TrackGroup::flatRollBanking, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToDown25 + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::down25ToLeftBank + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::down25ToRightBank + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBank + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBank + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesDown25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesDown25 + { TrackGroup::sBend, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendLeft + { TrackGroup::sBend, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendRight + { TrackGroup::verticalLoop, TrackPitch::down25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, -48 }, // TrackElemType::leftVerticalLoop + { TrackGroup::verticalLoop, TrackPitch::down25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, -48 }, // TrackElemType::rightVerticalLoop + { TrackGroup::curveSmall, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3Tiles + { TrackGroup::curveSmall, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3Tiles + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3Tiles + { TrackGroup::flatRollBanking, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3Tiles + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesUp25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25 + { TrackGroup::curveVerySmall, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1Tile + { TrackGroup::curveVerySmall, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1Tile + { TrackGroup::twist, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftTwistDownToUp + { TrackGroup::twist, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightTwistDownToUp + { TrackGroup::twist, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftTwistUpToDown + { TrackGroup::twist, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightTwistUpToDown + { TrackGroup::halfLoop, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::halfLoopUp + { TrackGroup::halfLoop, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::halfLoopDown + { TrackGroup::corkscrew, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftCorkscrewUp + { TrackGroup::corkscrew, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightCorkscrewUp + { TrackGroup::corkscrew, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::leftCorkscrewDown + { TrackGroup::corkscrew, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::rightCorkscrewDown + { TrackGroup::flatToSteepSlope, TrackPitch::up60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp60 + { TrackGroup::flatToSteepSlope, TrackPitch::none, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToFlat + { TrackGroup::flatToSteepSlope, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown60 + { TrackGroup::flatToSteepSlope, TrackPitch::none, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToFlat + { TrackGroup::tower, TrackPitch::tower, TrackPitch::tower, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::towerBase + { TrackGroup::tower, TrackPitch::tower, TrackPitch::tower, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::towerSection + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatCovered + { TrackGroup::flat, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25Covered + { TrackGroup::flat, TrackPitch::up60, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60Covered + { TrackGroup::flat, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp25Covered + { TrackGroup::flat, TrackPitch::up60, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToUp60Covered + { TrackGroup::flat, TrackPitch::up25, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp25Covered + { TrackGroup::flat, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up25ToFlatCovered + { TrackGroup::flat, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25Covered + { TrackGroup::flat, TrackPitch::down60, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60Covered + { TrackGroup::flat, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown25Covered + { TrackGroup::flat, TrackPitch::down60, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToDown60Covered + { TrackGroup::flat, TrackPitch::down25, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown25Covered + { TrackGroup::flat, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25ToFlatCovered + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn5TilesCovered + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn5TilesCovered + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendLeftCovered + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::sBendRightCovered + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesCovered + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesCovered + { TrackGroup::helixUpBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixUpSmall + { TrackGroup::helixUpBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixUpSmall + { TrackGroup::helixDownBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixDownSmall + { TrackGroup::helixDownBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixDownSmall + { TrackGroup::helixUpBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixUpLarge + { TrackGroup::helixUpBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixUpLarge + { TrackGroup::helixDownBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftHalfBankedHelixDownLarge + { TrackGroup::helixDownBankedHalf, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightHalfBankedHelixDownLarge + { TrackGroup::slopeCurveSteep, TrackPitch::up60, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileUp60 + { TrackGroup::slopeCurveSteep, TrackPitch::up60, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileUp60 + { TrackGroup::slopeCurveSteep, TrackPitch::down60, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileDown60 + { TrackGroup::slopeCurveSteep, TrackPitch::down60, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileDown60 + { TrackGroup::brakes, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::brakes + { TrackGroup::booster, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::booster + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::maze + { TrackGroup::helixUpBankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeUp + { TrackGroup::helixUpBankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeUp + { TrackGroup::helixDownBankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftQuarterBankedHelixLargeDown + { TrackGroup::helixDownBankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightQuarterBankedHelixLargeDown + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterHelixLargeUp + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterHelixLargeUp + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterHelixLargeDown + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterHelixLargeDown + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::up25LeftBanked + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::up25RightBanked + { TrackGroup::waterfall, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::waterfall + { TrackGroup::rapids, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rapids + { TrackGroup::onridePhoto, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::onRidePhoto + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::down25LeftBanked + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::down25RightBanked + { TrackGroup::waterSplash, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::watersplash + { TrackGroup::slopeSteepLong, TrackPitch::up60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToUp60LongBase + { TrackGroup::slopeSteepLong, TrackPitch::none, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToFlatLongBase + { TrackGroup::whirlpool, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::whirlpool + { TrackGroup::slopeSteepLong, TrackPitch::none, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToFlatLongBase + { TrackGroup::slopeSteepLong, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatToDown60LongBase + { TrackGroup::liftHillCable, TrackPitch::down60, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::cableLiftHill + { TrackGroup::reverseFreefall, TrackPitch::reverseFreefall, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::reverseFreefallSlope + { TrackGroup::reverseFreefall, TrackPitch::reverseFreefall, TrackPitch::reverseFreefall,TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::reverseFreefallVertical + { TrackGroup::flat, TrackPitch::up90, TrackPitch::up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up90 + { TrackGroup::flat, TrackPitch::down90, TrackPitch::down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down90 + { TrackGroup::flat, TrackPitch::up90, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up60ToUp90 + { TrackGroup::flat, TrackPitch::down60, TrackPitch::down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down90ToDown60 + { TrackGroup::flat, TrackPitch::up60, TrackPitch::up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::up90ToUp60 + { TrackGroup::flat, TrackPitch::down90, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down60ToDown90 + { TrackGroup::brakeForDrop, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::brakeForDrop + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftEighthToDiag + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightEighthToDiag + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftEighthToOrthogonal + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightEighthToOrthogonal + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftEighthBankToDiag + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightEighthBankToDiag + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftEighthBankToOrthogonal + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightEighthBankToOrthogonal + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlat + { TrackGroup::diagSlope, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25 + { TrackGroup::diagSlopeSteepUp, TrackPitch::up60, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60 + { TrackGroup::diagSlope, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToUp25 + { TrackGroup::diagSlopeSteepUp, TrackPitch::up60, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToUp60 + { TrackGroup::diagSlopeSteepUp, TrackPitch::up25, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60ToUp25 + { TrackGroup::diagSlope, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToFlat + { TrackGroup::diagSlope, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25 + { TrackGroup::diagSlopeSteepDown, TrackPitch::down60, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60 + { TrackGroup::diagSlope, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToDown25 + { TrackGroup::diagSlopeSteepDown, TrackPitch::down60, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToDown60 + { TrackGroup::diagSlopeSteepDown, TrackPitch::down25, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60ToDown25 + { TrackGroup::diagSlope, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToFlat + { TrackGroup::diagSlopeSteepUp, TrackPitch::up60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToUp60 + { TrackGroup::diagSlopeSteepUp, TrackPitch::none, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagUp60ToFlat + { TrackGroup::diagSlopeSteepDown, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagFlatToDown60 + { TrackGroup::diagSlopeSteepDown, TrackPitch::none, TrackPitch::down60, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown60ToFlat + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToFlat + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToFlat + { TrackGroup::flat, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToUp25 + { TrackGroup::flat, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToUp25 + { TrackGroup::flat, TrackPitch::none, TrackPitch::up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToLeftBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToRightBank + { TrackGroup::flat, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankToDown25 + { TrackGroup::flat, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankToDown25 + { TrackGroup::flat, TrackPitch::none, TrackPitch::down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToLeftBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToRightBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBank + { TrackGroup::logFlumeReverser, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::logFlumeReverser + { TrackGroup::spinningTunnel, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::spinningTunnel + { TrackGroup::barrelRoll, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftBarrelRollUpToDown + { TrackGroup::barrelRoll, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightBarrelRollUpToDown + { TrackGroup::barrelRoll, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftBarrelRollDownToUp + { TrackGroup::barrelRoll, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightBarrelRollDownToUp + { TrackGroup::flat, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 + { TrackGroup::flat, TrackPitch::up25, TrackPitch::none, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankToRightQuarterTurn3TilesUp25 + { TrackGroup::flat, TrackPitch::none, TrackPitch::down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank + { TrackGroup::flat, TrackPitch::none, TrackPitch::down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn3TilesDown25ToRightBank + { TrackGroup::poweredLift, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::poweredLift + {TrackGroup::halfLoopLarge, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftLargeHalfLoopUp + {TrackGroup::halfLoopLarge, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightLargeHalfLoopUp + {TrackGroup::halfLoopLarge, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftLargeHalfLoopDown + {TrackGroup::halfLoopLarge, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightLargeHalfLoopDown + {TrackGroup::inlineTwistUninverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerTwistUp + {TrackGroup::inlineTwistUninverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerTwistUp + {TrackGroup::inlineTwistInverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerTwistDown + {TrackGroup::inlineTwistInverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerTwistDown + {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::flyerHalfLoopUninvertedUp + {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::down25, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::flyerHalfLoopInvertedDown + {TrackGroup::corkscrewUninverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftFlyerCorkscrewUp + {TrackGroup::corkscrewUninverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightFlyerCorkscrewUp + {TrackGroup::corkscrewInverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -32 }, // TrackElemType::leftFlyerCorkscrewDown + {TrackGroup::corkscrewInverted, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -32 }, // TrackElemType::rightFlyerCorkscrewDown + {TrackGroup::heartlineTransfer, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::heartLineTransferUp + {TrackGroup::heartlineTransfer, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::heartLineTransferDown + {TrackGroup::heartlineRoll, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftHeartLineRoll + {TrackGroup::heartlineRoll, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightHeartLineRoll + {TrackGroup::miniGolfHole, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleA + {TrackGroup::miniGolfHole, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleB + {TrackGroup::miniGolfHole, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleC + {TrackGroup::miniGolfHole, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleD + {TrackGroup::miniGolfHole, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::minigolfHoleE + { TrackGroup::quarterLoopInvertedDown, TrackPitch::down90, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimInvertedFlatToDown90QuarterLoop + { TrackGroup::quarterLoop, TrackPitch::none, TrackPitch::up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::up90ToInvertedFlatQuarterLoop + { TrackGroup::quarterLoop, TrackPitch::down90, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::invertedFlatToDown90QuarterLoop + { TrackGroup::liftHillCurved, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftCurvedLiftHill + { TrackGroup::liftHillCurved, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightCurvedLiftHill + { TrackGroup::reverser, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftReverser + { TrackGroup::reverser, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightReverser + { TrackGroup::slopeToFlat, TrackPitch::down90, TrackPitch::up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustTopCap + { TrackGroup::slopeToFlat, TrackPitch::down90, TrackPitch::down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustVerticalDown + { TrackGroup::slopeToFlat, TrackPitch::none, TrackPitch::down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::airThrustVerticalDownToLevel + { TrackGroup::blockBrakes, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::blockBrakes + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileUp25 + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileUp25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn3TileDown25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn3TileDown25 + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileUp25 + { TrackGroup::slopeCurve, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileUp25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedQuarterTurn5TileDown25 + { TrackGroup::slopeCurve, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedQuarterTurn5TileDown25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::up25ToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::up25ToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToUp25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToUp25 + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::down25ToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::down25ToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToDown25 + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToDown25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedFlatToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToRightBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedFlatToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToRightBankedFlat + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::none, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::up25, TrackPitch::none, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBankedUp25 + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedUp25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedUp25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::none, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::flatToLeftBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::down25, TrackPitch::none, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::flatToRightBankedDown25 + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::leftBankedDown25ToFlat + { TrackGroup::slopeRollBanking, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::rightBankedDown25ToFlat + { TrackGroup::slopeCurveSteep, TrackPitch::up90, TrackPitch::up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileUp90 + { TrackGroup::slopeCurveSteep, TrackPitch::up90, TrackPitch::up90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileUp90 + { TrackGroup::slopeCurveSteep, TrackPitch::down90, TrackPitch::down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::leftQuarterTurn1TileDown90 + { TrackGroup::slopeCurveSteep, TrackPitch::down90, TrackPitch::down90, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rightQuarterTurn1TileDown90 + { TrackGroup::quarterLoopUninvertedUp, TrackPitch::none, TrackPitch::up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop + { TrackGroup::quarterLoopUninvertedDown, TrackPitch::down90, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimFlatToDown90QuarterLoop + { TrackGroup::quarterLoopInvertedUp, TrackPitch::none, TrackPitch::up90, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop + { TrackGroup::rotationControlToggle, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::rotationControlToggle + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x4A + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack2x2 + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack4x4 + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack2x4 + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x5 + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x1A + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x4B + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack1x1B + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, -40 }, // TrackElemType::flatTrack1x4C + { TrackGroup::flatRideBase, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::flatTrack3x3 + { TrackGroup::corkscrewLarge, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 32 }, // TrackElemType::leftLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::none, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, 32 }, // TrackElemType::rightLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::leftLargeCorkscrewDown + { TrackGroup::corkscrewLarge, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -32 }, // TrackElemType::rightLargeCorkscrewDown + { TrackGroup::halfLoopMedium, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftMediumHalfLoopDown + { TrackGroup::halfLoopMedium, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightMediumHalfLoopDown + { TrackGroup::zeroGRoll, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::leftZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 0 }, // TrackElemType::rightZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::leftZeroGRollDown + { TrackGroup::zeroGRoll, TrackPitch::down25, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, 0 }, // TrackElemType::rightZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::none, TrackPitch::up60, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::none, TrackPitch::up60, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::leftLargeZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -64 }, // TrackElemType::rightLargeZeroGRollDown + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::down25, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::down25, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::leftFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::rightFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::down25, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::leftFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::down25, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::rightFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::none, TrackPitch::up25, TrackRoll::upsideDown, TrackRoll::none, 64 }, // TrackElemType::flyerHalfLoopInvertedUp + { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::down25, TrackPitch::none, TrackRoll::upsideDown, TrackRoll::none, -64 }, // TrackElemType::flyerHalfLoopUninvertedDown + { TrackGroup::slopeCurveLarge, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::leftEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::rightEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::leftEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::rightEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::leftEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::rightEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::leftEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, -16 }, // TrackElemType::rightEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagUp25ToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagDown25ToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::none, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::none, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::none, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::none, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::up25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::none, TrackRoll::left, TrackRoll::none, 0 }, // TrackElemType::diagFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::none, TrackRoll::right, TrackRoll::none, 0 }, // TrackElemType::diagFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::left, 0 }, // TrackElemType::diagLeftBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::none, TrackPitch::down25, TrackRoll::none, TrackRoll::right, 0 }, // TrackElemType::diagRightBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::up25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::up25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::left, 0 }, // TrackElemType::down25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::right, 0 }, // TrackElemType::down25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 16 }, // TrackElemType::leftEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 16 }, // TrackElemType::rightEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::left, -16 }, // TrackElemType::leftEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::right, -16 }, // TrackElemType::rightEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::left, TrackRoll::left, 16 }, // TrackElemType::leftEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::up25, TrackPitch::up25, TrackRoll::right, TrackRoll::right, 16 }, // TrackElemType::rightEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::left, TrackRoll::left, -16 }, // TrackElemType::leftEighthBankToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::down25, TrackPitch::down25, TrackRoll::right, TrackRoll::right, -16 }, // TrackElemType::rightEighthBankToOrthogonalDown25 + { TrackGroup::diagBrakes, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBrakes + { TrackGroup::diagBlockBrakes, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBlockBrakes + { TrackGroup::inclinedBrakes, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::down25Brakes + { TrackGroup::diagBooster, TrackPitch::none, TrackPitch::none, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagBooster + { TrackGroup::slopeSteepLong, TrackPitch::up60, TrackPitch::none, TrackRoll::none, TrackRoll::none, 16 }, // TrackElemType::diagFlatToUp60LongBase, + { TrackGroup::slopeSteepLong, TrackPitch::none, TrackPitch::up60, TrackRoll::none, TrackRoll::none, 48 }, // TrackElemType::diagUp60ToFlatLongBase, + { TrackGroup::slopeSteepLong, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::none, -32 }, // TrackElemType::diagFlatToDown60LongBase, + { TrackGroup::slopeSteepLong, TrackPitch::none, TrackPitch::down60, TrackRoll::none, TrackRoll::none, -24 }, // TrackElemType::diagDown60ToFlatLongBase, + { TrackGroup::diveLoop, TrackPitch::none, TrackPitch::up60, TrackRoll::upsideDown, TrackRoll::none, 56 }, // TrackElemType::leftEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::none, TrackPitch::up60, TrackRoll::upsideDown, TrackRoll::none, 56 }, // TrackElemType::rightEighthDiveLoopUpToOrthogonal + { TrackGroup::diveLoop, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -56 }, // TrackElemType::leftEighthDiveLoopDownToDiag + { TrackGroup::diveLoop, TrackPitch::down60, TrackPitch::none, TrackRoll::none, TrackRoll::upsideDown, -56 }, // TrackElemType::rightEighthDiveLoopDownToDiag + { TrackGroup::inclinedBrakes, TrackPitch::down25, TrackPitch::down25, TrackRoll::none, TrackRoll::none, 0 }, // TrackElemType::diagDown25 }; static_assert(std::size(kTrackDefinitions) == EnumValue(TrackElemType::count)); diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index 1db7d9ba4c12..35d50e380fe2 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -537,13 +537,13 @@ void ScriptEngine::RegisterConstants() { ConstantBuilder builder(_context); builder.Namespace("TrackSlope") - .Constant("None", EnumValue(TrackPitch::None)) - .Constant("Up25", EnumValue(TrackPitch::Up25)) - .Constant("Up60", EnumValue(TrackPitch::Up60)) - .Constant("Down25", EnumValue(TrackPitch::Down25)) - .Constant("Down60", EnumValue(TrackPitch::Down60)) - .Constant("Up90", EnumValue(TrackPitch::Up90)) - .Constant("Down90", EnumValue(TrackPitch::Down90)); + .Constant("None", EnumValue(TrackPitch::none)) + .Constant("Up25", EnumValue(TrackPitch::up25)) + .Constant("Up60", EnumValue(TrackPitch::up60)) + .Constant("Down25", EnumValue(TrackPitch::down25)) + .Constant("Down60", EnumValue(TrackPitch::down60)) + .Constant("Up90", EnumValue(TrackPitch::up90)) + .Constant("Down90", EnumValue(TrackPitch::down90)); builder.Namespace("TrackBanking") .Constant("None", EnumValue(TrackRoll::none)) .Constant("BankLeft", EnumValue(TrackRoll::left)) From 014bdbff474da64980eaf7ef9a02ab9c2f5b6cb4 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 21:33:45 +0100 Subject: [PATCH 152/222] Rename MAX_TRACK_HEIGHT to kMaximumTrackHeight --- src/openrct2-ui/windows/RideConstruction.cpp | 4 ++-- src/openrct2/actions/TrackPlaceAction.cpp | 2 +- src/openrct2/ride/Track.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 7efb2573bc3d..8d37d650b4a1 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -3445,7 +3445,7 @@ namespace OpenRCT2::Ui::Windows _previousTrackPiece = _currentTrackBegin; // search for appropriate z value for ghost, up to max ride height - int numAttempts = (z <= MAX_TRACK_HEIGHT ? ((MAX_TRACK_HEIGHT - z) / kCoordsZStep + 1) : 2); + int numAttempts = (z <= kMaximumTrackHeight ? ((kMaximumTrackHeight - z) / kCoordsZStep + 1) : 2); if (rtd.specialType == RtdSpecialType::maze) { @@ -3676,7 +3676,7 @@ namespace OpenRCT2::Ui::Windows } // search for z value to build at, up to max ride height - int numAttempts = (z <= MAX_TRACK_HEIGHT ? ((MAX_TRACK_HEIGHT - z) / kCoordsZStep + 1) : 2); + int numAttempts = (z <= kMaximumTrackHeight ? ((kMaximumTrackHeight - z) / kCoordsZStep + 1) : 2); const auto& rtd = ride->getRideTypeDescriptor(); if (rtd.specialType == RtdSpecialType::maze) diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 8f88e63849dd..86e7b255e7e8 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -254,7 +254,7 @@ namespace OpenRCT2::GameActions clearanceZ = floor2(clearanceZ, kCoordsZStep) + baseZ; - if (clearanceZ > MAX_TRACK_HEIGHT) + if (clearanceZ > kMaximumTrackHeight) { return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 3d8bd38650e9..101fbea2d704 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -223,7 +223,7 @@ enum }; constexpr int8_t kMaxStationPlatformLength = 32; -constexpr uint16_t const MAX_TRACK_HEIGHT = 254 * kCoordsZStep; +constexpr uint16_t kMaximumTrackHeight = 254 * kCoordsZStep; constexpr uint8_t const DEFAULT_SEAT_ROTATION = 4; enum class TrackCurve : uint8_t From aaed93750e6f3df7fd58822689b506d8e944b777 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 21:34:14 +0100 Subject: [PATCH 153/222] Rename DEFAULT_SEAT_ROTATION to kDefaultSeatRotation --- src/openrct2/rct1/S4Importer.cpp | 6 +++--- src/openrct2/ride/Track.h | 2 +- src/openrct2/world/tile_element/TrackElement.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 52934dc5770a..f852162d1f84 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1753,7 +1753,7 @@ namespace OpenRCT2::RCT1 } else { - dst2->SetSeatRotation(DEFAULT_SEAT_ROTATION); + dst2->SetSeatRotation(kDefaultSeatRotation); } // Skipping IsHighlighted() @@ -2858,8 +2858,8 @@ namespace OpenRCT2::RCT1 dst->roll = src->roll; // Seat rotation was not in RCT1 - dst->target_seat_rotation = DEFAULT_SEAT_ROTATION; - dst->seat_rotation = DEFAULT_SEAT_ROTATION; + dst->target_seat_rotation = kDefaultSeatRotation; + dst->seat_rotation = kDefaultSeatRotation; // Vehicle links (indexes converted later) dst->prev_vehicle_on_ride = EntityId::FromUnderlying(src->PrevVehicleOnRide); diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 101fbea2d704..5c118b96c95b 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -224,7 +224,7 @@ enum constexpr int8_t kMaxStationPlatformLength = 32; constexpr uint16_t kMaximumTrackHeight = 254 * kCoordsZStep; -constexpr uint8_t const DEFAULT_SEAT_ROTATION = 4; +constexpr uint8_t kDefaultSeatRotation = 4; enum class TrackCurve : uint8_t { diff --git a/src/openrct2/world/tile_element/TrackElement.cpp b/src/openrct2/world/tile_element/TrackElement.cpp index cd0cb160afaf..ed66e092ae6e 100644 --- a/src/openrct2/world/tile_element/TrackElement.cpp +++ b/src/openrct2/world/tile_element/TrackElement.cpp @@ -65,7 +65,7 @@ namespace OpenRCT2 { const auto* ride = GetRide(GetRideIndex()); if (ride != nullptr && ride->getRideTypeDescriptor().HasFlag(RtdFlag::hasLandscapeDoors)) - return DEFAULT_SEAT_ROTATION; + return kDefaultSeatRotation; return URide.ColourScheme >> 4; } From 2da5f454554b360e9fdff5fd5ff3826292312410 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 21:35:06 +0100 Subject: [PATCH 154/222] Move constants in Track.h closer to each other --- src/openrct2/ride/Track.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 5c118b96c95b..65be35ef1d69 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -24,6 +24,10 @@ constexpr auto kTrackDirectionDiagonalMask = 0b0100; constexpr uint8_t kMaximumTrackSpeed = 30; +constexpr int8_t kMaxStationPlatformLength = 32; +constexpr uint16_t kMaximumTrackHeight = 254 * kCoordsZStep; +constexpr uint8_t kDefaultSeatRotation = 4; + namespace OpenRCT2 { enum class TrackElemType : uint16_t; @@ -222,10 +226,6 @@ enum RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL = (1 << 2), }; -constexpr int8_t kMaxStationPlatformLength = 32; -constexpr uint16_t kMaximumTrackHeight = 254 * kCoordsZStep; -constexpr uint8_t kDefaultSeatRotation = 4; - enum class TrackCurve : uint8_t { leftVerySmall = 5, From cb7f720e87b731ab8b1bf2654047899633624c5f Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 12 Dec 2025 23:38:03 +0100 Subject: [PATCH 155/222] Change inspection interval to use enum class --- src/openrct2-ui/windows/Options.cpp | 11 +++++---- src/openrct2-ui/windows/Ride.cpp | 4 ++-- src/openrct2/actions/CheatSetAction.cpp | 2 +- src/openrct2/actions/RideCreateAction.cpp | 2 +- src/openrct2/actions/RideSetSettingAction.cpp | 6 ++--- src/openrct2/actions/TrackDesignAction.cpp | 7 +++--- src/openrct2/config/Config.cpp | 17 +++++++++++-- src/openrct2/config/Config.h | 4 +++- src/openrct2/rct1/RCT1.h | 3 ++- src/openrct2/rct2/RCT2.h | 3 ++- src/openrct2/ride/Ride.cpp | 9 +++---- src/openrct2/ride/Ride.h | 24 +++++++++---------- .../scripting/bindings/ride/ScRide.cpp | 6 +++-- 13 files changed, 58 insertions(+), 40 deletions(-) diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 95a0413f7d53..c9cccfeba0eb 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1947,7 +1947,8 @@ namespace OpenRCT2::Ui::Windows } ShowDropdown(widget, 7); - gDropdown.items[Config::Get().general.defaultInspectionInterval].setChecked(true); + auto selectedIndex = EnumValue(Config::Get().general.defaultInspectionInterval); + gDropdown.items[selectedIndex].setChecked(true); break; } } @@ -1975,9 +1976,9 @@ namespace OpenRCT2::Ui::Windows break; } case WIDX_DEFAULT_INSPECTION_INTERVAL_DROPDOWN: - if (dropdownIndex != Config::Get().general.defaultInspectionInterval) + if (dropdownIndex != EnumValue(Config::Get().general.defaultInspectionInterval)) { - Config::Get().general.defaultInspectionInterval = static_cast(dropdownIndex); + Config::Get().general.defaultInspectionInterval = static_cast(dropdownIndex); Config::Save(); invalidate(); } @@ -2040,8 +2041,8 @@ namespace OpenRCT2::Ui::Windows setCheckboxValue(WIDX_SCENARIO_UNLOCKING, Config::Get().general.scenarioUnlockingEnabled); - widgets[WIDX_DEFAULT_INSPECTION_INTERVAL].text = kRideInspectionIntervalNames - [Config::Get().general.defaultInspectionInterval]; + auto selectedIndex = EnumValue(Config::Get().general.defaultInspectionInterval); + widgets[WIDX_DEFAULT_INSPECTION_INTERVAL].text = kRideInspectionIntervalNames[selectedIndex]; } #pragma endregion diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index e3579f9f6058..be034207a629 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -3785,7 +3785,7 @@ namespace OpenRCT2::Ui::Windows { windowPos.x + dropdownWidget->left, windowPos.y + dropdownWidget->top }, dropdownWidget->height(), colours[1], 0, Dropdown::Flag::StayOpen, 7, widgets[widgetIndex].right - dropdownWidget->left); - gDropdown.items[ride->inspectionInterval].setChecked(true); + gDropdown.items[EnumValue(ride->inspectionInterval)].setChecked(true); break; case WIDX_FORCE_BREAKDOWN: @@ -3984,7 +3984,7 @@ namespace OpenRCT2::Ui::Windows auto ft = Formatter::Common(); ride->formatNameTo(ft); - widgets[WIDX_INSPECTION_INTERVAL].text = kRideInspectionIntervalNames[ride->inspectionInterval]; + widgets[WIDX_INSPECTION_INTERVAL].text = kRideInspectionIntervalNames[EnumValue(ride->inspectionInterval)]; WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 80083120e69d..0caefffd3260 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -574,7 +574,7 @@ namespace OpenRCT2::GameActions for (auto& ride : RideManager(gameState)) { // Set inspection interval to 10 minutes - ride.inspectionInterval = RIDE_INSPECTION_EVERY_10_MINUTES; + ride.inspectionInterval = RideInspection::every10Minutes; } auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::ride); diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index e8a5dc3db003..0b0795fe0ba2 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -274,7 +274,7 @@ namespace OpenRCT2::GameActions ride->upkeepCost = kMoney64Undefined; ride->reliability = kRideInitialReliability; ride->unreliabilityFactor = 1; - ride->inspectionInterval = RIDE_INSPECTION_EVERY_30_MINUTES; + ride->inspectionInterval = RideInspection::every30Minutes; ride->lastCrashType = RIDE_CRASH_TYPE_NONE; ride->incomePerHour = kMoney64Undefined; ride->profit = kMoney64Undefined; diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index 50ecc542ad06..a32c38ab1cc7 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -98,7 +98,7 @@ namespace OpenRCT2::GameActions } break; case RideSetSetting::InspectionInterval: - if (_value > RIDE_INSPECTION_NEVER) + if (_value > EnumValue(RideInspection::never)) { LOG_ERROR("Invalid inspection interval: %u", _value); return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); @@ -190,12 +190,12 @@ namespace OpenRCT2::GameActions break; case RideSetSetting::InspectionInterval: - if (_value == RIDE_INSPECTION_NEVER) + if (_value == EnumValue(RideInspection::never)) { ride->lifecycleFlags &= ~RIDE_LIFECYCLE_DUE_INSPECTION; } - ride->inspectionInterval = _value; + ride->inspectionInterval = static_cast(_value); break; case RideSetSetting::Music: ride->lifecycleFlags &= ~RIDE_LIFECYCLE_MUSIC; diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 0b615143db8a..9c57bac2258d 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -236,9 +236,10 @@ namespace OpenRCT2::GameActions auto numCircuits = std::max(1, _td.operation.numCircuits); SetOperatingSettingNested(ride->id, RideSetSetting::NumCircuits, numCircuits, flags); - uint8_t defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; - if (defaultInspectionInterval <= RIDE_INSPECTION_NEVER) - SetOperatingSettingNested(ride->id, RideSetSetting::InspectionInterval, defaultInspectionInterval, flags); + auto defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; + if (defaultInspectionInterval <= RideInspection::never) + SetOperatingSettingNested( + ride->id, RideSetSetting::InspectionInterval, EnumValue(defaultInspectionInterval), flags); ride->lifecycleFlags |= RIDE_LIFECYCLE_NOT_CUSTOM_DESIGN; ride->vehicleColourSettings = _td.appearance.vehicleColourSettings; diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index a2fa8d867f42..109a2509e962 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -30,6 +30,7 @@ #include "../paint/VirtualFloor.h" #include "../platform/Platform.h" #include "../rct1/Csg.h" +#include "../ride/Ride.h" #include "../scenario/Scenario.h" #include "../ui/UiContext.h" #include "ConfigEnum.hpp" @@ -131,6 +132,16 @@ namespace OpenRCT2::Config ConfigEnumEntry("GLASSY", VirtualFloorStyles::Glassy), }); + static const auto Enum_RideInspectionInterval = ConfigEnum({ + ConfigEnumEntry("EVERY_10_MINUTES", RideInspection::every10Minutes), + ConfigEnumEntry("EVERY_20_MINUTES", RideInspection::every20Minutes), + ConfigEnumEntry("EVERY_30_MINUTES", RideInspection::every30Minutes), + ConfigEnumEntry("EVERY_45_MINUTES", RideInspection::every45Minutes), + ConfigEnumEntry("EVERY_HOUR", RideInspection::everyHour), + ConfigEnumEntry("EVERY_2_HOURS", RideInspection::every2Hours), + ConfigEnumEntry("NEVER", RideInspection::never), + }); + /** * Config enum wrapping LanguagesDescriptors. */ @@ -204,7 +215,8 @@ namespace OpenRCT2::Config model->dateFormat = reader->GetEnum("date_format", Platform::GetLocaleDateFormat(), Enum_DateFormat); model->autoStaffPlacement = reader->GetBoolean("auto_staff", true); model->handymenMowByDefault = reader->GetBoolean("handymen_mow_default", false); - model->defaultInspectionInterval = reader->GetInt32("default_inspection_interval", 2); + model->defaultInspectionInterval = reader->GetEnum( + "default_inspection_interval", RideInspection::every30Minutes, Enum_RideInspectionInterval); model->lastRunVersion = reader->GetString("last_run_version", ""); model->invertViewportDrag = reader->GetBoolean("invert_viewport_drag", false); model->loadSaveSort = reader->GetEnum( @@ -309,7 +321,8 @@ namespace OpenRCT2::Config writer->WriteEnum("date_format", model->dateFormat, Enum_DateFormat); writer->WriteBoolean("auto_staff", model->autoStaffPlacement); writer->WriteBoolean("handymen_mow_default", model->handymenMowByDefault); - writer->WriteInt32("default_inspection_interval", model->defaultInspectionInterval); + writer->WriteEnum( + "default_inspection_interval", model->defaultInspectionInterval, Enum_RideInspectionInterval); writer->WriteString("last_run_version", model->lastRunVersion); writer->WriteBoolean("invert_viewport_drag", model->invertViewportDrag); writer->WriteEnum("load_save_sort", model->loadSaveSort, Enum_FileBrowserSort); diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index 29cb6727e85f..ef531cbe5146 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -19,6 +19,8 @@ #undef interface #endif +enum class RideInspection : uint8_t; + namespace OpenRCT2::Config { struct General @@ -98,7 +100,7 @@ namespace OpenRCT2::Config bool autoStaffPlacement; bool handymenMowByDefault; bool autoOpenShops; - int32_t defaultInspectionInterval; + RideInspection defaultInspectionInterval; int32_t windowLimit; bool scenarioUnlockingEnabled; bool scenarioHideMegaPark; diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 68b705a316e4..4373dfdf5a47 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -17,6 +17,7 @@ #include "../world/ParkData.h" #include "Limits.h" +enum class RideInspection : uint8_t; enum class VehicleColourSettings : uint8_t; namespace OpenRCT2::Scenario @@ -381,7 +382,7 @@ namespace OpenRCT2::RCT1 }; uint8_t unreliabilityFactor; // 0x148 uint8_t downtime; // 0x149 - uint8_t inspectionInterval; // 0x14A + RideInspection inspectionInterval; // 0x14A uint8_t lastInspection; // 0x14B uint8_t unk14C[20]; // 0x14C money32 incomePerHour; // 0x160 diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index 59c02fcf1e34..e306b583d87c 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -23,6 +23,7 @@ struct RideObjectEntry; enum class EditorStep : uint8_t; enum class VehicleColourSettings : uint8_t; +enum class RideInspection : uint8_t; namespace OpenRCT2::Scenario { @@ -260,7 +261,7 @@ namespace OpenRCT2::RCT2 uint8_t unreliabilityFactor; // 0x198 // Range from [0, 100] uint8_t downtime; // 0x199 - uint8_t inspectionInterval; // 0x19A + RideInspection inspectionInterval; // 0x19A uint8_t lastInspection; // 0x19B uint8_t downtimeHistory[Limits::kDowntimeHistorySize]; // 0x19C uint32_t numPrimaryItemsSold; // 0x1A4 diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index ff4ce46e9ff8..8de005a31aa7 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1345,7 +1345,7 @@ static void RideInspectionUpdate(Ride& ride) ride.lastInspection = AddClamp(ride.lastInspection, 1); ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; - int32_t inspectionIntervalMinutes = RideInspectionInterval[ride.inspectionInterval]; + int32_t inspectionIntervalMinutes = RideInspectionInterval[EnumValue(ride.inspectionInterval)]; // An inspection interval of 0 minutes means the ride is set to never be inspected. if (inspectionIntervalMinutes == 0) { @@ -5302,13 +5302,10 @@ void Ride::setReversedTrains(bool reverseTrains) void Ride::setToDefaultInspectionInterval() { - uint8_t defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; + auto defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; if (inspectionInterval != defaultInspectionInterval) { - if (defaultInspectionInterval <= RIDE_INSPECTION_NEVER) - { - SetOperatingSetting(id, GameActions::RideSetSetting::InspectionInterval, defaultInspectionInterval); - } + SetOperatingSetting(id, GameActions::RideSetSetting::InspectionInterval, EnumValue(defaultInspectionInterval)); } } diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 0fbab71c3d69..32be193a8e83 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -62,6 +62,17 @@ constexpr money64 kRideMaxPrice = 20.00_GBP; extern const StringId kRideInspectionIntervalNames[]; +enum class RideInspection : uint8_t +{ + every10Minutes, + every20Minutes, + every30Minutes, + every45Minutes, + everyHour, + every2Hours, + never, +}; + enum class RideTestingFlag : uint8_t { sheltered, @@ -273,7 +284,7 @@ struct Ride uint8_t unreliabilityFactor{}; // Range from [0, 100] uint8_t downtime{}; - uint8_t inspectionInterval{}; + RideInspection inspectionInterval{}; uint8_t lastInspection{}; uint8_t downtimeHistory[OpenRCT2::Limits::kDowntimeHistorySize]{}; uint32_t numPrimaryItemsSold{}; @@ -780,17 +791,6 @@ enum WAIT_FOR_LOAD_COUNT, }; -enum -{ - RIDE_INSPECTION_EVERY_10_MINUTES, - RIDE_INSPECTION_EVERY_20_MINUTES, - RIDE_INSPECTION_EVERY_30_MINUTES, - RIDE_INSPECTION_EVERY_45_MINUTES, - RIDE_INSPECTION_EVERY_HOUR, - RIDE_INSPECTION_EVERY_2_HOURS, - RIDE_INSPECTION_NEVER -}; - // Flags used by ride->windowInvalidateFlags enum { diff --git a/src/openrct2/scripting/bindings/ride/ScRide.cpp b/src/openrct2/scripting/bindings/ride/ScRide.cpp index aa9194681af8..05b157ace3b0 100644 --- a/src/openrct2/scripting/bindings/ride/ScRide.cpp +++ b/src/openrct2/scripting/bindings/ride/ScRide.cpp @@ -454,7 +454,7 @@ namespace OpenRCT2::Scripting uint8_t ScRide::inspectionInterval_get() const { auto ride = GetRide(); - return ride != nullptr ? ride->inspectionInterval : 0; + return ride != nullptr ? EnumValue(ride->inspectionInterval) : 0; } void ScRide::inspectionInterval_set(uint8_t value) { @@ -462,7 +462,9 @@ namespace OpenRCT2::Scripting auto ride = GetRide(); if (ride != nullptr) { - ride->inspectionInterval = std::clamp(value, RIDE_INSPECTION_EVERY_10_MINUTES, RIDE_INSPECTION_NEVER); + auto clamped = std::clamp( + value, EnumValue(RideInspection::every10Minutes), EnumValue(RideInspection::never)); + ride->inspectionInterval = static_cast(clamped); } } From f97b6e8cbe39de532ca6d0031685481693a73678 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Thu, 18 Dec 2025 00:25:56 +0100 Subject: [PATCH 156/222] Pass inspection interval as a parameter to game actions --- distribution/changelog.txt | 2 ++ src/openrct2-ui/ride/Construction.cpp | 4 +++- src/openrct2-ui/windows/RideConstruction.cpp | 1 - src/openrct2-ui/windows/TrackDesignPlace.cpp | 14 +++++++++---- src/openrct2/actions/RideCreateAction.cpp | 14 ++++++++++--- src/openrct2/actions/RideCreateAction.h | 3 ++- src/openrct2/actions/TrackDesignAction.cpp | 22 +++++++++++++------- src/openrct2/actions/TrackDesignAction.h | 4 +++- src/openrct2/ride/Ride.cpp | 9 -------- src/openrct2/ride/Ride.h | 1 - src/openrct2/ride/TrackDesign.cpp | 4 +++- 11 files changed, 48 insertions(+), 30 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 52447bd4ba19..57609070ae67 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -24,8 +24,10 @@ - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. - Fix: [#25595] Invisible entrance is added to imported SV4 saves. +- Fix: [#25601] Inspection interval of a ride gets reset when opening the construction window. - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. - Fix: [#25639] Scenery window crashes when a no longer present object is still selected. +- Fix: [#25641] Desync because of mismatching inspection intervals. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. - Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. - Fix: [#25660] After saving a track design with scenery, that ride’s entrances and exits are visible in ‘Highlight path issues’ mode. diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index 978beeb08197..b025036747a4 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -231,7 +232,8 @@ namespace OpenRCT2 int32_t colour2 = RideGetUnusedPresetVehicleColour(rideEntryIndex); auto gameAction = GameActions::RideCreateAction( - listItem.Type, listItem.EntryIndex, colour1, colour2, getGameState().lastEntranceStyle); + listItem.Type, listItem.EntryIndex, colour1, colour2, getGameState().lastEntranceStyle, + Config::Get().general.defaultInspectionInterval); gameAction.SetCallback([](const GameActions::GameAction* ga, const GameActions::Result* result) { if (result->error != GameActions::Status::ok) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 7efb2573bc3d..f0757d8eb10e 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -326,7 +326,6 @@ namespace OpenRCT2::Ui::Windows } } - currentRide->setToDefaultInspectionInterval(); auto intent = Intent(WindowClass::ride); intent.PutExtra(INTENT_EXTRA_RIDE_ID, currentRide->id.ToUnderlying()); ContextOpenIntent(&intent); diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 97d689e63dde..777db90bd89b 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -225,7 +226,9 @@ namespace OpenRCT2::Ui::Windows if (res.error == GameActions::Status::ok) { // Valid location found. Place the ghost at the location. - auto tdAction = GameActions::TrackDesignAction(ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle); + auto tdAction = GameActions::TrackDesignAction( + ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle, + Config::Get().general.defaultInspectionInterval); tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) { if (result->error == GameActions::Status::ok) @@ -297,7 +300,8 @@ namespace OpenRCT2::Ui::Windows _placingTrackDesign = true; auto tdAction = GameActions::TrackDesignAction( - { trackLoc, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle); + { trackLoc, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle, + Config::Get().general.defaultInspectionInterval); tdAction.SetCallback([&, trackLoc](const GameActions::GameAction*, const GameActions::Result* result) { if (result->error != GameActions::Status::ok) { @@ -400,7 +404,8 @@ namespace OpenRCT2::Ui::Windows if (_hasPlacementGhost) { auto tdAction = GameActions::TrackDesignAction( - { _placementGhostLoc }, *_trackDesign, !gTrackDesignSceneryToggle); + { _placementGhostLoc }, *_trackDesign, !gTrackDesignSceneryToggle, + Config::Get().general.defaultInspectionInterval); tdAction.SetFlags({ CommandFlag::noSpend, CommandFlag::ghost }); auto res = GameActions::Execute(&tdAction, getGameState()); if (res.error != GameActions::Status::ok) @@ -747,7 +752,8 @@ namespace OpenRCT2::Ui::Windows for (int32_t i = 0; i < 7; i++, loc.z += kCoordsZStep) { auto tdAction = GameActions::TrackDesignAction( - CoordsXYZD{ loc.x, loc.y, loc.z, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle); + CoordsXYZD{ loc.x, loc.y, loc.z, _currentTrackPieceDirection }, *_trackDesign, !gTrackDesignSceneryToggle, + Config::Get().general.defaultInspectionInterval); tdAction.SetFlags(newFlags); res = GameActions::Query(&tdAction, getGameState()); diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index 0b0795fe0ba2..dcf4f21627b3 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -32,12 +32,13 @@ namespace OpenRCT2::GameActions { RideCreateAction::RideCreateAction( ride_type_t rideType, ObjectEntryIndex subType, uint8_t trackColourPreset, uint8_t vehicleColourPreset, - ObjectEntryIndex entranceObjectIndex) + ObjectEntryIndex entranceObjectIndex, RideInspection inspectionInterval) : _rideType(rideType) , _subType(subType) , _entranceObjectIndex(entranceObjectIndex) , _trackColourPreset(trackColourPreset) , _vehicleColourPreset(vehicleColourPreset) + , _inspectionInterval(inspectionInterval) { } @@ -48,6 +49,7 @@ namespace OpenRCT2::GameActions visitor.Visit("entranceObject", _entranceObjectIndex); visitor.Visit("colour1", _trackColourPreset); visitor.Visit("colour2", _vehicleColourPreset); + visitor.Visit("inspectionInterval", _inspectionInterval); } ride_type_t RideCreateAction::GetRideType() const @@ -70,11 +72,17 @@ namespace OpenRCT2::GameActions GameAction::Serialise(stream); stream << DS_TAG(_rideType) << DS_TAG(_subType) << DS_TAG(_entranceObjectIndex) << DS_TAG(_trackColourPreset) - << DS_TAG(_vehicleColourPreset); + << DS_TAG(_vehicleColourPreset) << DS_TAG(_inspectionInterval); } Result RideCreateAction::Query(GameState_t& gameState) const { + if (_inspectionInterval > RideInspection::never) + { + LOG_ERROR("Invalid inspection interval: %u", EnumValue(_inspectionInterval)); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + } + auto rideIndex = GetNextFreeRideId(); if (rideIndex.IsNull()) { @@ -274,7 +282,7 @@ namespace OpenRCT2::GameActions ride->upkeepCost = kMoney64Undefined; ride->reliability = kRideInitialReliability; ride->unreliabilityFactor = 1; - ride->inspectionInterval = RideInspection::every30Minutes; + ride->inspectionInterval = _inspectionInterval; ride->lastCrashType = RIDE_CRASH_TYPE_NONE; ride->incomePerHour = kMoney64Undefined; ride->profit = kMoney64Undefined; diff --git a/src/openrct2/actions/RideCreateAction.h b/src/openrct2/actions/RideCreateAction.h index 910bea53d614..b386d45ddb93 100644 --- a/src/openrct2/actions/RideCreateAction.h +++ b/src/openrct2/actions/RideCreateAction.h @@ -21,12 +21,13 @@ namespace OpenRCT2::GameActions ObjectEntryIndex _entranceObjectIndex{ kObjectEntryIndexNull }; uint8_t _trackColourPreset{ COLOUR_NULL }; uint8_t _vehicleColourPreset{ COLOUR_NULL }; + RideInspection _inspectionInterval{ RideInspection::every30Minutes }; public: RideCreateAction() = default; RideCreateAction( ride_type_t rideType, ObjectEntryIndex subType, uint8_t trackColourPreset, uint8_t vehicleColourPreset, - ObjectEntryIndex entranceStyleIndex); + ObjectEntryIndex entranceStyleIndex, RideInspection inspectionInterval); void AcceptParameters(GameActionParameterVisitor&) final; diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 9c57bac2258d..5f6311ad56e2 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -27,10 +27,12 @@ namespace OpenRCT2::GameActions { - TrackDesignAction::TrackDesignAction(const CoordsXYZD& location, const TrackDesign& td, bool placeScenery) + TrackDesignAction::TrackDesignAction( + const CoordsXYZD& location, const TrackDesign& td, bool placeScenery, RideInspection inspectionInterval) : _loc(location) , _td(td) , _placeScenery(placeScenery) + , _inspectionInterval(inspectionInterval) { } @@ -52,6 +54,7 @@ namespace OpenRCT2::GameActions stream << DS_TAG(_loc); _td.Serialise(stream); stream << DS_TAG(_placeScenery); + stream << DS_TAG(_inspectionInterval); } Result TrackDesignAction::Query(GameState_t& gameState) const @@ -67,6 +70,12 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } + if (_inspectionInterval > RideInspection::never) + { + LOG_ERROR("Invalid inspection interval: %u", EnumValue(_inspectionInterval)); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + } + auto& objManager = GetContext()->GetObjectManager(); auto entryIndex = objManager.GetLoadedObjectEntryIndex(_td.trackAndVehicle.vehicleObject); if (entryIndex == kObjectEntryIndexNull) @@ -80,7 +89,8 @@ namespace OpenRCT2::GameActions } // Colours do not matter as will be overwritten - auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); + auto rideCreateAction = RideCreateAction( + _td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle, _inspectionInterval); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); if (r.error != Status::ok) @@ -150,7 +160,8 @@ namespace OpenRCT2::GameActions } // Colours do not matter as will be overwritten - auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); + auto rideCreateAction = RideCreateAction( + _td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle, _inspectionInterval); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); if (r.error != Status::ok) @@ -236,11 +247,6 @@ namespace OpenRCT2::GameActions auto numCircuits = std::max(1, _td.operation.numCircuits); SetOperatingSettingNested(ride->id, RideSetSetting::NumCircuits, numCircuits, flags); - auto defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; - if (defaultInspectionInterval <= RideInspection::never) - SetOperatingSettingNested( - ride->id, RideSetSetting::InspectionInterval, EnumValue(defaultInspectionInterval), flags); - ride->lifecycleFlags |= RIDE_LIFECYCLE_NOT_CUSTOM_DESIGN; ride->vehicleColourSettings = _td.appearance.vehicleColourSettings; diff --git a/src/openrct2/actions/TrackDesignAction.h b/src/openrct2/actions/TrackDesignAction.h index 1b5acfa8886b..526a9e8f4863 100644 --- a/src/openrct2/actions/TrackDesignAction.h +++ b/src/openrct2/actions/TrackDesignAction.h @@ -20,10 +20,12 @@ namespace OpenRCT2::GameActions CoordsXYZD _loc; TrackDesign _td; bool _placeScenery{ false }; + RideInspection _inspectionInterval{ RideInspection::every30Minutes }; public: TrackDesignAction() = default; - TrackDesignAction(const CoordsXYZD& location, const TrackDesign& td, bool placeScenery); + TrackDesignAction( + const CoordsXYZD& location, const TrackDesign& td, bool placeScenery, RideInspection inspectionInterval); void AcceptParameters(GameActionParameterVisitor&) final; diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 8de005a31aa7..49406f5715e9 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -5300,15 +5300,6 @@ void Ride::setReversedTrains(bool reverseTrains) GameActions::Execute(&rideSetVehicleAction, getGameState()); } -void Ride::setToDefaultInspectionInterval() -{ - auto defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; - if (inspectionInterval != defaultInspectionInterval) - { - SetOperatingSetting(id, GameActions::RideSetSetting::InspectionInterval, EnumValue(defaultInspectionInterval)); - } -} - /** * * rct2: 0x006B752C diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 32be193a8e83..4175c588bc52 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -361,7 +361,6 @@ struct Ride void renew(); void remove(); void crash(uint8_t vehicleIndex); - void setToDefaultInspectionInterval(); void setRideEntry(OpenRCT2::ObjectEntryIndex entryIndex); void setNumTrains(int32_t newNumTrains); diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index d39094f2f236..ded63ee05fa8 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -31,6 +31,7 @@ #include "../actions/WallPlaceAction.h" #include "../actions/WallRemoveAction.h" #include "../audio/Audio.h" +#include "../config/Config.h" #include "../core/DataSerialiser.h" #include "../core/File.h" #include "../core/Numerics.hpp" @@ -1859,7 +1860,8 @@ int32_t TrackDesignGetZPlacement(const TrackDesign& td, Ride& ride, const Coords static money64 TrackDesignCreateRide(int32_t type, int32_t subType, CommandFlags flags, RideId* outRideIndex) { // Don't set colours as will be set correctly later. - auto gameAction = GameActions::RideCreateAction(type, subType, 0, 0, getGameState().lastEntranceStyle); + auto gameAction = GameActions::RideCreateAction( + type, subType, 0, 0, getGameState().lastEntranceStyle, Config::Get().general.defaultInspectionInterval); gameAction.SetFlags(flags); auto& gameState = getGameState(); From c1a4339fcf259f77fb1f479e5f75b339200ca6a7 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Thu, 18 Dec 2025 08:23:59 +0000 Subject: [PATCH 157/222] Update replays --- CMakeLists.txt | 4 ++-- openrct2.deps.targets | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a8e0c8b5389..b6edd7f277ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,9 +82,9 @@ set(OPENMSX_VERSION "1.6.1") set(OPENMSX_URL "https://github.com/OpenRCT2/OpenMusic/releases/download/v${OPENMSX_VERSION}/openmusic.zip") set(OPENMSX_SHA256 "994b350d3b180ee1cb9619fe27f7ebae3a1a5232840c4bd47a89f33fa89de1a1") -set(REPLAYS_VERSION "0.0.90") +set(REPLAYS_VERSION "0.0.91") set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v${REPLAYS_VERSION}/replays.zip") -set(REPLAYS_SHA256 "f8474a927e155056e5729b6fa9f05af2a85ae7e1435f5fa89ba496242f9f255e") +set(REPLAYS_SHA256 "5b99edc3d8445fcd2cb22c204708247f575d0bdd3128561322e3abf01e977c79") option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.") option(WITH_TESTS "Build tests") diff --git a/openrct2.deps.targets b/openrct2.deps.targets index 34aea9797e51..55f7507cf17c 100644 --- a/openrct2.deps.targets +++ b/openrct2.deps.targets @@ -224,8 +224,8 @@ 06b90f3e19c216752df441d551b26a9e3e1ba7755bdd2102504b73bf993608be https://github.com/OpenRCT2/OpenMusic/releases/download/v1.6.1/openmusic.zip 994b350d3b180ee1cb9619fe27f7ebae3a1a5232840c4bd47a89f33fa89de1a1 - https://github.com/OpenRCT2/replays/releases/download/v0.0.90/replays.zip - f8474a927e155056e5729b6fa9f05af2a85ae7e1435f5fa89ba496242f9f255e + https://github.com/OpenRCT2/replays/releases/download/v0.0.91/replays.zip + 5b99edc3d8445fcd2cb22c204708247f575d0bdd3128561322e3abf01e977c79 From 8daa5595a2b9b615e03fd3034233bacddc7b31f4 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 21 Dec 2025 13:10:55 +0100 Subject: [PATCH 158/222] Clamp inspection interval when importing from S4/S6 --- src/openrct2/rct1/RCT1.h | 3 +-- src/openrct2/rct1/S4Importer.cpp | 3 ++- src/openrct2/rct2/RCT2.h | 3 +-- src/openrct2/rct2/S6Importer.cpp | 3 ++- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 4373dfdf5a47..68b705a316e4 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -17,7 +17,6 @@ #include "../world/ParkData.h" #include "Limits.h" -enum class RideInspection : uint8_t; enum class VehicleColourSettings : uint8_t; namespace OpenRCT2::Scenario @@ -382,7 +381,7 @@ namespace OpenRCT2::RCT1 }; uint8_t unreliabilityFactor; // 0x148 uint8_t downtime; // 0x149 - RideInspection inspectionInterval; // 0x14A + uint8_t inspectionInterval; // 0x14A uint8_t lastInspection; // 0x14B uint8_t unk14C[20]; // 0x14C money32 incomePerHour; // 0x160 diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 52934dc5770a..7bb1d8979cbf 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1007,7 +1007,8 @@ namespace OpenRCT2::RCT1 // Maintenance dst->buildDate = static_cast(src->buildDate); - dst->inspectionInterval = src->inspectionInterval; + auto clampedInspectionInterval = std::clamp(src->inspectionInterval, 0, EnumValue(RideInspection::never)); + dst->inspectionInterval = static_cast(clampedInspectionInterval); dst->lastInspection = src->lastInspection; dst->reliability = src->reliability; dst->unreliabilityFactor = src->unreliabilityFactor; diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index e306b583d87c..59c02fcf1e34 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -23,7 +23,6 @@ struct RideObjectEntry; enum class EditorStep : uint8_t; enum class VehicleColourSettings : uint8_t; -enum class RideInspection : uint8_t; namespace OpenRCT2::Scenario { @@ -261,7 +260,7 @@ namespace OpenRCT2::RCT2 uint8_t unreliabilityFactor; // 0x198 // Range from [0, 100] uint8_t downtime; // 0x199 - RideInspection inspectionInterval; // 0x19A + uint8_t inspectionInterval; // 0x19A uint8_t lastInspection; // 0x19B uint8_t downtimeHistory[Limits::kDowntimeHistorySize]; // 0x19C uint32_t numPrimaryItemsSold; // 0x1A4 diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index df9e3047022a..4768d0aa976b 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -932,7 +932,8 @@ namespace OpenRCT2::RCT2 dst->reliability = src->reliability; dst->unreliabilityFactor = src->unreliabilityFactor; dst->downtime = src->downtime; - dst->inspectionInterval = src->inspectionInterval; + auto clampedInspectionInterval = std::clamp(src->inspectionInterval, 0, EnumValue(RideInspection::never)); + dst->inspectionInterval = static_cast(clampedInspectionInterval); dst->lastInspection = src->lastInspection; for (uint8_t i = 0; i < Limits::kDowntimeHistorySize; i++) From 7064789c4931d31887e9f5163601fb81f0db45de Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 22:16:19 +0100 Subject: [PATCH 159/222] Turn TrackElementFlag into strong enum and flagholder --- src/openrct2-ui/windows/RideConstruction.cpp | 4 +- src/openrct2/actions/TrackPlaceAction.cpp | 12 +- src/openrct2/ride/Ride.cpp | 4 +- src/openrct2/ride/Track.h | 44 +- src/openrct2/ride/TrackData.cpp | 702 +++++++++--------- src/openrct2/ride/TrackData.h | 3 +- src/openrct2/ride/Vehicle.cpp | 35 +- .../bindings/ride/ScTrackSegment.cpp | 36 +- .../scripting/bindings/ride/ScTrackSegment.h | 2 +- 9 files changed, 422 insertions(+), 420 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 8d37d650b4a1..4755aea8c317 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -5049,13 +5049,13 @@ namespace OpenRCT2::Ui::Windows bool turnOffLiftHill = false; if (!IsTrackEnabled(TrackGroup::liftHillCurve)) { - if (ted.flags & TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT) + if (ted.flags.has(TrackElementFlag::curveAllowsLift)) { turnOffLiftHill = true; } } - if (!(ted.flags & TRACK_ELEM_FLAG_ALLOW_LIFT_HILL)) + if (!ted.flags.has(TrackElementFlag::allowLiftHill)) { turnOffLiftHill = true; } diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 86e7b255e7e8..205487016868 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -168,7 +168,7 @@ namespace OpenRCT2::GameActions && !gameState.cheats.enableChainLiftOnAllTrack) { const auto& ted = GetTrackElementDescriptor(_trackType); - if (ted.flags & TRACK_ELEM_FLAG_IS_STEEP_UP) + if (ted.flags.has(TrackElementFlag::isSteepUp)) { return Result( Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL); @@ -205,7 +205,7 @@ namespace OpenRCT2::GameActions if (!gameState.cheats.allowTrackPlaceInvalidHeights) { - if (ted.flags & TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT) + if (ted.flags.has(TrackElementFlag::startsAtHalfHeight)) { if ((_origin.z & 0x0F) != 8) { @@ -274,7 +274,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) + if (!ted.flags.has(TrackElementFlag::canBePartlyUnderground)) { if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { @@ -285,7 +285,7 @@ namespace OpenRCT2::GameActions } resultData.GroundFlags = mapGroundFlags; - if (ted.flags & TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND) + if (ted.flags.has(TrackElementFlag::onlyAboveGround)) { if (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) { @@ -295,7 +295,7 @@ namespace OpenRCT2::GameActions } } - if (ted.flags & TRACK_ELEM_FLAG_ONLY_UNDERWATER) + if (ted.flags.has(TrackElementFlag::onlyUnderwater)) { // No element has this flag if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { @@ -511,7 +511,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) + if (!ted.flags.has(TrackElementFlag::canBePartlyUnderground)) { if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index ff4ce46e9ff8..8210a670d055 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -2824,7 +2824,7 @@ static bool RideCheckTrackContainsInversions(const CoordsXYE& input, CoordsXYE* { auto trackType = it.current.element->AsTrack()->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.flags & TRACK_ELEM_FLAG_INVERSION_TO_NORMAL) + if (ted.flags.has(TrackElementFlag::inversionToNormal)) { *output = it.current; return true; @@ -2885,7 +2885,7 @@ static bool RideCheckTrackContainsBanked(const CoordsXYE& input, CoordsXYE* outp { auto trackType = it.current.element->AsTrack()->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (ted.flags & TRACK_ELEM_FLAG_BANKED) + if (ted.flags.has(TrackElementFlag::banked)) { *output = it.current; return true; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 65be35ef1d69..c2dd93676dc1 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -240,27 +240,31 @@ enum class TrackCurve : uint8_t }; constexpr const uint8_t kHighestCurveValue = 8; -enum +enum class TrackElementFlag : uint8_t { - TRACK_ELEM_FLAG_ONLY_UNDERWATER = (1 << 0), - TRACK_ELEM_FLAG_TURN_LEFT = (1 << 1), - TRACK_ELEM_FLAG_TURN_RIGHT = (1 << 2), - TRACK_ELEM_FLAG_TURN_BANKED = (1 << 3), - TRACK_ELEM_FLAG_TURN_SLOPED = (1 << 4), - TRACK_ELEM_FLAG_DOWN = (1 << 5), - TRACK_ELEM_FLAG_UP = (1 << 6), - TRACK_ELEM_FLAG_NORMAL_TO_INVERSION = (1 << 7), - TRACK_ELEM_FLAG_IS_GOLF_HOLE = (1 << 7), - TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT = (1 << 8), - TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND = (1 << 9), - TRACK_ELEM_FLAG_IS_STEEP_UP = (1 << 10), // Used to allow steep backwards lifts on roller coasters that do not allow steep - // forward lift hills - TRACK_ELEM_FLAG_HELIX = (1 << 11), - TRACK_ELEM_FLAG_ALLOW_LIFT_HILL = (1 << 12), - TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT = (1 << 13), - TRACK_ELEM_FLAG_INVERSION_TO_NORMAL = (1 << 14), - TRACK_ELEM_FLAG_BANKED = (1 << 15), // Also set on Spinning Tunnel and Log Flume reverser, probably to save a flag. - TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND = (1 << 16), + onlyUnderwater, + turnLeft, + turnRight, + turnBanked, + turnSloped, + down, + up, + normalToInversion, + isGolfHole = normalToInversion, + startsAtHalfHeight, + onlyAboveGround, + + // Used to allow steep backwards lifts on roller coasters that do not allow steep + // forward lift hills + isSteepUp, + helix, + allowLiftHill, + curveAllowsLift, + inversionToNormal, + + // Also set on Spinning Tunnel and Log Flume reverser, probably to save a flag. + banked, + canBePartlyUnderground, }; namespace OpenRCT2 diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 03bb7dab3e85..ffab13bc2603 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -2347,357 +2347,357 @@ namespace OpenRCT2::TrackMetaData static_assert(std::size(kTrackElementMirrorMap) == EnumValue(TrackElemType::count)); /** rct2: 0x0099423C */ - static constexpr uint32_t kTrackFlags[] = { - /* TrackElemType::flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::endStation */ 0, - /* TrackElemType::beginStation */ 0, - /* TrackElemType::middleStation */ 0, - /* TrackElemType::up25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::flatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::down25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::down60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::flatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::down25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::down60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::down25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::leftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::flatToLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::flatToRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::bankedLeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::bankedRightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::up25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::up25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::down25ToLeftBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::down25ToRightBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::sBendLeft */ 0, - /* TrackElemType::sBendRight */ 0, - /* TrackElemType::leftVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::leftBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::leftTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::halfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::halfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::flatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::flatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::down60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::towerBase */ 0, - /* TrackElemType::towerSection */ 0, - /* TrackElemType::flatCovered */ 0, - /* TrackElemType::up25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::up60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::flatToUp25Covered */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::up25ToUp60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::up60ToUp25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::up25ToFlatCovered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::flatToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down25ToDown60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down60ToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down25ToFlatCovered */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::leftQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::sBendLeftCovered */ 0, - /* TrackElemType::sBendRightCovered */ 0, - /* TrackElemType::leftQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::leftHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::rightQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::leftQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::rightQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::brakes */ 0, - /* TrackElemType::booster */ 0, - /* TrackElemType::invertedUp90ToFlatQuarterLoopAlias / Maze */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, - /* TrackElemType::leftQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::rightQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::leftQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::rightQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::waterfall */ 0, - /* TrackElemType::rapids */ 0, - /* TrackElemType::onRidePhoto */ 0, - /* TrackElemType::down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::watersplash */ 0, - /* TrackElemType::flatToUp60LongBase */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::up60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::whirlpool */ 0, - /* TrackElemType::down60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::flatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::cableLiftHill */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::reverseFreefallSlope */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::reverseFreefallVertical */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::up90 */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::down90 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up60ToUp90 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down90ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::up90ToUp60 */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::down60ToDown90 */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::brakeForDrop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::leftEighthToDiag */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightEighthToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::leftEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::rightEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::leftEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagFlat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagFlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagUp25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagUp60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagFlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagDown25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagDown60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagFlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagUp60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagFlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagDown60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::diagFlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagFlatToRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagLeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagLeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagUp25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagUp25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagLeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagDown25ToLeftBank */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::diagDown25ToRightBank */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::diagLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::logFlumeReverser */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::spinningTunnel */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankToRightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightQuarterTurn3TilesDown25ToRightBank */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::poweredLift */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::leftLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::flyerHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::flyerHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::heartLineTransferUp */ 0, - /* TrackElemType::heartLineTransferDown */ 0, - /* TrackElemType::leftHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, - /* TrackElemType::rightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, - /* TrackElemType::minigolfHoleA */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::minigolfHoleB */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::minigolfHoleC */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::minigolfHoleD */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::minigolfHoleE */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::multiDimInvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::up90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::invertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP, - /* TrackElemType::rightCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP, - /* TrackElemType::leftReverser */ 0, - /* TrackElemType::rightReverser */ 0, - /* TrackElemType::airThrustTopCap */ 0, - /* TrackElemType::airThrustVerticalDown */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::airThrustVerticalDownToLevel */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::blockBrakes */ 0, - /* TrackElemType::leftBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::up25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::up25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::down25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::down25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::flatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::flatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::flatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::flatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::rightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::leftQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, - /* TrackElemType::rightQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, - /* TrackElemType::leftQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::rightQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::multiDimFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rotationControlToggle */ 0, - /* TrackElemType::flatTrack1x4A */ 0, - /* TrackElemType::flatTrack2x2 */ 0, - /* TrackElemType::flatTrack4x4 */ 0, - /* TrackElemType::flatTrack2x4 */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, - /* TrackElemType::flatTrack1x5 */ 0, - /* TrackElemType::flatTrack1x1A */ 0, - /* TrackElemType::flatTrack1x4B */ 0, - /* TrackElemType::flatTrack1x1B */ 0, - /* TrackElemType::flatTrack1x4C */ 0, - /* TrackElemType::flatTrack3x3 */ 0, - /* TrackElemType::leftLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::rightFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::leftFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::rightFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::leftFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::rightFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::flyerHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::flyerHalfLoopUnivertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::leftEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::diagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::diagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::leftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::leftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::rightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::diagBrakes */ 0, - /* TrackElemType::diagBlockBrakes */ 0, - /* TrackElemType::down25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagBooster */ 0, - /* TrackElemType::diagFlatToUp60LongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP, - /* TrackElemType::diagUp60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP, - /* TrackElemType::diagFlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::diagDown60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::leftEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::leftEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::rightEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::diagDown25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + static constexpr TrackFlags kTrackFlags[] = { + /* TrackElemType::flat */ { TrackElementFlag::allowLiftHill }, + /* TrackElemType::endStation */ {}, + /* TrackElemType::beginStation */ {}, + /* TrackElemType::middleStation */ {}, + /* TrackElemType::up25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up60 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::flatToUp25 */ { TrackElementFlag::up, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up25ToUp60 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up60ToUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up25ToFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::down25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::down60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::flatToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::down25ToDown60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::down60ToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::down25ToFlat */ { TrackElementFlag::down, TrackElementFlag::allowLiftHill }, + /* TrackElemType::leftQuarterTurn5Tiles */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightQuarterTurn5Tiles */ { TrackElementFlag::turnRight }, + /* TrackElemType::flatToLeftBank */ { TrackElementFlag::banked }, + /* TrackElemType::flatToRightBank */ { TrackElementFlag::banked }, + /* TrackElemType::leftBankToFlat */ { TrackElementFlag::banked }, + /* TrackElemType::rightBankToFlat */ { TrackElementFlag::banked }, + /* TrackElemType::bankedLeftQuarterTurn5Tiles */ { TrackElementFlag::turnLeft, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::bankedRightQuarterTurn5Tiles */ { TrackElementFlag::turnRight, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::leftBankToUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::rightBankToUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::up25ToLeftBank */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::up25ToRightBank */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::down25ToLeftBank */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::down25ToRightBank */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::leftBank */ { TrackElementFlag::banked }, + /* TrackElemType::rightBank */ { TrackElementFlag::banked }, + /* TrackElemType::leftQuarterTurn5TilesUp25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightQuarterTurn5TilesUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftQuarterTurn5TilesDown25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightQuarterTurn5TilesDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::sBendLeft */ {}, + /* TrackElemType::sBendRight */ {}, + /* TrackElemType::leftVerticalLoop */ { TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightVerticalLoop */ { TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftQuarterTurn3Tiles */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightQuarterTurn3Tiles */ { TrackElementFlag::turnRight }, + /* TrackElemType::leftBankedQuarterTurn3Tiles */ { TrackElementFlag::turnLeft, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::rightBankedQuarterTurn3Tiles */ { TrackElementFlag::turnRight, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::leftQuarterTurn3TilesUp25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightQuarterTurn3TilesUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftQuarterTurn3TilesDown25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightQuarterTurn3TilesDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftQuarterTurn1Tile */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightQuarterTurn1Tile */ { TrackElementFlag::turnRight }, + /* TrackElemType::leftTwistDownToUp */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightTwistDownToUp */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftTwistUpToDown */ { TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightTwistUpToDown */ { TrackElementFlag::inversionToNormal }, + /* TrackElemType::halfLoopUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::halfLoopDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftCorkscrewUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightCorkscrewUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftCorkscrewDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightCorkscrewDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::flatToUp60 */ { TrackElementFlag::up, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up60ToFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::flatToDown60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::down60ToFlat */ { TrackElementFlag::down, TrackElementFlag::allowLiftHill }, + /* TrackElemType::towerBase */ {}, + /* TrackElemType::towerSection */ {}, + /* TrackElemType::flatCovered */ {}, + /* TrackElemType::up25Covered */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::up60Covered */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::flatToUp25Covered */ { TrackElementFlag::up }, + /* TrackElemType::up25ToUp60Covered */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::up60ToUp25Covered */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::up25ToFlatCovered */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down25Covered */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down60Covered */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::flatToDown25Covered */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down25ToDown60Covered */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down60ToDown25Covered */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down25ToFlatCovered */ { TrackElementFlag::down }, + /* TrackElemType::leftQuarterTurn5TilesCovered */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightQuarterTurn5TilesCovered */ { TrackElementFlag::turnRight }, + /* TrackElemType::sBendLeftCovered */ {}, + /* TrackElemType::sBendRightCovered */ {}, + /* TrackElemType::leftQuarterTurn3TilesCovered */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightQuarterTurn3TilesCovered */ { TrackElementFlag::turnRight }, + /* TrackElemType::leftHalfBankedHelixUpSmall */ { TrackElementFlag::turnLeft, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::rightHalfBankedHelixUpSmall */ { TrackElementFlag::turnRight, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::leftHalfBankedHelixDownSmall */ { TrackElementFlag::turnLeft, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::rightHalfBankedHelixDownSmall */ { TrackElementFlag::turnRight, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::leftHalfBankedHelixUpLarge */ { TrackElementFlag::turnLeft, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::rightHalfBankedHelixUpLarge */ { TrackElementFlag::turnRight, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::leftHalfBankedHelixDownLarge */ { TrackElementFlag::turnLeft, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::rightHalfBankedHelixDownLarge */ { TrackElementFlag::turnRight, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::leftQuarterTurn1TileUp60 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::rightQuarterTurn1TileUp60 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::leftQuarterTurn1TileDown60 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::rightQuarterTurn1TileDown60 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::brakes */ {}, + /* TrackElemType::booster */ {}, + /* TrackElemType::invertedUp90ToFlatQuarterLoopAlias / Maze */ { TrackElementFlag::onlyAboveGround }, + /* TrackElemType::leftQuarterBankedHelixLargeUp */ { TrackElementFlag::turnLeft, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::rightQuarterBankedHelixLargeUp */ { TrackElementFlag::turnRight, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::leftQuarterBankedHelixLargeDown */ { TrackElementFlag::turnLeft, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::rightQuarterBankedHelixLargeDown */ { TrackElementFlag::turnRight, TrackElementFlag::helix, TrackElementFlag::banked }, + /* TrackElemType::leftQuarterHelixLargeUp */ { TrackElementFlag::turnLeft, TrackElementFlag::helix }, + /* TrackElemType::rightQuarterHelixLargeUp */ { TrackElementFlag::turnRight, TrackElementFlag::helix }, + /* TrackElemType::leftQuarterHelixLargeDown */ { TrackElementFlag::turnLeft, TrackElementFlag::helix }, + /* TrackElemType::rightQuarterHelixLargeDown */ { TrackElementFlag::turnRight, TrackElementFlag::helix }, + /* TrackElemType::up25LeftBanked */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::up25RightBanked */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::waterfall */ {}, + /* TrackElemType::rapids */ {}, + /* TrackElemType::onRidePhoto */ {}, + /* TrackElemType::down25LeftBanked */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::down25RightBanked */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::watersplash */ {}, + /* TrackElemType::flatToUp60LongBase */ { TrackElementFlag::up }, + /* TrackElemType::up60ToFlatLongBase */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::whirlpool */ {}, + /* TrackElemType::down60ToFlatLongBase */ { TrackElementFlag::down }, + /* TrackElemType::flatToDown60LongBase */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::cableLiftHill */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::reverseFreefallSlope */ { TrackElementFlag::up }, + /* TrackElemType::reverseFreefallVertical */ { TrackElementFlag::up }, + /* TrackElemType::up90 */ { TrackElementFlag::up }, + /* TrackElemType::down90 */ { TrackElementFlag::down, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up60ToUp90 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down90ToDown60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::up90ToUp60 */ { TrackElementFlag::up }, + /* TrackElemType::down60ToDown90 */ { TrackElementFlag::down }, + /* TrackElemType::brakeForDrop */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::leftEighthToDiag */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightEighthToDiag */ { TrackElementFlag::turnRight }, + /* TrackElemType::leftEighthToOrthogonal */ { TrackElementFlag::turnLeft }, + /* TrackElemType::rightEighthToOrthogonal */ { TrackElementFlag::turnRight }, + /* TrackElemType::leftEighthBankToDiag */ { TrackElementFlag::turnLeft, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::rightEighthBankToDiag */ { TrackElementFlag::turnRight, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::leftEighthBankToOrthogonal */ { TrackElementFlag::turnLeft, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::rightEighthBankToOrthogonal */ { TrackElementFlag::turnRight, TrackElementFlag::turnBanked, TrackElementFlag::banked }, + /* TrackElemType::diagFlat */ { TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagUp60 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagFlatToUp25 */ { TrackElementFlag::up, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagUp25ToUp60 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagUp60ToUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagUp25ToFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagDown60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagFlatToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagDown25ToDown60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagDown60ToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagDown25ToFlat */ { TrackElementFlag::down, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagFlatToUp60 */ { TrackElementFlag::up, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagUp60ToFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagFlatToDown60 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagDown60ToFlat */ { TrackElementFlag::down, TrackElementFlag::allowLiftHill }, + /* TrackElemType::diagFlatToLeftBank */ { TrackElementFlag::banked }, + /* TrackElemType::diagFlatToRightBank */ { TrackElementFlag::banked }, + /* TrackElemType::diagLeftBankToFlat */ { TrackElementFlag::banked }, + /* TrackElemType::diagRightBankToFlat */ { TrackElementFlag::banked }, + /* TrackElemType::diagLeftBankToUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::diagRightBankToUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::diagUp25ToLeftBank */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::diagUp25ToRightBank */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::diagLeftBankToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::diagRightBankToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::diagDown25ToLeftBank */ { TrackElementFlag::down }, + /* TrackElemType::diagDown25ToRightBank */ { TrackElementFlag::down }, + /* TrackElemType::diagLeftBank */ { TrackElementFlag::banked }, + /* TrackElemType::diagRightBank */ { TrackElementFlag::banked }, + /* TrackElemType::logFlumeReverser */ { TrackElementFlag::banked }, + /* TrackElemType::spinningTunnel */ { TrackElementFlag::banked }, + /* TrackElemType::leftBarrelRollUpToDown */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightBarrelRollUpToDown */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftBarrelRollDownToUp */ { TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightBarrelRollDownToUp */ { TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftBankToLeftQuarterTurn3TilesUp25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::rightBankToRightQuarterTurn3TilesUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::leftQuarterTurn3TilesDown25ToLeftBank */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::rightQuarterTurn3TilesDown25ToRightBank */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::poweredLift */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::leftLargeHalfLoopUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightLargeHalfLoopUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftLargeHalfLoopDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightLargeHalfLoopDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftFlyerTwistUp */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightFlyerTwistUp */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftFlyerTwistDown */ { TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightFlyerTwistDown */ { TrackElementFlag::inversionToNormal }, + /* TrackElemType::flyerHalfLoopUninvertedUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::flyerHalfLoopInvertedDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftFlyerCorkscrewUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightFlyerCorkscrewUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftFlyerCorkscrewDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightFlyerCorkscrewDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::heartLineTransferUp */ {}, + /* TrackElemType::heartLineTransferDown */ {}, + /* TrackElemType::leftHeartLineRoll */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal, TrackElementFlag::canBePartlyUnderground }, + /* TrackElemType::rightHeartLineRoll */ { TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal, TrackElementFlag::canBePartlyUnderground }, + /* TrackElemType::minigolfHoleA */ { TrackElementFlag::isGolfHole }, + /* TrackElemType::minigolfHoleB */ { TrackElementFlag::isGolfHole }, + /* TrackElemType::minigolfHoleC */ { TrackElementFlag::isGolfHole }, + /* TrackElemType::minigolfHoleD */ { TrackElementFlag::isGolfHole }, + /* TrackElemType::minigolfHoleE */ { TrackElementFlag::isGolfHole }, + /* TrackElemType::multiDimInvertedFlatToDown90QuarterLoop */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::up90ToInvertedFlatQuarterLoop */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::invertedFlatToDown90QuarterLoop */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftCurvedLiftHill */ { TrackElementFlag::turnLeft, TrackElementFlag::up }, + /* TrackElemType::rightCurvedLiftHill */ { TrackElementFlag::turnRight, TrackElementFlag::up }, + /* TrackElemType::leftReverser */ {}, + /* TrackElemType::rightReverser */ {}, + /* TrackElemType::airThrustTopCap */ {}, + /* TrackElemType::airThrustVerticalDown */ { TrackElementFlag::down }, + /* TrackElemType::airThrustVerticalDownToLevel */ { TrackElementFlag::down }, + /* TrackElemType::blockBrakes */ {}, + /* TrackElemType::leftBankedQuarterTurn3TileUp25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedQuarterTurn3TileUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedQuarterTurn3TileDown25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedQuarterTurn3TileDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedQuarterTurn5TileUp25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedQuarterTurn5TileUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedQuarterTurn5TileDown25 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedQuarterTurn5TileDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::up25ToLeftBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::up25ToRightBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedUp25ToUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedUp25ToUp25 */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::down25ToLeftBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::down25ToRightBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedDown25ToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedDown25ToDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedFlatToLeftBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::rightBankedFlatToRightBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::leftBankedUp25ToLeftBankedFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedUp25ToRightBankedFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedFlatToLeftBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedFlatToRightBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedDown25ToLeftBankedFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::rightBankedDown25ToRightBankedFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::flatToLeftBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::flatToRightBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::leftBankedUp25ToFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::rightBankedUp25ToFlat */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::flatToLeftBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::flatToRightBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::banked }, + /* TrackElemType::leftBankedDown25ToFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::rightBankedDown25ToFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::leftQuarterTurn1TileUp90 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::up }, + /* TrackElemType::rightQuarterTurn1TileUp90 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up }, + /* TrackElemType::leftQuarterTurn1TileDown90 */ { TrackElementFlag::turnLeft, TrackElementFlag::turnSloped, TrackElementFlag::down }, + /* TrackElemType::rightQuarterTurn1TileDown90 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down }, + /* TrackElemType::multiDimUp90ToInvertedFlatQuarterLoop */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::multiDimFlatToDown90QuarterLoop */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::multiDimInvertedUp90ToFlatQuarterLoop */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rotationControlToggle */ {}, + /* TrackElemType::flatTrack1x4A */ {}, + /* TrackElemType::flatTrack2x2 */ {}, + /* TrackElemType::flatTrack4x4 */ {}, + /* TrackElemType::flatTrack2x4 */ { TrackElementFlag::onlyAboveGround }, + /* TrackElemType::flatTrack1x5 */ {}, + /* TrackElemType::flatTrack1x1A */ {}, + /* TrackElemType::flatTrack1x4B */ {}, + /* TrackElemType::flatTrack1x1B */ {}, + /* TrackElemType::flatTrack1x4C */ {}, + /* TrackElemType::flatTrack3x3 */ {}, + /* TrackElemType::leftLargeCorkscrewUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightLargeCorkscrewUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftLargeCorkscrewDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightLargeCorkscrewDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftMediumHalfLoopUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightMediumHalfLoopUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftMediumHalfLoopDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightMediumHalfLoopDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftZeroGRollUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightZeroGRollUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftZeroGRollDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightZeroGRollDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftLargeZeroGRollUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightLargeZeroGRollUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftLargeZeroGRollDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightLargeZeroGRollDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftFlyerLargeHalfLoopUninvertedUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::rightFlyerLargeHalfLoopUninvertedUp */ { TrackElementFlag::up, TrackElementFlag::normalToInversion, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::leftFlyerLargeHalfLoopInvertedDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightFlyerLargeHalfLoopInvertedDown */ { TrackElementFlag::down, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftFlyerLargeHalfLoopInvertedUp */ { TrackElementFlag::up, TrackElementFlag::inversionToNormal, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::rightFlyerLargeHalfLoopInvertedUp */ { TrackElementFlag::up, TrackElementFlag::inversionToNormal, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::leftFlyerLargeHalfLoopUninvertedDown */ { TrackElementFlag::down, TrackElementFlag::normalToInversion }, + /* TrackElemType::rightFlyerLargeHalfLoopUninvertedDown */ { TrackElementFlag::down, TrackElementFlag::normalToInversion }, + /* TrackElemType::flyerHalfLoopInvertedUp */ { TrackElementFlag::up, TrackElementFlag::inversionToNormal, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::flyerHalfLoopUnivertedDown */ { TrackElementFlag::down, TrackElementFlag::normalToInversion }, + /* TrackElemType::leftEighthToDiagUp25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthToDiagUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftEighthToDiagDown25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthToDiagDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftEighthToOrthogonalUp25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthToOrthogonalUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftEighthToOrthogonalDown25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthToOrthogonalDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::diagUp25ToLeftBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagUp25ToRightBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagLeftBankedUp25ToUp25 */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagRightBankedUp25ToUp25 */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagDown25ToLeftBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagDown25ToRightBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagLeftBankedDown25ToDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagRightBankedDown25ToDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagLeftBankedFlatToLeftBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::diagRightBankedFlatToRightBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::diagLeftBankedUp25ToLeftBankedFlat */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagRightBankedUp25ToRightBankedFlat */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagLeftBankedFlatToLeftBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagRightBankedFlatToRightBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagLeftBankedDown25ToLeftBankedFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::diagRightBankedDown25ToRightBankedFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::diagFlatToLeftBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::diagFlatToRightBankedUp25 */ { TrackElementFlag::up, TrackElementFlag::banked }, + /* TrackElemType::diagLeftBankedUp25ToFlat */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagRightBankedUp25ToFlat */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagFlatToLeftBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagFlatToRightBankedDown25 */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagLeftBankedDown25ToFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::diagRightBankedDown25ToFlat */ { TrackElementFlag::down, TrackElementFlag::banked }, + /* TrackElemType::up25LeftBanked */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::up25RightBanked */ { TrackElementFlag::up, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down25LeftBanked */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::down25RightBanked */ { TrackElementFlag::down, TrackElementFlag::banked, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::leftEighthBankToDiagUp25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthBankToDiagUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftEighthBankToDiagDown25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthBankToDiagDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftEighthBankToOrthogonalUp25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthBankToOrthogonalUp25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::up , TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::leftEighthBankToOrthogonalDown25 */ { TrackElementFlag::turnLeft , TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::rightEighthBankToOrthogonalDown25 */ { TrackElementFlag::turnRight, TrackElementFlag::turnSloped, TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::allowLiftHill, TrackElementFlag::curveAllowsLift }, + /* TrackElemType::diagBrakes */ {}, + /* TrackElemType::diagBlockBrakes */ {}, + /* TrackElemType::down25Brakes */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagBooster */ {}, + /* TrackElemType::diagFlatToUp60LongBase */ { TrackElementFlag::up, TrackElementFlag::isSteepUp }, + /* TrackElemType::diagUp60ToFlatLongBase */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::isSteepUp }, + /* TrackElemType::diagFlatToDown60LongBase */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, + /* TrackElemType::diagDown60ToFlatLongBase */ { TrackElementFlag::down }, + /* TrackElemType::leftEighthDiveLoopUpToOrthogonal */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightEighthDiveLoopUpToOrthogonal */ { TrackElementFlag::up, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::normalToInversion, TrackElementFlag::inversionToNormal }, + /* TrackElemType::leftEighthDiveLoopDownToDiag */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::rightEighthDiveLoopDownToDiag */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight, TrackElementFlag::inversionToNormal }, + /* TrackElemType::diagDown25Brakes */ { TrackElementFlag::down, TrackElementFlag::startsAtHalfHeight }, }; static_assert(std::size(kTrackFlags) == EnumValue(TrackElemType::count)); // clang-format on diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 231b47e340b8..0727d3d7536c 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -20,6 +20,7 @@ using namespace OpenRCT2; namespace OpenRCT2::TrackMetaData { constexpr uint8_t kMaxSequencesPerPiece = 16; + using TrackFlags = FlagHolder; // 0x009968BB, 0x009968BC, 0x009968BD, 0x009968BF, 0x009968C1, 0x009968C3 @@ -127,7 +128,7 @@ namespace OpenRCT2::TrackMetaData // (RideTrackPrice * TED::PriceModifier) / 65536 uint32_t priceModifier; OpenRCT2::TrackElemType mirrorElement; - uint32_t flags; + TrackFlags flags; uint8_t numSequences{}; std::array sequences; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 0e4597252102..2c45309962cd 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -496,8 +496,7 @@ bool Vehicle::OpenRestraints() void RideUpdateMeasurementsSpecialElements_Default(Ride& ride, const OpenRCT2::TrackElemType trackType) { const auto& ted = GetTrackElementDescriptor(trackType); - uint16_t trackFlags = ted.flags; - if (trackFlags & TRACK_ELEM_FLAG_NORMAL_TO_INVERSION) + if (ted.flags.has(TrackElementFlag::normalToInversion)) { if (ride.numInversions < OpenRCT2::Limits::kMaxInversions) ride.numInversions++; @@ -507,8 +506,7 @@ void RideUpdateMeasurementsSpecialElements_Default(Ride& ride, const OpenRCT2::T void RideUpdateMeasurementsSpecialElements_MiniGolf(Ride& ride, const OpenRCT2::TrackElemType trackType) { const auto& ted = GetTrackElementDescriptor(trackType); - uint16_t trackFlags = ted.flags; - if (trackFlags & TRACK_ELEM_FLAG_IS_GOLF_HOLE) + if (ted.flags.has(TrackElementFlag::isGolfHole)) { if (ride.numHoles < OpenRCT2::Limits::kMaxGolfHoles) ride.numHoles++; @@ -658,14 +656,13 @@ void Vehicle::UpdateMeasurements() } const auto& ted = GetTrackElementDescriptor(trackElemType); - uint16_t trackFlags = ted.flags; auto testingFlags = curRide->testingFlags; - if (testingFlags.has(RideTestingFlag::turnLeft) && trackFlags & TRACK_ELEM_FLAG_TURN_LEFT) + if (testingFlags.has(RideTestingFlag::turnLeft) && ted.flags.has(TrackElementFlag::turnLeft)) { // 0x800 as this is masked to kCurrentTurnCountMask curRide->turnCountDefault += 0x800; } - else if (testingFlags.has(RideTestingFlag::turnRight) && trackFlags & TRACK_ELEM_FLAG_TURN_RIGHT) + else if (testingFlags.has(RideTestingFlag::turnRight) && ted.flags.has(TrackElementFlag::turnRight)) { // 0x800 as this is masked to kCurrentTurnCountMask curRide->turnCountDefault += 0x800; @@ -703,31 +700,31 @@ void Vehicle::UpdateMeasurements() } else { - if (trackFlags & TRACK_ELEM_FLAG_TURN_LEFT) + if (ted.flags.has(TrackElementFlag::turnLeft)) { curRide->testingFlags.set(RideTestingFlag::turnLeft); curRide->turnCountDefault &= ~kCurrentTurnCountMask; - if (trackFlags & TRACK_ELEM_FLAG_TURN_BANKED) + if (ted.flags.has(TrackElementFlag::turnBanked)) { curRide->testingFlags.set(RideTestingFlag::turnBanked); } - if (trackFlags & TRACK_ELEM_FLAG_TURN_SLOPED) + if (ted.flags.has(TrackElementFlag::turnSloped)) { curRide->testingFlags.set(RideTestingFlag::turnSloped); } } - if (trackFlags & TRACK_ELEM_FLAG_TURN_RIGHT) + if (ted.flags.has(TrackElementFlag::turnRight)) { curRide->testingFlags.set(RideTestingFlag::turnRight); curRide->turnCountDefault &= ~kCurrentTurnCountMask; - if (trackFlags & TRACK_ELEM_FLAG_TURN_BANKED) + if (ted.flags.has(TrackElementFlag::turnBanked)) { curRide->testingFlags.set(RideTestingFlag::turnBanked); } - if (trackFlags & TRACK_ELEM_FLAG_TURN_SLOPED) + if (ted.flags.has(TrackElementFlag::turnSloped)) { curRide->testingFlags.set(RideTestingFlag::turnSloped); } @@ -736,7 +733,7 @@ void Vehicle::UpdateMeasurements() if (testingFlags.has(RideTestingFlag::dropDown)) { - if (velocity < 0 || !(trackFlags & TRACK_ELEM_FLAG_DOWN)) + if (velocity < 0 || !ted.flags.has(TrackElementFlag::down)) { curRide->testingFlags.unset(RideTestingFlag::dropDown); @@ -751,7 +748,7 @@ void Vehicle::UpdateMeasurements() } } } - else if (trackFlags & TRACK_ELEM_FLAG_DOWN && velocity >= 0) + else if (ted.flags.has(TrackElementFlag::down) && velocity >= 0) { curRide->testingFlags.unset(RideTestingFlag::dropUp); curRide->testingFlags.set(RideTestingFlag::dropDown); @@ -765,7 +762,7 @@ void Vehicle::UpdateMeasurements() if (testingFlags.has(RideTestingFlag::dropUp)) { - if (velocity > 0 || !(trackFlags & TRACK_ELEM_FLAG_UP)) + if (velocity > 0 || !ted.flags.has(TrackElementFlag::up)) { curRide->testingFlags.unset(RideTestingFlag::dropUp); @@ -780,7 +777,7 @@ void Vehicle::UpdateMeasurements() } } } - else if (trackFlags & TRACK_ELEM_FLAG_UP && velocity <= 0) + else if (ted.flags.has(TrackElementFlag::up) && velocity <= 0) { curRide->testingFlags.unset(RideTestingFlag::dropDown); curRide->testingFlags.set(RideTestingFlag::dropUp); @@ -791,7 +788,7 @@ void Vehicle::UpdateMeasurements() curRide->startDropHeight = z / kCoordsZStep; } - if (trackFlags & TRACK_ELEM_FLAG_HELIX) + if (ted.flags.has(TrackElementFlag::helix)) { if (curRide->numHelices < OpenRCT2::Limits::kMaxHelices) curRide->numHelices++; @@ -7185,7 +7182,7 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(TrackElemType trackType, con { trackType = tileElement->AsTrack()->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); - if (!(ted.flags & TRACK_ELEM_FLAG_DOWN)) + if (!ted.flags.has(TrackElementFlag::down)) { _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_9; } diff --git a/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp b/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp index 698ba75d75f9..9634f4807328 100644 --- a/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp +++ b/src/openrct2/scripting/bindings/ride/ScTrackSegment.cpp @@ -50,21 +50,21 @@ void ScTrackSegment::Register(duk_context* ctx) dukglue_register_property(ctx, &ScTrackSegment::getTrackPitchDirection, nullptr, "slopeDirection"); dukglue_register_property( - ctx, &ScTrackSegment::getTrackFlag, nullptr, "onlyAllowedUnderwater"); + ctx, &ScTrackSegment::getTrackFlag, nullptr, "onlyAllowedUnderwater"); dukglue_register_property( - ctx, &ScTrackSegment::getTrackFlag, nullptr, "onlyAllowedAboveGround"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "allowsChainLift"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isBanked"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isInversion"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isSteepUp"); + ctx, &ScTrackSegment::getTrackFlag, nullptr, "onlyAllowedAboveGround"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "allowsChainLift"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isBanked"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isInversion"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isSteepUp"); dukglue_register_property( - ctx, &ScTrackSegment::getTrackFlag, nullptr, "startsHalfHeightUp"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "countsAsInversion"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isBankedTurn"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isSlopedTurn"); - dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isHelix"); + ctx, &ScTrackSegment::getTrackFlag, nullptr, "startsHalfHeightUp"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "countsAsInversion"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isBankedTurn"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isSlopedTurn"); + dukglue_register_property(ctx, &ScTrackSegment::getTrackFlag, nullptr, "isHelix"); dukglue_register_property( - ctx, &ScTrackSegment::getTrackFlag, nullptr, "countsAsInversion"); + ctx, &ScTrackSegment::getTrackFlag, nullptr, "countsAsInversion"); dukglue_register_method(ctx, &ScTrackSegment::getSubpositionLength, "getSubpositionLength"); dukglue_register_method(ctx, &ScTrackSegment::getSubpositions, "getSubpositions"); @@ -263,12 +263,12 @@ int32_t ScTrackSegment::getPriceModifier() const return ted.priceModifier; } -template +template bool ScTrackSegment::getTrackFlag() const { const auto& ted = GetTrackElementDescriptor(_type); - return ted.flags & flag; + return ted.flags.has(flag); } int32_t ScTrackSegment::getTrackGroup() const @@ -281,9 +281,9 @@ int32_t ScTrackSegment::getTrackGroup() const std::string ScTrackSegment::getTrackCurvature() const { const auto& ted = GetTrackElementDescriptor(_type); - if (ted.flags & TRACK_ELEM_FLAG_TURN_LEFT) + if (ted.flags.has(TrackElementFlag::turnLeft)) return "left"; - if (ted.flags & TRACK_ELEM_FLAG_TURN_RIGHT) + if (ted.flags.has(TrackElementFlag::turnRight)) return "right"; return "straight"; } @@ -291,9 +291,9 @@ std::string ScTrackSegment::getTrackCurvature() const std::string ScTrackSegment::getTrackPitchDirection() const { const auto& ted = GetTrackElementDescriptor(_type); - if (ted.flags & TRACK_ELEM_FLAG_UP) + if (ted.flags.has(TrackElementFlag::up)) return "up"; - if (ted.flags & TRACK_ELEM_FLAG_DOWN) + if (ted.flags.has(TrackElementFlag::down)) return "down"; return "flat"; } diff --git a/src/openrct2/scripting/bindings/ride/ScTrackSegment.h b/src/openrct2/scripting/bindings/ride/ScTrackSegment.h index 17cac87efcaf..4bac66cd1317 100644 --- a/src/openrct2/scripting/bindings/ride/ScTrackSegment.h +++ b/src/openrct2/scripting/bindings/ride/ScTrackSegment.h @@ -65,7 +65,7 @@ namespace OpenRCT2::Scripting int32_t getPriceModifier() const; int32_t getPreviewZOffset() const; int32_t getTrackGroup() const; - template + template bool getTrackFlag() const; std::string getTrackCurvature() const; std::string getTrackPitchDirection() const; From 3ef4fba7d0d2fe4660e5b37bffe09897be296821 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 26 Dec 2025 08:43:26 -0300 Subject: [PATCH 160/222] Change MechanicStatus to a strong enum (#25704) --- src/openrct2-ui/windows/Ride.cpp | 8 ++--- src/openrct2/actions/CheatSetAction.cpp | 6 ++-- src/openrct2/entity/Staff.cpp | 18 +++++------ src/openrct2/rct1/RCT1.h | 3 +- src/openrct2/rct1/S4Importer.cpp | 1 + src/openrct2/rct2/RCT2.h | 3 +- src/openrct2/rct2/S6Importer.cpp | 1 + src/openrct2/ride/Ride.cpp | 40 +++++++++++++------------ src/openrct2/ride/Ride.h | 20 ++++++------- src/openrct2/ride/Vehicle.cpp | 12 ++++---- 10 files changed, 58 insertions(+), 54 deletions(-) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index e3579f9f6058..bb2ef774d7e7 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4079,7 +4079,7 @@ namespace OpenRCT2::Ui::Windows { switch (ride->mechanicStatus) { - case RIDE_MECHANIC_STATUS_CALLING: + case MechanicStatus::calling: { stringId = STR_NO_MECHANICS_ARE_HIRED_MESSAGE; @@ -4093,11 +4093,11 @@ namespace OpenRCT2::Ui::Windows } break; } - case RIDE_MECHANIC_STATUS_HEADING: + case MechanicStatus::heading: stringId = STR_MECHANIC_IS_HEADING_FOR_THE_RIDE; break; - case RIDE_MECHANIC_STATUS_FIXING: - case RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES: + case MechanicStatus::fixing: + case MechanicStatus::hasFixedStationBrakes: stringId = STR_MECHANIC_IS_FIXING_THE_RIDE; break; default: diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 80083120e69d..1a4c4a51d9f6 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -529,13 +529,11 @@ namespace OpenRCT2::GameActions if (mechanic != nullptr) { - if (ride.mechanicStatus == RIDE_MECHANIC_STATUS_FIXING) + if (ride.mechanicStatus == MechanicStatus::fixing) { mechanic->RideSubState = PeepRideSubState::approachExit; } - else if ( - ride.mechanicStatus == RIDE_MECHANIC_STATUS_CALLING - || ride.mechanicStatus == RIDE_MECHANIC_STATUS_HEADING) + else if (ride.mechanicStatus == MechanicStatus::calling || ride.mechanicStatus == MechanicStatus::heading) { mechanic->RemoveFromRide(); } diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index a4997f6d4f03..b4fad12336aa 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -1261,7 +1261,7 @@ void Staff::UpdateHeadingToInspect() return; } - if (ride->mechanicStatus != RIDE_MECHANIC_STATUS_HEADING || !(ride->lifecycleFlags & RIDE_LIFECYCLE_DUE_INSPECTION)) + if (ride->mechanicStatus != MechanicStatus::heading || !(ride->lifecycleFlags & RIDE_LIFECYCLE_DUE_INSPECTION)) { SetState(PeepState::falling); return; @@ -1279,9 +1279,9 @@ void Staff::UpdateHeadingToInspect() MechanicTimeSinceCall++; if (MechanicTimeSinceCall > 2500) { - if (ride->lifecycleFlags & RIDE_LIFECYCLE_DUE_INSPECTION && ride->mechanicStatus == RIDE_MECHANIC_STATUS_HEADING) + if (ride->lifecycleFlags & RIDE_LIFECYCLE_DUE_INSPECTION && ride->mechanicStatus == MechanicStatus::heading) { - ride->mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + ride->mechanicStatus = MechanicStatus::calling; } SetState(PeepState::falling); return; @@ -1349,7 +1349,7 @@ void Staff::UpdateHeadingToInspect() void Staff::UpdateAnswering() { auto ride = GetRide(CurrentRide); - if (ride == nullptr || ride->mechanicStatus != RIDE_MECHANIC_STATUS_HEADING) + if (ride == nullptr || ride->mechanicStatus != MechanicStatus::heading) { SetState(PeepState::falling); return; @@ -1386,7 +1386,7 @@ void Staff::UpdateAnswering() MechanicTimeSinceCall++; if (MechanicTimeSinceCall > 2500) { - ride->mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + ride->mechanicStatus = MechanicStatus::calling; ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; SetState(PeepState::falling); return; @@ -2086,7 +2086,7 @@ void Staff::UpdateFixing(int32_t steps) */ bool Staff::UpdateFixingEnterStation(Ride& ride) const { - ride.mechanicStatus = RIDE_MECHANIC_STATUS_FIXING; + ride.mechanicStatus = MechanicStatus::fixing; ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; return true; @@ -2463,7 +2463,7 @@ bool Staff::UpdateFixingFixStationBrakes(bool firstRun, Ride& ride) if (AnimationFrameNum == 0x28) { - ride.mechanicStatus = RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES; + ride.mechanicStatus = MechanicStatus::hasFixedStationBrakes; ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; } @@ -2529,7 +2529,7 @@ bool Staff::UpdateFixingFinishFixOrInspect(bool firstRun, int32_t steps, Ride& r StaffRidesInspected = AddClamp(StaffRidesInspected, 1u); WindowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME | RIDE_INVALIDATE_RIDE_LIST; - ride.mechanicStatus = RIDE_MECHANIC_STATUS_UNDEFINED; + ride.mechanicStatus = MechanicStatus::undefined; return true; } @@ -2552,7 +2552,7 @@ bool Staff::UpdateFixingFinishFixOrInspect(bool firstRun, int32_t steps, Ride& r } RideFixBreakdown(ride, steps); - ride.mechanicStatus = RIDE_MECHANIC_STATUS_UNDEFINED; + ride.mechanicStatus = MechanicStatus::undefined; return true; } diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 68b705a316e4..d44e3ab0dae1 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -17,6 +17,7 @@ #include "../world/ParkData.h" #include "Limits.h" +enum class MechanicStatus : uint8_t; enum class VehicleColourSettings : uint8_t; namespace OpenRCT2::Scenario @@ -363,7 +364,7 @@ namespace OpenRCT2::RCT1 uint8_t unk134[2]; // 0x134 uint32_t musicPosition; // 0x138 uint8_t breakdownReasonPending; // 0x13C - uint8_t mechanicStatus; // 0x13D + MechanicStatus mechanicStatus; // 0x13D uint16_t mechanic; // 0x13E uint8_t inspectionStation; // 0x140 uint8_t brokenTrain; // 0x141 diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 52934dc5770a..0584c2bcdc12 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -50,6 +50,7 @@ #include "../rct12/CSStringConverter.h" #include "../rct12/EntryList.h" #include "../rct12/ScenarioPatcher.h" +#include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/RideManager.hpp" #include "../ride/Station.h" diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index 59c02fcf1e34..c56d53ee5d51 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -22,6 +22,7 @@ struct RideObjectEntry; enum class EditorStep : uint8_t; +enum class MechanicStatus : uint8_t; enum class VehicleColourSettings : uint8_t; namespace OpenRCT2::Scenario @@ -239,7 +240,7 @@ namespace OpenRCT2::RCT2 uint8_t pad186[0x02]; // 0x186 uint32_t musicPosition; // 0x188 uint8_t breakdownReasonPending; // 0x18C - uint8_t mechanicStatus; // 0x18D + MechanicStatus mechanicStatus; // 0x18D uint16_t mechanic; // 0x18E uint8_t inspectionStation; // 0x190 uint8_t brokenTrain; // 0x191 diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index df9e3047022a..ff4a14c9ca38 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -38,6 +38,7 @@ #include "../rct12/RCT12.h" #include "../rct12/ScenarioPatcher.h" #include "../rct2/RCT2.h" +#include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/Vehicle.h" #include "../sawyer_coding/SawyerChunkReader.h" diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index ff4ce46e9ff8..dd673c879600 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -169,7 +169,7 @@ static void RideCallMechanic(Ride& ride, Peep* mechanic, int32_t forInspection); static void RideEntranceExitConnected(Ride& ride); static int32_t RideGetNewBreakdownProblem(const Ride& ride); static void RideInspectionUpdate(Ride& ride); -static void RideMechanicStatusUpdate(Ride& ride, int32_t mechanicStatus); +static void RideMechanicStatusUpdate(Ride& ride, MechanicStatus mechanicStatus); static void RideMusicUpdate(Ride& ride); static void RideShopConnected(const Ride& ride); @@ -1366,7 +1366,7 @@ static void RideInspectionUpdate(Ride& ride) // Inspect the first station that has an exit ride.lifecycleFlags |= RIDE_LIFECYCLE_DUE_INSPECTION; - ride.mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + ride.mechanicStatus = MechanicStatus::calling; auto stationIndex = RideGetFirstValidStationExit(ride); ride.inspectionStation = (!stationIndex.IsNull()) ? stationIndex : StationIndex::FromUnderlying(0); @@ -1658,8 +1658,8 @@ static void RideBreakdownStatusUpdate(Ride& ride) if (ride.notFixedTimeout == 0) ride.notFixedTimeout -= 16; - if (!(ride.notFixedTimeout & 15) && ride.mechanicStatus != RIDE_MECHANIC_STATUS_FIXING - && ride.mechanicStatus != RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES) + if (!(ride.notFixedTimeout & 15) && ride.mechanicStatus != MechanicStatus::fixing + && ride.mechanicStatus != MechanicStatus::hasFixedStationBrakes) { if (Config::Get().notifications.rideWarnings) { @@ -1677,11 +1677,11 @@ static void RideBreakdownStatusUpdate(Ride& ride) * * rct2: 0x006B762F */ -static void RideMechanicStatusUpdate(Ride& ride, int32_t mechanicStatus) +static void RideMechanicStatusUpdate(Ride& ride, MechanicStatus mechanicStatus) { // Turn a pending breakdown into a breakdown. - if ((mechanicStatus == RIDE_MECHANIC_STATUS_UNDEFINED || mechanicStatus == RIDE_MECHANIC_STATUS_CALLING - || mechanicStatus == RIDE_MECHANIC_STATUS_HEADING) + if ((mechanicStatus == MechanicStatus::undefined || mechanicStatus == MechanicStatus::calling + || mechanicStatus == MechanicStatus::heading) && (ride.lifecycleFlags & RIDE_LIFECYCLE_BREAKDOWN_PENDING) && !(ride.lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN)) { auto breakdownReason = ride.breakdownReasonPending; @@ -1697,13 +1697,13 @@ static void RideMechanicStatusUpdate(Ride& ride, int32_t mechanicStatus) } switch (mechanicStatus) { - case RIDE_MECHANIC_STATUS_UNDEFINED: + case MechanicStatus::undefined: if (ride.lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN) { - ride.mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + ride.mechanicStatus = MechanicStatus::calling; } break; - case RIDE_MECHANIC_STATUS_CALLING: + case MechanicStatus::calling: if (ride.getRideTypeDescriptor().AvailableBreakdowns == 0) { ride.lifecycleFlags &= ~( @@ -1713,7 +1713,7 @@ static void RideMechanicStatusUpdate(Ride& ride, int32_t mechanicStatus) RideCallClosestMechanic(ride); break; - case RIDE_MECHANIC_STATUS_HEADING: + case MechanicStatus::heading: { auto mechanic = RideGetMechanic(ride); bool rideNeedsRepair = (ride.lifecycleFlags & (RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN)); @@ -1721,9 +1721,9 @@ static void RideMechanicStatusUpdate(Ride& ride, int32_t mechanicStatus) || (mechanic->State != PeepState::headingToInspection && mechanic->State != PeepState::answering) || mechanic->CurrentRide != ride.id) { - ride.mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + ride.mechanicStatus = MechanicStatus::calling; ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; - RideMechanicStatusUpdate(ride, RIDE_MECHANIC_STATUS_CALLING); + RideMechanicStatusUpdate(ride, MechanicStatus::calling); } // if the ride is broken down, but a mechanic was heading for an inspection, update orders to fix else if (rideNeedsRepair && mechanic->State == PeepState::headingToInspection) @@ -1734,19 +1734,21 @@ static void RideMechanicStatusUpdate(Ride& ride, int32_t mechanicStatus) } break; } - case RIDE_MECHANIC_STATUS_FIXING: + case MechanicStatus::fixing: { auto mechanic = RideGetMechanic(ride); if (mechanic == nullptr || (mechanic->State != PeepState::headingToInspection && mechanic->State != PeepState::fixing && mechanic->State != PeepState::inspecting && mechanic->State != PeepState::answering)) { - ride.mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + ride.mechanicStatus = MechanicStatus::calling; ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; - RideMechanicStatusUpdate(ride, RIDE_MECHANIC_STATUS_CALLING); + RideMechanicStatusUpdate(ride, MechanicStatus::calling); } break; } + default: + break; } } @@ -1758,7 +1760,7 @@ static void RideCallMechanic(Ride& ride, Peep* mechanic, int32_t forInspection) { mechanic->SetState(forInspection ? PeepState::headingToInspection : PeepState::answering); mechanic->SubState = 0; - ride.mechanicStatus = RIDE_MECHANIC_STATUS_HEADING; + ride.mechanicStatus = MechanicStatus::heading; ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; ride.mechanic = mechanic->Id; mechanic->CurrentRide = ride.id; @@ -1869,8 +1871,8 @@ Staff* RideGetAssignedMechanic(const Ride& ride) { if (ride.lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN) { - if (ride.mechanicStatus == RIDE_MECHANIC_STATUS_HEADING || ride.mechanicStatus == RIDE_MECHANIC_STATUS_FIXING - || ride.mechanicStatus == RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES) + if (ride.mechanicStatus == MechanicStatus::heading || ride.mechanicStatus == MechanicStatus::fixing + || ride.mechanicStatus == MechanicStatus::hasFixedStationBrakes) { return RideGetMechanic(ride); } diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 0fbab71c3d69..4b851a10e5c3 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -120,6 +120,15 @@ enum class RideClassification kioskOrFacility }; +enum class MechanicStatus : uint8_t +{ + undefined, + calling, + heading, + fixing, + hasFixedStationBrakes +}; + namespace OpenRCT2::ShelteredSectionsBits { constexpr uint8_t kNumShelteredSectionsMask = 0b00011111; @@ -253,7 +262,7 @@ struct Ride EntityId raceWinner{}; uint32_t musicPosition{}; uint8_t breakdownReasonPending{}; - uint8_t mechanicStatus{}; + MechanicStatus mechanicStatus{}; EntityId mechanic{ EntityId::GetNull() }; StationIndex inspectionStation{ StationIndex::GetNull() }; uint8_t brokenTrain{}; @@ -750,15 +759,6 @@ enum BREAKDOWN_COUNT }; -enum -{ - RIDE_MECHANIC_STATUS_UNDEFINED, - RIDE_MECHANIC_STATUS_CALLING, - RIDE_MECHANIC_STATUS_HEADING, - RIDE_MECHANIC_STATUS_FIXING, - RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES -}; - enum { RIDE_DEPART_WAIT_FOR_LOAD_MASK = 7, diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 0e4597252102..ee3b42d46ad9 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -351,7 +351,7 @@ bool Vehicle::CloseRestraints() curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST | RIDE_INVALIDATE_RIDE_MAINTENANCE; - curRide->mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + curRide->mechanicStatus = MechanicStatus::calling; Vehicle* broken_vehicle = getGameState().entities.GetEntity(curRide->vehicles[curRide->brokenTrain]); if (broken_vehicle != nullptr) @@ -467,7 +467,7 @@ bool Vehicle::OpenRestraints() curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST | RIDE_INVALIDATE_RIDE_MAINTENANCE; - curRide->mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + curRide->mechanicStatus = MechanicStatus::calling; Vehicle* broken_vehicle = getGameState().entities.GetEntity(curRide->vehicles[curRide->brokenTrain]); if (broken_vehicle != nullptr) @@ -2206,7 +2206,7 @@ void Vehicle::UpdateDeparting() curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST | RIDE_INVALIDATE_RIDE_MAINTENANCE; - curRide->mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + curRide->mechanicStatus = MechanicStatus::calling; curRide->inspectionStation = current_station; curRide->breakdownReason = curRide->breakdownReasonPending; velocity = 0; @@ -2999,7 +2999,7 @@ void Vehicle::UpdateArriving() bool hasBrakesFailure = curRide->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN && curRide->breakdownReasonPending == BREAKDOWN_BRAKES_FAILURE; if (hasBrakesFailure && curRide->inspectionStation == current_station - && curRide->mechanicStatus != RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES) + && curRide->mechanicStatus != MechanicStatus::hasFixedStationBrakes) { stationBrakesWork = false; } @@ -3234,7 +3234,7 @@ void Vehicle::UpdateTravellingCableLift() curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST | RIDE_INVALIDATE_RIDE_MAINTENANCE; - curRide->mechanicStatus = RIDE_MECHANIC_STATUS_CALLING; + curRide->mechanicStatus = MechanicStatus::calling; curRide->inspectionStation = current_station; curRide->breakdownReason = curRide->breakdownReasonPending; velocity = 0; @@ -6864,7 +6864,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu { bool hasBrakesFailure = curRide.lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN && curRide.breakdownReasonPending == BREAKDOWN_BRAKES_FAILURE; - if (!hasBrakesFailure || curRide.mechanicStatus == RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES) + if (!hasBrakesFailure || curRide.mechanicStatus == MechanicStatus::hasFixedStationBrakes) { auto brakeSpeed = ChooseBrakeSpeed() << kTrackSpeedShiftAmount; From 8a0a65502535fe97ba332e3fb07bbf9b7add1884 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Fri, 26 Dec 2025 12:58:33 +0100 Subject: [PATCH 161/222] Unwrangle Drawing.h and Paint.h (#25706) * Drop Drawing.h include from Paint.h * Split off RenderTarget to its own header/unit * Move FilterPaletteID to its own header --- .../engines/opengl/OpenGLFramebuffer.cpp | 4 +- .../engines/opengl/OpenGLFramebuffer.h | 4 +- .../drawing/engines/opengl/TextureCache.h | 18 +- src/openrct2-ui/interface/Graph.h | 6 +- src/openrct2-ui/interface/InGameConsole.h | 2 +- src/openrct2-ui/interface/Widget.h | 4 +- src/openrct2-ui/interface/Window.h | 10 +- src/openrct2-ui/scripting/CustomListView.h | 12 +- src/openrct2-ui/scripting/CustomWindow.cpp | 2 +- src/openrct2-ui/windows/About.cpp | 6 +- src/openrct2-ui/windows/AssetPacks.cpp | 8 +- src/openrct2-ui/windows/Banner.cpp | 2 +- src/openrct2-ui/windows/Changelog.cpp | 2 +- src/openrct2-ui/windows/Cheats.cpp | 4 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- src/openrct2-ui/windows/CustomCurrency.cpp | 2 +- src/openrct2-ui/windows/DebugPaint.cpp | 2 +- .../windows/DemolishRidePrompt.cpp | 2 +- src/openrct2-ui/windows/Dropdown.cpp | 2 +- .../windows/EditorBottomToolbar.cpp | 12 +- .../windows/EditorInventionsList.cpp | 6 +- .../windows/EditorObjectSelection.cpp | 8 +- .../windows/EditorParkEntrance.cpp | 6 +- .../windows/EditorScenarioOptions.cpp | 20 +- src/openrct2-ui/windows/Error.cpp | 2 +- src/openrct2-ui/windows/Finances.cpp | 14 +- src/openrct2-ui/windows/Footpath.cpp | 6 +- src/openrct2-ui/windows/GameBottomToolbar.cpp | 12 +- src/openrct2-ui/windows/Guest.cpp | 34 +-- src/openrct2-ui/windows/GuestList.cpp | 10 +- src/openrct2-ui/windows/InstallTrack.cpp | 2 +- src/openrct2-ui/windows/Land.cpp | 6 +- src/openrct2-ui/windows/LandRights.cpp | 2 +- src/openrct2-ui/windows/LoadSave.cpp | 6 +- src/openrct2-ui/windows/Main.cpp | 2 +- src/openrct2-ui/windows/Map.cpp | 14 +- src/openrct2-ui/windows/MapGen.cpp | 22 +- src/openrct2-ui/windows/MapTooltip.cpp | 2 +- src/openrct2-ui/windows/MazeConstruction.cpp | 2 +- src/openrct2-ui/windows/Multiplayer.cpp | 18 +- src/openrct2-ui/windows/NetworkStatus.cpp | 2 +- src/openrct2-ui/windows/NewCampaign.cpp | 2 +- src/openrct2-ui/windows/NewRide.cpp | 11 +- src/openrct2-ui/windows/News.cpp | 6 +- src/openrct2-ui/windows/ObjectLoadError.cpp | 4 +- src/openrct2-ui/windows/Options.cpp | 10 +- src/openrct2-ui/windows/OverwritePrompt.cpp | 2 +- src/openrct2-ui/windows/Park.cpp | 18 +- src/openrct2-ui/windows/PatrolArea.cpp | 2 +- src/openrct2-ui/windows/Player.cpp | 8 +- src/openrct2-ui/windows/ProgressWindow.cpp | 4 +- .../windows/RefurbishRidePrompt.cpp | 2 +- src/openrct2-ui/windows/Research.cpp | 10 +- src/openrct2-ui/windows/Ride.cpp | 42 +-- src/openrct2-ui/windows/RideConstruction.cpp | 8 +- src/openrct2-ui/windows/RideList.cpp | 6 +- src/openrct2-ui/windows/SavePrompt.cpp | 2 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 8 +- src/openrct2-ui/windows/Scenery.cpp | 8 +- src/openrct2-ui/windows/SceneryScatter.cpp | 2 +- src/openrct2-ui/windows/ServerList.cpp | 4 +- src/openrct2-ui/windows/ServerStart.cpp | 2 +- src/openrct2-ui/windows/ShortcutKeys.cpp | 15 +- src/openrct2-ui/windows/Sign.cpp | 2 +- src/openrct2-ui/windows/Staff.cpp | 14 +- src/openrct2-ui/windows/StaffFirePrompt.cpp | 2 +- src/openrct2-ui/windows/StaffList.cpp | 10 +- src/openrct2-ui/windows/TextInput.cpp | 2 +- src/openrct2-ui/windows/Themes.cpp | 6 +- src/openrct2-ui/windows/TileInspector.cpp | 4 +- src/openrct2-ui/windows/TitleExit.cpp | 2 +- src/openrct2-ui/windows/TitleLogo.cpp | 2 +- src/openrct2-ui/windows/TitleMenu.cpp | 2 +- src/openrct2-ui/windows/TitleOptions.cpp | 2 +- src/openrct2-ui/windows/TitleVersion.cpp | 2 +- src/openrct2-ui/windows/Tooltip.cpp | 2 +- src/openrct2-ui/windows/TopToolbar.cpp | 8 +- src/openrct2-ui/windows/TrackDesignManage.cpp | 4 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 4 +- src/openrct2-ui/windows/TrackList.cpp | 4 +- src/openrct2-ui/windows/Transparency.cpp | 2 +- src/openrct2-ui/windows/ViewClipping.cpp | 2 +- src/openrct2-ui/windows/Viewport.cpp | 2 +- src/openrct2-ui/windows/Water.cpp | 2 +- src/openrct2-ui/windows/Windows.h | 4 +- src/openrct2/core/Imaging.h | 2 - src/openrct2/drawing/Drawing.Sprite.BMP.cpp | 2 + src/openrct2/drawing/Drawing.Sprite.RLE.cpp | 2 + src/openrct2/drawing/Drawing.Sprite.cpp | 1 + src/openrct2/drawing/Drawing.String.cpp | 1 + src/openrct2/drawing/Drawing.cpp | 17 -- src/openrct2/drawing/Drawing.h | 271 +++--------------- src/openrct2/drawing/FilterPaletteIds.h | 160 +++++++++++ src/openrct2/drawing/IDrawingEngine.h | 3 +- src/openrct2/drawing/ImageId.hpp | 14 +- src/openrct2/drawing/LightFX.h | 6 +- src/openrct2/drawing/Line.cpp | 2 + src/openrct2/drawing/NewDrawing.h | 7 +- src/openrct2/drawing/Rectangle.h | 8 +- src/openrct2/drawing/RenderTarget.cpp | 30 ++ src/openrct2/drawing/RenderTarget.h | 63 ++++ src/openrct2/drawing/Text.h | 26 +- src/openrct2/drawing/Weather.h | 7 +- src/openrct2/entity/Duck.cpp | 2 +- src/openrct2/entity/Fountain.cpp | 2 +- src/openrct2/entity/Litter.cpp | 2 +- src/openrct2/entity/MoneyEffect.cpp | 2 +- src/openrct2/entity/Particle.cpp | 2 +- src/openrct2/interface/Chat.h | 8 +- src/openrct2/interface/InteractiveConsole.h | 7 +- src/openrct2/interface/Screenshot.h | 9 +- src/openrct2/interface/Viewport.h | 8 +- src/openrct2/interface/Window.cpp | 19 +- src/openrct2/interface/Window.h | 10 +- src/openrct2/interface/WindowBase.h | 6 +- src/openrct2/libopenrct2.vcxproj | 3 + src/openrct2/object/BannerObject.cpp | 2 +- src/openrct2/object/BannerObject.h | 2 +- src/openrct2/object/ClimateObject.cpp | 2 +- src/openrct2/object/ClimateObject.h | 2 +- src/openrct2/object/EntranceObject.cpp | 2 +- src/openrct2/object/EntranceObject.h | 2 +- src/openrct2/object/FootpathObject.cpp | 2 +- src/openrct2/object/FootpathObject.h | 2 +- .../object/FootpathRailingsObject.cpp | 2 +- src/openrct2/object/FootpathRailingsObject.h | 2 +- src/openrct2/object/FootpathSurfaceObject.cpp | 2 +- src/openrct2/object/FootpathSurfaceObject.h | 2 +- src/openrct2/object/LargeSceneryObject.cpp | 2 +- src/openrct2/object/LargeSceneryObject.h | 2 +- src/openrct2/object/MusicObject.cpp | 2 +- src/openrct2/object/MusicObject.h | 2 +- src/openrct2/object/Object.h | 8 +- src/openrct2/object/ObjectRepository.h | 1 - src/openrct2/object/PathAdditionObject.cpp | 2 +- src/openrct2/object/PathAdditionObject.h | 2 +- src/openrct2/object/PeepAnimationsObject.cpp | 2 +- src/openrct2/object/PeepAnimationsObject.h | 2 +- src/openrct2/object/RideObject.cpp | 3 +- src/openrct2/object/RideObject.h | 2 +- src/openrct2/object/SceneryGroupObject.cpp | 2 +- src/openrct2/object/SceneryGroupObject.h | 2 +- src/openrct2/object/SmallSceneryObject.cpp | 2 +- src/openrct2/object/SmallSceneryObject.h | 2 +- src/openrct2/object/StationObject.cpp | 2 +- src/openrct2/object/StationObject.h | 2 +- src/openrct2/object/TerrainEdgeObject.cpp | 2 +- src/openrct2/object/TerrainEdgeObject.h | 2 +- src/openrct2/object/TerrainSurfaceObject.cpp | 2 +- src/openrct2/object/TerrainSurfaceObject.h | 2 +- src/openrct2/object/WallObject.cpp | 2 +- src/openrct2/object/WallObject.h | 2 +- src/openrct2/object/WaterObject.cpp | 2 +- src/openrct2/object/WaterObject.h | 2 +- src/openrct2/paint/Paint.cpp | 2 + src/openrct2/paint/Paint.h | 15 +- src/openrct2/paint/PaintHelpers.cpp | 1 + src/openrct2/paint/Painter.h | 9 +- src/openrct2/paint/VirtualFloor.cpp | 1 + src/openrct2/paint/support/MetalSupports.cpp | 1 + src/openrct2/paint/support/WoodenSupports.cpp | 1 + .../paint/tile_element/Paint.Banner.cpp | 1 + .../paint/tile_element/Paint.LargeScenery.cpp | 1 + .../paint/tile_element/Paint.Path.cpp | 1 + .../paint/tile_element/Paint.PathAddition.h | 1 + .../paint/tile_element/Paint.SmallScenery.cpp | 1 + .../paint/tile_element/Paint.Surface.cpp | 2 +- .../paint/tile_element/Paint.TileElement.cpp | 2 +- .../paint/tile_element/Paint.Wall.cpp | 2 +- .../track/coaster/WoodenRollerCoaster.cpp | 1 + src/openrct2/paint/track/gentle/Dodgems.cpp | 1 + .../track/transport/MiniatureRailway.cpp | 1 + .../vehicle/Vehicle.ObservationTower.cpp | 4 +- .../paint/vehicle/Vehicle.Submarine.cpp | 4 +- src/openrct2/paint/vehicle/VehiclePaint.cpp | 1 + src/openrct2/park/ParkPreview.cpp | 4 +- src/openrct2/park/ParkPreview.h | 7 +- src/openrct2/peep/PeepAnimations.cpp | 2 +- src/openrct2/ride/CarEntry.cpp | 2 +- src/openrct2/scenes/intro/IntroScene.h | 7 +- src/openrct2/ui/UiContext.h | 9 +- src/openrct2/world/Climate.cpp | 1 + src/openrct2/world/Climate.h | 7 +- 183 files changed, 790 insertions(+), 648 deletions(-) create mode 100644 src/openrct2/drawing/FilterPaletteIds.h create mode 100644 src/openrct2/drawing/RenderTarget.cpp create mode 100644 src/openrct2/drawing/RenderTarget.h diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp index 0c60599bbb02..1b467792b3cb 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp @@ -180,7 +180,7 @@ GLuint OpenGLFramebuffer::CreateDepthTexture(int32_t width, int32_t height) return depth; } -void OpenGLFramebuffer::GetPixels(RenderTarget& rt) const +void OpenGLFramebuffer::GetPixels(Drawing::RenderTarget& rt) const { assert(rt.width == _width && rt.height == _height); @@ -200,7 +200,7 @@ void OpenGLFramebuffer::GetPixels(RenderTarget& rt) const } } -void OpenGLFramebuffer::SetPixels(const RenderTarget& rt) +void OpenGLFramebuffer::SetPixels(const Drawing::RenderTarget& rt) { assert(rt.width == _width && rt.height == _height); diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h index 0507a049fe01..4b5d50ed7e2a 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h @@ -58,12 +58,12 @@ namespace OpenRCT2::Ui void Bind() const; void BindDraw() const; void BindRead() const; - void GetPixels(RenderTarget& rt) const; + void GetPixels(Drawing::RenderTarget& rt) const; void SwapColourBuffer(OpenGLFramebuffer& other); GLuint SwapDepthTexture(GLuint depth); void Copy(OpenGLFramebuffer& src, GLenum filter); - void SetPixels(const RenderTarget& rt); + void SetPixels(const Drawing::RenderTarget& rt); static GLuint CreateDepthTexture(int32_t width, int32_t height); }; diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h index 513995b50f4b..aa580a16ac77 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h @@ -20,9 +20,13 @@ #include #include -struct RenderTarget; struct PaletteMap; -enum class FilterPaletteID : int32_t; + +namespace OpenRCT2::Drawing +{ + enum class FilterPaletteID : int32_t; + struct RenderTarget; +} // namespace OpenRCT2::Drawing namespace OpenRCT2::Ui { @@ -211,7 +215,7 @@ namespace OpenRCT2::Ui GLuint GetAtlasesTexture(); GLuint GetPaletteTexture(); GLuint GetBlendPaletteTexture(); - static GLint PaletteToY(FilterPaletteID palette); + static GLint PaletteToY(Drawing::FilterPaletteID palette); private: void CreateTextures(); @@ -221,11 +225,11 @@ namespace OpenRCT2::Ui AtlasTextureInfo LoadGlyphTexture(const ImageId image, const PaletteMap& paletteMap); AtlasTextureInfo AllocateImage(int32_t imageWidth, int32_t imageHeight); AtlasTextureInfo LoadBitmapTexture(ImageIndex image, const void* pixels, size_t width, size_t height); - static RenderTarget GetImageAsDPI(const ImageId imageId); - static RenderTarget GetGlyphAsDPI(const ImageId imageId, const PaletteMap& paletteMap); + static Drawing::RenderTarget GetImageAsDPI(const ImageId imageId); + static Drawing::RenderTarget GetGlyphAsDPI(const ImageId imageId, const PaletteMap& paletteMap); void FreeTextures(); - static RenderTarget CreateDPI(int32_t width, int32_t height); - static void DeleteDPI(RenderTarget rt); + static Drawing::RenderTarget CreateDPI(int32_t width, int32_t height); + static void DeleteDPI(Drawing::RenderTarget rt); }; } // namespace OpenRCT2::Ui diff --git a/src/openrct2-ui/interface/Graph.h b/src/openrct2-ui/interface/Graph.h index 9d0d63715055..eb56c738066d 100644 --- a/src/openrct2-ui/interface/Graph.h +++ b/src/openrct2-ui/interface/Graph.h @@ -68,7 +68,7 @@ namespace OpenRCT2::Graph } }; - void DrawFinanceGraph(RenderTarget& rt, const GraphProperties& p); - void DrawRatingGraph(RenderTarget& rt, const GraphProperties& p); - void DrawGuestGraph(RenderTarget& rt, const GraphProperties& p); + void DrawFinanceGraph(Drawing::RenderTarget& rt, const GraphProperties& p); + void DrawRatingGraph(Drawing::RenderTarget& rt, const GraphProperties& p); + void DrawGuestGraph(Drawing::RenderTarget& rt, const GraphProperties& p); } // namespace OpenRCT2::Graph diff --git a/src/openrct2-ui/interface/InGameConsole.h b/src/openrct2-ui/interface/InGameConsole.h index fb83b6cd63ff..b1fc28e6760f 100644 --- a/src/openrct2-ui/interface/InGameConsole.h +++ b/src/openrct2-ui/interface/InGameConsole.h @@ -69,7 +69,7 @@ namespace OpenRCT2::Ui void Scroll(int32_t linesToScroll); void Update(); - void Draw(RenderTarget& rt) const; + void Draw(Drawing::RenderTarget& rt) const; private: void ClearInput(); diff --git a/src/openrct2-ui/interface/Widget.h b/src/openrct2-ui/interface/Widget.h index 8de17d6b22fa..da160cb0d76c 100644 --- a/src/openrct2-ui/interface/Widget.h +++ b/src/openrct2-ui/interface/Widget.h @@ -78,7 +78,7 @@ namespace OpenRCT2::Ui const ScreenCoordsXY& origin, const ScreenSize& size, WidgetType type, WindowColour colour, ImageIndex content, StringId tooltip = kStringIdNone) { - return makeWidget(origin, size, type, colour, ImageId(content, FilterPaletteID::paletteNull), tooltip); + return makeWidget(origin, size, type, colour, ImageId(content, Drawing::FilterPaletteID::paletteNull), tooltip); } constexpr Widget makeTab(const ScreenCoordsXY& origin, StringId tooltip = kStringIdNone) @@ -248,7 +248,7 @@ namespace OpenRCT2::Ui makeDropdownButtonWidget(origin, size, type, colour, content, tooltip)); }; - void widgetDraw(RenderTarget& rt, WindowBase& w, WidgetIndex widgetIndex); + void widgetDraw(Drawing::RenderTarget& rt, WindowBase& w, WidgetIndex widgetIndex); bool widgetIsDisabled(const WindowBase& w, WidgetIndex widgetIndex); bool widgetIsHoldable(const WindowBase& w, WidgetIndex widgetIndex); diff --git a/src/openrct2-ui/interface/Window.h b/src/openrct2-ui/interface/Window.h index fbdb0b1c50de..dca1d5d5df9d 100644 --- a/src/openrct2-ui/interface/Window.h +++ b/src/openrct2-ui/interface/Window.h @@ -23,8 +23,8 @@ namespace OpenRCT2::Ui struct Window : WindowBase { - void onDraw(RenderTarget& rt) override; - void onDrawWidget(WidgetIndex widgetIndex, RenderTarget& rt) override; + void onDraw(Drawing::RenderTarget& rt) override; + void onDrawWidget(WidgetIndex widgetIndex, Drawing::RenderTarget& rt) override; void scrollToViewport(); void initScrollWidgets(); @@ -36,7 +36,7 @@ namespace OpenRCT2::Ui void setWidgetDisabledAndInvalidate(WidgetIndex widgetIndex, bool value); void setWidgetPressed(WidgetIndex widgetIndex, bool value); void setCheckboxValue(WidgetIndex widgetIndex, bool value); - void drawWidgets(RenderTarget& rt); + void drawWidgets(Drawing::RenderTarget& rt); void close(); void closeOthers(); void closeOthersOfThisClass(); @@ -86,8 +86,8 @@ namespace OpenRCT2::Ui::Windows void InvalidateAllWindowsAfterInput(); - void WindowDrawWidgets(WindowBase& w, RenderTarget& rt); - void WindowDrawViewport(RenderTarget& rt, WindowBase& w); + void WindowDrawWidgets(WindowBase& w, Drawing::RenderTarget& rt); + void WindowDrawViewport(Drawing::RenderTarget& rt, WindowBase& w); void WindowZoomIn(WindowBase& w, bool atCursor); void WindowZoomOut(WindowBase& w, bool atCursor); diff --git a/src/openrct2-ui/scripting/CustomListView.h b/src/openrct2-ui/scripting/CustomListView.h index ab00a4a21f1e..119ac4fa4f77 100644 --- a/src/openrct2-ui/scripting/CustomListView.h +++ b/src/openrct2-ui/scripting/CustomListView.h @@ -138,15 +138,17 @@ namespace OpenRCT2::Ui::Windows void MouseOver(const ScreenCoordsXY& pos, bool isMouseDown); void MouseDown(const ScreenCoordsXY& pos); void MouseUp(const ScreenCoordsXY& pos); - void Paint(WindowBase* w, RenderTarget& rt, const ScrollArea* scroll) const; + void Paint(WindowBase* w, Drawing::RenderTarget& rt, const ScrollArea* scroll) const; private: void PaintHeading( - WindowBase* w, RenderTarget& rt, const ScreenCoordsXY& pos, const ScreenSize& size, const std::string& text, - ColumnSortOrder sortOrder, bool isPressed) const; - void PaintSeparator(RenderTarget& rt, const ScreenCoordsXY& pos, const ScreenSize& size, const char* text) const; + WindowBase* w, Drawing::RenderTarget& rt, const ScreenCoordsXY& pos, const ScreenSize& size, + const std::string& text, ColumnSortOrder sortOrder, bool isPressed) const; + void PaintSeparator( + Drawing::RenderTarget& rt, const ScreenCoordsXY& pos, const ScreenSize& size, const char* text) const; void PaintCell( - RenderTarget& rt, const ScreenCoordsXY& pos, const ScreenSize& size, const char* text, bool isHighlighted) const; + Drawing::RenderTarget& rt, const ScreenCoordsXY& pos, const ScreenSize& size, const char* text, + bool isHighlighted) const; std::optional GetItemIndexAt(const ScreenCoordsXY& pos); Widget* GetWidget() const; void Invalidate(); diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index 4b98178e8901..6b16a6f41aea 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -536,7 +536,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); DrawTabImages(rt); diff --git a/src/openrct2-ui/windows/About.cpp b/src/openrct2-ui/windows/About.cpp index 135660010faa..f5188b0823ae 100644 --- a/src/openrct2-ui/windows/About.cpp +++ b/src/openrct2-ui/windows/About.cpp @@ -147,7 +147,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -219,7 +219,7 @@ namespace OpenRCT2::Ui::Windows } } - int32_t DrawOpenRCT2Info(RenderTarget& rt) + int32_t DrawOpenRCT2Info(Drawing::RenderTarget& rt) { // Draw logo on placeholder widget const auto& logoWidget = widgets[WIDX_OPENRCT2_LOGO]; @@ -252,7 +252,7 @@ namespace OpenRCT2::Ui::Windows return textCoords.y - windowPos.y; } - int32_t DrawRCT2Info(RenderTarget& rt) + int32_t DrawRCT2Info(Drawing::RenderTarget& rt) { auto& backgroundWidget = widgets[WIDX_PAGE_BACKGROUND]; auto textCoords = windowPos + ScreenCoordsXY{ backgroundWidget.midX(), backgroundWidget.top + kPadding }; diff --git a/src/openrct2-ui/windows/AssetPacks.cpp b/src/openrct2-ui/windows/AssetPacks.cpp index c47ddef77949..6705cb6f6d24 100644 --- a/src/openrct2-ui/windows/AssetPacks.cpp +++ b/src/openrct2-ui/windows/AssetPacks.cpp @@ -187,12 +187,12 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_APPLY].top = widgets[WIDX_APPLY].bottom - 24; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { auto rtCoords = ScreenCoordsXY{ rt.x, rt.y }; Rectangle::fill( @@ -237,7 +237,7 @@ namespace OpenRCT2::Ui::Windows } private: - void PaintItem(RenderTarget& rt, int32_t y, Formatter& ft, bool isChecked, bool isSelected, bool isHighlighted) + void PaintItem(Drawing::RenderTarget& rt, int32_t y, Formatter& ft, bool isChecked, bool isSelected, bool isHighlighted) { auto listWidth = widgets[WIDX_LIST].right - widgets[WIDX_LIST].left; auto stringId = STR_BLACK_STRING; @@ -258,7 +258,7 @@ namespace OpenRCT2::Ui::Windows PaintCheckbox(rt, { { 2, y + 1 }, { 2 + checkboxSize + 1, y + 1 + checkboxSize } }, isChecked); } - void PaintCheckbox(RenderTarget& rt, const ScreenRect& rect, bool checked) + void PaintCheckbox(Drawing::RenderTarget& rt, const ScreenRect& rect, bool checked) { Rectangle::fillInset( rt, rect, colours[1], Rectangle::BorderStyle::inset, Rectangle::FillBrightness::dark, diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index 0d826b6cb450..127c39d33a8c 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -269,7 +269,7 @@ namespace OpenRCT2::Ui::Windows createViewport(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Changelog.cpp b/src/openrct2-ui/windows/Changelog.cpp index cc61d724df36..59d335f5f6ca 100644 --- a/src/openrct2-ui/windows/Changelog.cpp +++ b/src/openrct2-ui/windows/Changelog.cpp @@ -175,7 +175,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { const int32_t lineHeight = FontGetLineHeight(FontStyle::medium); diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 80ac97b98568..941eacb6b474 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -593,7 +593,7 @@ static StringId window_cheats_page_titles[] = { } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -775,7 +775,7 @@ static StringId window_cheats_page_titles[] = { } } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { // Money tab if (!isWidgetDisabled(WIDX_TAB_1)) diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index a7814d0b0bf3..71f1dda8d8e7 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -171,7 +171,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_PREVIEW].image = ImageId(LandTool::SizeToSpriteIndex(gLandToolSize)); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index 8c7feb0e27fa..4d8d6e83eb00 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -187,7 +187,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto ft = Formatter::Common(); ft.Add(10.00_GBP); diff --git a/src/openrct2-ui/windows/DebugPaint.cpp b/src/openrct2-ui/windows/DebugPaint.cpp index c15f9caae365..d556c8668d18 100644 --- a/src/openrct2-ui/windows/DebugPaint.cpp +++ b/src/openrct2-ui/windows/DebugPaint.cpp @@ -154,7 +154,7 @@ namespace OpenRCT2::Ui::Windows setCheckboxValue(WIDX_TOGGLE_FORCE_REDRAW, gPaintForceRedraw); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); } diff --git a/src/openrct2-ui/windows/DemolishRidePrompt.cpp b/src/openrct2-ui/windows/DemolishRidePrompt.cpp index 8d8bfafcef53..2cfb809dc451 100644 --- a/src/openrct2-ui/windows/DemolishRidePrompt.cpp +++ b/src/openrct2-ui/windows/DemolishRidePrompt.cpp @@ -73,7 +73,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index 77eeaa9d4b1a..c6b9cd1328b2 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -104,7 +104,7 @@ namespace OpenRCT2::Ui::Windows DrawTextEllipsised(rt, { screenCoords.x + 2, screenCoords.y + yOffset }, width - 7, format, ft, { colour }); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/EditorBottomToolbar.cpp b/src/openrct2-ui/windows/EditorBottomToolbar.cpp index 5f281d28e271..d528c24fa747 100644 --- a/src/openrct2-ui/windows/EditorBottomToolbar.cpp +++ b/src/openrct2-ui/windows/EditorBottomToolbar.cpp @@ -125,7 +125,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto drawPreviousButton = widgets[WIDX_PREVIOUS_STEP_BUTTON].type != WidgetType::empty; auto drawNextButton = widgets[WIDX_NEXT_STEP_BUTTON].type != WidgetType::empty; @@ -334,7 +334,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_NEXT_IMAGE].type = WidgetType::empty; } - void DrawLeftButtonBack(RenderTarget& rt) + void DrawLeftButtonBack(Drawing::RenderTarget& rt) { const auto& previousWidget = widgets[WIDX_PREVIOUS_IMAGE]; auto leftTop = windowPos + ScreenCoordsXY{ previousWidget.left, previousWidget.top }; @@ -342,7 +342,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::filter(rt, { leftTop, rightBottom }, FilterPaletteID::palette51); } - void DrawLeftButton(RenderTarget& rt) + void DrawLeftButton(Drawing::RenderTarget& rt) { const auto topLeft = windowPos + ScreenCoordsXY{ widgets[WIDX_PREVIOUS_IMAGE].left + 1, widgets[WIDX_PREVIOUS_IMAGE].top + 1 }; @@ -374,7 +374,7 @@ namespace OpenRCT2::Ui::Windows DrawTextBasic(rt, { textX, textY + 10 }, stringId, {}, { textColour, TextAlignment::centre }); } - void DrawRightButtonBack(RenderTarget& rt) + void DrawRightButtonBack(Drawing::RenderTarget& rt) { auto nextWidget = widgets[WIDX_NEXT_IMAGE]; auto leftTop = windowPos + ScreenCoordsXY{ nextWidget.left, nextWidget.top }; @@ -382,7 +382,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::filter(rt, { leftTop, rightBottom }, FilterPaletteID::palette51); } - void DrawRightButton(RenderTarget& rt) + void DrawRightButton(Drawing::RenderTarget& rt) { const auto topLeft = windowPos + ScreenCoordsXY{ widgets[WIDX_NEXT_IMAGE].left + 1, widgets[WIDX_NEXT_IMAGE].top + 1 }; @@ -415,7 +415,7 @@ namespace OpenRCT2::Ui::Windows DrawTextBasic(rt, { textX, textY + 10 }, stringId, {}, { textColour, TextAlignment::centre }); } - void DrawStepText(RenderTarget& rt) + void DrawStepText(Drawing::RenderTarget& rt) { int16_t stateX = (widgets[WIDX_PREVIOUS_IMAGE].right + widgets[WIDX_NEXT_IMAGE].left) / 2 + windowPos.x; int16_t stateY = height - 0x0C + windowPos.y; diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index cf53d75afde5..dc46740127f4 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -269,7 +269,7 @@ namespace OpenRCT2::Ui::Windows WindowEditorInventionsListDragOpen(researchItem, windowPos, widgets[WIDX_PRE_RESEARCHED_SCROLL].right); } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { const auto& gameState = getGameState(); @@ -354,7 +354,7 @@ namespace OpenRCT2::Ui::Windows return fallback; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -655,7 +655,7 @@ namespace OpenRCT2::Ui::Windows close(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto screenCoords = windowPos + ScreenCoordsXY{ 0, 2 }; diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 22d16ee9f4df..8c7d89e42bf6 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -725,7 +725,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { // ScrollPaint ScreenCoordsXY screenCoords; @@ -1008,7 +1008,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_PREVIEW].right = widgets[WIDX_PREVIEW].left + kPreviewSize; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -1248,7 +1248,7 @@ namespace OpenRCT2::Ui::Windows _listItems.shrink_to_fit(); } - void DrawDescriptions(RenderTarget& rt) + void DrawDescriptions(Drawing::RenderTarget& rt) { auto screenPos = windowPos + ScreenCoordsXY{ widgets[WIDX_PREVIEW].midX(), widgets[WIDX_PREVIEW].bottom + 3 }; auto descriptionWidth = width - widgets[WIDX_LIST].right - 12; @@ -1356,7 +1356,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawDebugData(RenderTarget& rt) + void DrawDebugData(Drawing::RenderTarget& rt) { ObjectListItem* listItem = &_listItems[selectedListItem]; auto screenPos = windowPos + ScreenCoordsXY{ width - 5, height - (kListRowHeight * 6) }; diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index e08bf361a38f..cb14f3fa561a 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -105,7 +105,7 @@ namespace OpenRCT2::Ui::Windows return numRows; } - void PaintPreview(RenderTarget& rt, ImageIndex imageStart, ScreenCoordsXY screenCoords, Direction direction) + void PaintPreview(Drawing::RenderTarget& rt, ImageIndex imageStart, ScreenCoordsXY screenCoords, Direction direction) { imageStart += (direction * 3); @@ -307,7 +307,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_LIST].bottom = height - 5; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); GfxDrawSprite( @@ -315,7 +315,7 @@ namespace OpenRCT2::Ui::Windows windowPos + ScreenCoordsXY{ widgets[WIDX_TAB].left, widgets[WIDX_TAB].top }); } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { GfxClear(rt, ColourMapA[colours[1].colour].mid_light); diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 3605a31d2f57..68fa1e61b32a 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -457,7 +457,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { switch (page) { @@ -515,7 +515,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { if (page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_RIDES) { @@ -590,7 +590,7 @@ namespace OpenRCT2::Ui::Windows setWidgetPressed(WIDX_TAB_1 + page, true); } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { Widget* widget; int32_t spriteIndex; @@ -1141,7 +1141,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x0067161C */ - void ObjectiveOnDraw(RenderTarget& rt) + void ObjectiveOnDraw(Drawing::RenderTarget& rt) { const auto& gameState = getGameState(); const auto& scenarioOptions = gameState.scenarioOptions; @@ -1272,7 +1272,7 @@ namespace OpenRCT2::Ui::Windows SetPressedTab(); } - void ScenarioDetailsOnDraw(RenderTarget& rt) + void ScenarioDetailsOnDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -1684,7 +1684,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_CLOSE].type = gLegacyScene == LegacyScene::scenarioEditor ? WidgetType::empty : WidgetType::closeBox; } - void FinancialDraw(RenderTarget& rt) + void FinancialDraw(Drawing::RenderTarget& rt) { ScreenCoordsXY screenCoords{}; @@ -1970,7 +1970,7 @@ namespace OpenRCT2::Ui::Windows setWidgetPressed(WIDX_HARD_GUEST_GENERATION, gameState.park.flags & PARK_FLAGS_DIFFICULT_GUEST_GENERATION); } - void GuestsDraw(RenderTarget& rt) + void GuestsDraw(Drawing::RenderTarget& rt) { ScreenCoordsXY screenCoords{}; @@ -2173,7 +2173,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_CLOSE].type = gLegacyScene == LegacyScene::scenarioEditor ? WidgetType::empty : WidgetType::closeBox; } - void LandDraw(RenderTarget& rt) + void LandDraw(Drawing::RenderTarget& rt) { ScreenCoordsXY screenCoords{}; @@ -2327,7 +2327,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x00672340 */ - void RidesOnDraw(RenderTarget& rt) + void RidesOnDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -2337,7 +2337,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x0067236F */ - void RidesOnScrollDraw(RenderTarget& rt, int32_t scrollIndex) + void RidesOnScrollDraw(Drawing::RenderTarget& rt, int32_t scrollIndex) { int32_t colour = ColourMapA[colours[1].colour].mid_light; Rectangle::fill(rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, colour); diff --git a/src/openrct2-ui/windows/Error.cpp b/src/openrct2-ui/windows/Error.cpp index dc9762175f80..f7c932a9c949 100644 --- a/src/openrct2-ui/windows/Error.cpp +++ b/src/openrct2-ui/windows/Error.cpp @@ -67,7 +67,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 7d0bd1dd3569..0789f0347038 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -346,7 +346,7 @@ namespace OpenRCT2::Ui::Windows onPrepareDrawGraph(graphPageWidget, centredGraph); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -395,7 +395,7 @@ namespace OpenRCT2::Ui::Windows return {}; } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { if (page != WINDOW_FINANCES_PAGE_SUMMARY) return; @@ -588,7 +588,7 @@ namespace OpenRCT2::Ui::Windows initialiseScrollPosition(WIDX_SUMMARY_SCROLL, 0); } - void onDrawSummary(RenderTarget& rt) + void onDrawSummary(Drawing::RenderTarget& rt) { auto titleBarBottom = widgets[WIDX_TITLE].bottom; auto screenCoords = windowPos + ScreenCoordsXY{ 8, titleBarBottom + 37 }; @@ -706,7 +706,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDrawMarketing(RenderTarget& rt) + void onDrawMarketing(Drawing::RenderTarget& rt) { auto screenCoords = windowPos + ScreenCoordsXY{ 8, widgets[WIDX_TAB_1].top + 45 }; int32_t noCampaignsActive = 1; @@ -785,7 +785,7 @@ namespace OpenRCT2::Ui::Windows #pragma region Graph Events - void onDrawGraph(RenderTarget& rt, const money64 currentValue, const StringId fmt) const + void onDrawGraph(Drawing::RenderTarget& rt, const money64 currentValue, const StringId fmt) const { Formatter ft; ft.Add(currentValue); @@ -852,7 +852,7 @@ namespace OpenRCT2::Ui::Windows widgetScrollUpdateThumbs(*this, widgetIndex); } - void DrawTabImage(RenderTarget& rt, int32_t tabPage, int32_t spriteIndex) + void DrawTabImage(Drawing::RenderTarget& rt, int32_t tabPage, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_TAB_1 + tabPage; @@ -870,7 +870,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { DrawTabImage(rt, WINDOW_FINANCES_PAGE_SUMMARY, SPR_TAB_FINANCES_SUMMARY_0); DrawTabImage(rt, WINDOW_FINANCES_PAGE_FINANCIAL_GRAPH, SPR_TAB_FINANCES_FINANCIAL_GRAPH_0); diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 0828e7aceb7e..4da27dc435ac 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -555,7 +555,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { ScreenCoordsXY screenCoords; WindowDrawWidgets(*this, rt); @@ -683,7 +683,7 @@ namespace OpenRCT2::Ui::Windows } } - void WindowFootpathDrawDropdownButtons(RenderTarget& rt) + void WindowFootpathDrawDropdownButtons(Drawing::RenderTarget& rt) { if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull) { @@ -734,7 +734,7 @@ namespace OpenRCT2::Ui::Windows } } - void WindowFootpathDrawDropdownButton(RenderTarget& rt, WidgetIndex widgetIndex, ImageIndex image) + void WindowFootpathDrawDropdownButton(Drawing::RenderTarget& rt, WidgetIndex widgetIndex, ImageIndex image) { const auto& widget = widgets[widgetIndex]; GfxDrawSprite(rt, ImageId(image), { windowPos.x + widget.left, windowPos.y + widget.top }); diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index f4cb9623c3d1..09373cda6308 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -89,7 +89,7 @@ namespace OpenRCT2::Ui::Windows : colours[0].colour); } - void DrawLeftPanel(RenderTarget& rt) + void DrawLeftPanel(Drawing::RenderTarget& rt) { const auto& leftPanelWidget = widgets[WIDX_LEFT_OUTSET]; @@ -154,7 +154,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawParkRating(RenderTarget& rt, int32_t colour, const ScreenCoordsXY& coords, uint8_t factor) + void DrawParkRating(Drawing::RenderTarget& rt, int32_t colour, const ScreenCoordsXY& coords, uint8_t factor) { int16_t bar_width = (factor * 114) / 255; Rectangle::fillInset( @@ -175,7 +175,7 @@ namespace OpenRCT2::Ui::Windows GfxDrawSprite(rt, ImageId(SPR_RATING_HIGH), coords + ScreenCoordsXY{ 114, 0 }); } - void DrawRightPanel(RenderTarget& rt) + void DrawRightPanel(Drawing::RenderTarget& rt) { const auto& rightPanelWidget = widgets[WIDX_RIGHT_OUTSET]; @@ -237,7 +237,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawNewsItem(RenderTarget& rt) + void DrawNewsItem(Drawing::RenderTarget& rt) { const auto& middleOutsetWidget = widgets[WIDX_MIDDLE_OUTSET]; auto* newsItem = News::GetItem(0); @@ -353,7 +353,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawMiddlePanel(RenderTarget& rt) + void DrawMiddlePanel(Drawing::RenderTarget& rt) { Widget* middleOutsetWidget = &widgets[WIDX_MIDDLE_OUTSET]; @@ -620,7 +620,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { const auto& leftWidget = widgets[WIDX_LEFT_OUTSET]; const auto& rightWidget = widgets[WIDX_RIGHT_OUTSET]; diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 759ad93113a0..9bf88fa08e80 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -356,7 +356,7 @@ namespace OpenRCT2::Ui::Windows onViewportRotateOverview(); } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { switch (page) { @@ -419,7 +419,7 @@ namespace OpenRCT2::Ui::Windows onScrollMouseDownRides(scrollIndex, screenCoords); } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { if (page == WINDOW_GUEST_RIDES) { @@ -543,7 +543,7 @@ namespace OpenRCT2::Ui::Windows #pragma region Overview - void OverviewTabDraw(RenderTarget& rt) + void OverviewTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_1)) return; @@ -780,7 +780,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - void onDrawOverview(RenderTarget& rt) + void onDrawOverview(Drawing::RenderTarget& rt) { drawWidgets(rt); OverviewTabDraw(rt); @@ -1050,7 +1050,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Stats - void StatsTabDraw(RenderTarget& rt) + void StatsTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_2)) return; @@ -1107,7 +1107,7 @@ namespace OpenRCT2::Ui::Windows return std::clamp(newValue, newMin, 100); } - void onDrawStats(RenderTarget& rt) + void onDrawStats(Drawing::RenderTarget& rt) { // ebx const auto peep = GetGuest(); @@ -1206,7 +1206,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Rides - void RidesTabDraw(RenderTarget& rt) + void RidesTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_3)) return; @@ -1315,7 +1315,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_RIDE_SCROLL].bottom = height - 15; } - void onDrawRides(RenderTarget& rt) + void onDrawRides(Drawing::RenderTarget& rt) { drawWidgets(rt); OverviewTabDraw(rt); @@ -1352,7 +1352,7 @@ namespace OpenRCT2::Ui::Windows DrawTextEllipsised(rt, screenCoords, width - 14, STR_FAVOURITE_RIDE, ft); } - void onScrollDrawRides(int32_t scrollIndex, RenderTarget& rt) + void onScrollDrawRides(int32_t scrollIndex, Drawing::RenderTarget& rt) { auto colour = ColourMapA[colours[1].colour].mid_light; Rectangle::fill(rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, colour); @@ -1379,7 +1379,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Finance - void FinanceTabDraw(RenderTarget& rt) + void FinanceTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_4)) return; @@ -1405,7 +1405,7 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_TAB_4); } - void onDrawFinance(RenderTarget& rt) + void onDrawFinance(Drawing::RenderTarget& rt) { drawWidgets(rt); OverviewTabDraw(rt); @@ -1517,7 +1517,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Thoughts - void ThoughtsTabDraw(RenderTarget& rt) + void ThoughtsTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_5)) return; @@ -1554,7 +1554,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDrawThoughts(RenderTarget& rt) + void onDrawThoughts(Drawing::RenderTarget& rt) { drawWidgets(rt); OverviewTabDraw(rt); @@ -1595,7 +1595,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Inventory - void InventoryTabDraw(RenderTarget& rt) + void InventoryTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_6)) return; @@ -1735,7 +1735,7 @@ namespace OpenRCT2::Ui::Windows return std::make_pair(itemImage, ft); } - void onDrawInventory(RenderTarget& rt) + void onDrawInventory(Drawing::RenderTarget& rt) { drawWidgets(rt); OverviewTabDraw(rt); @@ -1785,7 +1785,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Debug - void DebugTabDraw(RenderTarget& rt) + void DebugTabDraw(Drawing::RenderTarget& rt) { if (widgetIsDisabled(*this, WIDX_TAB_7)) return; @@ -1808,7 +1808,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - void onDrawDebug(RenderTarget& rt) + void onDrawDebug(Drawing::RenderTarget& rt) { char buffer[512]{}; char buffer2[512]{}; diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 869db8829a1b..0c5a4222b567 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -427,7 +427,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -573,7 +573,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { Rectangle::fill( rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, ColourMapA[colours[1].colour].mid_light); @@ -626,7 +626,7 @@ namespace OpenRCT2::Ui::Windows } private: - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { // Tab 1 image auto i = (_selectedTab == TabId::Individual ? _tabAnimationIndex & ~3 : 0); @@ -643,7 +643,7 @@ namespace OpenRCT2::Ui::Windows windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_2].left, widgets[WIDX_TAB_2].top }); } - void DrawScrollIndividual(RenderTarget& rt) + void DrawScrollIndividual(Drawing::RenderTarget& rt) { size_t index = 0; auto y = static_cast(_selectedPage) * -kGuestPageHeight; @@ -710,7 +710,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawScrollSummarised(RenderTarget& rt) + void DrawScrollSummarised(Drawing::RenderTarget& rt) { size_t index = 0; auto y = 0; diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index 8ee75bf41a3c..c968f3deb941 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -149,7 +149,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index b18d77732bd8..27208711dc44 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -259,7 +259,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_PREVIEW].image = ImageId(LandTool::SizeToSpriteIndex(gLandToolSize)); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { ScreenCoordsXY screenCoords; int32_t numTiles; @@ -843,7 +843,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawDropdownButtons(RenderTarget& rt) + void DrawDropdownButtons(Drawing::RenderTarget& rt) { auto& objManager = GetContext()->GetObjectManager(); const auto* surfaceObj = objManager.GetLoadedObject(_selectedFloorTexture); @@ -866,7 +866,7 @@ namespace OpenRCT2::Ui::Windows DrawDropdownButton(rt, WIDX_WALL, edgeImage); } - void DrawDropdownButton(RenderTarget& rt, WidgetIndex widgetIndex, ImageId image) + void DrawDropdownButton(Drawing::RenderTarget& rt, WidgetIndex widgetIndex, ImageId image) { const auto& widget = widgets[widgetIndex]; GfxDrawSprite(rt, image, { windowPos.x + widget.left, windowPos.y + widget.top }); diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index e47ca7abc02a..871289e04b7c 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -392,7 +392,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto screenCoords = ScreenCoordsXY{ windowPos.x + widgets[WIDX_PREVIEW].midX(), windowPos.y + widgets[WIDX_PREVIEW].midY() }; diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index ecee501af49f..602fb40792d2 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -404,7 +404,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawPreview(RenderTarget& rt) + void DrawPreview(Drawing::RenderTarget& rt) { // Find preview image to draw PreviewImage* image = nullptr; @@ -731,7 +731,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -1077,7 +1077,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { Rectangle::fill( rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, ColourMapA[colours[1].colour].mid_light); diff --git a/src/openrct2-ui/windows/Main.cpp b/src/openrct2-ui/windows/Main.cpp index a336ac81c084..420b7f4cd6d1 100644 --- a/src/openrct2-ui/windows/Main.cpp +++ b/src/openrct2-ui/windows/Main.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::Ui::Windows WindowFootpathResetSelectedPath(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { ViewportRender(rt, viewport); } diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index d298d7745e89..18e1fa87ae47 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -566,7 +566,7 @@ namespace OpenRCT2::Ui::Windows onScrollMouseDown(scrollIndex, screenCoords); } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { GfxClear(rt, PaletteIndex::pi10); @@ -661,7 +661,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -947,7 +947,7 @@ namespace OpenRCT2::Ui::Windows return colourB; } - void PaintPeepOverlay(RenderTarget& rt, const ScreenCoordsXY& offset) + void PaintPeepOverlay(Drawing::RenderTarget& rt, const ScreenCoordsXY& offset) { auto flashColour = GetGuestFlashColour(); for (auto guest : EntityList()) @@ -961,7 +961,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawMapPeepPixel(Peep* peep, const uint8_t flashColour, RenderTarget& rt, const ScreenCoordsXY& offset) + void DrawMapPeepPixel(Peep* peep, const uint8_t flashColour, Drawing::RenderTarget& rt, const ScreenCoordsXY& offset) { if (peep->x == kLocationNull) return; @@ -1007,7 +1007,7 @@ namespace OpenRCT2::Ui::Windows return colour; } - void PaintTrainOverlay(RenderTarget& rt, const ScreenCoordsXY& offset) + void PaintTrainOverlay(Drawing::RenderTarget& rt, const ScreenCoordsXY& offset) { for (auto train : TrainManager::View()) { @@ -1029,7 +1029,7 @@ namespace OpenRCT2::Ui::Windows * The call to Rectangle::fill was originally wrapped in Sub68DABD which made sure that arguments were ordered * correctly, but it doesn't look like it's ever necessary here so the call was removed. */ - void PaintHudRectangle(RenderTarget& rt, const ScreenCoordsXY& widgetOffset) + void PaintHudRectangle(Drawing::RenderTarget& rt, const ScreenCoordsXY& widgetOffset) { WindowBase* mainWindow = WindowGetMain(); if (mainWindow == nullptr) @@ -1067,7 +1067,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill(rt, { rightBottom - ScreenCoordsXY{ 0, 3 }, rightBottom }, PaletteIndex::pi56); } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { // Guest tab image (animated) uint32_t guestTabImage = SPR_TAB_GUESTS_0; diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 285bfcd40249..38c448c01efa 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -299,7 +299,7 @@ namespace OpenRCT2::Ui::Windows pressedWidgets |= 1LL << (WIDX_TAB_1 + page); } - void DrawTabImage(RenderTarget& rt, int32_t newPage, int32_t spriteIndex) + void DrawTabImage(Drawing::RenderTarget& rt, int32_t newPage, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_TAB_1 + newPage; @@ -317,7 +317,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { DrawTabImage(rt, WINDOW_MAPGEN_PAGE_BASE, SPR_TAB_GEARS_0); DrawTabImage(rt, WINDOW_MAPGEN_PAGE_TERRAIN, SPR_G2_MAP_GEN_TERRAIN_TAB); @@ -597,7 +597,7 @@ namespace OpenRCT2::Ui::Windows // clang-format on } - void BaseDraw(RenderTarget& rt) + void BaseDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -759,7 +759,7 @@ namespace OpenRCT2::Ui::Windows setWidgetDisabled(WIDX_TREE_ALTITUDE_MAX_DOWN, !_settings.trees || isFlatland); } - void ForestsDraw(RenderTarget& rt) + void ForestsDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -863,7 +863,7 @@ namespace OpenRCT2::Ui::Windows } } - void SimplexDraw(RenderTarget& rt) + void SimplexDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -973,7 +973,7 @@ namespace OpenRCT2::Ui::Windows setCheckboxValue(WIDX_HEIGHTMAP_NORMALIZE, _settings.normalize_height); } - void HeightmapDraw(RenderTarget& rt) + void HeightmapDraw(Drawing::RenderTarget& rt) { const auto enabledColour = colours[1]; const auto disabledColour = enabledColour.withFlag(ColourFlag::inset, true); @@ -1159,7 +1159,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawDropdownButton(RenderTarget& rt, WidgetIndex widgetIndex, ImageId image) + void DrawDropdownButton(Drawing::RenderTarget& rt, WidgetIndex widgetIndex, ImageId image) { const auto& widget = widgets[widgetIndex]; ScreenCoordsXY pos = { windowPos.x + widget.left, windowPos.y + widget.top }; @@ -1181,7 +1181,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawDropdownButtons(RenderTarget& rt, WidgetIndex floorWidgetIndex, WidgetIndex edgeWidgetIndex) + void DrawDropdownButtons(Drawing::RenderTarget& rt, WidgetIndex floorWidgetIndex, WidgetIndex edgeWidgetIndex) { auto& objManager = GetContext()->GetObjectManager(); const auto* surfaceObj = objManager.GetLoadedObject(_settings.landTexture); @@ -1223,7 +1223,7 @@ namespace OpenRCT2::Ui::Windows SetPressedTab(); } - void TerrainDraw(RenderTarget& rt) + void TerrainDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -1334,7 +1334,7 @@ namespace OpenRCT2::Ui::Windows SetPressedTab(); } - void WaterDraw(RenderTarget& rt) + void WaterDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -1446,7 +1446,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { switch (page) { diff --git a/src/openrct2-ui/windows/MapTooltip.cpp b/src/openrct2-ui/windows/MapTooltip.cpp index f5492a6c9aae..e09dd2616359 100644 --- a/src/openrct2-ui/windows/MapTooltip.cpp +++ b/src/openrct2-ui/windows/MapTooltip.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { StringId stringId; std::memcpy(&stringId, _mapTooltipArgs.Data(), sizeof(StringId)); diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 0612c82890e4..7ed86827a5b9 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -305,7 +305,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); } diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 8c8f2aad9ead..e295792c0948 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -183,7 +183,7 @@ namespace OpenRCT2::Ui::Windows } } - void informationPaint(RenderTarget& rt) + void informationPaint(Drawing::RenderTarget& rt) { RenderTarget clippedDPI; if (ClipDrawPixelInfo(clippedDPI, rt, windowPos, width, height)) @@ -236,7 +236,7 @@ namespace OpenRCT2::Ui::Windows } } - void playersPaint(RenderTarget& rt) + void playersPaint(Drawing::RenderTarget& rt) { // Number of players StringId stringId = numListItems == 1 ? STR_MULTIPLAYER_PLAYER_COUNT : STR_MULTIPLAYER_PLAYER_COUNT_PLURAL; @@ -246,7 +246,7 @@ namespace OpenRCT2::Ui::Windows DrawTextBasic(rt, screenCoords, stringId, ft, { colours[2] }); } - void playersScrollPaint(int32_t scrollIndex, RenderTarget& rt) const + void playersScrollPaint(int32_t scrollIndex, Drawing::RenderTarget& rt) const { ScreenCoordsXY screenCoords; screenCoords.y = 0; @@ -346,7 +346,7 @@ namespace OpenRCT2::Ui::Windows } } - void groupsPaint(RenderTarget& rt) + void groupsPaint(Drawing::RenderTarget& rt) { thread_local std::string _buffer; @@ -389,7 +389,7 @@ namespace OpenRCT2::Ui::Windows } } - void groupsScrollPaint(int32_t scrollIndex, RenderTarget& rt) const + void groupsScrollPaint(int32_t scrollIndex, Drawing::RenderTarget& rt) const { auto screenCoords = ScreenCoordsXY{ 0, 0 }; @@ -432,7 +432,7 @@ namespace OpenRCT2::Ui::Windows } } - void drawTabImage(RenderTarget& rt, int32_t page_number, int32_t spriteIndex) + void drawTabImage(Drawing::RenderTarget& rt, int32_t page_number, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_TAB1 + page_number; @@ -454,7 +454,7 @@ namespace OpenRCT2::Ui::Windows } } - void drawTabImages(RenderTarget& rt) + void drawTabImages(Drawing::RenderTarget& rt) { drawTabImage(rt, WINDOW_MULTIPLAYER_PAGE_INFORMATION, SPR_TAB_KIOSKS_AND_FACILITIES_0); drawTabImage(rt, WINDOW_MULTIPLAYER_PAGE_PLAYERS, SPR_TAB_GUESTS_0); @@ -704,7 +704,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); drawTabImages(rt); @@ -900,7 +900,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { switch (page) { diff --git a/src/openrct2-ui/windows/NetworkStatus.cpp b/src/openrct2-ui/windows/NetworkStatus.cpp index 82019020860c..f506bf78b13e 100644 --- a/src/openrct2-ui/windows/NetworkStatus.cpp +++ b/src/openrct2-ui/windows/NetworkStatus.cpp @@ -86,7 +86,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); thread_local std::string _buffer; diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 70b6bfc7d032..418a96635189 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -353,7 +353,7 @@ namespace OpenRCT2::Ui::Windows widgetSetDisabled(*this, WIDX_START_BUTTON, true); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { ScreenCoordsXY screenCoords{}; diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 60497bb4fa39..0eb1ec678bf7 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -430,7 +430,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_GROUP_BY_TRACK_TYPE].left = width - 8 - localizedGroupByTrackTypeWidth; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -488,7 +488,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { if (_currentTab == RESEARCH_TAB) { @@ -941,7 +941,8 @@ namespace OpenRCT2::Ui::Windows widgetScrollUpdateThumbs(*this, WIDX_RIDE_LIST); } - void DrawRideInformation(RenderTarget& rt, RideSelection item, const ScreenCoordsXY& screenPos, int32_t textWidth) + void DrawRideInformation( + Drawing::RenderTarget& rt, RideSelection item, const ScreenCoordsXY& screenPos, int32_t textWidth) { auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); const auto* rideObj = objMgr.GetLoadedObject(item.EntryIndex); @@ -1027,7 +1028,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImage(RenderTarget& rt, NewRideTabId tab, int32_t spriteIndex) + void DrawTabImage(Drawing::RenderTarget& rt, NewRideTabId tab, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_TAB_1 + static_cast(tab); @@ -1045,7 +1046,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { DrawTabImage(rt, TRANSPORT_TAB, SPR_TAB_RIDES_TRANSPORT_0); DrawTabImage(rt, GENTLE_TAB, SPR_TAB_RIDES_GENTLE_0); diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 638ea6336b2e..30583cc988ae 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -260,7 +260,7 @@ namespace OpenRCT2::Ui::Windows setWidgetPressed(WIDX_TAB_OPTIONS, page == optionsTab); } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { if (!isWidgetDisabled(WIDX_TAB_NEWS)) { @@ -308,7 +308,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -441,7 +441,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { int32_t lineHeight = FontGetLineHeight(FontStyle::small); int32_t itemHeight = CalculateNewsItemHeight(); diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index dd6372b2948d..f533d8058cb8 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -492,7 +492,7 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_SCROLL); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); @@ -510,7 +510,7 @@ namespace OpenRCT2::Ui::Windows DrawTextEllipsised(rt, screenPos + ScreenCoordsXY{ 0, 29 }, kWindowSize.width - 5, STR_BLACK_STRING, ft); } - void onScrollDraw(const int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(const int32_t scrollIndex, Drawing::RenderTarget& rt) override { auto rtCoords = ScreenCoordsXY{ rt.x, rt.y }; Rectangle::fill( diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 95a0413f7d53..f2faddf385ab 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -628,7 +628,7 @@ namespace OpenRCT2::Ui::Windows CommonPrepareDrawAfter(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -1019,7 +1019,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_FRAME_RATE_LIMIT].text = kFrameRateLimitStringIds[activeItem]; } - void DisplayDraw(RenderTarget& rt) + void DisplayDraw(Drawing::RenderTarget& rt) { auto ft = Formatter(); ft.Add(static_cast(Config::Get().general.windowScale * 100)); @@ -2224,7 +2224,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_ASSET_PACKS].bottom = widgets[WIDX_GROUP_ADVANCED].bottom - 6; } - void AdvancedDraw(RenderTarget& rt) + void AdvancedDraw(Drawing::RenderTarget& rt) { auto ft = Formatter(); ft.Add(static_cast(Config::Get().general.autosaveAmount)); @@ -2301,7 +2301,7 @@ namespace OpenRCT2::Ui::Windows Dropdown::Flag::StayOpen, num_items, widget->width() - 4); } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { DrawTabImage(rt, WINDOW_OPTIONS_PAGE_DISPLAY, SPR_G2_MONITOR_TAB_START); DrawTabImage(rt, WINDOW_OPTIONS_PAGE_RENDERING, SPR_G2_TAB_TREE); @@ -2313,7 +2313,7 @@ namespace OpenRCT2::Ui::Windows DrawTabImage(rt, WINDOW_OPTIONS_PAGE_ADVANCED, SPR_TAB_WRENCH_0); } - void DrawTabImage(RenderTarget& rt, int32_t p, int32_t spriteIndex) + void DrawTabImage(Drawing::RenderTarget& rt, int32_t p, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_FIRST_TAB + p; Widget* widget = &widgets[widgetIndex]; diff --git a/src/openrct2-ui/windows/OverwritePrompt.cpp b/src/openrct2-ui/windows/OverwritePrompt.cpp index 30f41c9cecf3..28e1cde80234 100644 --- a/src/openrct2-ui/windows/OverwritePrompt.cpp +++ b/src/openrct2-ui/windows/OverwritePrompt.cpp @@ -85,7 +85,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index d205915c4d27..8de02560e0ea 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -357,7 +357,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { switch (page) { @@ -585,7 +585,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDrawEntrance(RenderTarget& rt) + void onDrawEntrance(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -700,7 +700,7 @@ namespace OpenRCT2::Ui::Windows kGraphNumYLabels, kParkRatingHistorySize); } - void onDrawRating(RenderTarget& rt) + void onDrawRating(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -781,7 +781,7 @@ namespace OpenRCT2::Ui::Windows kGraphNumYLabels, kGuestsInParkHistorySize); } - void onDrawGuests(RenderTarget& rt) + void onDrawGuests(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -882,7 +882,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_7); } - void onDrawPrice(RenderTarget& rt) + void onDrawPrice(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -942,7 +942,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_7); } - void onDrawStats(RenderTarget& rt) + void onDrawStats(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -1068,7 +1068,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_7); } - void onDrawObjective(RenderTarget& rt) + void onDrawObjective(Drawing::RenderTarget& rt) { auto& gameState = getGameState(); drawWidgets(rt); @@ -1134,7 +1134,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_7); } - void onDrawAwards(RenderTarget& rt) + void onDrawAwards(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -1208,7 +1208,7 @@ namespace OpenRCT2::Ui::Windows pressedWidgets |= 1LL << (WIDX_TAB_1 + page); } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { // Entrance tab if (!widgetIsDisabled(*this, WIDX_TAB_1)) diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index b5d26a2a6f16..231a032a0f43 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -136,7 +136,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_PREVIEW].image = ImageId(LandTool::SizeToSpriteIndex(gLandToolSize)); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 4ab7638c58c2..7bad97d828aa 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -151,7 +151,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { switch (page) { @@ -251,7 +251,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { Widget* widget; @@ -415,7 +415,7 @@ namespace OpenRCT2::Ui::Windows widgetSetEnabled(*this, WIDX_KICK, canKick && !isOwnWindow && !isServer); } - void onDrawOverview(RenderTarget& rt) + void onDrawOverview(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); @@ -599,7 +599,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_2); } - void onDrawStatistics(RenderTarget& rt) + void onDrawStatistics(Drawing::RenderTarget& rt) { drawWidgets(rt); DrawTabImages(rt); diff --git a/src/openrct2-ui/windows/ProgressWindow.cpp b/src/openrct2-ui/windows/ProgressWindow.cpp index 6ba42122740a..89a900ea0f49 100644 --- a/src/openrct2-ui/windows/ProgressWindow.cpp +++ b/src/openrct2-ui/windows/ProgressWindow.cpp @@ -171,14 +171,14 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); auto& widget = widgets[WIDX_TITLE]; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left, widget.bottom + 1 }; - RenderTarget clipDPI; + Drawing::RenderTarget clipDPI; if (!ClipDrawPixelInfo(clipDPI, rt, screenCoords, width - 3, height - widget.bottom - 3)) return; diff --git a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp index 56f9eb7540fa..bbc269530e49 100644 --- a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp +++ b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp @@ -72,7 +72,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index f579911d1c32..a9c1310e7ddc 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -246,7 +246,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -266,7 +266,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImage(RenderTarget& rt, int32_t tabPage, int32_t spriteIndex) + void DrawTabImage(Drawing::RenderTarget& rt, int32_t tabPage, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_TAB_1 + tabPage; @@ -286,7 +286,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { DrawTabImage(rt, WINDOW_RESEARCH_PAGE_DEVELOPMENT, SPR_TAB_FINANCES_RESEARCH_0); DrawTabImage(rt, WINDOW_RESEARCH_PAGE_FUNDING, SPR_TAB_FINANCES_SUMMARY_0); @@ -340,7 +340,7 @@ namespace OpenRCT2::Ui::Windows } } - void WindowResearchDevelopmentDraw(WindowBase* w, RenderTarget& rt, WidgetIndex baseWidgetIndex) + void WindowResearchDevelopmentDraw(WindowBase* w, Drawing::RenderTarget& rt, WidgetIndex baseWidgetIndex) { const auto& gameState = getGameState(); @@ -573,7 +573,7 @@ namespace OpenRCT2::Ui::Windows } } - void WindowResearchFundingDraw(WindowBase* w, RenderTarget& rt) + void WindowResearchFundingDraw(WindowBase* w, Drawing::RenderTarget& rt) { const auto& gameState = getGameState(); if (gameState.park.flags & PARK_FLAGS_NO_MONEY) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index bb2ef774d7e7..2dc6f8762da7 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -893,7 +893,7 @@ namespace OpenRCT2::Ui::Windows break; } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { switch (page) { @@ -1072,7 +1072,7 @@ namespace OpenRCT2::Ui::Windows break; } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { switch (page) { @@ -1204,7 +1204,7 @@ namespace OpenRCT2::Ui::Windows } private: - void drawTabImage(RenderTarget& rt, int32_t tab, int32_t spriteIndex) + void drawTabImage(Drawing::RenderTarget& rt, int32_t tab, int32_t spriteIndex) { WidgetIndex widgetIndex = WIDX_TAB_1 + tab; @@ -1221,7 +1221,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabMain(RenderTarget& rt) + void DrawTabMain(Drawing::RenderTarget& rt) { WidgetIndex widgetIndex = WIDX_TAB_1 + static_cast(WINDOW_RIDE_PAGE_MAIN); if (!widgetIsDisabled(*this, widgetIndex)) @@ -1255,7 +1255,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabVehicle(RenderTarget& rt) + void DrawTabVehicle(Drawing::RenderTarget& rt) { WidgetIndex widgetIndex = WIDX_TAB_1 + static_cast(WINDOW_RIDE_PAGE_VEHICLE); const auto& widget = widgets[widgetIndex]; @@ -1318,7 +1318,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabCustomer(RenderTarget& rt) + void DrawTabCustomer(Drawing::RenderTarget& rt) { WidgetIndex widgetIndex = WIDX_TAB_1 + static_cast(WINDOW_RIDE_PAGE_CUSTOMER); @@ -1338,7 +1338,7 @@ namespace OpenRCT2::Ui::Windows } } - void drawTabImages(RenderTarget& rt) + void drawTabImages(Drawing::RenderTarget& rt) { DrawTabVehicle(rt); drawTabImage(rt, WINDOW_RIDE_PAGE_OPERATING, SPR_TAB_GEARS_0); @@ -2558,7 +2558,7 @@ namespace OpenRCT2::Ui::Windows return GetStatusStation(ft); } - void MainOnDraw(RenderTarget& rt) + void MainOnDraw(Drawing::RenderTarget& rt) { WindowDrawWidgets(*this, rt); drawTabImages(rt); @@ -2847,7 +2847,7 @@ namespace OpenRCT2::Ui::Windows } } - void VehicleOnDraw(RenderTarget& rt) + void VehicleOnDraw(Drawing::RenderTarget& rt) { WindowDrawWidgets(*this, rt); drawTabImages(rt); @@ -2934,7 +2934,7 @@ namespace OpenRCT2::Ui::Windows ImageId imageId; }; - void VehicleOnScrollDraw(RenderTarget& rt, int32_t scrollIndex) + void VehicleOnScrollDraw(Drawing::RenderTarget& rt, int32_t scrollIndex) { auto ride = GetRide(rideId); if (ride == nullptr) @@ -3670,7 +3670,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); } - void OperatingOnDraw(RenderTarget& rt) + void OperatingOnDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); drawTabImages(rt); @@ -4010,7 +4010,7 @@ namespace OpenRCT2::Ui::Windows } } - void MaintenanceOnDraw(RenderTarget& rt) + void MaintenanceOnDraw(Drawing::RenderTarget& rt) { auto ride = GetRide(rideId); if (ride == nullptr) @@ -4799,7 +4799,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); } - void ColourOnDraw(RenderTarget& rt) + void ColourOnDraw(Drawing::RenderTarget& rt) { // TODO: This should use lists and identified sprites RenderTarget clippedDpi; @@ -4908,7 +4908,7 @@ namespace OpenRCT2::Ui::Windows } } - void ColourOnScrollDraw(RenderTarget& rt, int32_t scrollIndex) const + void ColourOnScrollDraw(Drawing::RenderTarget& rt, int32_t scrollIndex) const { auto ride = GetRide(rideId); if (ride == nullptr) @@ -5215,7 +5215,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); } - void MusicOnDraw(RenderTarget& rt) + void MusicOnDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); drawTabImages(rt); @@ -5252,7 +5252,7 @@ namespace OpenRCT2::Ui::Windows } } - void MusicOnScrollDraw(RenderTarget& rt, int32_t scrollIndex) + void MusicOnScrollDraw(Drawing::RenderTarget& rt, int32_t scrollIndex) { auto ride = GetRide(rideId); if (ride == nullptr) @@ -5594,7 +5594,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); } - void MeasurementsOnDraw(RenderTarget& rt) + void MeasurementsOnDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); drawTabImages(rt); @@ -6038,13 +6038,13 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); } - void GraphsOnDraw(RenderTarget& rt) + void GraphsOnDraw(Drawing::RenderTarget& rt) { drawWidgets(rt); drawTabImages(rt); } - void GraphsOnScrollDraw(RenderTarget& rt, int32_t scrollIndex) + void GraphsOnScrollDraw(Drawing::RenderTarget& rt, int32_t scrollIndex) { GfxClear(rt, ColourMapA[COLOUR_SATURATED_GREEN].darker); @@ -6599,7 +6599,7 @@ namespace OpenRCT2::Ui::Windows WindowAlignTabs(this, WIDX_TAB_1, WIDX_TAB_10); } - void IncomeOnDraw(RenderTarget& rt) + void IncomeOnDraw(Drawing::RenderTarget& rt) { StringId stringId; money64 profit; @@ -6798,7 +6798,7 @@ namespace OpenRCT2::Ui::Windows } } - void CustomerOnDraw(RenderTarget& rt) + void CustomerOnDraw(Drawing::RenderTarget& rt) { ShopItem shopItem; int16_t popularity, satisfaction, queueTime; diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 4755aea8c317..7af1388880de 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1685,9 +1685,9 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_O_TRACK].tooltip = trackDrawerDescriptor.Covered.tooltip; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { - RenderTarget clippedRT; + Drawing::RenderTarget clippedRT; Widget* widget; int32_t widgetWidth, widgetHeight; @@ -2699,7 +2699,7 @@ namespace OpenRCT2::Ui::Windows } void DrawTrackPiece( - RenderTarget& rt, RideId rideIndex, OpenRCT2::TrackElemType trackType, int32_t trackDirection, + Drawing::RenderTarget& rt, RideId rideIndex, OpenRCT2::TrackElemType trackType, int32_t trackDirection, SelectedLiftAndInverted liftHillAndInvertedState, int32_t widgetWidth, int32_t widgetHeight) { auto currentRide = GetRide(rideIndex); @@ -2740,7 +2740,7 @@ namespace OpenRCT2::Ui::Windows } void DrawTrackPieceHelper( - RenderTarget& rt, RideId rideIndex, OpenRCT2::TrackElemType trackType, int32_t trackDirection, + Drawing::RenderTarget& rt, RideId rideIndex, OpenRCT2::TrackElemType trackType, int32_t trackDirection, SelectedLiftAndInverted liftHillAndInvertedState, const CoordsXY& originCoords, int32_t originZ) { TileElement tempSideTrackTileElement{ 0x80, 0x8F, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index af451ce93083..410e4813955f 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -587,7 +587,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x006B3235 */ - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); DrawTabImages(rt); @@ -624,7 +624,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x006B3240 */ - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { auto rtCoords = ScreenCoordsXY{ rt.x, rt.y }; Rectangle::fill( @@ -881,7 +881,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x006B38EA */ - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { int32_t sprite_idx; diff --git a/src/openrct2-ui/windows/SavePrompt.cpp b/src/openrct2-ui/windows/SavePrompt.cpp index b92126bc5a12..23f8fa2807b1 100644 --- a/src/openrct2-ui/windows/SavePrompt.cpp +++ b/src/openrct2-ui/windows/SavePrompt.cpp @@ -190,7 +190,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); } diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 750463c69f31..4a35dc1e1138 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -267,7 +267,7 @@ namespace OpenRCT2::Ui::Windows invalidate(); } - ScreenCoordsXY DrawPreview(RenderTarget& rt, ScreenCoordsXY screenPos) + ScreenCoordsXY DrawPreview(Drawing::RenderTarget& rt, ScreenCoordsXY screenPos) { auto targetImageType = PreviewImageType::miniMap; if (Config::Get().interface.scenarioPreviewScreenshots) @@ -302,7 +302,7 @@ namespace OpenRCT2::Ui::Windows return frameEndPos; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -540,7 +540,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); @@ -636,7 +636,7 @@ namespace OpenRCT2::Ui::Windows } private: - void DrawCategoryHeading(RenderTarget& rt, int32_t left, int32_t right, int32_t y, StringId stringId) const + void DrawCategoryHeading(Drawing::RenderTarget& rt, int32_t left, int32_t right, int32_t y, StringId stringId) const { auto baseColour = colours[1]; colour_t lightColour = ColourMapA[baseColour.colour].lighter; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 93cc17076692..55984ac6acb3 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -875,7 +875,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_SCENERY_BUILD_CLUSTER_BUTTON].type = canFit ? WidgetType::flatBtn : WidgetType::empty; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabs(rt, windowPos); @@ -1572,7 +1572,7 @@ namespace OpenRCT2::Ui::Windows return { name, price }; } - void DrawTabs(RenderTarget& rt, const ScreenCoordsXY& offset) + void DrawTabs(Drawing::RenderTarget& rt, const ScreenCoordsXY& offset) { for (size_t tabIndex = 0; tabIndex < _tabEntries.size(); tabIndex++) { @@ -1587,7 +1587,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawSceneryItem(RenderTarget& rt, ScenerySelection scenerySelection) + void DrawSceneryItem(Drawing::RenderTarget& rt, ScenerySelection scenerySelection) { if (scenerySelection.SceneryType == SCENERY_TYPE_BANNER) { @@ -1705,7 +1705,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { GfxClear(rt, ColourMapA[colours[1].colour].mid_light); diff --git a/src/openrct2-ui/windows/SceneryScatter.cpp b/src/openrct2-ui/windows/SceneryScatter.cpp index 6c9c1e99ddf0..9fc6d1402353 100644 --- a/src/openrct2-ui/windows/SceneryScatter.cpp +++ b/src/openrct2-ui/windows/SceneryScatter.cpp @@ -181,7 +181,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_PREVIEW].image = ImageId(LandTool::SizeToSpriteIndex(gWindowSceneryScatterSize)); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index efcbc0cee114..dfa38b90016a 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -305,7 +305,7 @@ namespace OpenRCT2::Ui::Windows return { fallback, ft }; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -326,7 +326,7 @@ namespace OpenRCT2::Ui::Windows DrawTextBasic(rt, windowPos + ScreenCoordsXY{ 8, height - 15 }, _statusText, ft, { COLOUR_WHITE }); } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); diff --git a/src/openrct2-ui/windows/ServerStart.cpp b/src/openrct2-ui/windows/ServerStart.cpp index e2e68061567f..adea8f28c15f 100644 --- a/src/openrct2-ui/windows/ServerStart.cpp +++ b/src/openrct2-ui/windows/ServerStart.cpp @@ -229,7 +229,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTextBasic(rt, windowPos + ScreenCoordsXY{ 6, widgets[WIDX_PORT_INPUT].top }, STR_PORT, {}, { colours[1] }); diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index a04b199b40a8..7cd951b77da0 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -121,7 +121,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -251,7 +251,7 @@ namespace OpenRCT2::Ui::Windows setWidgetPressed(static_cast(WIDX_TAB_0 + _currentTabIndex), true); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -297,7 +297,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { auto rtCoords = ScreenCoordsXY{ rt.x, rt.y }; Rectangle::fill( @@ -472,7 +472,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImages(RenderTarget& rt) const + void DrawTabImages(Drawing::RenderTarget& rt) const { for (size_t i = 0; i < _tabs.size(); i++) { @@ -480,7 +480,7 @@ namespace OpenRCT2::Ui::Windows } } - void DrawTabImage(RenderTarget& rt, size_t tabIndex) const + void DrawTabImage(Drawing::RenderTarget& rt, size_t tabIndex) const { const auto& tabDesc = _tabs[tabIndex]; auto widgetIndex = static_cast(WIDX_TAB_0 + tabIndex); @@ -501,14 +501,15 @@ namespace OpenRCT2::Ui::Windows } } - void DrawSeparator(RenderTarget& rt, int32_t y, int32_t scrollWidth) + void DrawSeparator(Drawing::RenderTarget& rt, int32_t y, int32_t scrollWidth) { const int32_t top = y + (kScrollableRowHeight / 2) - 1; Rectangle::fill(rt, { { 0, top }, { scrollWidth, top } }, ColourMapA[colours[1].colour].mid_dark); Rectangle::fill(rt, { { 0, top + 1 }, { scrollWidth, top + 1 } }, ColourMapA[colours[1].colour].lightest); } - void DrawItem(RenderTarget& rt, int32_t y, int32_t scrollWidth, const ShortcutStringPair& shortcut, bool isHighlighted) + void DrawItem( + Drawing::RenderTarget& rt, int32_t y, int32_t scrollWidth, const ShortcutStringPair& shortcut, bool isHighlighted) { auto format = STR_BLACK_STRING; if (isHighlighted) diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index 72e1d5ef3f53..e4b4cf9dc892 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -292,7 +292,7 @@ namespace OpenRCT2::Ui::Windows text_colour_btn->image = getColourButtonImage(_textColour); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 3fd6ae7f9b2b..f986fbf6b30d 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -228,7 +228,7 @@ namespace OpenRCT2::Ui::Windows CommonPrepareDrawAfter(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -540,7 +540,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_FIRE].right = width - 2; } - void OverviewDraw(RenderTarget& rt) + void OverviewDraw(Drawing::RenderTarget& rt) { // Draw the viewport no sound sprite if (viewport != nullptr) @@ -567,7 +567,7 @@ namespace OpenRCT2::Ui::Windows DrawTextEllipsised(rt, screenPos, widgetWidth, STR_BLACK_STRING, ft, { TextAlignment::centre }); } - void DrawOverviewTabImage(RenderTarget& rt) + void DrawOverviewTabImage(Drawing::RenderTarget& rt) { if (isWidgetDisabled(WIDX_TAB_1)) return; @@ -579,7 +579,7 @@ namespace OpenRCT2::Ui::Windows if (page == WINDOW_STAFF_OVERVIEW) widgetHeight++; - RenderTarget clippedRT; + Drawing::RenderTarget clippedRT; if (!ClipDrawPixelInfo(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) { return; @@ -928,7 +928,7 @@ namespace OpenRCT2::Ui::Windows #pragma endregion #pragma region Statistics tab events - void StatsDraw(RenderTarget& rt) + void StatsDraw(Drawing::RenderTarget& rt) { auto staff = GetStaff(); if (staff == nullptr) @@ -1185,14 +1185,14 @@ namespace OpenRCT2::Ui::Windows WindowFollowSprite(*main, EntityId::FromUnderlying(number)); } - void DrawTabImages(RenderTarget& rt) + void DrawTabImages(Drawing::RenderTarget& rt) { DrawOverviewTabImage(rt); DrawTabImage(rt, WINDOW_STAFF_OPTIONS, SPR_TAB_STAFF_OPTIONS_0); DrawTabImage(rt, WINDOW_STAFF_STATISTICS, SPR_TAB_STATS_0); } - void DrawTabImage(RenderTarget& rt, int32_t p, int32_t baseImageId) + void DrawTabImage(Drawing::RenderTarget& rt, int32_t p, int32_t baseImageId) { WidgetIndex widgetIndex = WIDX_TAB_1 + p; Widget* widget = &widgets[widgetIndex]; diff --git a/src/openrct2-ui/windows/StaffFirePrompt.cpp b/src/openrct2-ui/windows/StaffFirePrompt.cpp index cf94694324fd..afc3473248a3 100644 --- a/src/openrct2-ui/windows/StaffFirePrompt.cpp +++ b/src/openrct2-ui/windows/StaffFirePrompt.cpp @@ -73,7 +73,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index b3dca0cb5ab0..a7ec8e9a2546 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -273,7 +273,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_STAFF_LIST_HIRE_BUTTON].right = width - 11; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); DrawTabImages(rt); @@ -367,7 +367,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { auto rtCoords = ScreenCoordsXY{ rt.x, rt.y }; Rectangle::fill( @@ -595,7 +595,7 @@ namespace OpenRCT2::Ui::Windows return static_cast(_selectedTab); } - void DrawTabImages(RenderTarget& rt) const + void DrawTabImages(Drawing::RenderTarget& rt) const { const auto& gameState = getGameState(); DrawTabImage(rt, WINDOW_STAFF_LIST_TAB_HANDYMEN, AnimationPeepType::handyman, gameState.park.staffHandymanColour); @@ -604,7 +604,7 @@ namespace OpenRCT2::Ui::Windows DrawTabImage(rt, WINDOW_STAFF_LIST_TAB_ENTERTAINERS, AnimationPeepType::entertainer); } - void DrawTabImage(RenderTarget& rt, int32_t tabIndex, AnimationPeepType type, colour_t colour) const + void DrawTabImage(Drawing::RenderTarget& rt, int32_t tabIndex, AnimationPeepType type, colour_t colour) const { PeepAnimationsObject* animObj = findPeepAnimationsObjectForType(type); if (animObj == nullptr) @@ -622,7 +622,7 @@ namespace OpenRCT2::Ui::Windows windowPos + ScreenCoordsXY{ (widget.left + widget.right) / 2, widget.bottom - 6 }); } - void DrawTabImage(RenderTarget& rt, int32_t tabIndex, AnimationPeepType type) const + void DrawTabImage(Drawing::RenderTarget& rt, int32_t tabIndex, AnimationPeepType type) const { PeepAnimationsObject* animObj = findPeepAnimationsObjectForType(type); if (animObj == nullptr) diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index 7746bf677389..3eba555bfed0 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -196,7 +196,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 6a30ee48520e..b6ed3c6b702c 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -388,7 +388,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { // Widgets WindowDrawWidgets(*this, rt); @@ -715,7 +715,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { ScreenCoordsXY screenCoords; @@ -906,7 +906,7 @@ namespace OpenRCT2::Ui::Windows return 0; } - void WindowThemesDrawTabImages(RenderTarget& rt) + void WindowThemesDrawTabImages(Drawing::RenderTarget& rt) { for (int32_t i = 0; i < WINDOW_THEMES_TAB_COUNT; i++) { diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 3ac4b129bd38..30f1bbb92731 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1044,7 +1044,7 @@ static uint64_t PageDisabledWidgets[] = { invalidateWidget(WIDX_LIST); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); ScreenCoordsXY screenCoords(windowPos.x, windowPos.y); @@ -1582,7 +1582,7 @@ static uint64_t PageDisabledWidgets[] = { } } - void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { const int32_t listWidth = widgets[WIDX_LIST].width() - 1; Rectangle::fill( diff --git a/src/openrct2-ui/windows/TitleExit.cpp b/src/openrct2-ui/windows/TitleExit.cpp index 548e39a504da..97cefee22ed4 100644 --- a/src/openrct2-ui/windows/TitleExit.cpp +++ b/src/openrct2-ui/windows/TitleExit.cpp @@ -44,7 +44,7 @@ namespace OpenRCT2::Ui::Windows }; } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); } diff --git a/src/openrct2-ui/windows/TitleLogo.cpp b/src/openrct2-ui/windows/TitleLogo.cpp index 55b40416933a..41683e0dc686 100644 --- a/src/openrct2-ui/windows/TitleLogo.cpp +++ b/src/openrct2-ui/windows/TitleLogo.cpp @@ -57,7 +57,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x0066B872 */ - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto screenCoords = windowPos + ScreenCoordsXY{ 2, 2 }; GfxDrawSprite(rt, ImageId(SPR_G2_LOGO), screenCoords); diff --git a/src/openrct2-ui/windows/TitleMenu.cpp b/src/openrct2-ui/windows/TitleMenu.cpp index 4902a32e6d63..65df8a8e39fc 100644 --- a/src/openrct2-ui/windows/TitleMenu.cpp +++ b/src/openrct2-ui/windows/TitleMenu.cpp @@ -275,7 +275,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { Rectangle::filter(rt, _filterRect, FilterPaletteID::palette51); drawWidgets(rt); diff --git a/src/openrct2-ui/windows/TitleOptions.cpp b/src/openrct2-ui/windows/TitleOptions.cpp index 29f8b6970341..87ea4896bc23 100644 --- a/src/openrct2-ui/windows/TitleOptions.cpp +++ b/src/openrct2-ui/windows/TitleOptions.cpp @@ -43,7 +43,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); } diff --git a/src/openrct2-ui/windows/TitleVersion.cpp b/src/openrct2-ui/windows/TitleVersion.cpp index fe9999d5f172..cadeb66624f0 100644 --- a/src/openrct2-ui/windows/TitleVersion.cpp +++ b/src/openrct2-ui/windows/TitleVersion.cpp @@ -24,7 +24,7 @@ namespace OpenRCT2::Ui::Windows class TitleVersionWindow final : public Window { - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { // Write name and version information const auto whiteOutline = ColourWithFlags{ COLOUR_WHITE }.withFlag(ColourFlag::withOutline, true); diff --git a/src/openrct2-ui/windows/Tooltip.cpp b/src/openrct2-ui/windows/Tooltip.cpp index ceb503f1e361..bcf558fef4e0 100644 --- a/src/openrct2-ui/windows/Tooltip.cpp +++ b/src/openrct2-ui/windows/Tooltip.cpp @@ -103,7 +103,7 @@ namespace OpenRCT2::Ui::Windows UpdatePosition(gTooltipCursor); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { int32_t left = windowPos.x; int32_t top = windowPos.y; diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 23e62f27b1a3..940a1f5d81f7 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -1261,16 +1261,16 @@ namespace OpenRCT2::Ui::Windows }; uint32_t mapImageId = _imageIdByRotation[GetCurrentRotation()]; - widgets[WIDX_MAP].image = ImageId(mapImageId, FilterPaletteID::paletteNull); + widgets[WIDX_MAP].image = ImageId(mapImageId, Drawing::FilterPaletteID::paletteNull); } } void ApplyAudioState() { if (!OpenRCT2::Audio::gGameSoundsOff) - widgets[WIDX_MUTE].image = ImageId(SPR_G2_TOOLBAR_MUTE, FilterPaletteID::paletteNull); + widgets[WIDX_MUTE].image = ImageId(SPR_G2_TOOLBAR_MUTE, Drawing::FilterPaletteID::paletteNull); else - widgets[WIDX_MUTE].image = ImageId(SPR_G2_TOOLBAR_UNMUTE, FilterPaletteID::paletteNull); + widgets[WIDX_MUTE].image = ImageId(SPR_G2_TOOLBAR_UNMUTE, Drawing::FilterPaletteID::paletteNull); } void ApplyFootpathPressed() @@ -1371,7 +1371,7 @@ namespace OpenRCT2::Ui::Windows AlignButtonsCentre(); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { const auto& gameState = getGameState(); int32_t imgId; diff --git a/src/openrct2-ui/windows/TrackDesignManage.cpp b/src/openrct2-ui/windows/TrackDesignManage.cpp index d4f9ec98a388..f79bb05cd2b1 100644 --- a/src/openrct2-ui/windows/TrackDesignManage.cpp +++ b/src/openrct2-ui/windows/TrackDesignManage.cpp @@ -133,7 +133,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { Formatter::Common().Add(_trackDesignFileReference->name.c_str()); drawWidgets(rt); @@ -183,7 +183,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 97d689e63dde..2e4ff95da8e9 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -351,14 +351,14 @@ namespace OpenRCT2::Ui::Windows DrawMiniPreview(*_trackDesign); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto ft = Formatter::Common(); ft.Add(_trackDesign->gameStateData.name.c_str()); WindowDrawWidgets(*this, rt); // Draw mini tile preview - RenderTarget clippedRT; + Drawing::RenderTarget clippedRT; const auto& previewWidget = widgets[WIDX_PREVIEW]; const auto previewCoords = windowPos + ScreenCoordsXY{ previewWidget.left, previewWidget.top }; if (ClipDrawPixelInfo(clippedRT, rt, previewCoords, previewWidget.width(), previewWidget.height())) diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index d577872c25cd..4c5691bf24f1 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -452,7 +452,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); @@ -673,7 +673,7 @@ namespace OpenRCT2::Ui::Windows } } - void onScrollDraw(const int32_t scrollIndex, RenderTarget& rt) override + void onScrollDraw(const int32_t scrollIndex, Drawing::RenderTarget& rt) override { uint8_t paletteIndex = ColourMapA[colours[0].colour].mid_light; GfxClear(rt, paletteIndex); diff --git a/src/openrct2-ui/windows/Transparency.cpp b/src/openrct2-ui/windows/Transparency.cpp index 0c13353dec82..73f0defddc03 100644 --- a/src/openrct2-ui/windows/Transparency.cpp +++ b/src/openrct2-ui/windows/Transparency.cpp @@ -141,7 +141,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); // Locate mechanic button image diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 46966210f4f2..0fef3c583b58 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -288,7 +288,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { WindowDrawWidgets(*this, rt); diff --git a/src/openrct2-ui/windows/Viewport.cpp b/src/openrct2-ui/windows/Viewport.cpp index 1fa877a4f342..a2d11750fb19 100644 --- a/src/openrct2-ui/windows/Viewport.cpp +++ b/src/openrct2-ui/windows/Viewport.cpp @@ -149,7 +149,7 @@ namespace OpenRCT2::Ui::Windows } } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { drawWidgets(rt); diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index f006b6f21c8b..30f3309568bc 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -149,7 +149,7 @@ namespace OpenRCT2::Ui::Windows widgets[WIDX_PREVIEW].image = ImageId(LandTool::SizeToSpriteIndex(gLandToolSize)); } - void onDraw(RenderTarget& rt) override + void onDraw(Drawing::RenderTarget& rt) override { auto screenCoords = ScreenCoordsXY{ windowPos.x + widgets[WIDX_PREVIEW].midX(), windowPos.y + widgets[WIDX_PREVIEW].midY() }; diff --git a/src/openrct2-ui/windows/Windows.h b/src/openrct2-ui/windows/Windows.h index 4f0220c2fbd9..a96345c992b5 100644 --- a/src/openrct2-ui/windows/Windows.h +++ b/src/openrct2-ui/windows/Windows.h @@ -219,12 +219,12 @@ namespace OpenRCT2::Ui::Windows WindowBase* ResearchOpen(); void WindowResearchDevelopmentMouseUp(WidgetIndex widgetIndex, WidgetIndex baseWidgetIndex); void WindowResearchDevelopmentPrepareDraw(WindowBase* w, WidgetIndex baseWidgetIndex); - void WindowResearchDevelopmentDraw(WindowBase* w, RenderTarget& rt, WidgetIndex baseWidgetIndex); + void WindowResearchDevelopmentDraw(WindowBase* w, Drawing::RenderTarget& rt, WidgetIndex baseWidgetIndex); void WindowResearchFundingMouseDown(WindowBase* w, WidgetIndex widgetIndex, WidgetIndex baseWidgetIndex); void WindowResearchFundingMouseUp(WidgetIndex widgetIndex, WidgetIndex baseWidgetIndex); void WindowResearchFundingDropdown(WidgetIndex widgetIndex, int32_t selectedIndex, WidgetIndex baseWidgetIndex); void WindowResearchFundingPrepareDraw(WindowBase* w, WidgetIndex baseWidgetIndex); - void WindowResearchFundingDraw(WindowBase* w, RenderTarget& dpi); + void WindowResearchFundingDraw(WindowBase* w, Drawing::RenderTarget& dpi); // Ride WindowBase* RideMainOpen(const Ride& ride); diff --git a/src/openrct2/core/Imaging.h b/src/openrct2/core/Imaging.h index 05200fe02fb2..15d81aca9107 100644 --- a/src/openrct2/core/Imaging.h +++ b/src/openrct2/core/Imaging.h @@ -18,8 +18,6 @@ #include #include -struct RenderTarget; - enum class ImageFormat { unknown, diff --git a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp index 9509ddbee481..4988fb297065 100644 --- a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp @@ -9,6 +9,8 @@ #include "Drawing.h" +using namespace OpenRCT2::Drawing; + template static void FASTCALL DrawBMPSpriteMagnify(RenderTarget& rt, const DrawSpriteArgs& args) { diff --git a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp index 0c0757387aee..c725405b5edd 100644 --- a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp @@ -12,6 +12,8 @@ #include #include +using namespace OpenRCT2::Drawing; + template static void FASTCALL DrawRLESpriteMagnify(RenderTarget& rt, const DrawSpriteArgs& args) { diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 64fa0b3833e7..ae2101b88530 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -30,6 +30,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Ui; /** diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 8156abb4fc8b..11068b9b763f 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -27,6 +27,7 @@ #include "TTF.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; static int32_t TTFGetStringWidth(std::string_view text, FontStyle fontStyle, bool noFormatting); diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 070e1adba5fe..29776ce9a865 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -875,23 +875,6 @@ std::optional GetPaletteMapForColour(colour_t paletteId) return std::nullopt; } -uint8_t* RenderTarget::GetBitsOffset(const ScreenCoordsXY& pos) const -{ - return bits + pos.x + pos.y * LineStride(); -} - -RenderTarget RenderTarget::Crop(const ScreenCoordsXY& pos, const ScreenSize& size) const -{ - RenderTarget result = *this; - result.bits = GetBitsOffset(pos); - result.x = pos.x; - result.y = pos.y; - result.width = size.width; - result.height = size.height; - result.pitch = width + pitch - size.width; - return result; -} - FilterPaletteID GetGlassPaletteId(colour_t c) { return kGlassPaletteIds[c]; diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index de329e7d4168..a879af71f733 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -15,8 +15,10 @@ #include "../interface/ZoomLevel.h" #include "../world/Location.hpp" #include "ColourPalette.h" +#include "FilterPaletteIds.h" #include "Font.h" #include "ImageId.hpp" +#include "RenderTarget.h" #include "Text.h" #include "TextColour.h" @@ -70,51 +72,6 @@ struct Gx std::unique_ptr data; }; -struct RenderTarget -{ - uint8_t* bits{}; - int32_t x{}; - int32_t y{}; - int32_t width{}; - int32_t height{}; - int32_t pitch{}; // note: this is actually (pitch - width) - int32_t cullingX{}; - int32_t cullingY{}; - int32_t cullingWidth{}; - int32_t cullingHeight{}; - ZoomLevel zoom_level{}; - - // Last position of drawn text. - ScreenCoordsXY lastStringPos{}; - - OpenRCT2::Drawing::IDrawingEngine* DrawingEngine{}; - - uint8_t* GetBitsOffset(const ScreenCoordsXY& pos) const; - RenderTarget Crop(const ScreenCoordsXY& pos, const ScreenSize& size) const; - - [[nodiscard]] constexpr int32_t WorldX() const - { - return zoom_level.ApplyTo(x); - } - [[nodiscard]] constexpr int32_t WorldY() const - { - return zoom_level.ApplyTo(y); - } - [[nodiscard]] constexpr int32_t WorldWidth() const - { - return zoom_level.ApplyTo(width); - } - [[nodiscard]] constexpr int32_t WorldHeight() const - { - return zoom_level.ApplyTo(height); - } - - [[nodiscard]] constexpr int32_t LineStride() const - { - return width + pitch; - } -}; - struct RCTG1Element { uint32_t offset; // 0x00 note: uint32_t always! @@ -159,157 +116,15 @@ constexpr DrawBlendOp kBlendSrc = 1 << 1; */ constexpr DrawBlendOp kBlendDst = 2 << 2; -enum class FilterPaletteID : int32_t -{ - paletteNull = 0, - - paletteWater = COLOUR_COUNT, - - paletteLandMarker0, // North (corner/edge) - paletteLandMarker1, // East (corner/edge) - paletteLandMarker2, // South (corner/edge) - paletteLandMarker3, // West (corner/edge) - paletteSceneryGroundMarker, - paletteWaterMarker, - paletteQuarterMarker0, // North (not sure why it couldn't just use PaletteLandMarker0) - paletteQuarterMarker1, // East - paletteQuarterMarker2, // South - paletteQuarterMarker3, // West - paletteRideGroundMarker, - paletteGhost, // Construction marker - palette45, // Decolourise + lighten - palette46, - - paletteDarken3, - - paletteDarken1 = paletteDarken3 + 2, - paletteDarken2, - palette51, // Decolourise + darken - paletteTranslucentGrey, - paletteTranslucentGreyHighlight, - paletteTranslucentGreyShadow, - paletteTranslucentLightBlue, - paletteTranslucentLightBlueHighlight, - paletteTranslucentLightBlueShadow, - paletteTranslucentBordeauxRed, - paletteTranslucentBordeauxRedHighlight, - paletteTranslucentBordeauxRedShadow, - paletteTranslucentDarkGreen, - paletteTranslucentDarkGreenHighlight, - paletteTranslucentDarkGreenShadow, - paletteTranslucentLightPurple, - paletteTranslucentLightPurpleHighlight, - paletteTranslucentLightPurpleShadow, - paletteTranslucentDarkOliveGreen, - paletteTranslucentDarkOliveGreenHighlight, - paletteTranslucentDarkOliveGreenShadow, - paletteTranslucentLightBrown, - paletteTranslucentLightBrownHighlight, - paletteTranslucentLightBrownShadow, - paletteTranslucentYellow, - paletteTranslucentYellowHighlight, - paletteTranslucentYellowShadow, - paletteTranslucentMossGreen, - paletteTranslucentMossGreenHighlight, - paletteTranslucentMossGreenShadow, - paletteTranslucentOliveGreen, - paletteTranslucentOliveGreenHighlight, - paletteTranslucentOliveGreenShadow, - paletteTranslucentBrightGreen, - paletteTranslucentBrightGreenHighlight, - paletteTranslucentBrightGreenShadow, - paletteTranslucentSalmonPink, - paletteTranslucentSalmonPinkHighlight, - paletteTranslucentSalmonPinkShadow, - paletteTranslucentBrightPurple, - paletteTranslucentBrightPurpleHighlight, - paletteTranslucentBrightPurpleShadow, - paletteTranslucentBrightRed, - paletteTranslucentBrightRedHighlight, - paletteTranslucentBrightRedShadow, - paletteTranslucentLightOrange, - paletteTranslucentLightOrangeHighlight, - paletteTranslucentLightOrangeShadow, - paletteTranslucentTeal, - paletteTranslucentTealHighlight, - paletteTranslucentTealShadow, - paletteTranslucentBrightPink, - paletteTranslucentBrightPinkHighlight, - paletteTranslucentBrightPinkShadow, - paletteTranslucentDarkBrown, - paletteTranslucentDarkBrownHighlight, - paletteTranslucentDarkBrownShadow, - paletteTranslucentLightPink, - paletteTranslucentLightPinkHighlight, - paletteTranslucentLightPinkShadow, - paletteTranslucentWhite, - paletteTranslucentWhiteHighlight, - paletteTranslucentWhiteShadow, - paletteGlass, - paletteGlassBlack = paletteGlass + COLOUR_BLACK, - paletteGlassGrey = paletteGlass + COLOUR_GREY, - paletteGlassWhite = paletteGlass + COLOUR_WHITE, - paletteGlassDarkPurple = paletteGlass + COLOUR_DARK_PURPLE, - paletteGlassLightPurple = paletteGlass + COLOUR_LIGHT_PURPLE, - paletteGlassBrightPurple = paletteGlass + COLOUR_BRIGHT_PURPLE, - paletteGlassDarkBlue = paletteGlass + COLOUR_DARK_BLUE, - paletteGlassLightBlue = paletteGlass + COLOUR_LIGHT_BLUE, - paletteGlassIcyBlue = paletteGlass + COLOUR_ICY_BLUE, - paletteGlassTeal = paletteGlass + COLOUR_TEAL, - paletteGlassAquamarine = paletteGlass + COLOUR_AQUAMARINE, - paletteGlassSaturatedGreen = paletteGlass + COLOUR_SATURATED_GREEN, - paletteGlassDarkGreen = paletteGlass + COLOUR_DARK_GREEN, - paletteGlassMossGreen = paletteGlass + COLOUR_MOSS_GREEN, - paletteGlassBrightGreen = paletteGlass + COLOUR_BRIGHT_GREEN, - paletteGlassOliveGreen = paletteGlass + COLOUR_OLIVE_GREEN, - paletteGlassDarkOliveGreen = paletteGlass + COLOUR_DARK_OLIVE_GREEN, - paletteGlassBrightYellow = paletteGlass + COLOUR_BRIGHT_YELLOW, - paletteGlassYellow = paletteGlass + COLOUR_YELLOW, - paletteGlassDarkYellow = paletteGlass + COLOUR_DARK_YELLOW, - paletteGlassLightOrange = paletteGlass + COLOUR_LIGHT_ORANGE, - paletteGlassDarkOrange = paletteGlass + COLOUR_DARK_ORANGE, - paletteGlassLightBrown = paletteGlass + COLOUR_LIGHT_BROWN, - paletteGlassSaturatedBrown = paletteGlass + COLOUR_SATURATED_BROWN, - paletteGlassDarkBrown = paletteGlass + COLOUR_DARK_BROWN, - paletteGlassSalmonPink = paletteGlass + COLOUR_SALMON_PINK, - paletteGlassBordeauxRed = paletteGlass + COLOUR_BORDEAUX_RED, - paletteGlassSaturatedRed = paletteGlass + COLOUR_SATURATED_RED, - paletteGlassBrightRed = paletteGlass + COLOUR_BRIGHT_RED, - paletteGlassDarkPink = paletteGlass + COLOUR_DARK_PINK, - paletteGlassBrightPink = paletteGlass + COLOUR_BRIGHT_PINK, - paletteGlassLightPink = paletteGlass + COLOUR_LIGHT_PINK, - paletteGlassDarkOliveDark = paletteGlass + COLOUR_DARK_OLIVE_DARK, - paletteGlassDarkOliveLight = paletteGlass + COLOUR_DARK_OLIVE_LIGHT, - paletteGlassSaturatedBrownLight = paletteGlass + COLOUR_SATURATED_BROWN_LIGHT, - paletteGlassBordeauxRedDark = paletteGlass + COLOUR_BORDEAUX_RED_DARK, - paletteGlassBordeauxRedLight = paletteGlass + COLOUR_BORDEAUX_RED_LIGHT, - paletteGlassGrassGreenDark = paletteGlass + COLOUR_GRASS_GREEN_DARK, - paletteGlassGrassGreenLight = paletteGlass + COLOUR_GRASS_GREEN_LIGHT, - paletteGlassOliveDark = paletteGlass + COLOUR_OLIVE_DARK, - paletteGlassOliveLight = paletteGlass + COLOUR_OLIVE_LIGHT, - paletteGlassSaturatedGreenLight = paletteGlass + COLOUR_SATURATED_GREEN_LIGHT, - paletteGlassTanDark = paletteGlass + COLOUR_TAN_DARK, - paletteGlassTanLight = paletteGlass + COLOUR_TAN_LIGHT, - paletteGlassDullPurpleLight = paletteGlass + COLOUR_DULL_PURPLE_LIGHT, - paletteGlassDullGreenDark = paletteGlass + COLOUR_DULL_GREEN_DARK, - paletteGlassDullGreenLight = paletteGlass + COLOUR_DULL_GREEN_LIGHT, - paletteGlassSaturatedPurpleDark = paletteGlass + COLOUR_SATURATED_PURPLE_DARK, - paletteGlassSaturatedPurpleLight = paletteGlass + COLOUR_SATURATED_PURPLE_LIGHT, - paletteGlassOrangeLight = paletteGlass + COLOUR_ORANGE_LIGHT, - paletteGlassAquaDark = paletteGlass + COLOUR_AQUA_DARK, - paletteGlassMagentaLight = paletteGlass + COLOUR_MAGENTA_LIGHT, - paletteGlassDullBrownDark = paletteGlass + COLOUR_DULL_BROWN_DARK, - paletteGlassDullBrownLight = paletteGlass + COLOUR_DULL_BROWN_LIGHT, - paletteGlassInvisible = paletteGlass + COLOUR_INVISIBLE, - paletteGlassVoid = paletteGlass + COLOUR_VOID, -}; - -struct TranslucentWindowPalette +namespace OpenRCT2::Drawing { - FilterPaletteID base; - FilterPaletteID highlight; - FilterPaletteID shadow; -}; + struct TranslucentWindowPalette + { + FilterPaletteID base; + FilterPaletteID highlight; + FilterPaletteID shadow; + }; +} // namespace OpenRCT2::Drawing /** * Represents an 8-bit indexed map that maps from one palette index to another. @@ -460,14 +275,16 @@ extern OpenRCT2::Drawing::GamePalette gGamePalette; extern uint32_t gPaletteEffectFrame; extern OpenRCT2::Drawing::TextColours gTextPalette; -extern const TranslucentWindowPalette kTranslucentWindowPalettes[COLOUR_COUNT]; +extern const OpenRCT2::Drawing::TranslucentWindowPalette kTranslucentWindowPalettes[COLOUR_COUNT]; extern ImageId gPickupPeepImage; extern int32_t gPickupPeepX; extern int32_t gPickupPeepY; extern bool gPaintForceRedraw; -bool ClipDrawPixelInfo(RenderTarget& dst, RenderTarget& src, const ScreenCoordsXY& coords, int32_t width, int32_t height); +bool ClipDrawPixelInfo( + OpenRCT2::Drawing::RenderTarget& dst, OpenRCT2::Drawing::RenderTarget& src, const ScreenCoordsXY& coords, int32_t width, + int32_t height); void GfxSetDirtyBlocks(const ScreenRect& rect); void GfxInvalidateScreen(); @@ -476,16 +293,18 @@ void GfxTransposePalette(int32_t pal, uint8_t product); void LoadPalette(); // other -void GfxClear(RenderTarget& rt, uint8_t paletteIndex); -void GfxFilterPixel(RenderTarget& rt, const ScreenCoordsXY& coords, FilterPaletteID palette); +void GfxClear(OpenRCT2::Drawing::RenderTarget& rt, uint8_t paletteIndex); +void GfxFilterPixel( + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, OpenRCT2::Drawing::FilterPaletteID palette); void GfxInvalidatePickedUpPeep(); -void GfxDrawPickedUpPeep(RenderTarget& rt); +void GfxDrawPickedUpPeep(OpenRCT2::Drawing::RenderTarget& rt); // line -void GfxDrawLine(RenderTarget& rt, const ScreenLine& line, int32_t colour); -void GfxDrawLineSoftware(RenderTarget& rt, const ScreenLine& line, int32_t colour); +void GfxDrawLine(OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& line, int32_t colour); +void GfxDrawLineSoftware(OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& line, int32_t colour); void GfxDrawDashedLine( - RenderTarget& rt, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, const int32_t color); + OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, + const int32_t color); // sprite bool GfxLoadG1(const OpenRCT2::IPlatformEnvironment& env); @@ -499,31 +318,34 @@ const G1Element* GfxGetG1Element(ImageIndex image_id); void GfxSetG1Element(ImageIndex imageId, const G1Element* g1); std::optional GfxLoadGx(const std::vector& buffer); bool IsCsgLoaded(); -void FASTCALL GfxSpriteToBuffer(RenderTarget& rt, const DrawSpriteArgs& args); -void FASTCALL GfxBmpSpriteToBuffer(RenderTarget& rt, const DrawSpriteArgs& args); -void FASTCALL GfxRleSpriteToBuffer(RenderTarget& rt, const DrawSpriteArgs& args); -void FASTCALL GfxDrawSprite(RenderTarget& rt, const ImageId image_id, const ScreenCoordsXY& coords); -void FASTCALL GfxDrawGlyph(RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, const PaletteMap& paletteMap); -void FASTCALL GfxDrawSpriteSolid(RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, uint8_t colour); +void FASTCALL GfxSpriteToBuffer(OpenRCT2::Drawing::RenderTarget& rt, const DrawSpriteArgs& args); +void FASTCALL GfxBmpSpriteToBuffer(OpenRCT2::Drawing::RenderTarget& rt, const DrawSpriteArgs& args); +void FASTCALL GfxRleSpriteToBuffer(OpenRCT2::Drawing::RenderTarget& rt, const DrawSpriteArgs& args); +void FASTCALL GfxDrawSprite(OpenRCT2::Drawing::RenderTarget& rt, const ImageId image_id, const ScreenCoordsXY& coords); +void FASTCALL GfxDrawGlyph( + OpenRCT2::Drawing::RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, const PaletteMap& paletteMap); +void FASTCALL + GfxDrawSpriteSolid(OpenRCT2::Drawing::RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, uint8_t colour); +void FASTCALL GfxDrawSpriteRawMasked( + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, const ImageId maskImage, const ImageId colourImage); void FASTCALL - GfxDrawSpriteRawMasked(RenderTarget& rt, const ScreenCoordsXY& coords, const ImageId maskImage, const ImageId colourImage); -void FASTCALL GfxDrawSpriteSoftware(RenderTarget& rt, const ImageId imageId, const ScreenCoordsXY& spriteCoords); + GfxDrawSpriteSoftware(OpenRCT2::Drawing::RenderTarget& rt, const ImageId imageId, const ScreenCoordsXY& spriteCoords); void FASTCALL GfxDrawSpritePaletteSetSoftware( - RenderTarget& rt, const ImageId imageId, const ScreenCoordsXY& coords, const PaletteMap& paletteMap); + OpenRCT2::Drawing::RenderTarget& rt, const ImageId imageId, const ScreenCoordsXY& coords, const PaletteMap& paletteMap); void FASTCALL GfxDrawSpriteRawMaskedSoftware( - RenderTarget& rt, const ScreenCoordsXY& scrCoords, const ImageId maskImage, const ImageId colourImage); + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& scrCoords, const ImageId maskImage, const ImageId colourImage); // string void GfxDrawStringLeftCentred( - RenderTarget& rt, StringId format, void* args, ColourWithFlags colour, const ScreenCoordsXY& coords); + OpenRCT2::Drawing::RenderTarget& rt, StringId format, void* args, ColourWithFlags colour, const ScreenCoordsXY& coords); void DrawStringCentredRaw( - RenderTarget& rt, const ScreenCoordsXY& coords, int32_t numLines, const utf8* text, FontStyle fontStyle); + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, int32_t numLines, const utf8* text, FontStyle fontStyle); void DrawNewsTicker( - RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, colour_t colour, StringId format, u8string_view args, - int32_t ticks); + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, colour_t colour, StringId format, + u8string_view args, int32_t ticks); void GfxDrawStringWithYOffsets( - RenderTarget& rt, const utf8* text, ColourWithFlags colour, const ScreenCoordsXY& coords, const int8_t* yOffsets, - bool forceSpriteFont, FontStyle fontStyle); + OpenRCT2::Drawing::RenderTarget& rt, const utf8* text, ColourWithFlags colour, const ScreenCoordsXY& coords, + const int8_t* yOffsets, bool forceSpriteFont, FontStyle fontStyle); int32_t GfxWrapString(u8string_view text, int32_t width, FontStyle fontStyle, u8string* outWrappedText, int32_t* outNumLines); int32_t GfxGetStringWidth(std::string_view text, FontStyle fontStyle); @@ -533,13 +355,8 @@ int32_t StringGetHeightRaw(std::string_view text, FontStyle fontStyle); int32_t GfxClipString(char* buffer, int32_t width, FontStyle fontStyle); u8string ShortenPath(const u8string& path, int32_t availableWidth, FontStyle fontStyle); void TTFDrawString( - RenderTarget& rt, const_utf8string text, ColourWithFlags colour, const ScreenCoordsXY& coords, bool noFormatting, - FontStyle fontStyle, TextDarkness darkness); - -namespace OpenRCT2 -{ - class Formatter; -} + OpenRCT2::Drawing::RenderTarget& rt, const_utf8string text, ColourWithFlags colour, const ScreenCoordsXY& coords, + bool noFormatting, FontStyle fontStyle, TextDarkness darkness); size_t G1CalculateDataSize(const G1Element* g1); @@ -565,6 +382,6 @@ void UpdatePaletteEffects(); void RefreshVideo(); void ToggleWindowedMode(); -void DebugDPI(RenderTarget& rt); +void DebugDPI(OpenRCT2::Drawing::RenderTarget& rt); #include "NewDrawing.h" diff --git a/src/openrct2/drawing/FilterPaletteIds.h b/src/openrct2/drawing/FilterPaletteIds.h new file mode 100644 index 000000000000..a8ea2f7a680b --- /dev/null +++ b/src/openrct2/drawing/FilterPaletteIds.h @@ -0,0 +1,160 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../interface/Colour.h" + +namespace OpenRCT2::Drawing +{ + enum class FilterPaletteID : int32_t + { + paletteNull = 0, + + paletteWater = COLOUR_COUNT, + + paletteLandMarker0, // North (corner/edge) + paletteLandMarker1, // East (corner/edge) + paletteLandMarker2, // South (corner/edge) + paletteLandMarker3, // West (corner/edge) + paletteSceneryGroundMarker, + paletteWaterMarker, + paletteQuarterMarker0, // North (not sure why it couldn't just use PaletteLandMarker0) + paletteQuarterMarker1, // East + paletteQuarterMarker2, // South + paletteQuarterMarker3, // West + paletteRideGroundMarker, + paletteGhost, // Construction marker + palette45, // Decolourise + lighten + palette46, + + paletteDarken3, + + paletteDarken1 = paletteDarken3 + 2, + paletteDarken2, + palette51, // Decolourise + darken + paletteTranslucentGrey, + paletteTranslucentGreyHighlight, + paletteTranslucentGreyShadow, + paletteTranslucentLightBlue, + paletteTranslucentLightBlueHighlight, + paletteTranslucentLightBlueShadow, + paletteTranslucentBordeauxRed, + paletteTranslucentBordeauxRedHighlight, + paletteTranslucentBordeauxRedShadow, + paletteTranslucentDarkGreen, + paletteTranslucentDarkGreenHighlight, + paletteTranslucentDarkGreenShadow, + paletteTranslucentLightPurple, + paletteTranslucentLightPurpleHighlight, + paletteTranslucentLightPurpleShadow, + paletteTranslucentDarkOliveGreen, + paletteTranslucentDarkOliveGreenHighlight, + paletteTranslucentDarkOliveGreenShadow, + paletteTranslucentLightBrown, + paletteTranslucentLightBrownHighlight, + paletteTranslucentLightBrownShadow, + paletteTranslucentYellow, + paletteTranslucentYellowHighlight, + paletteTranslucentYellowShadow, + paletteTranslucentMossGreen, + paletteTranslucentMossGreenHighlight, + paletteTranslucentMossGreenShadow, + paletteTranslucentOliveGreen, + paletteTranslucentOliveGreenHighlight, + paletteTranslucentOliveGreenShadow, + paletteTranslucentBrightGreen, + paletteTranslucentBrightGreenHighlight, + paletteTranslucentBrightGreenShadow, + paletteTranslucentSalmonPink, + paletteTranslucentSalmonPinkHighlight, + paletteTranslucentSalmonPinkShadow, + paletteTranslucentBrightPurple, + paletteTranslucentBrightPurpleHighlight, + paletteTranslucentBrightPurpleShadow, + paletteTranslucentBrightRed, + paletteTranslucentBrightRedHighlight, + paletteTranslucentBrightRedShadow, + paletteTranslucentLightOrange, + paletteTranslucentLightOrangeHighlight, + paletteTranslucentLightOrangeShadow, + paletteTranslucentTeal, + paletteTranslucentTealHighlight, + paletteTranslucentTealShadow, + paletteTranslucentBrightPink, + paletteTranslucentBrightPinkHighlight, + paletteTranslucentBrightPinkShadow, + paletteTranslucentDarkBrown, + paletteTranslucentDarkBrownHighlight, + paletteTranslucentDarkBrownShadow, + paletteTranslucentLightPink, + paletteTranslucentLightPinkHighlight, + paletteTranslucentLightPinkShadow, + paletteTranslucentWhite, + paletteTranslucentWhiteHighlight, + paletteTranslucentWhiteShadow, + paletteGlass, + paletteGlassBlack = paletteGlass + COLOUR_BLACK, + paletteGlassGrey = paletteGlass + COLOUR_GREY, + paletteGlassWhite = paletteGlass + COLOUR_WHITE, + paletteGlassDarkPurple = paletteGlass + COLOUR_DARK_PURPLE, + paletteGlassLightPurple = paletteGlass + COLOUR_LIGHT_PURPLE, + paletteGlassBrightPurple = paletteGlass + COLOUR_BRIGHT_PURPLE, + paletteGlassDarkBlue = paletteGlass + COLOUR_DARK_BLUE, + paletteGlassLightBlue = paletteGlass + COLOUR_LIGHT_BLUE, + paletteGlassIcyBlue = paletteGlass + COLOUR_ICY_BLUE, + paletteGlassTeal = paletteGlass + COLOUR_TEAL, + paletteGlassAquamarine = paletteGlass + COLOUR_AQUAMARINE, + paletteGlassSaturatedGreen = paletteGlass + COLOUR_SATURATED_GREEN, + paletteGlassDarkGreen = paletteGlass + COLOUR_DARK_GREEN, + paletteGlassMossGreen = paletteGlass + COLOUR_MOSS_GREEN, + paletteGlassBrightGreen = paletteGlass + COLOUR_BRIGHT_GREEN, + paletteGlassOliveGreen = paletteGlass + COLOUR_OLIVE_GREEN, + paletteGlassDarkOliveGreen = paletteGlass + COLOUR_DARK_OLIVE_GREEN, + paletteGlassBrightYellow = paletteGlass + COLOUR_BRIGHT_YELLOW, + paletteGlassYellow = paletteGlass + COLOUR_YELLOW, + paletteGlassDarkYellow = paletteGlass + COLOUR_DARK_YELLOW, + paletteGlassLightOrange = paletteGlass + COLOUR_LIGHT_ORANGE, + paletteGlassDarkOrange = paletteGlass + COLOUR_DARK_ORANGE, + paletteGlassLightBrown = paletteGlass + COLOUR_LIGHT_BROWN, + paletteGlassSaturatedBrown = paletteGlass + COLOUR_SATURATED_BROWN, + paletteGlassDarkBrown = paletteGlass + COLOUR_DARK_BROWN, + paletteGlassSalmonPink = paletteGlass + COLOUR_SALMON_PINK, + paletteGlassBordeauxRed = paletteGlass + COLOUR_BORDEAUX_RED, + paletteGlassSaturatedRed = paletteGlass + COLOUR_SATURATED_RED, + paletteGlassBrightRed = paletteGlass + COLOUR_BRIGHT_RED, + paletteGlassDarkPink = paletteGlass + COLOUR_DARK_PINK, + paletteGlassBrightPink = paletteGlass + COLOUR_BRIGHT_PINK, + paletteGlassLightPink = paletteGlass + COLOUR_LIGHT_PINK, + paletteGlassDarkOliveDark = paletteGlass + COLOUR_DARK_OLIVE_DARK, + paletteGlassDarkOliveLight = paletteGlass + COLOUR_DARK_OLIVE_LIGHT, + paletteGlassSaturatedBrownLight = paletteGlass + COLOUR_SATURATED_BROWN_LIGHT, + paletteGlassBordeauxRedDark = paletteGlass + COLOUR_BORDEAUX_RED_DARK, + paletteGlassBordeauxRedLight = paletteGlass + COLOUR_BORDEAUX_RED_LIGHT, + paletteGlassGrassGreenDark = paletteGlass + COLOUR_GRASS_GREEN_DARK, + paletteGlassGrassGreenLight = paletteGlass + COLOUR_GRASS_GREEN_LIGHT, + paletteGlassOliveDark = paletteGlass + COLOUR_OLIVE_DARK, + paletteGlassOliveLight = paletteGlass + COLOUR_OLIVE_LIGHT, + paletteGlassSaturatedGreenLight = paletteGlass + COLOUR_SATURATED_GREEN_LIGHT, + paletteGlassTanDark = paletteGlass + COLOUR_TAN_DARK, + paletteGlassTanLight = paletteGlass + COLOUR_TAN_LIGHT, + paletteGlassDullPurpleLight = paletteGlass + COLOUR_DULL_PURPLE_LIGHT, + paletteGlassDullGreenDark = paletteGlass + COLOUR_DULL_GREEN_DARK, + paletteGlassDullGreenLight = paletteGlass + COLOUR_DULL_GREEN_LIGHT, + paletteGlassSaturatedPurpleDark = paletteGlass + COLOUR_SATURATED_PURPLE_DARK, + paletteGlassSaturatedPurpleLight = paletteGlass + COLOUR_SATURATED_PURPLE_LIGHT, + paletteGlassOrangeLight = paletteGlass + COLOUR_ORANGE_LIGHT, + paletteGlassAquaDark = paletteGlass + COLOUR_AQUA_DARK, + paletteGlassMagentaLight = paletteGlass + COLOUR_MAGENTA_LIGHT, + paletteGlassDullBrownDark = paletteGlass + COLOUR_DULL_BROWN_DARK, + paletteGlassDullBrownLight = paletteGlass + COLOUR_DULL_BROWN_LIGHT, + paletteGlassInvisible = paletteGlass + COLOUR_INVISIBLE, + paletteGlassVoid = paletteGlass + COLOUR_VOID, + }; +} diff --git a/src/openrct2/drawing/IDrawingEngine.h b/src/openrct2/drawing/IDrawingEngine.h index 94c7d6627043..7b673d2110f0 100644 --- a/src/openrct2/drawing/IDrawingEngine.h +++ b/src/openrct2/drawing/IDrawingEngine.h @@ -38,8 +38,6 @@ enum DrawingEngineFlag }; using DrawingEngineFlags = FlagHolder; -struct RenderTarget; - namespace OpenRCT2::Ui { struct IUiContext; @@ -48,6 +46,7 @@ namespace OpenRCT2::Ui namespace OpenRCT2::Drawing { struct IDrawingContext; + struct RenderTarget; struct IDrawingEngine { diff --git a/src/openrct2/drawing/ImageId.hpp b/src/openrct2/drawing/ImageId.hpp index bc24def9a864..203702ee53bd 100644 --- a/src/openrct2/drawing/ImageId.hpp +++ b/src/openrct2/drawing/ImageId.hpp @@ -16,7 +16,11 @@ #include using colour_t = uint8_t; -enum class FilterPaletteID : int32_t; + +namespace OpenRCT2::Drawing +{ + enum class FilterPaletteID : int32_t; +} enum class ImageCatalogue { @@ -28,7 +32,7 @@ enum class ImageCatalogue TEMPORARY, }; -FilterPaletteID GetGlassPaletteId(colour_t); +OpenRCT2::Drawing::FilterPaletteID GetGlassPaletteId(colour_t); /** * Represents a specific image from a catalogue such as G1, G2, CSG etc. with remap @@ -65,7 +69,7 @@ struct ImageId { } - constexpr ImageId(uint32_t index, FilterPaletteID palette) + constexpr ImageId(uint32_t index, OpenRCT2::Drawing::FilterPaletteID palette) : ImageId(ImageId(index).WithRemap(palette)) { } @@ -156,7 +160,7 @@ struct ImageId return result; } - [[nodiscard]] constexpr ImageId WithRemap(FilterPaletteID paletteId) const + [[nodiscard]] constexpr ImageId WithRemap(OpenRCT2::Drawing::FilterPaletteID paletteId) const { return WithRemap(static_cast(paletteId)); } @@ -216,7 +220,7 @@ struct ImageId return WithTransparency(GetGlassPaletteId(colour)); } - [[nodiscard]] ImageId WithTransparency(FilterPaletteID palette) const + [[nodiscard]] ImageId WithTransparency(OpenRCT2::Drawing::FilterPaletteID palette) const { ImageId result = *this; result._primary = static_cast(palette); diff --git a/src/openrct2/drawing/LightFX.h b/src/openrct2/drawing/LightFX.h index 8ce68a7bd1ca..364706bbc982 100644 --- a/src/openrct2/drawing/LightFX.h +++ b/src/openrct2/drawing/LightFX.h @@ -15,7 +15,6 @@ struct CoordsXY; struct Vehicle; -struct RenderTarget; struct CoordsXYZ; struct EntityBase; @@ -24,6 +23,11 @@ namespace OpenRCT2 struct Viewport; } +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + namespace OpenRCT2::Drawing::LightFx { enum class LightType : uint8_t diff --git a/src/openrct2/drawing/Line.cpp b/src/openrct2/drawing/Line.cpp index 07f3e3feb0ff..4f54f7fe109f 100644 --- a/src/openrct2/drawing/Line.cpp +++ b/src/openrct2/drawing/Line.cpp @@ -12,6 +12,8 @@ #include #include +using namespace OpenRCT2::Drawing; + /** * Draws a horizontal line of specified colour to a buffer. * rct2: 0x0068474C diff --git a/src/openrct2/drawing/NewDrawing.h b/src/openrct2/drawing/NewDrawing.h index 962041c51d74..1764366440df 100644 --- a/src/openrct2/drawing/NewDrawing.h +++ b/src/openrct2/drawing/NewDrawing.h @@ -12,7 +12,10 @@ #include "../localisation/StringIdType.h" #include "ColourPalette.h" -struct RenderTarget; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} enum class DrawingEngine : int32_t; @@ -24,7 +27,7 @@ void DrawingEngineSetPalette(const OpenRCT2::Drawing::GamePalette& colours); void DrawingEngineCopyRect(int32_t x, int32_t y, int32_t width, int32_t height, int32_t dx, int32_t dy); void DrawingEngineDispose(); -RenderTarget& DrawingEngineGetDpi(); +OpenRCT2::Drawing::RenderTarget& DrawingEngineGetDpi(); bool DrawingEngineHasDirtyOptimisations(); void DrawingEngineInvalidateImage(uint32_t image); void DrawingEngineSetVSync(bool vsync); diff --git a/src/openrct2/drawing/Rectangle.h b/src/openrct2/drawing/Rectangle.h index 170be7df2acd..2ac65519e9c2 100644 --- a/src/openrct2/drawing/Rectangle.h +++ b/src/openrct2/drawing/Rectangle.h @@ -11,8 +11,6 @@ #include -enum class FilterPaletteID : int32_t; -struct RenderTarget; struct ScreenRect; namespace OpenRCT2 @@ -20,6 +18,12 @@ namespace OpenRCT2 struct ColourWithFlags; } +namespace OpenRCT2::Drawing +{ + enum class FilterPaletteID : int32_t; + struct RenderTarget; +} // namespace OpenRCT2::Drawing + namespace OpenRCT2::Drawing::Rectangle { enum class BorderStyle : uint8_t diff --git a/src/openrct2/drawing/RenderTarget.cpp b/src/openrct2/drawing/RenderTarget.cpp new file mode 100644 index 000000000000..90a6b78deff9 --- /dev/null +++ b/src/openrct2/drawing/RenderTarget.cpp @@ -0,0 +1,30 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "RenderTarget.h" + +namespace OpenRCT2::Drawing +{ + uint8_t* RenderTarget::GetBitsOffset(const ScreenCoordsXY& pos) const + { + return bits + pos.x + pos.y * LineStride(); + } + + RenderTarget RenderTarget::Crop(const ScreenCoordsXY& pos, const ScreenSize& size) const + { + RenderTarget result = *this; + result.bits = GetBitsOffset(pos); + result.x = pos.x; + result.y = pos.y; + result.width = size.width; + result.height = size.height; + result.pitch = width + pitch - size.width; + return result; + } +} // namespace OpenRCT2::Drawing diff --git a/src/openrct2/drawing/RenderTarget.h b/src/openrct2/drawing/RenderTarget.h new file mode 100644 index 000000000000..72ddbc84b910 --- /dev/null +++ b/src/openrct2/drawing/RenderTarget.h @@ -0,0 +1,63 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../interface/ZoomLevel.h" +#include "../world/Location.hpp" + +namespace OpenRCT2::Drawing +{ + struct IDrawingEngine; + + struct RenderTarget + { + uint8_t* bits{}; + int32_t x{}; + int32_t y{}; + int32_t width{}; + int32_t height{}; + int32_t pitch{}; // note: this is actually (pitch - width) + int32_t cullingX{}; + int32_t cullingY{}; + int32_t cullingWidth{}; + int32_t cullingHeight{}; + ZoomLevel zoom_level{}; + + // Last position of drawn text. + ScreenCoordsXY lastStringPos{}; + + IDrawingEngine* DrawingEngine{}; + + uint8_t* GetBitsOffset(const ScreenCoordsXY& pos) const; + RenderTarget Crop(const ScreenCoordsXY& pos, const ScreenSize& size) const; + + [[nodiscard]] constexpr int32_t WorldX() const + { + return zoom_level.ApplyTo(x); + } + [[nodiscard]] constexpr int32_t WorldY() const + { + return zoom_level.ApplyTo(y); + } + [[nodiscard]] constexpr int32_t WorldWidth() const + { + return zoom_level.ApplyTo(width); + } + [[nodiscard]] constexpr int32_t WorldHeight() const + { + return zoom_level.ApplyTo(height); + } + + [[nodiscard]] constexpr int32_t LineStride() const + { + return width + pitch; + } + }; +} // namespace OpenRCT2::Drawing diff --git a/src/openrct2/drawing/Text.h b/src/openrct2/drawing/Text.h index 35f78423ce18..3c7c59edba45 100644 --- a/src/openrct2/drawing/Text.h +++ b/src/openrct2/drawing/Text.h @@ -15,7 +15,6 @@ #include "Font.h" struct ScreenCoordsXY; -struct RenderTarget; using OpenRCT2::ColourWithFlags; @@ -24,6 +23,11 @@ namespace OpenRCT2 class Formatter; } +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + enum class TextAlignment { left, @@ -206,17 +210,19 @@ struct TextPaint } }; -void DrawTextBasic(RenderTarget& rt, const ScreenCoordsXY& coords, StringId format); -void DrawTextEllipsised(RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format); -int32_t DrawTextWrapped(RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format); +void DrawTextBasic(OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, StringId format); +void DrawTextEllipsised(OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format); +int32_t DrawTextWrapped(OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format); void DrawText( - RenderTarget& rt, const ScreenCoordsXY& coords, const TextPaint& paint, const_utf8string text, bool noFormatting = false); + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, const TextPaint& paint, const_utf8string text, + bool noFormatting = false); void DrawTextBasic( - RenderTarget& rt, const ScreenCoordsXY& coords, StringId format, const OpenRCT2::Formatter& ft, TextPaint textPaint = {}); -void DrawTextEllipsised( - RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format, const OpenRCT2::Formatter& ft, + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, StringId format, const OpenRCT2::Formatter& ft, TextPaint textPaint = {}); +void DrawTextEllipsised( + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format, + const OpenRCT2::Formatter& ft, TextPaint textPaint = {}); int32_t DrawTextWrapped( - RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format, const OpenRCT2::Formatter& ft, - TextPaint textPaint = {}); + OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, int32_t width, StringId format, + const OpenRCT2::Formatter& ft, TextPaint textPaint = {}); diff --git a/src/openrct2/drawing/Weather.h b/src/openrct2/drawing/Weather.h index 260f154451e6..6e6feca85463 100644 --- a/src/openrct2/drawing/Weather.h +++ b/src/openrct2/drawing/Weather.h @@ -11,12 +11,11 @@ #include -struct RenderTarget; - namespace OpenRCT2::Drawing { struct IWeatherDrawer; -} + struct RenderTarget; +} // namespace OpenRCT2::Drawing // clang-format off static constexpr uint8_t kRainPattern[] = @@ -37,4 +36,4 @@ static constexpr uint8_t kSnowPattern[] = // clang-format on -void DrawWeather(RenderTarget& rt, OpenRCT2::Drawing::IWeatherDrawer* weatherDrawer); +void DrawWeather(OpenRCT2::Drawing::RenderTarget& rt, OpenRCT2::Drawing::IWeatherDrawer* weatherDrawer); diff --git a/src/openrct2/entity/Duck.cpp b/src/openrct2/entity/Duck.cpp index 3f94824339fd..ade802111996 100644 --- a/src/openrct2/entity/Duck.cpp +++ b/src/openrct2/entity/Duck.cpp @@ -377,7 +377,7 @@ void Duck::Paint(PaintSession& session, int32_t imageDirection) const { PROFILED_FUNCTION(); - RenderTarget& rt = session.DPI; + auto& rt = session.DPI; if (rt.zoom_level > ZoomLevel{ 1 }) return; diff --git a/src/openrct2/entity/Fountain.cpp b/src/openrct2/entity/Fountain.cpp index 020e298483f1..0d9e221b9c67 100644 --- a/src/openrct2/entity/Fountain.cpp +++ b/src/openrct2/entity/Fountain.cpp @@ -411,7 +411,7 @@ void JumpingFountain::Paint(PaintSession& session, int32_t imageDirection) const constexpr uint32_t kJumpingFountainSnowBaseImage = 23037; constexpr uint32_t kJumpingFountainWaterBaseImage = 22973; - RenderTarget& rt = session.DPI; + auto& rt = session.DPI; if (rt.zoom_level > ZoomLevel{ 0 }) { return; diff --git a/src/openrct2/entity/Litter.cpp b/src/openrct2/entity/Litter.cpp index 9eae8b4a0796..66e31cfb0365 100644 --- a/src/openrct2/entity/Litter.cpp +++ b/src/openrct2/entity/Litter.cpp @@ -184,7 +184,7 @@ void Litter::Paint(PaintSession& session, int32_t imageDirection) const { PROFILED_FUNCTION(); - RenderTarget& rt = session.DPI; + auto& rt = session.DPI; if (rt.zoom_level > ZoomLevel{ 0 }) return; // If zoomed at all no litter drawn diff --git a/src/openrct2/entity/MoneyEffect.cpp b/src/openrct2/entity/MoneyEffect.cpp index cac1ffb4d073..af16c466eaaf 100644 --- a/src/openrct2/entity/MoneyEffect.cpp +++ b/src/openrct2/entity/MoneyEffect.cpp @@ -198,7 +198,7 @@ void MoneyEffect::Paint(PaintSession& session, int32_t imageDirection) const return; } - RenderTarget& rt = session.DPI; + auto& rt = session.DPI; if (rt.zoom_level > ZoomLevel{ 0 }) { return; diff --git a/src/openrct2/entity/Particle.cpp b/src/openrct2/entity/Particle.cpp index 3ade9dd0c520..aeb549c9019d 100644 --- a/src/openrct2/entity/Particle.cpp +++ b/src/openrct2/entity/Particle.cpp @@ -176,7 +176,7 @@ void VehicleCrashParticle::Paint(PaintSession& session, int32_t imageDirection) { PROFILED_FUNCTION(); - RenderTarget& rt = session.DPI; + auto& rt = session.DPI; if (rt.zoom_level > ZoomLevel{ 0 }) { return; diff --git a/src/openrct2/interface/Chat.h b/src/openrct2/interface/Chat.h index f520e435c6dd..9d0d538ab24c 100644 --- a/src/openrct2/interface/Chat.h +++ b/src/openrct2/interface/Chat.h @@ -24,7 +24,6 @@ constexpr int16_t kChatInputSize = 1024; constexpr uint8_t kChatMaxMessageLength = 200; constexpr int16_t kChatMaxWindowWidth = 600; -struct RenderTarget; struct ScreenCoordsXY; enum class ChatInput : uint8_t @@ -36,6 +35,11 @@ enum class ChatInput : uint8_t extern bool gChatOpen; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + bool ChatAvailable(); void ChatOpen(); void ChatClose(); @@ -43,7 +47,7 @@ void ChatToggle(); void ChatInit(); void ChatUpdate(); -void ChatDraw(RenderTarget& rt, OpenRCT2::ColourWithFlags chatBackgroundColour); +void ChatDraw(OpenRCT2::Drawing::RenderTarget& rt, OpenRCT2::ColourWithFlags chatBackgroundColour); void ChatAddHistory(std::string_view s); void ChatInput(ChatInput input); diff --git a/src/openrct2/interface/InteractiveConsole.h b/src/openrct2/interface/InteractiveConsole.h index 842c5a07b18b..edfb315b7a19 100644 --- a/src/openrct2/interface/InteractiveConsole.h +++ b/src/openrct2/interface/InteractiveConsole.h @@ -13,8 +13,6 @@ #include #include -struct RenderTarget; - enum class ConsoleInput : uint8_t { None, @@ -32,6 +30,11 @@ namespace OpenRCT2 struct TextInputSession; } // namespace OpenRCT2 +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + class InteractiveConsole { private: diff --git a/src/openrct2/interface/Screenshot.h b/src/openrct2/interface/Screenshot.h index d4214dcef79f..2aa0a514cf55 100644 --- a/src/openrct2/interface/Screenshot.h +++ b/src/openrct2/interface/Screenshot.h @@ -17,8 +17,6 @@ #include #include -struct RenderTarget; - extern uint8_t gScreenshotCountdown; struct ScreenshotOptions @@ -53,9 +51,14 @@ struct CaptureOptions bool Transparent{}; }; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + void ScreenshotCheck(); std::string ScreenshotDump(); -std::string ScreenshotDumpPNG(RenderTarget& rt); +std::string ScreenshotDumpPNG(OpenRCT2::Drawing::RenderTarget& rt); void ScreenshotGiant(); int32_t CommandLineForScreenshot(const char** argv, int32_t argc, ScreenshotOptions* options); diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 4b0fce617f43..ca3e52cb7bb0 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -19,12 +19,16 @@ struct PaintSession; struct PaintStruct; -struct RenderTarget; struct EntityBase; struct Guest; struct Staff; struct PaintEntry; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + namespace OpenRCT2 { struct TileElement; @@ -196,7 +200,7 @@ namespace OpenRCT2 void ViewportUpdateSmartFollowGuest(WindowBase* window, const Guest& peep); void ViewportRotateSingle(WindowBase* window, int32_t direction); void ViewportRotateAll(int32_t direction); - void ViewportRender(RenderTarget& rt, const Viewport* viewport); + void ViewportRender(OpenRCT2::Drawing::RenderTarget& rt, const Viewport* viewport); CoordsXYZ ViewportAdjustForMapHeight(const ScreenCoordsXY& startCoords, uint8_t rotation); diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index 51c333da597d..ae6cd138979e 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -73,8 +73,10 @@ static constexpr float kWindowScrollLocations[][2] = { }; // clang-format on - static void WindowDrawCore(RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom); - static void WindowDrawSingle(RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom); + static void WindowDrawCore( + Drawing::RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom); + static void WindowDrawSingle( + Drawing::RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom); std::vector>::iterator WindowGetIterator(const WindowBase* w) { @@ -487,7 +489,7 @@ static constexpr float kWindowScrollLocations[][2] = { * Splits a drawing of a window into regions that can be seen and are not hidden * by other opaque overlapping windows. */ - void WindowDraw(RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom) + void WindowDraw(Drawing::RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom) { if (!w.isVisible) return; @@ -544,7 +546,8 @@ static constexpr float kWindowScrollLocations[][2] = { /** * Draws the given window and any other overlapping transparent windows. */ - static void WindowDrawCore(RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom) + static void WindowDrawCore( + Drawing::RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom) { // Clamp region left = std::max(left, w.windowPos.x); @@ -569,11 +572,13 @@ static constexpr float kWindowScrollLocations[][2] = { } } - static void WindowDrawSingle(RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom) + static void WindowDrawSingle( + Drawing::RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom) { assert(rt.zoom_level == ZoomLevel{ 0 }); + // Copy render target so we can crop it - RenderTarget copy = rt; + Drawing::RenderTarget copy = rt; // Clamp left to 0 int32_t overflow = left - copy.x; @@ -852,7 +857,7 @@ static constexpr float kWindowScrollLocations[][2] = { * right (dx) * bottom (bp) */ - void WindowDrawAll(RenderTarget& rt, int32_t left, int32_t top, int32_t right, int32_t bottom) + void WindowDrawAll(Drawing::RenderTarget& rt, int32_t left, int32_t top, int32_t right, int32_t bottom) { auto windowRT = rt.Crop({ left, top }, { right - left, bottom - top }); WindowVisitEach([&windowRT, left, top, right, bottom](WindowBase* w) { diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 0415158f67a7..e5dd911b499e 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -22,13 +22,17 @@ #include #include -struct RenderTarget; struct TrackDesignFileRef; struct ScenarioIndexEntry; enum class CursorID : uint8_t; enum class CloseWindowModifier : uint8_t; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + namespace OpenRCT2 { using WindowNumber = int16_t; @@ -308,8 +312,8 @@ namespace OpenRCT2 void WindowCheckAllValidZoom(); void WindowZoomSet(WindowBase& w, ZoomLevel zoomLevel, bool atCursor); - void WindowDrawAll(RenderTarget& rt, int32_t left, int32_t top, int32_t right, int32_t bottom); - void WindowDraw(RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom); + void WindowDrawAll(Drawing::RenderTarget& rt, int32_t left, int32_t top, int32_t right, int32_t bottom); + void WindowDraw(Drawing::RenderTarget& rt, WindowBase& w, int32_t left, int32_t top, int32_t right, int32_t bottom); bool isToolActive(WindowClass cls); bool isToolActive(WindowClass cls, WindowNumber number); diff --git a/src/openrct2/interface/WindowBase.h b/src/openrct2/interface/WindowBase.h index 40ca5aab6a18..ee1369b9e102 100644 --- a/src/openrct2/interface/WindowBase.h +++ b/src/openrct2/interface/WindowBase.h @@ -161,10 +161,10 @@ namespace OpenRCT2 virtual void onPrepareDraw() { } - virtual void onDraw(RenderTarget& rt) + virtual void onDraw(Drawing::RenderTarget& rt) { } - virtual void onDrawWidget(WidgetIndex widgetIndex, RenderTarget& rt) + virtual void onDrawWidget(WidgetIndex widgetIndex, Drawing::RenderTarget& rt) { } virtual OpenRCT2String onTooltip(WidgetIndex widgetIndex, StringId fallback) @@ -199,7 +199,7 @@ namespace OpenRCT2 virtual void onScrollMouseDown(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) { } - virtual void onScrollDraw(int32_t scrollIndex, RenderTarget& rt) + virtual void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) { } virtual void onToolUpdate(WidgetIndex widgetIndex, const ScreenCoordsXY& screenCoords) diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 2e2503d32c80..3abb613db5ff 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -245,6 +245,7 @@ + @@ -255,6 +256,7 @@ + @@ -836,6 +838,7 @@ + diff --git a/src/openrct2/object/BannerObject.cpp b/src/openrct2/object/BannerObject.cpp index 2b373461eb03..f310049a7de0 100644 --- a/src/openrct2/object/BannerObject.cpp +++ b/src/openrct2/object/BannerObject.cpp @@ -68,7 +68,7 @@ namespace OpenRCT2 _legacyType.image = 0; } - void BannerObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void BannerObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; diff --git a/src/openrct2/object/BannerObject.h b/src/openrct2/object/BannerObject.h index 96c110d3d7c6..621b5bbf0e9b 100644 --- a/src/openrct2/object/BannerObject.h +++ b/src/openrct2/object/BannerObject.h @@ -33,6 +33,6 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/ClimateObject.cpp b/src/openrct2/object/ClimateObject.cpp index 7e9ff423a5d5..6d4364b4d04d 100644 --- a/src/openrct2/object/ClimateObject.cpp +++ b/src/openrct2/object/ClimateObject.cpp @@ -52,7 +52,7 @@ namespace OpenRCT2 static RawClimate readWeatherTable(json_t& weather); static Climate convertRawClimate(const RawClimate& rawClimate); - void ClimateObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void ClimateObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { const auto dist = getYearlyDistribution(); const auto totalSize = kNumClimateMonths * kWeatherDistSize; diff --git a/src/openrct2/object/ClimateObject.h b/src/openrct2/object/ClimateObject.h index 3ca67858d6d3..1607bbc14c4a 100644 --- a/src/openrct2/object/ClimateObject.h +++ b/src/openrct2/object/ClimateObject.h @@ -31,7 +31,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; const TemperatureThresholds& getItemThresholds() const; const WeatherPattern& getPatternForMonth(uint8_t month) const; diff --git a/src/openrct2/object/EntranceObject.cpp b/src/openrct2/object/EntranceObject.cpp index cb7ad7c51b16..46ccb74a91d9 100644 --- a/src/openrct2/object/EntranceObject.cpp +++ b/src/openrct2/object/EntranceObject.cpp @@ -45,7 +45,7 @@ namespace OpenRCT2 _legacyType.image_id = 0; } - void EntranceObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void EntranceObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; GfxDrawSprite(rt, ImageId(_legacyType.image_id + 1), screenCoords + ScreenCoordsXY{ -32, 14 }); diff --git a/src/openrct2/object/EntranceObject.h b/src/openrct2/object/EntranceObject.h index c1cc6722dbbc..6203acb2f5ee 100644 --- a/src/openrct2/object/EntranceObject.h +++ b/src/openrct2/object/EntranceObject.h @@ -34,7 +34,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; ImageIndex GetImage(uint8_t sequence, Direction direction) const; uint8_t GetScrollingMode() const; diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index 4c52b16207a8..03deac49c8a6 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -70,7 +70,7 @@ namespace OpenRCT2 _legacyType.image = 0; } - void FootpathObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void FootpathObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; GfxDrawSprite(rt, ImageId(_pathSurfaceDescriptor.PreviewImage), screenCoords - ScreenCoordsXY{ 49, 17 }); diff --git a/src/openrct2/object/FootpathObject.h b/src/openrct2/object/FootpathObject.h index fbfa96402465..4f9298a12d76 100644 --- a/src/openrct2/object/FootpathObject.h +++ b/src/openrct2/object/FootpathObject.h @@ -56,6 +56,6 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index 9784fe917e4d..4e78a6d0011c 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -49,7 +49,7 @@ namespace OpenRCT2 RailingsImageId = 0; } - void FootpathRailingsObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void FootpathRailingsObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto x = width / 2; auto y = height / 2; diff --git a/src/openrct2/object/FootpathRailingsObject.h b/src/openrct2/object/FootpathRailingsObject.h index 46e960ee08b7..8a18064f0bc2 100644 --- a/src/openrct2/object/FootpathRailingsObject.h +++ b/src/openrct2/object/FootpathRailingsObject.h @@ -34,7 +34,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; const PathRailingsDescriptor& GetDescriptor() const { diff --git a/src/openrct2/object/FootpathSurfaceObject.cpp b/src/openrct2/object/FootpathSurfaceObject.cpp index 5348c585b85a..0e310d3a19be 100644 --- a/src/openrct2/object/FootpathSurfaceObject.cpp +++ b/src/openrct2/object/FootpathSurfaceObject.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2 BaseImageId = 0; } - void FootpathSurfaceObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void FootpathSurfaceObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2 - 16, height / 2 }; GfxDrawSprite(rt, ImageId(BaseImageId + 3), screenCoords); diff --git a/src/openrct2/object/FootpathSurfaceObject.h b/src/openrct2/object/FootpathSurfaceObject.h index 73089ae4f8d8..d3647019d3be 100644 --- a/src/openrct2/object/FootpathSurfaceObject.h +++ b/src/openrct2/object/FootpathSurfaceObject.h @@ -30,7 +30,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; void SetRepositoryItem(ObjectRepositoryItem* item) const override; diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp index 8d6ad1fb0693..bc34542074dd 100644 --- a/src/openrct2/object/LargeSceneryObject.cpp +++ b/src/openrct2/object/LargeSceneryObject.cpp @@ -143,7 +143,7 @@ namespace OpenRCT2 _baseImageId = _legacyType.image = 0; } - void LargeSceneryObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void LargeSceneryObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, (height / 2) - 39 }; diff --git a/src/openrct2/object/LargeSceneryObject.h b/src/openrct2/object/LargeSceneryObject.h index db3745fb027b..186382e4e284 100644 --- a/src/openrct2/object/LargeSceneryObject.h +++ b/src/openrct2/object/LargeSceneryObject.h @@ -38,7 +38,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; private: [[nodiscard]] static std::vector ReadTiles(OpenRCT2::IStream* stream); diff --git a/src/openrct2/object/MusicObject.cpp b/src/openrct2/object/MusicObject.cpp index 5d90c86cbf95..3555d54225fc 100644 --- a/src/openrct2/object/MusicObject.cpp +++ b/src/openrct2/object/MusicObject.cpp @@ -86,7 +86,7 @@ namespace OpenRCT2 NameStringId = 0; } - void MusicObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void MusicObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { // Write (no image) int32_t x = width / 2; diff --git a/src/openrct2/object/MusicObject.h b/src/openrct2/object/MusicObject.h index a9f28fea9b09..ae266cffb1ca 100644 --- a/src/openrct2/object/MusicObject.h +++ b/src/openrct2/object/MusicObject.h @@ -63,7 +63,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; bool HasPreview() const; std::optional GetOriginalStyleId() const; diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 9f4ca2da5570..81ea8d2b28e3 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -22,9 +22,13 @@ #include #include -struct RenderTarget; using ride_type_t = uint16_t; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} + namespace OpenRCT2 { struct ObjectRepositoryItem; @@ -292,7 +296,7 @@ namespace OpenRCT2 virtual void Load() = 0; virtual void Unload() = 0; - virtual void DrawPreview(RenderTarget& /*rt*/, int32_t /*width*/, int32_t /*height*/) const + virtual void DrawPreview(Drawing::RenderTarget& /*rt*/, int32_t /*width*/, int32_t /*height*/) const { } diff --git a/src/openrct2/object/ObjectRepository.h b/src/openrct2/object/ObjectRepository.h index a9b951f0cfd4..4feb8c157653 100644 --- a/src/openrct2/object/ObjectRepository.h +++ b/src/openrct2/object/ObjectRepository.h @@ -15,7 +15,6 @@ #include #include -struct RenderTarget; enum class RideCategory : uint8_t; namespace OpenRCT2::Localisation diff --git a/src/openrct2/object/PathAdditionObject.cpp b/src/openrct2/object/PathAdditionObject.cpp index 1403113e7f26..c86b0ffe0084 100644 --- a/src/openrct2/object/PathAdditionObject.cpp +++ b/src/openrct2/object/PathAdditionObject.cpp @@ -73,7 +73,7 @@ namespace OpenRCT2 _legacyType.image = 0; } - void PathAdditionObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void PathAdditionObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; GfxDrawSprite(rt, ImageId(_legacyType.image), screenCoords - ScreenCoordsXY{ 22, 24 }); diff --git a/src/openrct2/object/PathAdditionObject.h b/src/openrct2/object/PathAdditionObject.h index f2d57737b692..f96b19fd4be9 100644 --- a/src/openrct2/object/PathAdditionObject.h +++ b/src/openrct2/object/PathAdditionObject.h @@ -32,6 +32,6 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp index 4e25f3ea32bc..040d20892442 100644 --- a/src/openrct2/object/PeepAnimationsObject.cpp +++ b/src/openrct2/object/PeepAnimationsObject.cpp @@ -205,7 +205,7 @@ namespace OpenRCT2 return _animationGroups[EnumValue(animGroup)].isSlowWalking; } - void PeepAnimationsObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void PeepAnimationsObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto centre = ScreenCoordsXY{ width / 2, height / 2 }; diff --git a/src/openrct2/object/PeepAnimationsObject.h b/src/openrct2/object/PeepAnimationsObject.h index 0840e973f71d..6373d6f4d307 100644 --- a/src/openrct2/object/PeepAnimationsObject.h +++ b/src/openrct2/object/PeepAnimationsObject.h @@ -57,7 +57,7 @@ namespace OpenRCT2 return _noRandomPlacement; } - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; void SetRepositoryItem(ObjectRepositoryItem* item) const override; }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 5294198677bb..a0201d61573f 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -376,7 +376,8 @@ namespace OpenRCT2 _legacyType.images_offset = 0; } - void RideObject::DrawPreview(RenderTarget& rt, [[maybe_unused]] int32_t width, [[maybe_unused]] int32_t height) const + void RideObject::DrawPreview( + Drawing::RenderTarget& rt, [[maybe_unused]] int32_t width, [[maybe_unused]] int32_t height) const { uint32_t imageId = _legacyType.images_offset; diff --git a/src/openrct2/object/RideObject.h b/src/openrct2/object/RideObject.h index ea2833de289c..8b159a445c6f 100644 --- a/src/openrct2/object/RideObject.h +++ b/src/openrct2/object/RideObject.h @@ -47,7 +47,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; std::string GetDescription() const; std::string GetCapacity() const; diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index 399c4518960c..afd52871b8fc 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -70,7 +70,7 @@ namespace OpenRCT2 _legacyType.image = 0; } - void SceneryGroupObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void SceneryGroupObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; diff --git a/src/openrct2/object/SceneryGroupObject.h b/src/openrct2/object/SceneryGroupObject.h index b669f1d5601d..14cbd73330e5 100644 --- a/src/openrct2/object/SceneryGroupObject.h +++ b/src/openrct2/object/SceneryGroupObject.h @@ -38,7 +38,7 @@ namespace OpenRCT2 void Unload() override; void UpdateEntryIndexes(); - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; void SetRepositoryItem(ObjectRepositoryItem* item) const override; diff --git a/src/openrct2/object/SmallSceneryObject.cpp b/src/openrct2/object/SmallSceneryObject.cpp index d305547404ff..77d9ca50acf1 100644 --- a/src/openrct2/object/SmallSceneryObject.cpp +++ b/src/openrct2/object/SmallSceneryObject.cpp @@ -98,7 +98,7 @@ namespace OpenRCT2 _legacyType.image = 0; } - void SmallSceneryObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void SmallSceneryObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto imageId = ImageId(_legacyType.image); if (_legacyType.HasFlag(SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR)) diff --git a/src/openrct2/object/SmallSceneryObject.h b/src/openrct2/object/SmallSceneryObject.h index 6bb3325050df..b66a1fdd9961 100644 --- a/src/openrct2/object/SmallSceneryObject.h +++ b/src/openrct2/object/SmallSceneryObject.h @@ -36,7 +36,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; private: static std::vector ReadFrameOffsets(IStream* stream); diff --git a/src/openrct2/object/StationObject.cpp b/src/openrct2/object/StationObject.cpp index 7bfbb30f7156..3cace4d106ac 100644 --- a/src/openrct2/object/StationObject.cpp +++ b/src/openrct2/object/StationObject.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2 ShelterImageId = kImageIndexUndefined; } - void StationObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void StationObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, (height / 2) + 16 }; diff --git a/src/openrct2/object/StationObject.h b/src/openrct2/object/StationObject.h index e506f02a6897..ace3d0fa4237 100644 --- a/src/openrct2/object/StationObject.h +++ b/src/openrct2/object/StationObject.h @@ -39,6 +39,6 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/TerrainEdgeObject.cpp b/src/openrct2/object/TerrainEdgeObject.cpp index 05bb847fa71e..829969e2ab66 100644 --- a/src/openrct2/object/TerrainEdgeObject.cpp +++ b/src/openrct2/object/TerrainEdgeObject.cpp @@ -39,7 +39,7 @@ namespace OpenRCT2 BaseImageId = 0; } - void TerrainEdgeObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void TerrainEdgeObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; diff --git a/src/openrct2/object/TerrainEdgeObject.h b/src/openrct2/object/TerrainEdgeObject.h index 53768dc8cb4c..05b5681b2603 100644 --- a/src/openrct2/object/TerrainEdgeObject.h +++ b/src/openrct2/object/TerrainEdgeObject.h @@ -30,7 +30,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; static TerrainEdgeObject* GetById(ObjectEntryIndex entryIndex); }; diff --git a/src/openrct2/object/TerrainSurfaceObject.cpp b/src/openrct2/object/TerrainSurfaceObject.cpp index ed6b4beb0c8d..313b9972864f 100644 --- a/src/openrct2/object/TerrainSurfaceObject.cpp +++ b/src/openrct2/object/TerrainSurfaceObject.cpp @@ -49,7 +49,7 @@ namespace OpenRCT2 NumEntries = 0; } - void TerrainSurfaceObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void TerrainSurfaceObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto imageId = ImageId(GetImageId({}, 1, 0, 0, false, false)); if (Colour != kNoValue) diff --git a/src/openrct2/object/TerrainSurfaceObject.h b/src/openrct2/object/TerrainSurfaceObject.h index 9447706430f5..103613cdcf65 100644 --- a/src/openrct2/object/TerrainSurfaceObject.h +++ b/src/openrct2/object/TerrainSurfaceObject.h @@ -63,7 +63,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; ImageId GetImageId( const CoordsXY& position, uint8_t length, uint8_t rotation, uint8_t offset, bool grid, bool underground) const; diff --git a/src/openrct2/object/WallObject.cpp b/src/openrct2/object/WallObject.cpp index 2482b41a323f..00fb7046731f 100644 --- a/src/openrct2/object/WallObject.cpp +++ b/src/openrct2/object/WallObject.cpp @@ -70,7 +70,7 @@ namespace OpenRCT2 _legacyType.image = 0; } - void WallObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void WallObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; diff --git a/src/openrct2/object/WallObject.h b/src/openrct2/object/WallObject.h index 7dbb50f748b7..ad31cd996e81 100644 --- a/src/openrct2/object/WallObject.h +++ b/src/openrct2/object/WallObject.h @@ -32,6 +32,6 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index cd2cbcd4ee17..59c5acd97714 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -56,7 +56,7 @@ namespace OpenRCT2 _legacyType.palette_index_2 = 0; } - void WaterObject::DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const + void WaterObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { // Write (no image) auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; diff --git a/src/openrct2/object/WaterObject.h b/src/openrct2/object/WaterObject.h index e2e4feb8e067..86e15d8751cf 100644 --- a/src/openrct2/object/WaterObject.h +++ b/src/openrct2/object/WaterObject.h @@ -32,7 +32,7 @@ namespace OpenRCT2 void Load() override; void Unload() override; - void DrawPreview(RenderTarget& rt, int32_t width, int32_t height) const override; + void DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const override; private: void ReadJsonPalette(json_t& jPalette); diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index 7301610af1df..b48c872911aa 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -19,6 +19,7 @@ #include "../localisation/Currency.h" #include "../localisation/Formatting.h" #include "../localisation/LocalisationService.h" +#include "../localisation/StringIdType.h" #include "../paint/Painter.h" #include "../platform/Memory.h" #include "../profiling/Profiling.h" @@ -31,6 +32,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Numerics; // Globals for paint clipping diff --git a/src/openrct2/paint/Paint.h b/src/openrct2/paint/Paint.h index 0b4756b731b7..f05fb73f4c09 100644 --- a/src/openrct2/paint/Paint.h +++ b/src/openrct2/paint/Paint.h @@ -10,8 +10,11 @@ #pragma once #include "../core/Money.hpp" -#include "../drawing/Drawing.h" +#include "../drawing/FilterPaletteIds.h" +#include "../drawing/ImageId.hpp" +#include "../drawing/RenderTarget.h" #include "../interface/Colour.h" +#include "../localisation/StringIdType.h" #include "../world/Location.hpp" #include "../world/MapLimits.h" #include "Boundbox.h" @@ -193,7 +196,7 @@ struct PaintNodeStorage struct PaintSession : public PaintSessionCore { - RenderTarget DPI; + OpenRCT2::Drawing::RenderTarget DPI; PaintNodeStorage paintEntries; PaintStruct* AllocateNormalPaintEntry() noexcept @@ -249,8 +252,8 @@ extern CoordsXY gClipSelectionA; extern CoordsXY gClipSelectionB; /** rct2: 0x00993CC4. The white ghost that indicates not-yet-built elements. */ -constexpr ImageId ConstructionMarker = ImageId(0).WithRemap(FilterPaletteID::paletteGhost); -constexpr ImageId HighlightMarker = ImageId(0).WithRemap(FilterPaletteID::paletteGhost); +constexpr ImageId ConstructionMarker = ImageId(0).WithRemap(OpenRCT2::Drawing::FilterPaletteID::paletteGhost); +constexpr ImageId HighlightMarker = ImageId(0).WithRemap(OpenRCT2::Drawing::FilterPaletteID::paletteGhost); constexpr ImageId TrackStationColour = ImageId(0, COLOUR_BLACK); constexpr ImageId ShopSupportColour = ImageId(0, COLOUR_DARK_BROWN); @@ -309,9 +312,9 @@ void PaintFloatingMoneyEffect( PaintSession& session, money64 amount, StringId string_id, int32_t y, int32_t z, int8_t y_offsets[], int32_t offset_x, uint32_t rotation); -PaintSession* PaintSessionAlloc(RenderTarget& rt, uint32_t viewFlags, uint8_t rotation); +PaintSession* PaintSessionAlloc(OpenRCT2::Drawing::RenderTarget& rt, uint32_t viewFlags, uint8_t rotation); void PaintSessionFree(PaintSession* session); void PaintSessionGenerate(PaintSession& session); void PaintSessionArrange(PaintSessionCore& session); void PaintDrawStructs(PaintSession& session); -void PaintDrawMoneyStructs(RenderTarget& rt, PaintStringStruct* ps); +void PaintDrawMoneyStructs(OpenRCT2::Drawing::RenderTarget& rt, PaintStringStruct* ps); diff --git a/src/openrct2/paint/PaintHelpers.cpp b/src/openrct2/paint/PaintHelpers.cpp index cdb929c9c0fd..2f4fab1190e6 100644 --- a/src/openrct2/paint/PaintHelpers.cpp +++ b/src/openrct2/paint/PaintHelpers.cpp @@ -7,6 +7,7 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ +#include "../drawing/Drawing.h" #include "../interface/Viewport.h" #include "../ride/TrackPaint.h" #include "Paint.h" diff --git a/src/openrct2/paint/Painter.h b/src/openrct2/paint/Painter.h index 8721c91996f4..b3d15e30f1d1 100644 --- a/src/openrct2/paint/Painter.h +++ b/src/openrct2/paint/Painter.h @@ -16,13 +16,12 @@ #include #include -struct RenderTarget; - namespace OpenRCT2 { namespace Drawing { struct IDrawingEngine; + struct RenderTarget; } // namespace Drawing namespace Ui @@ -46,13 +45,13 @@ namespace OpenRCT2 explicit Painter(Ui::IUiContext& uiContext); void Paint(Drawing::IDrawingEngine& de); - PaintSession* CreateSession(RenderTarget& rt, uint32_t viewFlags, uint8_t rotation); + PaintSession* CreateSession(Drawing::RenderTarget& rt, uint32_t viewFlags, uint8_t rotation); void ReleaseSession(PaintSession* session); ~Painter(); private: - void PaintReplayNotice(RenderTarget& rt, const char* text); - void PaintFPS(RenderTarget& rt); + void PaintReplayNotice(Drawing::RenderTarget& rt, const char* text); + void PaintFPS(Drawing::RenderTarget& rt); void MeasureFPS(); }; } // namespace Paint diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index d26934970ded..d25477478df6 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -30,6 +30,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; static constexpr uint16_t kVirtualFloorBaseSize = 5 * kCoordsXYStep; static constexpr CoordsXY kVirtualFloorBaseSizeXY = { kVirtualFloorBaseSize, kVirtualFloorBaseSize }; diff --git a/src/openrct2/paint/support/MetalSupports.cpp b/src/openrct2/paint/support/MetalSupports.cpp index ae3a77daf103..b1dc668b11d6 100644 --- a/src/openrct2/paint/support/MetalSupports.cpp +++ b/src/openrct2/paint/support/MetalSupports.cpp @@ -18,6 +18,7 @@ #include "../Paint.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Numerics; constexpr auto kMetalSupportSkip = 9 * 4 * 2; diff --git a/src/openrct2/paint/support/WoodenSupports.cpp b/src/openrct2/paint/support/WoodenSupports.cpp index 41e99b950691..fa6c09672af9 100644 --- a/src/openrct2/paint/support/WoodenSupports.cpp +++ b/src/openrct2/paint/support/WoodenSupports.cpp @@ -20,6 +20,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Numerics; constexpr auto kNumWoodenSupportTypes = 2; diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index 741d69d23b1c..8b77f6741bfb 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -27,6 +27,7 @@ #include "Paint.TileElement.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; // kBannerBoundBoxes[rotation][0] is for the pole in the back // kBannerBoundBoxes[rotation][1] is for the pole and the banner in the front diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index 9973ffcdd90f..a920063aa112 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -33,6 +33,7 @@ #include "Segment.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Numerics; // clang-format off diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 945996c1c5dd..f053c2cdcfb3 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -47,6 +47,7 @@ #include "Segment.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; bool gPaintWidePathsAsGhost = false; diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.h b/src/openrct2/paint/tile_element/Paint.PathAddition.h index 6319a3ba3eb1..195e022fe934 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.h +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.h @@ -10,6 +10,7 @@ #pragma once #include "../../drawing/ImageId.hpp" +#include "../../localisation/StringIdType.h" #include "../Paint.h" #include diff --git a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp index fab527f1a180..e14b86493247 100644 --- a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp @@ -24,6 +24,7 @@ #include "Segment.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Numerics; static constexpr CoordsXY kLengths[] = { diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index c5edeb085cca..8f0b38d7c509 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -15,7 +15,6 @@ #include "../../SpriteIds.h" #include "../../config/Config.h" #include "../../core/Numerics.hpp" -#include "../../drawing/Drawing.h" #include "../../entity/EntityRegistry.h" #include "../../entity/PatrolArea.h" #include "../../entity/Peep.h" @@ -42,6 +41,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; // Needed to make the sign appear above footpaths. static constexpr int16_t ForSaleSignZOffset = 3; diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index 46f699116dff..aed518f01485 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -14,7 +14,6 @@ #include "../../SpriteIds.h" #include "../../config/Config.h" #include "../../core/Numerics.hpp" -#include "../../drawing/Drawing.h" #include "../../interface/Viewport.h" #include "../../profiling/Profiling.h" #include "../../ride/RideData.h" @@ -36,6 +35,7 @@ #include "Segment.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; static void BlankTilesPaint(PaintSession& session, int32_t x, int32_t y); static void PaintTileElementBase(PaintSession& session, const CoordsXY& origCoords); diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index ae9cf396b6f6..2c7d927bd11b 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -12,7 +12,6 @@ #include "../../Game.h" #include "../../GameState.h" #include "../../config/Config.h" -#include "../../drawing/Drawing.h" #include "../../interface/Colour.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatting.h" @@ -28,6 +27,7 @@ #include "Paint.TileElement.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; static constexpr uint8_t DirectionToDoorImageOffset0[] = { 2, 2, 22, 26, 30, 34, 34, 34, 34, 34, 30, 26, 22, 2, 6, 2, 2, 2, 6, 10, 14, 18, 18, 18, 18, 18, 14, 10, 6, 2, 22, 2, diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp index ae0a5eb0242d..15d890dab389 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp @@ -27,6 +27,7 @@ #include "../../track/Support.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; // static constexpr TunnelGroup kTunnelGroup = TunnelGroup::Square; diff --git a/src/openrct2/paint/track/gentle/Dodgems.cpp b/src/openrct2/paint/track/gentle/Dodgems.cpp index 13e7ce136198..ca5e1ba7115c 100644 --- a/src/openrct2/paint/track/gentle/Dodgems.cpp +++ b/src/openrct2/paint/track/gentle/Dodgems.cpp @@ -18,6 +18,7 @@ #include "../../track/Segment.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; enum { diff --git a/src/openrct2/paint/track/transport/MiniatureRailway.cpp b/src/openrct2/paint/track/transport/MiniatureRailway.cpp index e3517fa88246..15a6cb6cc07f 100644 --- a/src/openrct2/paint/track/transport/MiniatureRailway.cpp +++ b/src/openrct2/paint/track/transport/MiniatureRailway.cpp @@ -22,6 +22,7 @@ #include "../../track/Support.h" using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; static constexpr TunnelGroup kTunnelGroup = TunnelGroup::Square; diff --git a/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp b/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp index ee4e07e33353..8046a52ed521 100644 --- a/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp @@ -62,8 +62,8 @@ namespace OpenRCT2 auto imageId1 = ImageId(baseImageId + 1, vehicle->colours.Body, vehicle->colours.Trim, vehicle->colours.Tertiary); if (vehicle->IsGhost()) { - imageId0 = ImageId(baseImageId + 0).WithRemap(FilterPaletteID::paletteGhost); - imageId1 = ImageId(baseImageId + 1).WithRemap(FilterPaletteID::paletteGhost); + imageId0 = ImageId(baseImageId + 0).WithRemap(Drawing::FilterPaletteID::paletteGhost); + imageId1 = ImageId(baseImageId + 1).WithRemap(Drawing::FilterPaletteID::paletteGhost); } PaintAddImageAsParent(session, imageId0, { 0, 0, z }, { { -11, -11, z + 1 }, { 2, 2, 41 } }); diff --git a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp index 483a07862543..ec94b6fae8e9 100644 --- a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp @@ -51,8 +51,8 @@ namespace OpenRCT2 auto imageId1 = ImageId(baseImageId + 1, vehicle->colours.Body, vehicle->colours.Trim, vehicle->colours.Tertiary); if (vehicle->IsGhost()) { - imageId0 = ImageId(baseImageId + 0).WithRemap(FilterPaletteID::paletteGhost); - imageId1 = ImageId(baseImageId + 1).WithRemap(FilterPaletteID::paletteGhost); + imageId0 = ImageId(baseImageId + 0).WithRemap(Drawing::FilterPaletteID::paletteGhost); + imageId1 = ImageId(baseImageId + 1).WithRemap(Drawing::FilterPaletteID::paletteGhost); } const auto& bb = VehicleBoundboxes[carEntry->draw_order][OpenRCT2::Entity::Yaw::YawTo16(imageDirection)]; diff --git a/src/openrct2/paint/vehicle/VehiclePaint.cpp b/src/openrct2/paint/vehicle/VehiclePaint.cpp index c16d1428121b..4f9ad45d48c9 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.cpp +++ b/src/openrct2/paint/vehicle/VehiclePaint.cpp @@ -27,6 +27,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Entity::Yaw; #pragma region VehicleBoundboxes diff --git a/src/openrct2/park/ParkPreview.cpp b/src/openrct2/park/ParkPreview.cpp index cd7cbf6f6a67..43c7810092ed 100644 --- a/src/openrct2/park/ParkPreview.cpp +++ b/src/openrct2/park/ParkPreview.cpp @@ -228,7 +228,7 @@ namespace OpenRCT2 drawingEngine->BeginDraw(); - RenderTarget rt{ + Drawing::RenderTarget rt{ .bits = static_cast(image.pixels), .x = 0, .y = 0, @@ -246,7 +246,7 @@ namespace OpenRCT2 return image; } - void drawPreviewImage(const PreviewImage& image, RenderTarget& rt, ScreenCoordsXY screenPos) + void drawPreviewImage(const PreviewImage& image, Drawing::RenderTarget& rt, ScreenCoordsXY screenPos) { G1Element g1temp = {}; g1temp.offset = const_cast(image.pixels); diff --git a/src/openrct2/park/ParkPreview.h b/src/openrct2/park/ParkPreview.h index d53a3fecadba..90b6a6d1738d 100644 --- a/src/openrct2/park/ParkPreview.h +++ b/src/openrct2/park/ParkPreview.h @@ -16,7 +16,10 @@ #include #include -struct RenderTarget; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} namespace OpenRCT2 { @@ -54,5 +57,5 @@ namespace OpenRCT2 struct GameState_t; ParkPreview generatePreviewFromGameState(const GameState_t& gameState); - void drawPreviewImage(const PreviewImage& image, RenderTarget& rt, ScreenCoordsXY screenPos); + void drawPreviewImage(const PreviewImage& image, Drawing::RenderTarget& rt, ScreenCoordsXY screenPos); } // namespace OpenRCT2 diff --git a/src/openrct2/peep/PeepAnimations.cpp b/src/openrct2/peep/PeepAnimations.cpp index dad585118302..ba016cc6fd80 100644 --- a/src/openrct2/peep/PeepAnimations.cpp +++ b/src/openrct2/peep/PeepAnimations.cpp @@ -289,7 +289,7 @@ namespace OpenRCT2 uint8_t bitmap[kHeight][kWidth] = { 0 }; - RenderTarget rt = { + Drawing::RenderTarget rt = { .bits = reinterpret_cast(bitmap), .x = -(kWidth / 2), .y = -(kHeight / 2), diff --git a/src/openrct2/ride/CarEntry.cpp b/src/openrct2/ride/CarEntry.cpp index 028978beb857..33736379ffd5 100644 --- a/src/openrct2/ride/CarEntry.cpp +++ b/src/openrct2/ride/CarEntry.cpp @@ -53,7 +53,7 @@ void CarEntrySetImageMaxSizes(CarEntry& carEntry, int32_t numImages) uint8_t bitmap[kHeight][kWidth] = { 0 }; - RenderTarget rt = { + OpenRCT2::Drawing::RenderTarget rt = { .bits = reinterpret_cast(bitmap), .x = -(kWidth / 2), .y = -(kHeight / 2), diff --git a/src/openrct2/scenes/intro/IntroScene.h b/src/openrct2/scenes/intro/IntroScene.h index 73fcffe0aaca..fc8d72a3ba99 100644 --- a/src/openrct2/scenes/intro/IntroScene.h +++ b/src/openrct2/scenes/intro/IntroScene.h @@ -13,7 +13,10 @@ #include -struct RenderTarget; +namespace OpenRCT2::Drawing +{ + struct RenderTarget; +} namespace OpenRCT2 { @@ -43,5 +46,5 @@ namespace OpenRCT2 bool IntroIsPlaying(); void IntroUpdate(); - void IntroDraw(RenderTarget& rt); + void IntroDraw(Drawing::RenderTarget& rt); } // namespace OpenRCT2 diff --git a/src/openrct2/ui/UiContext.h b/src/openrct2/ui/UiContext.h index 3dfe29b190f0..f42280963571 100644 --- a/src/openrct2/ui/UiContext.h +++ b/src/openrct2/ui/UiContext.h @@ -18,7 +18,6 @@ #include struct ScreenCoordsXY; -struct RenderTarget; struct ITitleSequencePlayer; namespace OpenRCT2 @@ -27,9 +26,9 @@ namespace OpenRCT2 { struct IDrawingEngineFactory; struct IWeatherDrawer; + struct RenderTarget; using DrawWeatherFunc = void (*)( - RenderTarget& rt, OpenRCT2::Drawing::IWeatherDrawer* weatherDrawer, int32_t left, int32_t top, int32_t width, - int32_t height); + RenderTarget& rt, IWeatherDrawer* weatherDrawer, int32_t left, int32_t top, int32_t width, int32_t height); } // namespace Drawing namespace Ui @@ -106,7 +105,7 @@ namespace OpenRCT2 virtual void InitialiseScriptExtensions() = 0; virtual void Tick() = 0; - virtual void Draw(RenderTarget& rt) = 0; + virtual void Draw(Drawing::RenderTarget& rt) = 0; // Window virtual void CreateWindow() = 0; @@ -156,7 +155,7 @@ namespace OpenRCT2 // Drawing [[nodiscard]] virtual std::shared_ptr GetDrawingEngineFactory() = 0; virtual void DrawWeatherAnimation( - OpenRCT2::Drawing::IWeatherDrawer* weatherDrawer, RenderTarget& rt, OpenRCT2::Drawing::DrawWeatherFunc drawFunc) + Drawing::IWeatherDrawer* weatherDrawer, Drawing::RenderTarget& rt, Drawing::DrawWeatherFunc drawFunc) = 0; // Text input diff --git a/src/openrct2/world/Climate.cpp b/src/openrct2/world/Climate.cpp index 11ed1c07cd2f..41102741252c 100644 --- a/src/openrct2/world/Climate.cpp +++ b/src/openrct2/world/Climate.cpp @@ -30,6 +30,7 @@ #include using namespace OpenRCT2; +using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Audio; struct WeatherTrait diff --git a/src/openrct2/world/Climate.h b/src/openrct2/world/Climate.h index 7b93fa5dc6dc..013676b7b861 100644 --- a/src/openrct2/world/Climate.h +++ b/src/openrct2/world/Climate.h @@ -85,7 +85,10 @@ void ClimateUpdateSound(); void ClimateStopWeatherSound(); void ClimateForceWeather(WeatherType weather); -enum class FilterPaletteID : int32_t; +namespace OpenRCT2::Drawing +{ + enum class FilterPaletteID : int32_t; +} bool ClimateIsRaining(); bool ClimateTransitioningToSnow(); @@ -94,5 +97,5 @@ bool ClimateIsSnowingHeavily(); bool ClimateIsPrecipitating(); bool WeatherIsDry(WeatherType); bool ClimateHasWeatherEffect(); -FilterPaletteID ClimateGetWeatherGloomPaletteId(const WeatherState& state); +OpenRCT2::Drawing::FilterPaletteID ClimateGetWeatherGloomPaletteId(const WeatherState& state); uint32_t ClimateGetWeatherSpriteId(const WeatherType weatherType); From f4c43f5a3951fd0e15c5e96718076301c03c922f Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Fri, 26 Dec 2025 20:32:18 +0100 Subject: [PATCH 162/222] Fix #25187: On-ride photo platform does not render as ghost when placing track design (#25680) --- distribution/changelog.txt | 1 + .../paint/track/coaster/HybridCoaster.cpp | 3 +-- .../track/coaster/JuniorRollerCoaster.cpp | 5 ++--- .../paint/track/coaster/MiniRollerCoaster.cpp | 3 +-- .../coaster/MultiDimensionRollerCoaster.cpp | 9 +-------- .../paint/track/water/SplashBoats.cpp | 20 +------------------ src/openrct2/ride/TrackPaint.cpp | 10 +++++++++- src/openrct2/ride/TrackPaint.h | 1 + 8 files changed, 17 insertions(+), 35 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 52447bd4ba19..85cfd80c9e30 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -15,6 +15,7 @@ - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. +- Fix: [#25187] On-ride photo platform does not render as ghost when placing track design. - Fix: [#25229] Excessive logging of game actions, reduced to top-level game actions and filters ghost related ones. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. - Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. diff --git a/src/openrct2/paint/track/coaster/HybridCoaster.cpp b/src/openrct2/paint/track/coaster/HybridCoaster.cpp index e77d8c816c5a..9139ffed94f6 100644 --- a/src/openrct2/paint/track/coaster/HybridCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HybridCoaster.cpp @@ -11105,8 +11105,7 @@ namespace OpenRCT2::HybridRC PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); + TrackPaintUtilOnridePhotoPlatformPaintBase(session, height); PaintAddImageAsParentRotated( session, direction, GetTrackColour(session).WithIndex(SPR_TRACKS_HYBRID_TRACK_FLAT + (direction & 1)), { 0, 0, height }, { { 0, 6, height + 3 }, { 32, 20, 0 } }); diff --git a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp index 4674e9edd989..569f8087e021 100644 --- a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp @@ -5756,11 +5756,10 @@ static void JuniorRCTrackOnRidePhoto( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - auto imageId = session.TrackColours.WithIndex(junior_rc_track_pieces_flat[0][direction]); - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); + TrackPaintUtilOnridePhotoPlatformPaintBase(session, height); DrawSupportsSideBySide(session, direction, height, session.SupportColours, supportType.metal, 6); + auto imageId = session.TrackColours.WithIndex(junior_rc_track_pieces_flat[0][direction]); PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 6, height + 3 }, { 32, 20, 1 } }); TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); diff --git a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp index 8f4f55d51f02..ff994635b162 100644 --- a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp @@ -4267,8 +4267,7 @@ static void MiniRCTrackOnRidePhoto( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); + TrackPaintUtilOnridePhotoPlatformPaintBase(session, height); DrawSupportsSideBySide(session, direction, height, session.SupportColours, supportType.metal, 6); switch (direction) diff --git a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp index 382fb802d296..8f9acd46fcfb 100644 --- a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp @@ -5356,11 +5356,10 @@ static void MultiDimensionRCTrackOnRidePhoto( } else { + TrackPaintUtilOnridePhotoPlatformPaintBase(session, height); switch (direction) { case 0: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); MetalASupportsPaintSetup( session, supportType.metal, MetalSupportPlace::topLeftSide, 0, height, session.SupportColours); MetalASupportsPaintSetup( @@ -5370,8 +5369,6 @@ static void MultiDimensionRCTrackOnRidePhoto( { { 0, 6, height + 24 }, { 32, 20, 3 } }); break; case 1: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); MetalASupportsPaintSetup( session, supportType.metal, MetalSupportPlace::topRightSide, 0, height, session.SupportColours); MetalASupportsPaintSetup( @@ -5381,8 +5378,6 @@ static void MultiDimensionRCTrackOnRidePhoto( { { 0, 6, height + 24 }, { 32, 20, 3 } }); break; case 2: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); MetalASupportsPaintSetup( session, supportType.metal, MetalSupportPlace::topLeftSide, 0, height, session.SupportColours); MetalASupportsPaintSetup( @@ -5392,8 +5387,6 @@ static void MultiDimensionRCTrackOnRidePhoto( { { 0, 6, height + 24 }, { 32, 20, 3 } }); break; case 3: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); MetalASupportsPaintSetup( session, supportType.metal, MetalSupportPlace::topRightSide, 0, height, session.SupportColours); MetalASupportsPaintSetup( diff --git a/src/openrct2/paint/track/water/SplashBoats.cpp b/src/openrct2/paint/track/water/SplashBoats.cpp index ca8b84d44ee3..3217de4eb8ec 100644 --- a/src/openrct2/paint/track/water/SplashBoats.cpp +++ b/src/openrct2/paint/track/water/SplashBoats.cpp @@ -1181,25 +1181,7 @@ static void PaintSplashBoatsTrackOnRidePhoto( PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, const TrackElement& trackElement, SupportType supportType) { - switch (direction) - { - case 0: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 0, 1 }); - break; - case 1: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 0, 1 }); - break; - case 2: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 0, 1 }); - break; - case 3: - PaintAddImageAsParentRotated( - session, direction, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 0, 1 }); - break; - } + TrackPaintUtilOnridePhotoPlatformPaintBase(session, height); PaintSplashBoatsTrackFlat(session, ride, trackSequence, direction, height, trackElement, supportType); diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index 1679c1193a54..5d8c4131a0d7 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -1793,10 +1793,18 @@ void TrackPaintUtilSpinningTunnelPaint(PaintSession& session, int8_t thickness, } } +void TrackPaintUtilOnridePhotoPlatformPaintBase(PaintSession& session, int32_t height) +{ + auto image = ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK); + if (session.TrackColours == ConstructionMarker) + image = session.TrackColours.WithIndex(SPR_STATION_BASE_BORDERLESS); + PaintAddImageAsParent(session, image, { 0, 0, height }, { 32, 32, 1 }); +} + void TrackPaintUtilOnridePhotoPlatformPaint( PaintSession& session, Direction direction, int32_t height, MetalSupportType supportType) { - PaintAddImageAsParent(session, ImageId(SPR_STATION_BASE_BORDERLESS, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 }); + TrackPaintUtilOnridePhotoPlatformPaintBase(session, height); DrawSupportsSideBySide(session, direction, height, session.SupportColours, supportType); } diff --git a/src/openrct2/ride/TrackPaint.h b/src/openrct2/ride/TrackPaint.h index 50bcf26b945a..2cfcf6bbfd9a 100644 --- a/src/openrct2/ride/TrackPaint.h +++ b/src/openrct2/ride/TrackPaint.h @@ -499,6 +499,7 @@ void TrackPaintUtilLeftQuarterTurn1TilePaint( const ImageId colourFlags, const uint32_t* sprites); void TrackPaintUtilSpinningTunnelPaint(PaintSession& session, int8_t thickness, int16_t height, Direction direction); +void TrackPaintUtilOnridePhotoPlatformPaintBase(PaintSession& session, int32_t height); /** * Renders the black metal platform and the supports of the on-ride photo section. * From 8ce8eec426d22936040fb58dcd853b78bfd4feb4 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sat, 27 Dec 2025 13:29:49 +0000 Subject: [PATCH 163/222] Fix #11617: Zero clearance ghost track design paths break connections (#25685) --- distribution/changelog.txt | 1 + src/openrct2/network/NetworkBase.cpp | 2 +- src/openrct2/world/Footpath.cpp | 56 ---------------------------- 3 files changed, 2 insertions(+), 57 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 85cfd80c9e30..312398c5c0c8 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -13,6 +13,7 @@ - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Change: [#25544] The default game window size is now 1280×720px instead of 640×480px. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. +- Fix: [#11617] Path corner connections are broken when hovering track design ghosts with paths over them in zero clearances. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25187] On-ride photo platform does not render as ghost when placing track design. diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index fea97e716c82..7c0157908a8f 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 5; +constexpr uint8_t kStreamVersion = 6; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index e897bc6d3bb4..f6e65dd27c56 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -1722,49 +1722,6 @@ bool TileElementWantsPathConnectionTowards(const TileCoordsXYZD& coords, const T return false; } -// fix up the corners around the given path element that gets removed -static void FootpathFixCornersAround(const TileCoordsXY& footpathPos, TileElement* pathElement) -{ - // A mask for the paths' corners of each possible neighbour - static constexpr uint8_t cornersTouchingTile[3][3] = { - { 0b0010, 0b0011, 0b0001 }, - { 0b0110, 0b0000, 0b1001 }, - { 0b0100, 0b1100, 0b1000 }, - }; - - // Sloped paths don't create filled corners, so no need to remove any - if (pathElement->GetType() == TileElementType::Path && pathElement->AsPath()->IsSloped()) - return; - - for (int32_t xOffset = -1; xOffset <= 1; xOffset++) - { - for (int32_t yOffset = -1; yOffset <= 1; yOffset++) - { - // Skip self - if (xOffset == 0 && yOffset == 0) - continue; - - TileElement* tileElement = MapGetFirstElementAt( - TileCoordsXY{ footpathPos.x + xOffset, footpathPos.y + yOffset }.ToCoordsXY()); - if (tileElement == nullptr) - continue; - do - { - if (tileElement->GetType() != TileElementType::Path) - continue; - if (tileElement->AsPath()->IsSloped()) - continue; - if (tileElement->BaseHeight != pathElement->BaseHeight) - continue; - - const int32_t ix = xOffset + 1; - const int32_t iy = yOffset + 1; - tileElement->AsPath()->SetCorners(tileElement->AsPath()->GetCorners() & ~(cornersTouchingTile[iy][ix])); - } while (!(tileElement++)->IsLastForTile()); - } - } -} - /** * * rct2: 0x006A6AA7 @@ -1786,7 +1743,6 @@ void FootpathRemoveEdgesAt(const CoordsXY& footpathPos, TileElement* tileElement FootpathUpdateQueueEntranceBanner(footpathPos, tileElement); - bool fixCorners = false; for (uint8_t direction = 0; direction < kNumOrthogonalDirections; direction++) { int32_t z1 = tileElement->BaseHeight; @@ -1814,18 +1770,6 @@ void FootpathRemoveEdgesAt(const CoordsXY& footpathPos, TileElement* tileElement FootpathRemoveEdgesTowards( { footpathPos + CoordsDirectionDelta[direction], z0 * kCoordsZStep, z1 * kCoordsZStep }, direction, isQueue); } - else - { - // A footpath may stay connected, but its edges must be fixed later on when another edge does get removed. - fixCorners = true; - } - } - - // Only fix corners when needed, to avoid changing corners that have been set for its looks. - if (fixCorners && tileElement->IsGhost()) - { - auto tileFootpathPos = TileCoordsXY{ footpathPos }; - FootpathFixCornersAround(tileFootpathPos, tileElement); } if (tileElement->GetType() == TileElementType::Path) From e6fa262b9e7e693bd6de2aefcca1b81483bc17f6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 27 Dec 2025 14:30:36 +0100 Subject: [PATCH 164/222] Rename G1Element members, add unions for palette entries --- .../engines/opengl/OpenGLDrawingEngine.cpp | 18 +++---- .../drawing/engines/opengl/TextureCache.cpp | 6 +-- src/openrct2-ui/scripting/CustomImages.cpp | 4 +- .../command_line/sprite/SpriteDetails.cpp | 4 +- .../command_line/sprite/SpriteExport.cpp | 2 +- .../sprite/SpriteExportObject.cpp | 2 +- .../command_line/sprite/SpriteFile.cpp | 12 ++--- src/openrct2/drawing/Drawing.Sprite.cpp | 48 +++++++++---------- src/openrct2/drawing/Drawing.cpp | 12 ++--- src/openrct2/drawing/Drawing.h | 18 +++++-- src/openrct2/drawing/Font.cpp | 2 +- src/openrct2/drawing/ImageImporter.cpp | 6 +-- src/openrct2/drawing/ScrollingText.cpp | 4 +- src/openrct2/interface/Viewport.cpp | 6 +-- src/openrct2/object/ImageTable.cpp | 18 +++---- src/openrct2/object/WaterObject.cpp | 4 +- src/openrct2/paint/Paint.cpp | 4 +- test/tests/ImageImporterTests.cpp | 6 +-- 18 files changed, 92 insertions(+), 84 deletions(-) diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index 7ee79cbd4043..6ca2a8d39779 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -888,7 +888,7 @@ void OpenGLDrawingContext::DrawSprite(RenderTarget& rt, const ImageId imageId, c zoomedRT.width = rt.width; zoomedRT.pitch = rt.pitch; zoomedRT.zoom_level = rt.zoom_level - 1; - DrawSprite(zoomedRT, imageId.WithIndex(imageId.GetIndex() - g1Element->zoomed_offset), x >> 1, y >> 1); + DrawSprite(zoomedRT, imageId.WithIndex(imageId.GetIndex() - g1Element->zoomedOffset), x >> 1, y >> 1); return; } if (g1Element->flags & G1_FLAG_NO_ZOOM_DRAW) @@ -899,8 +899,8 @@ void OpenGLDrawingContext::DrawSprite(RenderTarget& rt, const ImageId imageId, c auto texture = _textureCache->GetOrLoadImageTexture(imageId); - int32_t left = x + g1Element->x_offset; - int32_t top = y + g1Element->y_offset; + int32_t left = x + g1Element->xOffset; + int32_t top = y + g1Element->yOffset; int32_t xModifier = 0; int32_t yModifier = 0; @@ -1015,8 +1015,8 @@ void OpenGLDrawingContext::DrawSpriteRawMasked( const auto textureMask = _textureCache->GetOrLoadImageTexture(maskImage); const auto textureColour = _textureCache->GetOrLoadImageTexture(colourImage); - int32_t drawOffsetX = g1ElementMask->x_offset; - int32_t drawOffsetY = g1ElementMask->y_offset; + int32_t drawOffsetX = g1ElementMask->xOffset; + int32_t drawOffsetY = g1ElementMask->yOffset; int32_t drawWidth = std::min(g1ElementMask->width, g1ElementColour->width); int32_t drawHeight = std::min(g1ElementMask->height, g1ElementColour->height); @@ -1075,8 +1075,8 @@ void OpenGLDrawingContext::DrawSpriteSolid(RenderTarget& rt, const ImageId image const auto texture = _textureCache->GetOrLoadImageTexture(image); - int32_t drawOffsetX = g1Element->x_offset; - int32_t drawOffsetY = g1Element->y_offset; + int32_t drawOffsetX = g1Element->xOffset; + int32_t drawOffsetY = g1Element->yOffset; int32_t drawWidth = static_cast(g1Element->width); int32_t drawHeight = static_cast(g1Element->height); @@ -1127,8 +1127,8 @@ void OpenGLDrawingContext::DrawGlyph(RenderTarget& rt, const ImageId image, int3 const auto texture = _textureCache->GetOrLoadGlyphTexture(image, palette); - int32_t left = x + g1Element->x_offset; - int32_t top = y + g1Element->y_offset; + int32_t left = x + g1Element->xOffset; + int32_t top = y + g1Element->yOffset; int32_t right = left + static_cast(g1Element->width); int32_t bottom = top + static_cast(g1Element->height); diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index 1f290cde6f15..14e772e21469 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -226,7 +226,7 @@ void TextureCache::GeneratePaletteTexture() const auto* element = GfxGetG1Element(g1Index.value()); if (element != nullptr) { - GfxDrawSpriteSoftware(rt, ImageId(g1Index.value()), { -element->x_offset, y - element->y_offset }); + GfxDrawSpriteSoftware(rt, ImageId(g1Index.value()), { -element->xOffset, y - element->yOffset }); } } } @@ -361,7 +361,7 @@ RenderTarget TextureCache::GetImageAsDPI(const ImageId imageId) int32_t height = g1Element->height; RenderTarget rt = CreateDPI(width, height); - GfxDrawSpriteSoftware(rt, imageId, { -g1Element->x_offset, -g1Element->y_offset }); + GfxDrawSpriteSoftware(rt, imageId, { -g1Element->xOffset, -g1Element->yOffset }); return rt; } @@ -373,7 +373,7 @@ RenderTarget TextureCache::GetGlyphAsDPI(const ImageId imageId, const PaletteMap RenderTarget rt = CreateDPI(width, height); - const auto glyphCoords = ScreenCoordsXY{ -g1Element->x_offset, -g1Element->y_offset }; + const auto glyphCoords = ScreenCoordsXY{ -g1Element->xOffset, -g1Element->yOffset }; GfxDrawSpritePaletteSetSoftware(rt, imageId, glyphCoords, palette); return rt; } diff --git a/src/openrct2-ui/scripting/CustomImages.cpp b/src/openrct2-ui/scripting/CustomImages.cpp index 71f039dcdb1b..c736cb146bc6 100644 --- a/src/openrct2-ui/scripting/CustomImages.cpp +++ b/src/openrct2-ui/scripting/CustomImages.cpp @@ -151,7 +151,7 @@ namespace OpenRCT2::Scripting DukObject obj(ctx); obj.Set("id", id); - obj.Set("offset", ToDuk(ctx, { g1->x_offset, g1->y_offset })); + obj.Set("offset", ToDuk(ctx, { g1->xOffset, g1->yOffset })); obj.Set("width", g1->width); obj.Set("height", g1->height); @@ -162,7 +162,7 @@ namespace OpenRCT2::Scripting if (g1->flags & G1_FLAG_HAS_ZOOM_SPRITE) { - obj.Set("nextZoomId", id - g1->zoomed_offset); + obj.Set("nextZoomId", id - g1->zoomedOffset); } else { diff --git a/src/openrct2/command_line/sprite/SpriteDetails.cpp b/src/openrct2/command_line/sprite/SpriteDetails.cpp index 98766c7ac6a6..c3febcc2f9b5 100644 --- a/src/openrct2/command_line/sprite/SpriteDetails.cpp +++ b/src/openrct2/command_line/sprite/SpriteDetails.cpp @@ -58,8 +58,8 @@ namespace OpenRCT2::CommandLine::Sprite G1Element* g1 = &spriteFile->Entries[spriteIndex]; printf("width: %d\n", g1->width); printf("height: %d\n", g1->height); - printf("x offset: %d\n", g1->x_offset); - printf("y offset: %d\n", g1->y_offset); + printf("x offset: %d\n", g1->xOffset); + printf("y offset: %d\n", g1->yOffset); printf("data offset: %p\n", g1->offset); return 0; } diff --git a/src/openrct2/command_line/sprite/SpriteExport.cpp b/src/openrct2/command_line/sprite/SpriteExport.cpp index 08b3c79e9665..df5e4338c31a 100644 --- a/src/openrct2/command_line/sprite/SpriteExport.cpp +++ b/src/openrct2/command_line/sprite/SpriteExport.cpp @@ -47,7 +47,7 @@ namespace OpenRCT2::CommandLine::Sprite fprintf(stderr, "Could not export\n"); return -1; } - fprintf(stdout, "{ \"x\": %d, \"y\": %d }\n", spriteHeader.x_offset, spriteHeader.y_offset); + fprintf(stdout, "{ \"x\": %d, \"y\": %d }\n", spriteHeader.xOffset, spriteHeader.yOffset); return 0; } } // namespace OpenRCT2::CommandLine::Sprite diff --git a/src/openrct2/command_line/sprite/SpriteExportObject.cpp b/src/openrct2/command_line/sprite/SpriteExportObject.cpp index a29f5828d72d..d5bcdd3a8c36 100644 --- a/src/openrct2/command_line/sprite/SpriteExportObject.cpp +++ b/src/openrct2/command_line/sprite/SpriteExportObject.cpp @@ -71,7 +71,7 @@ namespace OpenRCT2::CommandLine::Sprite } path = fs::u8path(path).generic_u8string(); - fprintf(stdout, "{ \"path\": \"%s\", \"x\": %d, \"y\": %d }", path.c_str(), g1.x_offset, g1.y_offset); + fprintf(stdout, "{ \"path\": \"%s\", \"x\": %d, \"y\": %d }", path.c_str(), g1.xOffset, g1.yOffset); } fprintf(stdout, (spriteIndex + 1 != maxIndex) ? ",\n" : "\n"); diff --git a/src/openrct2/command_line/sprite/SpriteFile.cpp b/src/openrct2/command_line/sprite/SpriteFile.cpp index 6bbaae440e65..443c4c5db914 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.cpp +++ b/src/openrct2/command_line/sprite/SpriteFile.cpp @@ -35,10 +35,10 @@ namespace OpenRCT2::CommandLine::Sprite entry.offset = reinterpret_cast(static_cast(entry32bit.offset)); entry.width = entry32bit.width; entry.height = entry32bit.height; - entry.x_offset = entry32bit.x_offset; - entry.y_offset = entry32bit.y_offset; + entry.xOffset = entry32bit.x_offset; + entry.yOffset = entry32bit.y_offset; entry.flags = entry32bit.flags; - entry.zoomed_offset = entry32bit.zoomed_offset; + entry.zoomedOffset = entry32bit.zoomed_offset; spriteFile.Entries.push_back(std::move(entry)); } spriteFile.Data.resize(spriteFile.Header.total_size); @@ -109,10 +109,10 @@ namespace OpenRCT2::CommandLine::Sprite entry32bit.offset = static_cast(reinterpret_cast(const_cast(entry.offset))); entry32bit.width = entry.width; entry32bit.height = entry.height; - entry32bit.x_offset = entry.x_offset; - entry32bit.y_offset = entry.y_offset; + entry32bit.x_offset = entry.xOffset; + entry32bit.y_offset = entry.yOffset; entry32bit.flags = entry.flags; - entry32bit.zoomed_offset = entry.zoomed_offset; + entry32bit.zoomed_offset = entry.zoomedOffset; stream.Write(&entry32bit, sizeof(entry32bit)); } diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index ae2101b88530..71f443ea066b 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -122,7 +122,7 @@ static void OverrideElementOffsets(size_t index, G1Element& element) switch (index) { case 25285: - element.x_offset -= 1; + element.xOffset -= 1; break; case 25286: case 25317: @@ -288,16 +288,16 @@ static void OverrideElementOffsets(size_t index, G1Element& element) case 25850: case 25851: case 25852: - element.y_offset += 1; + element.yOffset += 1; break; case 25307: case 25315: case 25319: - element.x_offset -= 1; - element.y_offset += 1; + element.xOffset -= 1; + element.yOffset += 1; break; case 25802: - element.y_offset += 2; + element.yOffset += 2; break; } } @@ -341,17 +341,17 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E elements[i].offset = reinterpret_cast(static_cast(src.offset)); elements[i].width = src.width; elements[i].height = src.height; - elements[i].x_offset = src.x_offset; - elements[i].y_offset = src.y_offset; + elements[i].xOffset = src.x_offset; + elements[i].yOffset = src.y_offset; elements[i].flags = src.flags; if (src.flags & G1_FLAG_HAS_ZOOM_SPRITE) { - elements[i].zoomed_offset = static_cast(i - rctc_to_rct2_index(rctc - src.zoomed_offset)); + elements[i].zoomedOffset = static_cast(i - rctc_to_rct2_index(rctc - src.zoomed_offset)); } else { - elements[i].zoomed_offset = src.zoomed_offset; + elements[i].zoomedOffset = src.zoomed_offset; } ++rctc; @@ -364,8 +364,8 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E { for (auto i = 0u; i < SPR_PEEP_PICKUP_COUNT; ++i) { - elements[animation.start + i].x_offset -= animation.x_offset; - elements[animation.start + i].y_offset -= animation.y_offset; + elements[animation.start + i].xOffset -= animation.x_offset; + elements[animation.start + i].yOffset -= animation.y_offset; } } } @@ -380,10 +380,10 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E elements[i].offset = reinterpret_cast(static_cast(src.offset)); elements[i].width = src.width; elements[i].height = src.height; - elements[i].x_offset = src.x_offset; - elements[i].y_offset = src.y_offset; + elements[i].xOffset = src.x_offset; + elements[i].yOffset = src.y_offset; elements[i].flags = src.flags; - elements[i].zoomed_offset = src.zoomed_offset; + elements[i].zoomedOffset = src.zoomed_offset; } } } @@ -652,7 +652,7 @@ bool GfxLoadCsg() // RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite. if (_csg.elements[i].flags & G1_FLAG_HAS_ZOOM_SPRITE) { - _csg.elements[i].zoomed_offset = i - _csg.elements[i].zoomed_offset; + _csg.elements[i].zoomedOffset = i - _csg.elements[i].zoomedOffset; } } _csgLoaded = true; @@ -781,7 +781,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( const auto spriteCoords = ScreenCoordsXY{ coords.x / 2, coords.y / 2 }; GfxDrawSpritePaletteSetSoftware( - zoomedRT, imageId.WithIndex(imageId.GetIndex() - g1->zoomed_offset), spriteCoords, paletteMap); + zoomedRT, imageId.WithIndex(imageId.GetIndex() - g1->zoomedOffset), spriteCoords, paletteMap); return; } @@ -795,11 +795,11 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( // For the moment, I've added this block here just for magnification with the old code continuing below. if (zoomLevel < ZoomLevel{ 0 }) { - ScreenCoordsXY spriteTopLeft = { zoomLevel.ApplyInversedTo(coords.x + g1->x_offset), - zoomLevel.ApplyInversedTo(coords.y + g1->y_offset) }; + ScreenCoordsXY spriteTopLeft = { zoomLevel.ApplyInversedTo(coords.x + g1->xOffset), + zoomLevel.ApplyInversedTo(coords.y + g1->yOffset) }; - ScreenCoordsXY spriteBottomLeft{ zoomLevel.ApplyInversedTo(coords.x + g1->x_offset + g1->width), - zoomLevel.ApplyInversedTo(coords.y + g1->y_offset + g1->height) }; + ScreenCoordsXY spriteBottomLeft{ zoomLevel.ApplyInversedTo(coords.x + g1->xOffset + g1->width), + zoomLevel.ApplyInversedTo(coords.y + g1->yOffset + g1->height) }; const int32_t width = std::min(spriteBottomLeft.x, rt.x + rt.width) - std::max(spriteTopLeft.x, rt.x); const int32_t height = std::min(spriteBottomLeft.y, rt.y + rt.height) - std::max(spriteTopLeft.y, rt.y); @@ -830,7 +830,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( int32_t height = g1->height; // This is the start y coordinate on the destination - int16_t dest_start_y = y + g1->y_offset; + int16_t dest_start_y = y + g1->yOffset; // For whatever reason the RLE version does not use // the zoom mask on the y coordinate but does on x. @@ -889,7 +889,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( // This is the source start x coordinate int32_t source_start_x = 0; // This is the destination start x coordinate - int16_t dest_start_x = ((x + g1->x_offset + ~zoom_mask) & zoom_mask) - rt.WorldX(); + int16_t dest_start_x = ((x + g1->xOffset + ~zoom_mask) & zoom_mask) - rt.WorldX(); if (dest_start_x < 0) { @@ -981,7 +981,7 @@ void FASTCALL GfxDrawSpriteRawMaskedSoftware( width = zoom.ApplyInversedTo(std::min(imgMask->width, imgColour->width)); height = zoom.ApplyInversedTo(std::min(imgMask->height, imgColour->height)); - ScreenCoordsXY offsetCoords = scrCoords + ScreenCoordsXY{ imgMask->x_offset, imgMask->y_offset }; + ScreenCoordsXY offsetCoords = scrCoords + ScreenCoordsXY{ imgMask->xOffset, imgMask->yOffset }; offsetCoords.x = zoom.ApplyInversedTo(offsetCoords.x); offsetCoords.y = zoom.ApplyInversedTo(offsetCoords.y); @@ -1163,7 +1163,7 @@ size_t G1CalculateDataSize(const G1Element* g1) { if (g1->flags & G1_FLAG_PALETTE) { - return g1->width * 3; + return g1->numColours * 3; } if (g1->flags & G1_FLAG_RLE_COMPRESSION) diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 29776ce9a865..f62334d0bd39 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -700,7 +700,7 @@ void GfxTransposePalette(int32_t pal, uint8_t product) if (g1 != nullptr) { int32_t width = g1->width; - int32_t x = g1->x_offset; + int32_t x = g1->xOffset; uint8_t* source_pointer = g1->offset; for (; width > 0; width--) @@ -743,7 +743,7 @@ void LoadPalette() if (g1 != nullptr) { int32_t width = g1->width; - int32_t x = g1->x_offset; + int32_t x = g1->xOffset; uint8_t* src = g1->offset; for (; width > 0; width--) { @@ -835,8 +835,8 @@ void GfxInvalidatePickedUpPeep() auto* g1 = GfxGetG1Element(imageId); if (g1 != nullptr) { - int32_t left = gPickupPeepX + g1->x_offset; - int32_t top = gPickupPeepY + g1->y_offset; + int32_t left = gPickupPeepX + g1->xOffset; + int32_t top = gPickupPeepY + g1->yOffset; int32_t right = left + g1->width; int32_t bottom = top + g1->height; GfxSetDirtyBlocks({ { left, top }, { right, bottom } }); @@ -956,7 +956,7 @@ void UpdatePaletteEffects() const G1Element* g1 = GfxGetG1Element(palette); if (g1 != nullptr) { - int32_t xoffset = g1->x_offset; + int32_t xoffset = g1->xOffset; for (int32_t i = 0; i < g1->width; i++) { @@ -985,7 +985,7 @@ void UpdatePaletteEffects() const G1Element* g1 = GfxGetG1Element(palette); if (g1 != nullptr) { - int32_t xoffset = g1->x_offset; + int32_t xoffset = g1->xOffset; for (int32_t i = 0; i < g1->width; i++) { diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index a879af71f733..f6a26fd07c9d 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -48,12 +48,20 @@ namespace OpenRCT2::Drawing struct G1Element { uint8_t* offset = nullptr; // 0x00 - int16_t width = 0; // 0x04 - int16_t height = 0; // 0x06 - int16_t x_offset = 0; // 0x08 - int16_t y_offset = 0; // 0x0A + union + { + int16_t width = 0; // 0x04 + int16_t numColours; // If G1_FLAG_PALETTE is set + }; + int16_t height = 0; // 0x06 + union + { + int16_t xOffset = 0; // 0x08 + int16_t startIndex; // If G1_FLAG_PALETTE is set + }; + int16_t yOffset = 0; // 0x0A uint16_t flags = 0; // 0x0C - int32_t zoomed_offset = 0; // 0x0E + int32_t zoomedOffset = 0; // 0x0E }; #pragma pack(push, 1) diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp index 5ddfdc0218de..fb42a6dd76f3 100644 --- a/src/openrct2/drawing/Font.cpp +++ b/src/openrct2/drawing/Font.cpp @@ -274,7 +274,7 @@ void FontSpriteInitialiseCharacters() int32_t width = 0; if (g1 != nullptr) { - width = g1->width + (2 * g1->x_offset) - 1; + width = g1->width + (2 * g1->xOffset) - 1; } _spriteFontCharacterWidths[EnumValue(fontStyle)][glyphIndex] = static_cast(width); } diff --git a/src/openrct2/drawing/ImageImporter.cpp b/src/openrct2/drawing/ImageImporter.cpp index 2814e871d714..a97690c4bb3e 100644 --- a/src/openrct2/drawing/ImageImporter.cpp +++ b/src/openrct2/drawing/ImageImporter.cpp @@ -46,9 +46,9 @@ namespace OpenRCT2::Drawing outElement.width = meta.srcSize.width; outElement.height = meta.srcSize.height; outElement.flags = isRLE ? G1_FLAG_RLE_COMPRESSION : G1_FLAG_HAS_TRANSPARENCY; - outElement.x_offset = meta.offset.x; - outElement.y_offset = meta.offset.y; - outElement.zoomed_offset = meta.zoomedOffset; + outElement.xOffset = meta.offset.x; + outElement.yOffset = meta.offset.y; + outElement.zoomedOffset = meta.zoomedOffset; if (HasFlag(meta.importFlags, ImportFlags::NoDrawOnZoom)) outElement.flags |= G1_FLAG_NO_ZOOM_DRAW; diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index 64c37defc4b1..0b8d309c991d 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -89,8 +89,8 @@ namespace OpenRCT2::Drawing::ScrollingText // Initialize the scrolling text sprite. G1Element g1{}; g1.offset = _drawScrollTextList[i].bitmap; - g1.x_offset = -32; - g1.y_offset = 0; + g1.xOffset = -32; + g1.yOffset = 0; g1.flags = G1_FLAG_HAS_TRANSPARENCY; g1.width = 64; g1.height = 40; diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index b5c9738263c7..b105ca2b875c 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1567,7 +1567,7 @@ namespace OpenRCT2 while (g1->flags & G1_FLAG_HAS_ZOOM_SPRITE && zoomLevel > ZoomLevel{ 0 }) { - imageId = imageId.WithIndex(imageId.GetIndex() - g1->zoomed_offset); + imageId = imageId.WithIndex(imageId.GetIndex() - g1->zoomedOffset); g1 = GfxGetG1Element(imageId); if (g1 == nullptr || g1->flags & G1_FLAG_NO_ZOOM_DRAW) { @@ -1581,8 +1581,8 @@ namespace OpenRCT2 } } - origin.x += g1->x_offset; - origin.y += g1->y_offset; + origin.x += g1->xOffset; + origin.y += g1->yOffset; interactionPoint -= origin; if (interactionPoint.x < 0 || interactionPoint.y < 0 || interactionPoint.x >= g1->width diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index dd3a275816c6..3323289cfd67 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -63,10 +63,10 @@ namespace OpenRCT2 g1 = *orig; g1.offset = new uint8_t[length]; std::memcpy(g1.offset, orig->offset, length); - if ((g1.flags & G1_FLAG_HAS_ZOOM_SPRITE) && g1.zoomed_offset != 0) + if ((g1.flags & G1_FLAG_HAS_ZOOM_SPRITE) && g1.zoomedOffset != 0) { // Fetch image for next zoom level - next_zoom = std::make_unique(static_cast(idx - g1.zoomed_offset), getter); + next_zoom = std::make_unique(static_cast(idx - g1.zoomedOffset), getter); if (!next_zoom->HasData()) { next_zoom = nullptr; @@ -469,10 +469,10 @@ namespace OpenRCT2 g1Element.width = stream->ReadValue(); g1Element.height = stream->ReadValue(); - g1Element.x_offset = stream->ReadValue(); - g1Element.y_offset = stream->ReadValue(); + g1Element.xOffset = stream->ReadValue(); + g1Element.yOffset = stream->ReadValue(); g1Element.flags = stream->ReadValue(); - g1Element.zoomed_offset = stream->ReadValue(); + g1Element.zoomedOffset = stream->ReadValue(); newEntries.push_back(std::move(g1Element)); } @@ -568,9 +568,9 @@ namespace OpenRCT2 for (auto& image : images) { if (hasXOverride) - image->g1.x_offset = xOverride; + image->g1.xOffset = xOverride; if (hasYOverride) - image->g1.y_offset = yOverride; + image->g1.yOffset = yOverride; } } @@ -606,14 +606,14 @@ namespace OpenRCT2 // Set old image zoom offset to zoom image which we are about to add auto g1a = const_cast(&GetImages()[tableIndex]); - g1a->zoomed_offset = static_cast(tableIndex) - static_cast(GetCount()); + g1a->zoomedOffset = static_cast(tableIndex) - static_cast(GetCount()); while (img != nullptr) { auto g1b = img->g1; if (img->next_zoom != nullptr) { - g1b.zoomed_offset = -1; + g1b.zoomedOffset = -1; } AddImage(&g1b); img = img->next_zoom.get(); diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index 59c5acd97714..dad717dd6af4 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -123,8 +123,8 @@ namespace OpenRCT2 G1Element g1 = {}; g1.offset = data.get(); - g1.width = static_cast(numColours); - g1.x_offset = Json::GetNumber(jPalette["index"]); + g1.numColours = static_cast(numColours); + g1.startIndex = Json::GetNumber(jPalette["index"]); g1.flags = G1_FLAG_PALETTE; auto& imageTable = GetImageTable(); diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index b48c872911aa..25ef16622b1b 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -107,8 +107,8 @@ static void PaintSessionAddPSToQuadrant(PaintSession& session, PaintStruct* ps) static constexpr bool imageWithinDPI(const ScreenCoordsXY& imagePos, const G1Element& g1, const RenderTarget& rt) { - const int32_t left = imagePos.x + g1.x_offset; - const int32_t bottom = imagePos.y + g1.y_offset; + const int32_t left = imagePos.x + g1.xOffset; + const int32_t bottom = imagePos.y + g1.yOffset; const int32_t right = left + g1.width; const int32_t top = bottom + g1.height; diff --git a/test/tests/ImageImporterTests.cpp b/test/tests/ImageImporterTests.cpp index 5ff11d633917..460e7bc7a4d7 100644 --- a/test/tests/ImageImporterTests.cpp +++ b/test/tests/ImageImporterTests.cpp @@ -48,9 +48,9 @@ TEST_F(ImageImporterTests, Import_Logo) ASSERT_EQ(result.Buffer.data(), result.Element.offset); ASSERT_EQ(128, result.Element.width); ASSERT_EQ(128, result.Element.height); - ASSERT_EQ(3, result.Element.x_offset); - ASSERT_EQ(5, result.Element.y_offset); - ASSERT_EQ(0, result.Element.zoomed_offset); + ASSERT_EQ(3, result.Element.xOffset); + ASSERT_EQ(5, result.Element.yOffset); + ASSERT_EQ(0, result.Element.zoomedOffset); // Check to ensure RLE data doesn't change unexpectedly. // Update expected hash if change is expected. From 9ba328f77caaf0a6198ed465792c57f9f7a14c94 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Sat, 27 Dec 2025 16:03:46 -0300 Subject: [PATCH 165/222] Include header in Paint.h (#25711) --- src/openrct2/paint/Paint.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openrct2/paint/Paint.h b/src/openrct2/paint/Paint.h index f05fb73f4c09..c2fe62c34601 100644 --- a/src/openrct2/paint/Paint.h +++ b/src/openrct2/paint/Paint.h @@ -21,6 +21,7 @@ #include "tile_element/Paint.Tunnel.h" #include +#include #include #include #include From 7236631db53ff893cd04bbc1b6a7472b5851bc15 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 27 Dec 2025 14:56:15 +0100 Subject: [PATCH 166/222] Create strong enum+Flagholder for G1 flags --- .../engines/opengl/OpenGLDrawingEngine.cpp | 4 +-- src/openrct2-ui/scripting/CustomImages.cpp | 22 ++++++------ src/openrct2-ui/windows/InstallTrack.cpp | 2 +- src/openrct2-ui/windows/TrackList.cpp | 2 +- .../command_line/sprite/SpriteCombine.cpp | 2 +- src/openrct2/drawing/Drawing.Sprite.BMP.cpp | 2 +- src/openrct2/drawing/Drawing.Sprite.cpp | 26 +++++++------- src/openrct2/drawing/Drawing.h | 34 ++++++++++--------- src/openrct2/drawing/ImageImporter.cpp | 4 +-- src/openrct2/drawing/ScrollingText.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 12 +++---- src/openrct2/object/ImageTable.cpp | 8 ++--- src/openrct2/object/WaterObject.cpp | 2 +- 13 files changed, 62 insertions(+), 60 deletions(-) diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index 6ca2a8d39779..bfb58b3d0f98 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -878,7 +878,7 @@ void OpenGLDrawingContext::DrawSprite(RenderTarget& rt, const ImageId imageId, c if (rt.zoom_level > ZoomLevel{ 0 }) { - if (g1Element->flags & G1_FLAG_HAS_ZOOM_SPRITE) + if (g1Element->flags.has(G1Flag::hasZoomSprite)) { RenderTarget zoomedRT; zoomedRT.bits = rt.bits; @@ -891,7 +891,7 @@ void OpenGLDrawingContext::DrawSprite(RenderTarget& rt, const ImageId imageId, c DrawSprite(zoomedRT, imageId.WithIndex(imageId.GetIndex() - g1Element->zoomedOffset), x >> 1, y >> 1); return; } - if (g1Element->flags & G1_FLAG_NO_ZOOM_DRAW) + if (g1Element->flags.has(G1Flag::noZoomDraw)) { return; } diff --git a/src/openrct2-ui/scripting/CustomImages.cpp b/src/openrct2-ui/scripting/CustomImages.cpp index c736cb146bc6..83be3269b8fa 100644 --- a/src/openrct2-ui/scripting/CustomImages.cpp +++ b/src/openrct2-ui/scripting/CustomImages.cpp @@ -155,12 +155,12 @@ namespace OpenRCT2::Scripting obj.Set("width", g1->width); obj.Set("height", g1->height); - obj.Set("hasTransparent", (g1->flags & G1_FLAG_HAS_TRANSPARENCY) != 0); - obj.Set("isRLE", (g1->flags & G1_FLAG_RLE_COMPRESSION) != 0); - obj.Set("isPalette", (g1->flags & G1_FLAG_PALETTE) != 0); - obj.Set("noZoom", (g1->flags & G1_FLAG_NO_ZOOM_DRAW) != 0); + obj.Set("hasTransparent", g1->flags.has(G1Flag::hasTransparency)); + obj.Set("isRLE", g1->flags.has(G1Flag::hasRLECompression)); + obj.Set("isPalette", g1->flags.has(G1Flag::isPalette)); + obj.Set("noZoom", g1->flags.has(G1Flag::noZoomDraw)); - if (g1->flags & G1_FLAG_HAS_ZOOM_SPRITE) + if (g1->flags.has(G1Flag::hasZoomSprite)) { obj.Set("nextZoomId", id - g1->zoomedOffset); } @@ -173,9 +173,9 @@ namespace OpenRCT2::Scripting static const char* GetPixelDataTypeForG1(const G1Element& g1) { - if (g1.flags & G1_FLAG_RLE_COMPRESSION) + if (g1.flags.has(G1Flag::hasRLECompression)) return "rle"; - else if (g1.flags & G1_FLAG_PALETTE) + else if (g1.flags.has(G1Flag::isPalette)) return "palette"; return "raw"; } @@ -405,10 +405,10 @@ namespace OpenRCT2::Scripting el.offset = newData; el.width = pixelData.Width; el.height = pixelData.Height; - el.flags = 0; + el.flags = {}; if (pixelData.Type == PixelDataKind::Rle) { - el.flags |= G1_FLAG_RLE_COMPRESSION; + el.flags.set(G1Flag::hasRLECompression); } GfxSetG1Element(id, &el); DrawingEngineInvalidateImage(id); @@ -441,7 +441,7 @@ namespace OpenRCT2::Scripting auto createNewImage = false; auto g1 = GfxGetG1Element(id); - if (g1 == nullptr || g1->width != size.width || g1->height != size.height || (g1->flags & G1_FLAG_RLE_COMPRESSION)) + if (g1 == nullptr || g1->width != size.width || g1->height != size.height || g1->flags.has(G1Flag::hasRLECompression)) { createNewImage = true; } @@ -478,7 +478,7 @@ namespace OpenRCT2::Scripting newg1.offset = rt.bits; newg1.width = size.width; newg1.height = size.height; - newg1.flags = 0; + newg1.flags = {}; GfxSetG1Element(id, &newg1); } diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index c968f3deb941..57d43db79bd1 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -163,7 +163,7 @@ namespace OpenRCT2::Ui::Windows g1temp.offset = _trackDesignPreviewPixels.data() + (_currentTrackPieceDirection * kTrackPreviewImageSize); g1temp.width = 370; g1temp.height = 217; - g1temp.flags = G1_FLAG_HAS_TRANSPARENCY; + g1temp.flags = { G1Flag::hasTransparency }; GfxSetG1Element(SPR_TEMP, &g1temp); DrawingEngineInvalidateImage(SPR_TEMP); GfxDrawSprite(rt, ImageId(SPR_TEMP), screenPos); diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 4c5691bf24f1..9783599eae97 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -511,7 +511,7 @@ namespace OpenRCT2::Ui::Windows g1temp.offset = _trackDesignPreviewPixels.data() + (_currentTrackPieceDirection * kTrackPreviewImageSize); g1temp.width = 370; g1temp.height = 217; - g1temp.flags = G1_FLAG_HAS_TRANSPARENCY; + g1temp.flags = { G1Flag::hasTransparency }; GfxSetG1Element(SPR_TEMP, &g1temp); DrawingEngineInvalidateImage(SPR_TEMP); GfxDrawSprite(rt, ImageId(SPR_TEMP), trackPreview); diff --git a/src/openrct2/command_line/sprite/SpriteCombine.cpp b/src/openrct2/command_line/sprite/SpriteCombine.cpp index 6b518732207e..cbbbe17c159c 100644 --- a/src/openrct2/command_line/sprite/SpriteCombine.cpp +++ b/src/openrct2/command_line/sprite/SpriteCombine.cpp @@ -45,7 +45,7 @@ namespace OpenRCT2::CommandLine::Sprite for (uint32_t i = 0; i < numEntries; i++) { // RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite. - if (g1Elements32[i].flags & G1_FLAG_HAS_ZOOM_SPRITE) + if (g1Elements32[i].flags.has(G1Flag::hasZoomSprite)) { g1Elements32[i].zoomed_offset = i - g1Elements32[i].zoomed_offset; } diff --git a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp index 4988fb297065..4bb0a322a180 100644 --- a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp @@ -106,7 +106,7 @@ void FASTCALL GfxBmpSpriteToBuffer(RenderTarget& rt, const DrawSpriteArgs& args) // Used for glass. DrawBMPSprite(rt, args); } - else if (!(args.SourceImage.flags & G1_FLAG_HAS_TRANSPARENCY)) + else if (!args.SourceImage.flags.has(G1Flag::hasTransparency)) { // Copy raw bitmap data to target DrawBMPSprite(rt, args); diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 71f443ea066b..4f5500ad9ce0 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -345,7 +345,7 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E elements[i].yOffset = src.y_offset; elements[i].flags = src.flags; - if (src.flags & G1_FLAG_HAS_ZOOM_SPRITE) + if (src.flags.has(G1Flag::hasZoomSprite)) { elements[i].zoomedOffset = static_cast(i - rctc_to_rct2_index(rctc - src.zoomed_offset)); } @@ -650,7 +650,7 @@ bool GfxLoadCsg() _csg.elements[i].offset += reinterpret_cast(_csg.data.get()); } // RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite. - if (_csg.elements[i].flags & G1_FLAG_HAS_ZOOM_SPRITE) + if (_csg.elements[i].flags.has(G1Flag::hasZoomSprite)) { _csg.elements[i].zoomedOffset = i - _csg.elements[i].zoomedOffset; } @@ -768,7 +768,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( return; } - if (zoomLevel > ZoomLevel{ 0 } && (g1->flags & G1_FLAG_HAS_ZOOM_SPRITE)) + if (zoomLevel > ZoomLevel{ 0 } && g1->flags.has(G1Flag::hasZoomSprite)) { RenderTarget zoomedRT = rt; zoomedRT.bits = rt.bits; @@ -785,7 +785,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( return; } - if (zoomLevel > ZoomLevel{ 0 } && (g1->flags & G1_FLAG_NO_ZOOM_DRAW)) + if (zoomLevel > ZoomLevel{ 0 } && g1->flags.has(G1Flag::noZoomDraw)) { return; } @@ -820,7 +820,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( const int32_t zoom_mask = zoomLevel > ZoomLevel{ 0 } ? zoomLevel.ApplyTo(0xFFFFFFFF) : 0xFFFFFFFF; - if (zoomLevel > ZoomLevel{ 0 } && g1->flags & G1_FLAG_RLE_COMPRESSION) + if (zoomLevel > ZoomLevel{ 0 } && g1->flags.has(G1Flag::hasRLECompression)) { x -= ~zoom_mask; y -= ~zoom_mask; @@ -834,7 +834,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( // For whatever reason the RLE version does not use // the zoom mask on the y coordinate but does on x. - if (g1->flags & G1_FLAG_RLE_COMPRESSION) + if (g1->flags.has(G1Flag::hasRLECompression)) { dest_start_y -= rt.WorldY(); } @@ -862,7 +862,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( } else { - if ((g1->flags & G1_FLAG_RLE_COMPRESSION) && zoomLevel > ZoomLevel{ 0 }) + if (g1->flags.has(G1Flag::hasRLECompression) && zoomLevel > ZoomLevel{ 0 }) { source_start_y -= dest_start_y & ~zoom_mask; height += dest_start_y & ~zoom_mask; @@ -908,7 +908,7 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( } else { - if ((g1->flags & G1_FLAG_RLE_COMPRESSION) && zoomLevel > ZoomLevel{ 0 }) + if (g1->flags.has(G1Flag::hasRLECompression) && zoomLevel > ZoomLevel{ 0 }) { source_start_x -= dest_start_x & ~zoom_mask; } @@ -938,11 +938,11 @@ void FASTCALL GfxDrawSpritePaletteSetSoftware( void FASTCALL GfxSpriteToBuffer(RenderTarget& rt, const DrawSpriteArgs& args) { - if (args.SourceImage.flags & G1_FLAG_RLE_COMPRESSION) + if (args.SourceImage.flags.has(G1Flag::hasRLECompression)) { GfxRleSpriteToBuffer(rt, args); } - else if (!(args.SourceImage.flags & G1_FLAG_1)) + else if (!args.SourceImage.flags.has(G1Flag::one)) { GfxBmpSpriteToBuffer(rt, args); } @@ -966,7 +966,7 @@ void FASTCALL GfxDrawSpriteRawMaskedSoftware( } // Must have transparency in order to pass check - if (!(imgMask->flags & G1_FLAG_HAS_TRANSPARENCY) || !(imgColour->flags & G1_FLAG_HAS_TRANSPARENCY)) + if (!imgMask->flags.has(G1Flag::hasTransparency) || !imgColour->flags.has(G1Flag::hasTransparency)) { GfxDrawSpriteSoftware(rt, colourImage, scrCoords); return; @@ -1161,12 +1161,12 @@ bool IsCsgLoaded() size_t G1CalculateDataSize(const G1Element* g1) { - if (g1->flags & G1_FLAG_PALETTE) + if (g1->flags.has(G1Flag::isPalette)) { return g1->numColours * 3; } - if (g1->flags & G1_FLAG_RLE_COMPRESSION) + if (g1->flags.has(G1Flag::hasRLECompression)) { if (g1->offset == nullptr) { diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index f6a26fd07c9d..a5cbd8b65893 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -10,6 +10,7 @@ #pragma once #include "../core/CallingConventions.h" +#include "../core/FlagHolder.hpp" #include "../core/StringTypes.h" #include "../interface/Colour.h" #include "../interface/ZoomLevel.h" @@ -45,23 +46,34 @@ namespace OpenRCT2::Drawing struct IDrawingEngine; } +enum class G1Flag : uint8_t +{ + hasTransparency, // Image data contains transparent pixels (0XFF) which will not be rendered + one, + hasRLECompression, // Image data is encoded using RCT2's form of run length encoding + isPalette, // Image data is a sequence of palette entries R8G8B8 + hasZoomSprite, // Use a different sprite for higher zoom levels + noZoomDraw, // Does not get drawn at higher zoom levels (only zoom 0) +}; +using G1Flags = FlagHolder; + struct G1Element { uint8_t* offset = nullptr; // 0x00 union { int16_t width = 0; // 0x04 - int16_t numColours; // If G1_FLAG_PALETTE is set + int16_t numColours; // If G1Flag::isPalette is set }; int16_t height = 0; // 0x06 union { int16_t xOffset = 0; // 0x08 - int16_t startIndex; // If G1_FLAG_PALETTE is set + int16_t startIndex; // If G1Flag::isPalette is set }; - int16_t yOffset = 0; // 0x0A - uint16_t flags = 0; // 0x0C - int32_t zoomedOffset = 0; // 0x0E + int16_t yOffset = 0; // 0x0A + G1Flags flags = {}; // 0x0C + int32_t zoomedOffset = 0; // 0x0E }; #pragma pack(push, 1) @@ -87,21 +99,11 @@ struct RCTG1Element int16_t height; // 0x06 int16_t x_offset; // 0x08 int16_t y_offset; // 0x0A - uint16_t flags; // 0x0C + G1Flags flags; // 0x0C uint16_t zoomed_offset; // 0x0E }; static_assert(sizeof(RCTG1Element) == 0x10); -enum -{ - G1_FLAG_HAS_TRANSPARENCY = (1 << 0), // Image data contains transparent pixels (0XFF) which will not be rendered - G1_FLAG_1 = (1 << 1), - G1_FLAG_RLE_COMPRESSION = (1 << 2), // Image data is encoded using RCT2's form of run length encoding - G1_FLAG_PALETTE = (1 << 3), // Image data is a sequence of palette entries R8G8B8 - G1_FLAG_HAS_ZOOM_SPRITE = (1 << 4), // Use a different sprite for higher zoom levels - G1_FLAG_NO_ZOOM_DRAW = (1 << 5), // Does not get drawn at higher zoom levels (only zoom 0) -}; - using DrawBlendOp = uint8_t; constexpr DrawBlendOp kBlendNone = 0; diff --git a/src/openrct2/drawing/ImageImporter.cpp b/src/openrct2/drawing/ImageImporter.cpp index a97690c4bb3e..717d10ab2ae5 100644 --- a/src/openrct2/drawing/ImageImporter.cpp +++ b/src/openrct2/drawing/ImageImporter.cpp @@ -45,12 +45,12 @@ namespace OpenRCT2::Drawing G1Element outElement; outElement.width = meta.srcSize.width; outElement.height = meta.srcSize.height; - outElement.flags = isRLE ? G1_FLAG_RLE_COMPRESSION : G1_FLAG_HAS_TRANSPARENCY; + outElement.flags = { isRLE ? G1Flag::hasRLECompression : G1Flag::hasTransparency }; outElement.xOffset = meta.offset.x; outElement.yOffset = meta.offset.y; outElement.zoomedOffset = meta.zoomedOffset; if (HasFlag(meta.importFlags, ImportFlags::NoDrawOnZoom)) - outElement.flags |= G1_FLAG_NO_ZOOM_DRAW; + outElement.flags.set(G1Flag::noZoomDraw); ImageImporter::ImportResult result; result.Element = outElement; diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index 0b8d309c991d..eda4eaf831df 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -91,7 +91,7 @@ namespace OpenRCT2::Drawing::ScrollingText g1.offset = _drawScrollTextList[i].bitmap; g1.xOffset = -32; g1.yOffset = 0; - g1.flags = G1_FLAG_HAS_TRANSPARENCY; + g1.flags = { G1Flag::hasTransparency }; g1.width = 64; g1.height = 40; g1.offset[0] = 0xFF; diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index b105ca2b875c..4a80ed11c780 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1498,7 +1498,7 @@ namespace OpenRCT2 uint8_t* index = g1->offset + (y * g1->width) + x; // Needs investigation as it has no consideration for pure BMP maps. - if (!(g1->flags & G1_FLAG_HAS_TRANSPARENCY)) + if (!g1->flags.has(G1Flag::hasTransparency)) { return false; } @@ -1560,16 +1560,16 @@ namespace OpenRCT2 if (rt.zoom_level > ZoomLevel{ 0 }) { - if (g1->flags & G1_FLAG_NO_ZOOM_DRAW) + if (g1->flags.has(G1Flag::noZoomDraw)) { return false; } - while (g1->flags & G1_FLAG_HAS_ZOOM_SPRITE && zoomLevel > ZoomLevel{ 0 }) + while (g1->flags.has(G1Flag::hasZoomSprite) && zoomLevel > ZoomLevel{ 0 }) { imageId = imageId.WithIndex(imageId.GetIndex() - g1->zoomedOffset); g1 = GfxGetG1Element(imageId); - if (g1 == nullptr || g1->flags & G1_FLAG_NO_ZOOM_DRAW) + if (g1 == nullptr || g1->flags.has(G1Flag::noZoomDraw)) { return false; } @@ -1591,12 +1591,12 @@ namespace OpenRCT2 return false; } - if (g1->flags & G1_FLAG_RLE_COMPRESSION) + if (g1->flags.has(G1Flag::hasRLECompression)) { return IsPixelPresentRLE(g1->offset, interactionPoint.x, interactionPoint.y); } - if (!(g1->flags & G1_FLAG_1)) + if (!g1->flags.has(G1Flag::one)) { return IsPixelPresentBMP(imageType, g1, interactionPoint.x, interactionPoint.y, paletteMap); } diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index 3323289cfd67..3181e4a3f968 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -51,7 +51,7 @@ namespace OpenRCT2 g1 = orig; g1.offset = new uint8_t[length]; std::memcpy(g1.offset, orig.offset, length); - g1.flags &= ~G1_FLAG_HAS_ZOOM_SPRITE; + g1.flags.unset(G1Flag::hasZoomSprite); } RequiredImage(uint32_t idx, std::function getter) @@ -63,14 +63,14 @@ namespace OpenRCT2 g1 = *orig; g1.offset = new uint8_t[length]; std::memcpy(g1.offset, orig->offset, length); - if ((g1.flags & G1_FLAG_HAS_ZOOM_SPRITE) && g1.zoomedOffset != 0) + if (g1.flags.has(G1Flag::hasZoomSprite) && g1.zoomedOffset != 0) { // Fetch image for next zoom level next_zoom = std::make_unique(static_cast(idx - g1.zoomedOffset), getter); if (!next_zoom->HasData()) { next_zoom = nullptr; - g1.flags &= ~G1_FLAG_HAS_ZOOM_SPRITE; + g1.flags.unset(G1Flag::hasZoomSprite); } } } @@ -471,7 +471,7 @@ namespace OpenRCT2 g1Element.height = stream->ReadValue(); g1Element.xOffset = stream->ReadValue(); g1Element.yOffset = stream->ReadValue(); - g1Element.flags = stream->ReadValue(); + g1Element.flags = stream->ReadValue(); g1Element.zoomedOffset = stream->ReadValue(); newEntries.push_back(std::move(g1Element)); diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index dad717dd6af4..5e5c11df7963 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -125,7 +125,7 @@ namespace OpenRCT2 g1.offset = data.get(); g1.numColours = static_cast(numColours); g1.startIndex = Json::GetNumber(jPalette["index"]); - g1.flags = G1_FLAG_PALETTE; + g1.flags = { G1Flag::isPalette }; auto& imageTable = GetImageTable(); imageTable.AddImage(&g1); From 16a0e7727e670bc718b2a6dc499e139e8c2a53db Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 27 Dec 2025 15:17:49 +0100 Subject: [PATCH 167/222] Rename RCTG1Header and its fields --- .../command_line/sprite/SpriteBuild.cpp | 4 +- .../command_line/sprite/SpriteCombine.cpp | 8 +-- .../command_line/sprite/SpriteDetails.cpp | 6 +- .../command_line/sprite/SpriteExport.cpp | 2 +- .../command_line/sprite/SpriteExportAll.cpp | 2 +- .../command_line/sprite/SpriteFile.cpp | 28 ++++----- src/openrct2/command_line/sprite/SpriteFile.h | 2 +- src/openrct2/drawing/Drawing.Sprite.cpp | 58 +++++++++---------- src/openrct2/drawing/Drawing.h | 10 ++-- src/openrct2/object/ImageTable.cpp | 6 +- src/openrct2/rct1/Csg.cpp | 7 +-- 11 files changed, 66 insertions(+), 67 deletions(-) diff --git a/src/openrct2/command_line/sprite/SpriteBuild.cpp b/src/openrct2/command_line/sprite/SpriteBuild.cpp index 951313ab7861..0f07a299e715 100644 --- a/src/openrct2/command_line/sprite/SpriteBuild.cpp +++ b/src/openrct2/command_line/sprite/SpriteBuild.cpp @@ -53,8 +53,8 @@ namespace OpenRCT2::CommandLine::Sprite // keep sprite file entirely in memory until ready to write out a complete, // correct file SpriteFile spriteFile; - spriteFile.Header.num_entries = 0; - spriteFile.Header.total_size = 0; + spriteFile.Header.numEntries = 0; + spriteFile.Header.totalSize = 0; fprintf(stdout, "Building: %s\n", spriteFilePath); diff --git a/src/openrct2/command_line/sprite/SpriteCombine.cpp b/src/openrct2/command_line/sprite/SpriteCombine.cpp index cbbbe17c159c..0c9627ca361b 100644 --- a/src/openrct2/command_line/sprite/SpriteCombine.cpp +++ b/src/openrct2/command_line/sprite/SpriteCombine.cpp @@ -34,12 +34,12 @@ namespace OpenRCT2::CommandLine::Sprite uint32_t numEntries = fileHeaderSize / sizeof(RCTG1Element); - RCTG1Header header = {}; - header.num_entries = numEntries; - header.total_size = fileDataSize; + G1Header header = {}; + header.numEntries = numEntries; + header.totalSize = fileDataSize; FileStream outputStream(outputPath, FileMode::write); - outputStream.Write(&header, sizeof(RCTG1Header)); + outputStream.Write(&header, sizeof(G1Header)); auto g1Elements32 = std::make_unique(numEntries); fileHeader.Read(g1Elements32.get(), numEntries * sizeof(RCTG1Element)); for (uint32_t i = 0; i < numEntries; i++) diff --git a/src/openrct2/command_line/sprite/SpriteDetails.cpp b/src/openrct2/command_line/sprite/SpriteDetails.cpp index c3febcc2f9b5..0521046afa30 100644 --- a/src/openrct2/command_line/sprite/SpriteDetails.cpp +++ b/src/openrct2/command_line/sprite/SpriteDetails.cpp @@ -35,8 +35,8 @@ namespace OpenRCT2::CommandLine::Sprite return -1; } - printf("sprites: %u\n", spriteFile->Header.num_entries); - printf("data size: %u\n", spriteFile->Header.total_size); + printf("sprites: %u\n", spriteFile->Header.numEntries); + printf("data size: %u\n", spriteFile->Header.totalSize); return 0; } @@ -49,7 +49,7 @@ namespace OpenRCT2::CommandLine::Sprite return -1; } - if (spriteIndex < 0 || spriteIndex >= static_cast(spriteFile->Header.num_entries)) + if (spriteIndex < 0 || spriteIndex >= static_cast(spriteFile->Header.numEntries)) { fprintf(stderr, "Sprite #%d does not exist in sprite file.\n", spriteIndex); return -1; diff --git a/src/openrct2/command_line/sprite/SpriteExport.cpp b/src/openrct2/command_line/sprite/SpriteExport.cpp index df5e4338c31a..482c19ea07b0 100644 --- a/src/openrct2/command_line/sprite/SpriteExport.cpp +++ b/src/openrct2/command_line/sprite/SpriteExport.cpp @@ -35,7 +35,7 @@ namespace OpenRCT2::CommandLine::Sprite return -1; } - if (spriteIndex < 0 || spriteIndex >= static_cast(spriteFile->Header.num_entries)) + if (spriteIndex < 0 || spriteIndex >= static_cast(spriteFile->Header.numEntries)) { fprintf(stderr, "Sprite #%d does not exist in sprite file.\n", spriteIndex); return -1; diff --git a/src/openrct2/command_line/sprite/SpriteExportAll.cpp b/src/openrct2/command_line/sprite/SpriteExportAll.cpp index 567f91df5fd0..12779f1bb984 100644 --- a/src/openrct2/command_line/sprite/SpriteExportAll.cpp +++ b/src/openrct2/command_line/sprite/SpriteExportAll.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::CommandLine::Sprite return -1; } - const uint32_t maxIndex = spriteFile->Header.num_entries; + const uint32_t maxIndex = spriteFile->Header.numEntries; const int32_t numbers = static_cast(std::floor(std::log10(maxIndex) + 1)); std::ostringstream oss; // TODO: Remove when C++20 is enabled and std::format can be used diff --git a/src/openrct2/command_line/sprite/SpriteFile.cpp b/src/openrct2/command_line/sprite/SpriteFile.cpp index 443c4c5db914..1ff961425c44 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.cpp +++ b/src/openrct2/command_line/sprite/SpriteFile.cpp @@ -20,13 +20,13 @@ namespace OpenRCT2::CommandLine::Sprite FileStream stream(path, FileMode::open); SpriteFile spriteFile; - stream.Read(&spriteFile.Header, sizeof(RCTG1Header)); + stream.Read(&spriteFile.Header, sizeof(G1Header)); - if (spriteFile.Header.num_entries > 0) + if (spriteFile.Header.numEntries > 0) { - spriteFile.Entries.reserve(spriteFile.Header.num_entries); + spriteFile.Entries.reserve(spriteFile.Header.numEntries); - for (uint32_t i = 0; i < spriteFile.Header.num_entries; ++i) + for (uint32_t i = 0; i < spriteFile.Header.numEntries; ++i) { RCTG1Element entry32bit{}; stream.Read(&entry32bit, sizeof(entry32bit)); @@ -41,8 +41,8 @@ namespace OpenRCT2::CommandLine::Sprite entry.zoomedOffset = entry32bit.zoomed_offset; spriteFile.Entries.push_back(std::move(entry)); } - spriteFile.Data.resize(spriteFile.Header.total_size); - stream.Read(spriteFile.Data.data(), spriteFile.Header.total_size); + spriteFile.Data.resize(spriteFile.Header.totalSize); + stream.Read(spriteFile.Data.data(), spriteFile.Header.totalSize); } spriteFile.MakeEntriesAbsolute(); return spriteFile; @@ -75,15 +75,15 @@ namespace OpenRCT2::CommandLine::Sprite void SpriteFile::AddImage(ImageImporter::ImportResult& image) { - Header.num_entries++; + Header.numEntries++; // New image will have its data inserted after previous image - uint8_t* newElementOffset = reinterpret_cast(static_cast(Header.total_size)); - Header.total_size += static_cast(image.Buffer.size()); - Entries.reserve(Header.num_entries); + uint8_t* newElementOffset = reinterpret_cast(static_cast(Header.totalSize)); + Header.totalSize += static_cast(image.Buffer.size()); + Entries.reserve(Header.numEntries); { ScopedRelativeSpriteFile scopedRelative(*this); - Data.reserve(Header.total_size); + Data.reserve(Header.totalSize); Entries.push_back(image.Element); Entries.back().offset = newElementOffset; const auto& buffer = image.Buffer; @@ -96,9 +96,9 @@ namespace OpenRCT2::CommandLine::Sprite try { FileStream stream(path, FileMode::write); - stream.Write(&Header, sizeof(RCTG1Header)); + stream.Write(&Header, sizeof(G1Header)); - if (Header.num_entries > 0) + if (Header.numEntries > 0) { ScopedRelativeSpriteFile scopedRelative(*this); @@ -116,7 +116,7 @@ namespace OpenRCT2::CommandLine::Sprite stream.Write(&entry32bit, sizeof(entry32bit)); } - stream.Write(Data.data(), Header.total_size); + stream.Write(Data.data(), Header.totalSize); } return true; } diff --git a/src/openrct2/command_line/sprite/SpriteFile.h b/src/openrct2/command_line/sprite/SpriteFile.h index 4344288f38ee..76dec7998b1f 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.h +++ b/src/openrct2/command_line/sprite/SpriteFile.h @@ -19,7 +19,7 @@ namespace OpenRCT2::CommandLine::Sprite class SpriteFile { public: - RCTG1Header Header{}; + G1Header Header{}; std::vector Entries; std::vector Data; void AddImage(ImageImporter::ImportResult& image); diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 4f5500ad9ce0..8dacd88cbba3 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -455,25 +455,25 @@ bool GfxLoadG1(const IPlatformEnvironment& env) { auto path = env.FindFile(DirBase::rct2, DirId::data, u8"g1.dat"); auto fs = FileStream(path, FileMode::open); - _g1.header = fs.ReadValue(); + _g1.header = fs.ReadValue(); - LOG_VERBOSE("g1.dat, number of entries: %u", _g1.header.num_entries); + LOG_VERBOSE("g1.dat, number of entries: %u", _g1.header.numEntries); - if (_g1.header.num_entries < SPR_G1_END) + if (_g1.header.numEntries < SPR_G1_END) { throw std::runtime_error("Not enough elements in g1.dat"); } // Read element headers - bool is_rctc = _g1.header.num_entries == SPR_RCTC_G1_END; - _g1.elements.resize(_g1.header.num_entries); - ReadAndConvertGxDat(&fs, _g1.header.num_entries, is_rctc, _g1.elements.data()); + bool is_rctc = _g1.header.numEntries == SPR_RCTC_G1_END; + _g1.elements.resize(_g1.header.numEntries); + ReadAndConvertGxDat(&fs, _g1.header.numEntries, is_rctc, _g1.elements.data()); // Read element data - _g1.data = fs.ReadArray(_g1.header.total_size); + _g1.data = fs.ReadArray(_g1.header.totalSize); // Fix entry data offsets - for (uint32_t i = 0; i < _g1.header.num_entries; i++) + for (uint32_t i = 0; i < _g1.header.numEntries; i++) { if (_g1.elements[i].offset == nullptr) { @@ -539,19 +539,19 @@ static bool GfxLoadOpenRCT2Gx(std::string filename, Gx& target, size_t expectedN try { auto fs = FileStream(path, FileMode::open); - target.header = fs.ReadValue(); + target.header = fs.ReadValue(); // Read element headers - target.elements.resize(target.header.num_entries); - ReadAndConvertGxDat(&fs, target.header.num_entries, false, target.elements.data()); + target.elements.resize(target.header.numEntries); + ReadAndConvertGxDat(&fs, target.header.numEntries, false, target.elements.data()); // Read element data - target.data = fs.ReadArray(target.header.total_size); + target.data = fs.ReadArray(target.header.totalSize); - if (target.header.num_entries != expectedNumItems) + if (target.header.numEntries != expectedNumItems) { std::string errorMessage = "Mismatched " + filename + " size.\nExpected: " + std::to_string(expectedNumItems) - + "\nActual: " + std::to_string(target.header.num_entries) + "\n" + filename + + "\nActual: " + std::to_string(target.header.numEntries) + "\n" + filename + " may be installed improperly.\nPath to " + filename + ": " + path; LOG_ERROR(errorMessage.c_str()); @@ -568,7 +568,7 @@ static bool GfxLoadOpenRCT2Gx(std::string filename, Gx& target, size_t expectedN } // Fix entry data offsets - for (uint32_t i = 0; i < target.header.num_entries; i++) + for (uint32_t i = 0; i < target.header.numEntries; i++) { if (target.elements[i].offset == nullptr) { @@ -622,8 +622,8 @@ bool GfxLoadCsg() size_t fileHeaderSize = fileHeader.GetLength(); size_t fileDataSize = fileData.GetLength(); - _csg.header.num_entries = static_cast(fileHeaderSize / sizeof(RCTG1Element)); - _csg.header.total_size = static_cast(fileDataSize); + _csg.header.numEntries = static_cast(fileHeaderSize / sizeof(RCTG1Element)); + _csg.header.totalSize = static_cast(fileDataSize); if (!CsgIsUsable(_csg)) { @@ -632,14 +632,14 @@ bool GfxLoadCsg() } // Read element headers - _csg.elements.resize(_csg.header.num_entries); - ReadAndConvertGxDat(&fileHeader, _csg.header.num_entries, false, _csg.elements.data()); + _csg.elements.resize(_csg.header.numEntries); + ReadAndConvertGxDat(&fileHeader, _csg.header.numEntries, false, _csg.elements.data()); // Read element data - _csg.data = fileData.ReadArray(_csg.header.total_size); + _csg.data = fileData.ReadArray(_csg.header.totalSize); // Fix entry data offsets - for (uint32_t i = 0; i < _csg.header.num_entries; i++) + for (uint32_t i = 0; i < _csg.header.numEntries; i++) { if (_csg.elements[i].offset == nullptr) { @@ -675,14 +675,14 @@ std::optional GfxLoadGx(const std::vector& buffer) OpenRCT2::MemoryStream istream(buffer.data(), buffer.size()); Gx gx; - gx.header = istream.ReadValue(); + gx.header = istream.ReadValue(); // Read element headers - gx.elements.resize(gx.header.num_entries); - ReadAndConvertGxDat(&istream, gx.header.num_entries, false, gx.elements.data()); + gx.elements.resize(gx.header.numEntries); + ReadAndConvertGxDat(&istream, gx.header.numEntries, false, gx.elements.data()); // Read element data - gx.data = istream.ReadArray(gx.header.total_size); + gx.data = istream.ReadArray(gx.header.totalSize); return std::make_optional(std::move(gx)); } @@ -1046,7 +1046,7 @@ const G1Element* GfxGetG1Element(ImageIndex image_id) else if (offset < SPR_G2_END) { size_t idx = offset - SPR_G2_BEGIN; - if (idx < _g2.header.num_entries) + if (idx < _g2.header.numEntries) { return &_g2.elements[idx]; } @@ -1056,7 +1056,7 @@ const G1Element* GfxGetG1Element(ImageIndex image_id) else if (offset < SPR_FONTS_END) { size_t idx = offset - SPR_FONTS_BEGIN; - if (idx < _fonts.header.num_entries) + if (idx < _fonts.header.numEntries) { return &_fonts.elements[idx]; } @@ -1066,7 +1066,7 @@ const G1Element* GfxGetG1Element(ImageIndex image_id) else if (offset < SPR_TRACKS_END) { size_t idx = offset - SPR_TRACKS_BEGIN; - if (idx < _tracks.header.num_entries) + if (idx < _tracks.header.numEntries) { return &_tracks.elements[idx]; } @@ -1078,7 +1078,7 @@ const G1Element* GfxGetG1Element(ImageIndex image_id) if (IsCsgLoaded()) { size_t idx = offset - SPR_CSG_BEGIN; - if (idx < _csg.header.num_entries) + if (idx < _csg.header.numEntries) { return &_csg.elements[idx]; } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index a5cbd8b65893..1d4cb7198cc4 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -77,17 +77,17 @@ struct G1Element }; #pragma pack(push, 1) -struct RCTG1Header +struct G1Header { - uint32_t num_entries = 0; - uint32_t total_size = 0; + uint32_t numEntries = 0; + uint32_t totalSize = 0; }; -static_assert(sizeof(RCTG1Header) == 8); +static_assert(sizeof(G1Header) == 8); #pragma pack(pop) struct Gx { - RCTG1Header header; + G1Header header; std::vector elements; std::unique_ptr data; }; diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index 3181e4a3f968..ee1d78ce21d4 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -231,7 +231,7 @@ namespace OpenRCT2 if (gxData.has_value()) { // Fix entry data offsets - for (uint32_t i = 0; i < gxData->header.num_entries; i++) + for (uint32_t i = 0; i < gxData->header.numEntries; i++) { if (gxData->elements[i].offset == nullptr) { @@ -248,7 +248,7 @@ namespace OpenRCT2 size_t placeHoldersAdded = 0; for (auto i : range) { - if (i >= 0 && (i < static_cast(gxData->header.num_entries))) + if (i >= 0 && (i < static_cast(gxData->header.numEntries))) { result.push_back(std::make_unique(gxData->elements[i])); } @@ -268,7 +268,7 @@ namespace OpenRCT2 } else { - for (int i = 0; i < static_cast(gxData->header.num_entries); i++) + for (int i = 0; i < static_cast(gxData->header.numEntries); i++) result.push_back(std::make_unique(gxData->elements[i])); } } diff --git a/src/openrct2/rct1/Csg.cpp b/src/openrct2/rct1/Csg.cpp index b82d735a47b1..08160da6887f 100644 --- a/src/openrct2/rct1/Csg.cpp +++ b/src/openrct2/rct1/Csg.cpp @@ -62,8 +62,7 @@ bool RCT1DataPresentAtLocation(u8string_view path) bool CsgIsUsable(const Gx& csg) { - return csg.header.total_size == RCT1::Limits::kLLCsg1DatFileSize - && csg.header.num_entries == RCT1::Limits::kNumLLCsgEntries; + return csg.header.totalSize == RCT1::Limits::kLLCsg1DatFileSize && csg.header.numEntries == RCT1::Limits::kNumLLCsgEntries; } bool CsgAtLocationIsUsable(u8string_view path) @@ -86,7 +85,7 @@ bool CsgAtLocationIsUsable(u8string_view path) size_t fileDataSize = fileData.GetLength(); Gx csg = {}; - csg.header.num_entries = static_cast(fileHeaderSize / sizeof(RCTG1Element)); - csg.header.total_size = static_cast(fileDataSize); + csg.header.numEntries = static_cast(fileHeaderSize / sizeof(RCTG1Element)); + csg.header.totalSize = static_cast(fileDataSize); return CsgIsUsable(csg); } From 8add10115ef9b4bf2af5856e2278bff695fe3414 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 27 Dec 2025 16:44:42 +0100 Subject: [PATCH 168/222] Rename RCT1G1Element and its fields --- .../command_line/sprite/SpriteCombine.cpp | 10 ++++---- .../command_line/sprite/SpriteFile.cpp | 16 ++++++------- src/openrct2/drawing/Drawing.Sprite.cpp | 24 +++++++++---------- src/openrct2/drawing/Drawing.h | 18 +++++++------- src/openrct2/rct1/Csg.cpp | 2 +- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/openrct2/command_line/sprite/SpriteCombine.cpp b/src/openrct2/command_line/sprite/SpriteCombine.cpp index 0c9627ca361b..ba4533bf34b5 100644 --- a/src/openrct2/command_line/sprite/SpriteCombine.cpp +++ b/src/openrct2/command_line/sprite/SpriteCombine.cpp @@ -32,7 +32,7 @@ namespace OpenRCT2::CommandLine::Sprite auto fileHeaderSize = fileHeader.GetLength(); auto fileDataSize = fileData.GetLength(); - uint32_t numEntries = fileHeaderSize / sizeof(RCTG1Element); + uint32_t numEntries = fileHeaderSize / sizeof(StoredG1Element); G1Header header = {}; header.numEntries = numEntries; @@ -40,17 +40,17 @@ namespace OpenRCT2::CommandLine::Sprite FileStream outputStream(outputPath, FileMode::write); outputStream.Write(&header, sizeof(G1Header)); - auto g1Elements32 = std::make_unique(numEntries); - fileHeader.Read(g1Elements32.get(), numEntries * sizeof(RCTG1Element)); + auto g1Elements32 = std::make_unique(numEntries); + fileHeader.Read(g1Elements32.get(), numEntries * sizeof(StoredG1Element)); for (uint32_t i = 0; i < numEntries; i++) { // RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite. if (g1Elements32[i].flags.has(G1Flag::hasZoomSprite)) { - g1Elements32[i].zoomed_offset = i - g1Elements32[i].zoomed_offset; + g1Elements32[i].zoomedOffset = i - g1Elements32[i].zoomedOffset; } - outputStream.Write(&g1Elements32[i], sizeof(RCTG1Element)); + outputStream.Write(&g1Elements32[i], sizeof(StoredG1Element)); } std::vector data; diff --git a/src/openrct2/command_line/sprite/SpriteFile.cpp b/src/openrct2/command_line/sprite/SpriteFile.cpp index 1ff961425c44..88bcbdd48971 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.cpp +++ b/src/openrct2/command_line/sprite/SpriteFile.cpp @@ -28,17 +28,17 @@ namespace OpenRCT2::CommandLine::Sprite for (uint32_t i = 0; i < spriteFile.Header.numEntries; ++i) { - RCTG1Element entry32bit{}; + StoredG1Element entry32bit{}; stream.Read(&entry32bit, sizeof(entry32bit)); G1Element entry{}; entry.offset = reinterpret_cast(static_cast(entry32bit.offset)); entry.width = entry32bit.width; entry.height = entry32bit.height; - entry.xOffset = entry32bit.x_offset; - entry.yOffset = entry32bit.y_offset; + entry.xOffset = entry32bit.xOffset; + entry.yOffset = entry32bit.yOffset; entry.flags = entry32bit.flags; - entry.zoomedOffset = entry32bit.zoomed_offset; + entry.zoomedOffset = entry32bit.zoomedOffset; spriteFile.Entries.push_back(std::move(entry)); } spriteFile.Data.resize(spriteFile.Header.totalSize); @@ -104,15 +104,15 @@ namespace OpenRCT2::CommandLine::Sprite for (const auto& entry : Entries) { - RCTG1Element entry32bit{}; + StoredG1Element entry32bit{}; entry32bit.offset = static_cast(reinterpret_cast(const_cast(entry.offset))); entry32bit.width = entry.width; entry32bit.height = entry.height; - entry32bit.x_offset = entry.xOffset; - entry32bit.y_offset = entry.yOffset; + entry32bit.xOffset = entry.xOffset; + entry32bit.yOffset = entry.yOffset; entry32bit.flags = entry.flags; - entry32bit.zoomed_offset = entry.zoomedOffset; + entry32bit.zoomedOffset = entry.zoomedOffset; stream.Write(&entry32bit, sizeof(entry32bit)); } diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 8dacd88cbba3..331b55394f0f 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -304,8 +304,8 @@ static void OverrideElementOffsets(size_t index, G1Element& element) static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1Element* elements) { - auto g1Elements32 = std::make_unique(count); - stream->Read(g1Elements32.get(), count * sizeof(RCTG1Element)); + auto g1Elements32 = std::make_unique(count); + stream->Read(g1Elements32.get(), count * sizeof(StoredG1Element)); if (is_rctc) { // Process RCTC's g1.dat file @@ -334,24 +334,24 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E break; } - const RCTG1Element& src = g1Elements32[rctc]; + const StoredG1Element& src = g1Elements32[rctc]; // Double cast to silence compiler warning about casting to // pointer from integer of mismatched length. elements[i].offset = reinterpret_cast(static_cast(src.offset)); elements[i].width = src.width; elements[i].height = src.height; - elements[i].xOffset = src.x_offset; - elements[i].yOffset = src.y_offset; + elements[i].xOffset = src.xOffset; + elements[i].yOffset = src.yOffset; elements[i].flags = src.flags; if (src.flags.has(G1Flag::hasZoomSprite)) { - elements[i].zoomedOffset = static_cast(i - rctc_to_rct2_index(rctc - src.zoomed_offset)); + elements[i].zoomedOffset = static_cast(i - rctc_to_rct2_index(rctc - src.zoomedOffset)); } else { - elements[i].zoomedOffset = src.zoomed_offset; + elements[i].zoomedOffset = src.zoomedOffset; } ++rctc; @@ -373,17 +373,17 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E { for (size_t i = 0; i < count; i++) { - const RCTG1Element& src = g1Elements32[i]; + const StoredG1Element& src = g1Elements32[i]; // Double cast to silence compiler warning about casting to // pointer from integer of mismatched length. elements[i].offset = reinterpret_cast(static_cast(src.offset)); elements[i].width = src.width; elements[i].height = src.height; - elements[i].xOffset = src.x_offset; - elements[i].yOffset = src.y_offset; + elements[i].xOffset = src.xOffset; + elements[i].yOffset = src.yOffset; elements[i].flags = src.flags; - elements[i].zoomedOffset = src.zoomed_offset; + elements[i].zoomedOffset = src.zoomedOffset; } } } @@ -622,7 +622,7 @@ bool GfxLoadCsg() size_t fileHeaderSize = fileHeader.GetLength(); size_t fileDataSize = fileData.GetLength(); - _csg.header.numEntries = static_cast(fileHeaderSize / sizeof(RCTG1Element)); + _csg.header.numEntries = static_cast(fileHeaderSize / sizeof(StoredG1Element)); _csg.header.totalSize = static_cast(fileDataSize); if (!CsgIsUsable(_csg)) diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 1d4cb7198cc4..6dcf26996bbe 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -92,17 +92,17 @@ struct Gx std::unique_ptr data; }; -struct RCTG1Element +struct StoredG1Element { - uint32_t offset; // 0x00 note: uint32_t always! - int16_t width; // 0x04 - int16_t height; // 0x06 - int16_t x_offset; // 0x08 - int16_t y_offset; // 0x0A - G1Flags flags; // 0x0C - uint16_t zoomed_offset; // 0x0E + uint32_t offset; // 0x00 note: uint32_t always! + int16_t width; // 0x04 + int16_t height; // 0x06 + int16_t xOffset; // 0x08 + int16_t yOffset; // 0x0A + G1Flags flags; // 0x0C + uint16_t zoomedOffset; // 0x0E }; -static_assert(sizeof(RCTG1Element) == 0x10); +static_assert(sizeof(StoredG1Element) == 0x10); using DrawBlendOp = uint8_t; diff --git a/src/openrct2/rct1/Csg.cpp b/src/openrct2/rct1/Csg.cpp index 08160da6887f..6d983c373bfb 100644 --- a/src/openrct2/rct1/Csg.cpp +++ b/src/openrct2/rct1/Csg.cpp @@ -85,7 +85,7 @@ bool CsgAtLocationIsUsable(u8string_view path) size_t fileDataSize = fileData.GetLength(); Gx csg = {}; - csg.header.numEntries = static_cast(fileHeaderSize / sizeof(RCTG1Element)); + csg.header.numEntries = static_cast(fileHeaderSize / sizeof(StoredG1Element)); csg.header.totalSize = static_cast(fileDataSize); return CsgIsUsable(csg); } From 26ceebe0b2ed66ac0bc2cf173bee033e3b4c47cf Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Sat, 27 Dec 2025 20:29:30 +0100 Subject: [PATCH 169/222] Prevent _preloaderScene nullptr deref (#25710) --- src/openrct2/Context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 8f599f73e859..e697a8a4854d 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -1239,7 +1239,7 @@ namespace OpenRCT2 if (!gOpenRCT2Headless) { - _preloaderScene->SetOnComplete([&]() { SwitchToStartUpScene(); }); + GetPreloaderScene()->SetOnComplete([&]() { SwitchToStartUpScene(); }); } else { From b7250d4ca3a1c1242b6548e97900c20530186905 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Sun, 28 Dec 2025 18:10:44 +0000 Subject: [PATCH 170/222] Fix #25469: Assertion when drawing in ui.imageManager.draw callback (#25716) --- distribution/changelog.txt | 1 + src/openrct2-ui/scripting/CustomImages.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 312398c5c0c8..e8d1a698b012 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -18,6 +18,7 @@ - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25187] On-ride photo platform does not render as ghost when placing track design. - Fix: [#25229] Excessive logging of game actions, reduced to top-level game actions and filters ghost related ones. +- Fix: [#25469] Drawing in the ui.imageManager.draw callback causes an assertion. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. - Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. diff --git a/src/openrct2-ui/scripting/CustomImages.cpp b/src/openrct2-ui/scripting/CustomImages.cpp index 83be3269b8fa..ac2a1727e128 100644 --- a/src/openrct2-ui/scripting/CustomImages.cpp +++ b/src/openrct2-ui/scripting/CustomImages.cpp @@ -465,7 +465,9 @@ namespace OpenRCT2::Scripting } auto dukG = GetObjectAsDukValue(ctx, std::make_shared(ctx, rt)); + drawingEngine->BeginDraw(); scriptEngine.ExecutePluginCall(plugin, callback, { dukG }, false); + drawingEngine->EndDraw(); if (createNewImage) { From 9a7323017974b4d667cc824d725308f5401fa252 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Sun, 28 Dec 2025 22:10:42 +0100 Subject: [PATCH 171/222] Allow cheated umbrellas to use the full colour palette again (#25717) --- distribution/changelog.txt | 1 + src/openrct2/actions/CheatSetAction.cpp | 2 +- src/openrct2/network/NetworkBase.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index e8d1a698b012..06942cb7736b 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -32,6 +32,7 @@ - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. - Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. - Fix: [#25660] After saving a track design with scenery, that ride’s entrances and exits are visible in ‘Highlight path issues’ mode. +- Fix: [#25717] Umbrellas given to guests by means of cheats do not use the full (extended) range of colours. 0.4.29 (2025-11-22) ------------------------------------------------------------------------ diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 1a4c4a51d9f6..2ec5f73cbacb 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -704,7 +704,7 @@ namespace OpenRCT2::GameActions break; case OBJECT_UMBRELLA: peep->GiveItem(ShopItem::umbrella); - peep->UmbrellaColour = ScenarioRandMax(kColourNumOriginal); + peep->UmbrellaColour = ScenarioRandMax(kColourNumNormal); peep->UpdateAnimationGroup(); break; } diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 7c0157908a8f..6a5ef0f5e37a 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 6; +constexpr uint8_t kStreamVersion = 7; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From 46e1651e2e050e752e9487227005f66256c9788c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 4 Jan 2026 09:59:31 +0100 Subject: [PATCH 172/222] Update BACKTRACE_TOKEN for v0.4.30 release --- src/openrct2/platform/Crash.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/platform/Crash.cpp b/src/openrct2/platform/Crash.cpp index 20b408e76fef..0db1a1a3a070 100644 --- a/src/openrct2/platform/Crash.cpp +++ b/src/openrct2/platform/Crash.cpp @@ -58,7 +58,7 @@ static const wchar_t* _wszArchitecture = WSZ(OPENRCT2_ARCHITECTURE); static std::map _uploadFiles; static std::mutex _uploadFilesMutex; - #define BACKTRACE_TOKEN "08f57d3bbdcf5287883670b0f6d10b6d3f8b776659ea762378b3bfdde5d99216" + #define BACKTRACE_TOKEN "97323bb36cc7c727b92d88a7f3554971fcd81166dfd427ecd671eeb4c369c64f" using namespace OpenRCT2; From b0f30a5bfaef581746842ee8e81837417a758aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 4 Jan 2026 16:56:35 +0100 Subject: [PATCH 173/222] Release v0.4.30 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings. - Improved: [#25515] Path dragging can now be disabled via multiplayer group permissions. - Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. - Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. - Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. - Improved: [#25621] Added the Polish Złoty (PLN) to the list of available currencies. - Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. - Improved: [#25662] The sprite build command is faster when building sprites from the same image file. - Change: [#21912] Toilet income is now categorised as shop sales instead of ride tickets. - Change: [#25403] Guests will not slide down the Spiral Slide if it's broken, even if they have already entered the ride structure. - Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. - Change: [#25544] The default game window size is now 1280×720px instead of 640×480px. - Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. - Fix: [#11617] Path corner connections are broken when hovering track design ghosts with paths over them in zero clearances. - Fix: [#22484] Lingering ghost entrance after placing park entrance. - Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. - Fix: [#25187] On-ride photo platform does not render as ghost when placing track design. - Fix: [#25229] Excessive logging of game actions, reduced to top-level game actions and filters ghost related ones. - Fix: [#25469] Drawing in the ui.imageManager.draw callback causes an assertion. - Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. - Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. - Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. - Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. - Fix: [#25571] Potential crash due to drawing a Crooked House ride. - Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. - Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. - Fix: [#25595] Invisible entrance is added to imported SV4 saves. - Fix: [#25601] Inspection interval of a ride gets reset when opening the construction window. - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. - Fix: [#25639] Scenery window crashes when a no longer present object is still selected. - Fix: [#25641] Desync because of mismatching inspection intervals. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. - Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. - Fix: [#25660] After saving a track design with scenery, that ride’s entrances and exits are visible in ‘Highlight path issues’ mode. - Fix: [#25717] Umbrellas given to guests by means of cheats do not use the full (extended) range of colours. --- .github/workflows/ci.yml | 2 +- debian/changelog | 82 ++++++++++++++----- distribution/changelog.txt | 4 +- .../linux/io.openrct2.openrct2.appdata.xml | 3 + distribution/macos/Info.plist | 2 +- src/openrct2-android/app/build.gradle | 4 +- src/openrct2/Version.h | 2 +- src/openrct2/network/NetworkBase.cpp | 2 +- 8 files changed, 71 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4119e7d820d3..16dd610f8596 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ env: OPENRCT2_BUILD_SERVER: GitHub OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }} BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }} - OPENRCT2_VERSION: 0.4.29 + OPENRCT2_VERSION: 0.4.30 # https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value concurrency: diff --git a/debian/changelog b/debian/changelog index 34c7ac24027f..4696ef7a1c73 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,27 +1,65 @@ +openrct2 (0.4.30-develop-1) unstable; urgency=medium + + * Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings. + * Improved: [#25515] Path dragging can now be disabled via multiplayer group permissions. + * Improved: [#25529] The map selection grid no longer redraws every frame if it has not changed. + * Improved: [#25530] Wall dragging can now be cancelled without closing the Scenery window. + * Improved: [#25575] Updated the network protocol to a new format that supports larger packets, allowing clients to connect reliably to servers with many objects or large maps. + * Improved: [#25621] Added the Polish Złoty (PLN) to the list of available currencies. + * Improved: [#25625] Renewing and refurbishing rides now also resets the downtime. + * Improved: [#25662] The sprite build command is faster when building sprites from the same image file. + * Change: [#21912] Toilet income is now categorised as shop sales instead of ride tickets. + * Change: [#25403] Guests will not slide down the Spiral Slide if it's broken, even if they have already entered the ride structure. + * Change: [#25485] Make the enlarged pressed swatch sprite more pronounced. + * Change: [#25544] The default game window size is now 1280×720px instead of 640×480px. + * Fix: [#9895] Stand-up coaster gets wrong intensity boost from the synchronisation bonus. + * Fix: [#11617] Path corner connections are broken when hovering track design ghosts with paths over them in zero clearances. + * Fix: [#22484] Lingering ghost entrance after placing park entrance. + * Fix: [#24952] Duplicate track designs when running via Steam without having RCT1 linked. + * Fix: [#25187] On-ride photo platform does not render as ghost when placing track design. + * Fix: [#25229] Excessive logging of game actions, reduced to top-level game actions and filters ghost related ones. + * Fix: [#25469] Drawing in the ui.imageManager.draw callback causes an assertion. + * Fix: [#25524] The track construction arrow does not immediately change position when deleting track pieces. + * Fix: [#25552] Clear Scenery does not show an error message about insufficient money if cash is negative. + * Fix: [#25565] Chairlift station ends are missing tunnels at certain rotations. + * Fix: [#25569] Placing park entrances in multiplayer does not show for other players, causing desyncs. + * Fix: [#25571] Potential crash due to drawing a Crooked House ride. + * Fix: [#25588] When the master server becomes unreachable the server would not register again until a restart. + * Fix: [#25592] Log flume, river rapids, & splash boats can get control failure breakdown instead of brakes failure. + * Fix: [#25595] Invisible entrance is added to imported SV4 saves. + * Fix: [#25601] Inspection interval of a ride gets reset when opening the construction window. + * Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. + * Fix: [#25639] Scenery window crashes when a no longer present object is still selected. + * Fix: [#25641] Desync because of mismatching inspection intervals. + * Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. + * Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. + * Fix: [#25660] After saving a track design with scenery, that ride’s entrances and exits are visible in ‘Highlight path issues’ mode. + * Fix: [#25717] Umbrellas given to guests by means of cheats do not use the full (extended) range of colours. + openrct2 (0.4.29-develop-1) unstable; urgency=medium -* Feature: [#25459] Wall line dragging tool. -* Improved: [#25028] Stalls now support colour presets, just like regular rides. -* Improved: [#25426] Building the track designs index is now quicker. -* Improved: [#25490] The ‘New Ride’ window can now be resized. -* Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). -* Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. -* Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. -* Fix: [#25454] Opening the land tool while building a path bridge or tunnel closes the Footpaths window. -* Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. -* Fix: [#25467] Paths are not connected together correctly in track design previews. -* Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. -* Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. -* Fix: [#25488] Crash in headless mode. -* Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. -* Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. -* Fix: [#25519] Crackling audio when sampling frequencies do not match. -* Fix: [objects#401] Round tunnels on down slopes glitch. -* Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. -* Fix: [objects#408] Australian fountain sets have confusing naming. -* Fix: [objects#409] LIM Launched Coaster trains incorrectly have a 10% intensity modifier set (original bug). -* Fix: [objects#410] Large scenery from the Wacky Worlds Africa theming have incorrect previews when using specific versions of the RCT2 base game. -* Fix: [objects#415] Penguin bobsleigh trains show incorrect sprites on the 12° down slope (original bug). + * Feature: [#25459] Wall line dragging tool. + * Improved: [#25028] Stalls now support colour presets, just like regular rides. + * Improved: [#25426] Building the track designs index is now quicker. + * Improved: [#25490] The ‘New Ride’ window can now be resized. + * Fix: [#6228] The saved queue line path connections are not preserved when placing track designs (original bug). + * Fix: [#14365] Track designs with scenery below the lowest track piece do not preview correctly. + * Fix: [#25451] Dropdown item tooltips stay open if the mouse is moved over an empty space. + * Fix: [#25454] Opening the land tool while building a path bridge or tunnel closes the Footpaths window. + * Fix: [#25461] Path connections in raised track designs are sometimes broken when placed. + * Fix: [#25467] Paths are not connected together correctly in track design previews. + * Fix: [#25476] When both RCT2 and RCT1 are present, autodetection fails. + * Fix: [#25480] The mini track design preview and price are misaligned in Enlarged UI mode. + * Fix: [#25488] Crash in headless mode. + * Fix: [#25494] The Go-Karts steep to flat track does not draw correctly in the flat side tunnel. + * Fix: [#25518] The virtual floor does not draw correctly if expanded on the positive x and y axes. + * Fix: [#25519] Crackling audio when sampling frequencies do not match. + * Fix: [objects#401] Round tunnels on down slopes glitch. + * Fix: [objects#404] Wooden Wild Mine cars incorrectly allow setting a third remap colour. + * Fix: [objects#408] Australian fountain sets have confusing naming. + * Fix: [objects#409] LIM Launched Coaster trains incorrectly have a 10% intensity modifier set (original bug). + * Fix: [objects#410] Large scenery from the Wacky Worlds Africa theming have incorrect previews when using specific versions of the RCT2 base game. + * Fix: [objects#415] Penguin bobsleigh trains show incorrect sprites on the 12° down slope (original bug). openrct2 (0.4.28-develop-1) unstable; urgency=medium diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 5c6614116934..6502243b108d 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,4 +1,4 @@ -0.4.30 (in development) +0.4.30 (2026-01-04) ------------------------------------------------------------------------ - Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings. - Improved: [#25515] Path dragging can now be disabled via multiplayer group permissions. @@ -30,7 +30,7 @@ - Fix: [#25601] Inspection interval of a ride gets reset when opening the construction window. - Fix: [#25628] Availability of AVX2 and SSE4.1 is not detected correctly. - Fix: [#25639] Scenery window crashes when a no longer present object is still selected. -- Fix: [#25641] Desync because of mismatching inspection intervals. +- Fix: [#25641] Desync because of mismatching inspection intervals. - Fix: [#25642] The selection marker for purchasing land rights is not drawn with the correct colours. - Fix: [#25646] It is possible to remove scenery and paths when setting staff patrol areas and purchasing land. - Fix: [#25660] After saving a track design with scenery, that ride’s entrances and exits are visible in ‘Highlight path issues’ mode. diff --git a/distribution/linux/io.openrct2.openrct2.appdata.xml b/distribution/linux/io.openrct2.openrct2.appdata.xml index 583a9fb40a5c..de95e3054c74 100644 --- a/distribution/linux/io.openrct2.openrct2.appdata.xml +++ b/distribution/linux/io.openrct2.openrct2.appdata.xml @@ -456,6 +456,9 @@ none + + https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.30 + https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.29 diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist index 62ef86f8abf4..bbc7d2d997a7 100644 --- a/distribution/macos/Info.plist +++ b/distribution/macos/Info.plist @@ -13,7 +13,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.4.29 + 0.4.30 CFBundleSignature ORCT LSMinimumSystemVersion diff --git a/src/openrct2-android/app/build.gradle b/src/openrct2-android/app/build.gradle index a6a9c76b7be2..983de72df2db 100644 --- a/src/openrct2-android/app/build.gradle +++ b/src/openrct2-android/app/build.gradle @@ -21,8 +21,8 @@ android { minSdkVersion 24 targetSdkVersion 36 - versionCode 16 - versionName '0.4.29' + versionCode 17 + versionName '0.4.30' externalNativeBuild { cmake { arguments '-DANDROID_STL=c++_shared', '-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON' diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h index 14674796b49a..c56269e2d09d 100644 --- a/src/openrct2/Version.h +++ b/src/openrct2/Version.h @@ -12,7 +12,7 @@ #include #define OPENRCT2_NAME "OpenRCT2" -#define kOpenRCT2Version "0.4.29" +#define kOpenRCT2Version "0.4.30" #if defined(__amd64__) || defined(_M_AMD64) #define OPENRCT2_ARCHITECTURE "x86-64" diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 6a5ef0f5e37a..019b022b78b9 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -47,7 +47,7 @@ // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kStreamVersion = 7; +constexpr uint8_t kStreamVersion = 0; const std::string kStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kStreamVersion); From 09f537e501e6ccc20554477d906f316ebe64f404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 4 Jan 2026 17:21:46 +0100 Subject: [PATCH 174/222] Start v0.4.31 --- distribution/changelog.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 6502243b108d..55e31c5b63a1 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,3 +1,6 @@ +0.4.31 (in development) +------------------------------------------------------------------------ + 0.4.30 (2026-01-04) ------------------------------------------------------------------------ - Improved: [#24912] Staff now use an appropriate standing animation while waiting at level crossings. From 0319dc2fff0d25187fa9f528e27355ddde34f976 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Mon, 5 Jan 2026 14:08:33 +0100 Subject: [PATCH 175/222] Fix #25739: Freezes when exceeding 384 items per tab in New Ride (#25740) --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/NewRide.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 55e31c5b63a1..4c1b5e6bfd1c 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.31 (in development) ------------------------------------------------------------------------ +- Fix: [#25739] Game freezes when a tab in the New Ride window contains more than 384 items. 0.4.30 (2026-01-04) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 0eb1ec678bf7..2fed074aa856 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::Ui::Windows { static constexpr StringId WindowTitle = kStringIdNone; static constexpr int32_t kWindowHeightResearch = 194; - static constexpr int32_t RideListItemsMax = 384; + static constexpr int32_t RideListItemsMax = kMaxRideObjects; static constexpr int32_t RideTabCount = 6; static constexpr int32_t GroupByTrackTypeWidth = 172; static constexpr int32_t kScrollItemSize = 116; From 40aaf97c07083f9a90602fd680cb1bf9c5254102 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Mon, 5 Jan 2026 14:42:59 +0100 Subject: [PATCH 176/222] Update copyright years to 2026 (#25741) --- src/openrct2-cli/Cli.cpp | 2 +- src/openrct2-ui/CursorData.cpp | 2 +- src/openrct2-ui/CursorData.h | 2 +- src/openrct2-ui/CursorRepository.cpp | 2 +- src/openrct2-ui/CursorRepository.h | 2 +- src/openrct2-ui/ProvisionalElements.cpp | 2 +- src/openrct2-ui/ProvisionalElements.h | 2 +- src/openrct2-ui/SDLException.cpp | 2 +- src/openrct2-ui/SDLException.h | 2 +- src/openrct2-ui/TextComposition.cpp | 2 +- src/openrct2-ui/TextComposition.h | 2 +- src/openrct2-ui/Ui.cpp | 2 +- src/openrct2-ui/Ui.h | 2 +- src/openrct2-ui/UiContext.Android.cpp | 2 +- src/openrct2-ui/UiContext.Linux.cpp | 2 +- src/openrct2-ui/UiContext.Win32.cpp | 2 +- src/openrct2-ui/UiContext.cpp | 2 +- src/openrct2-ui/UiContext.h | 2 +- src/openrct2-ui/UiContext.macOS.mm | 2 +- src/openrct2-ui/UiStringIds.h | 2 +- src/openrct2-ui/WindowManager.cpp | 2 +- src/openrct2-ui/WindowManager.h | 2 +- src/openrct2-ui/audio/AudioChannel.cpp | 2 +- src/openrct2-ui/audio/AudioContext.cpp | 2 +- src/openrct2-ui/audio/AudioContext.h | 2 +- src/openrct2-ui/audio/AudioFormat.h | 2 +- src/openrct2-ui/audio/AudioMixer.cpp | 2 +- src/openrct2-ui/audio/AudioMixer.h | 2 +- src/openrct2-ui/audio/FlacAudioSource.cpp | 2 +- src/openrct2-ui/audio/MemoryAudioSource.cpp | 2 +- src/openrct2-ui/audio/OggAudioSource.cpp | 2 +- src/openrct2-ui/audio/SDLAudioSource.cpp | 2 +- src/openrct2-ui/audio/SDLAudioSource.h | 2 +- src/openrct2-ui/audio/WavAudioSource.cpp | 2 +- src/openrct2-ui/drawing/BitmapReader.cpp | 2 +- src/openrct2-ui/drawing/BitmapReader.h | 2 +- src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp | 2 +- .../drawing/engines/HardwareDisplayDrawingEngine.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h | 2 +- .../drawing/engines/opengl/ApplyTransparencyShader.cpp | 2 +- .../drawing/engines/opengl/ApplyTransparencyShader.h | 2 +- src/openrct2-ui/drawing/engines/opengl/CopyRectShader.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/CopyRectShader.h | 2 +- src/openrct2-ui/drawing/engines/opengl/DrawCommands.h | 2 +- src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h | 2 +- src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h | 2 +- src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h | 2 +- src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h | 2 +- src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/TextureCache.h | 2 +- src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp | 2 +- src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h | 2 +- src/openrct2-ui/input/InputManager.cpp | 2 +- src/openrct2-ui/input/InputManager.h | 2 +- src/openrct2-ui/input/MouseInput.cpp | 2 +- src/openrct2-ui/input/MouseInput.h | 2 +- src/openrct2-ui/input/ShortcutIds.h | 2 +- src/openrct2-ui/input/ShortcutInput.cpp | 2 +- src/openrct2-ui/input/ShortcutManager.cpp | 2 +- src/openrct2-ui/input/ShortcutManager.h | 2 +- src/openrct2-ui/input/Shortcuts.cpp | 2 +- src/openrct2-ui/interface/Dropdown.h | 2 +- src/openrct2-ui/interface/FileBrowser.cpp | 2 +- src/openrct2-ui/interface/FileBrowser.h | 2 +- src/openrct2-ui/interface/Graph.cpp | 2 +- src/openrct2-ui/interface/Graph.h | 2 +- src/openrct2-ui/interface/InGameConsole.cpp | 2 +- src/openrct2-ui/interface/InGameConsole.h | 2 +- src/openrct2-ui/interface/LandTool.cpp | 2 +- src/openrct2-ui/interface/LandTool.h | 2 +- src/openrct2-ui/interface/Objective.cpp | 2 +- src/openrct2-ui/interface/Objective.h | 2 +- src/openrct2-ui/interface/Theme.cpp | 2 +- src/openrct2-ui/interface/Theme.h | 2 +- src/openrct2-ui/interface/Viewport.h | 2 +- src/openrct2-ui/interface/ViewportInteraction.cpp | 2 +- src/openrct2-ui/interface/ViewportInteraction.h | 2 +- src/openrct2-ui/interface/ViewportQuery.cpp | 2 +- src/openrct2-ui/interface/ViewportQuery.h | 2 +- src/openrct2-ui/interface/Widget.cpp | 2 +- src/openrct2-ui/interface/Widget.h | 2 +- src/openrct2-ui/interface/Window.cpp | 2 +- src/openrct2-ui/interface/Window.h | 2 +- src/openrct2-ui/ride/Construction.cpp | 2 +- src/openrct2-ui/ride/Construction.h | 2 +- src/openrct2-ui/scripting/CustomImages.cpp | 2 +- src/openrct2-ui/scripting/CustomImages.h | 2 +- src/openrct2-ui/scripting/CustomListView.cpp | 2 +- src/openrct2-ui/scripting/CustomListView.h | 2 +- src/openrct2-ui/scripting/CustomMenu.cpp | 2 +- src/openrct2-ui/scripting/CustomMenu.h | 2 +- src/openrct2-ui/scripting/CustomWindow.cpp | 2 +- src/openrct2-ui/scripting/CustomWindow.h | 2 +- src/openrct2-ui/scripting/ScGraphicsContext.hpp | 2 +- src/openrct2-ui/scripting/ScImageManager.hpp | 2 +- src/openrct2-ui/scripting/ScTileSelection.hpp | 2 +- src/openrct2-ui/scripting/ScTitleSequence.hpp | 2 +- src/openrct2-ui/scripting/ScUi.hpp | 2 +- src/openrct2-ui/scripting/ScViewport.hpp | 2 +- src/openrct2-ui/scripting/ScWidget.hpp | 2 +- src/openrct2-ui/scripting/ScWindow.hpp | 2 +- src/openrct2-ui/scripting/UiExtensions.cpp | 2 +- src/openrct2-ui/scripting/UiExtensions.h | 2 +- src/openrct2-ui/title/TitleSequencePlayer.cpp | 2 +- src/openrct2-ui/title/TitleSequencePlayer.h | 2 +- src/openrct2-ui/windows/About.cpp | 2 +- src/openrct2-ui/windows/AssetPacks.cpp | 2 +- src/openrct2-ui/windows/Banner.cpp | 2 +- src/openrct2-ui/windows/Changelog.cpp | 2 +- src/openrct2-ui/windows/Cheats.cpp | 2 +- src/openrct2-ui/windows/ClearScenery.cpp | 2 +- src/openrct2-ui/windows/CustomCurrency.cpp | 2 +- src/openrct2-ui/windows/DebugPaint.cpp | 2 +- src/openrct2-ui/windows/DemolishRidePrompt.cpp | 2 +- src/openrct2-ui/windows/Dropdown.cpp | 2 +- src/openrct2-ui/windows/EditorBottomToolbar.cpp | 2 +- src/openrct2-ui/windows/EditorInventionsList.cpp | 2 +- src/openrct2-ui/windows/EditorObjectSelection.cpp | 2 +- src/openrct2-ui/windows/EditorParkEntrance.cpp | 2 +- src/openrct2-ui/windows/EditorScenarioOptions.cpp | 2 +- src/openrct2-ui/windows/Error.cpp | 2 +- src/openrct2-ui/windows/Finances.cpp | 2 +- src/openrct2-ui/windows/Footpath.cpp | 2 +- src/openrct2-ui/windows/GameBottomToolbar.cpp | 2 +- src/openrct2-ui/windows/Guest.cpp | 2 +- src/openrct2-ui/windows/GuestList.cpp | 2 +- src/openrct2-ui/windows/InstallTrack.cpp | 2 +- src/openrct2-ui/windows/Land.cpp | 2 +- src/openrct2-ui/windows/LandRights.cpp | 2 +- src/openrct2-ui/windows/LoadSave.cpp | 2 +- src/openrct2-ui/windows/Main.cpp | 2 +- src/openrct2-ui/windows/Map.cpp | 2 +- src/openrct2-ui/windows/MapGen.cpp | 2 +- src/openrct2-ui/windows/MapTooltip.cpp | 2 +- src/openrct2-ui/windows/MazeConstruction.cpp | 2 +- src/openrct2-ui/windows/Multiplayer.cpp | 2 +- src/openrct2-ui/windows/NetworkStatus.cpp | 2 +- src/openrct2-ui/windows/NewCampaign.cpp | 2 +- src/openrct2-ui/windows/NewRide.cpp | 2 +- src/openrct2-ui/windows/News.cpp | 2 +- src/openrct2-ui/windows/ObjectLoadError.cpp | 2 +- src/openrct2-ui/windows/Options.cpp | 2 +- src/openrct2-ui/windows/OverwritePrompt.cpp | 2 +- src/openrct2-ui/windows/Park.cpp | 2 +- src/openrct2-ui/windows/PatrolArea.cpp | 2 +- src/openrct2-ui/windows/Player.cpp | 2 +- src/openrct2-ui/windows/ProgressWindow.cpp | 2 +- src/openrct2-ui/windows/RefurbishRidePrompt.cpp | 2 +- src/openrct2-ui/windows/Research.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 2 +- src/openrct2-ui/windows/RideConstruction.cpp | 2 +- src/openrct2-ui/windows/RideList.cpp | 2 +- src/openrct2-ui/windows/SavePrompt.cpp | 2 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 2 +- src/openrct2-ui/windows/Scenery.cpp | 2 +- src/openrct2-ui/windows/SceneryScatter.cpp | 2 +- src/openrct2-ui/windows/ServerList.cpp | 2 +- src/openrct2-ui/windows/ServerStart.cpp | 2 +- src/openrct2-ui/windows/ShortcutKeys.cpp | 2 +- src/openrct2-ui/windows/Sign.cpp | 2 +- src/openrct2-ui/windows/Staff.cpp | 2 +- src/openrct2-ui/windows/StaffFirePrompt.cpp | 2 +- src/openrct2-ui/windows/StaffList.cpp | 2 +- src/openrct2-ui/windows/TextInput.cpp | 2 +- src/openrct2-ui/windows/Themes.cpp | 2 +- src/openrct2-ui/windows/TileInspector.cpp | 2 +- src/openrct2-ui/windows/TitleExit.cpp | 2 +- src/openrct2-ui/windows/TitleLogo.cpp | 2 +- src/openrct2-ui/windows/TitleMenu.cpp | 2 +- src/openrct2-ui/windows/TitleOptions.cpp | 2 +- src/openrct2-ui/windows/TitleVersion.cpp | 2 +- src/openrct2-ui/windows/Tooltip.cpp | 2 +- src/openrct2-ui/windows/TopToolbar.cpp | 2 +- src/openrct2-ui/windows/TrackDesignManage.cpp | 2 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 2 +- src/openrct2-ui/windows/TrackList.cpp | 2 +- src/openrct2-ui/windows/Transparency.cpp | 2 +- src/openrct2-ui/windows/ViewClipping.cpp | 2 +- src/openrct2-ui/windows/Viewport.cpp | 2 +- src/openrct2-ui/windows/Water.cpp | 2 +- src/openrct2-ui/windows/Windows.h | 2 +- src/openrct2-win/openrct2-win.cpp | 2 +- src/openrct2/AssetPack.cpp | 2 +- src/openrct2/AssetPack.h | 2 +- src/openrct2/AssetPackManager.cpp | 2 +- src/openrct2/AssetPackManager.h | 2 +- src/openrct2/Cheats.cpp | 2 +- src/openrct2/Cheats.h | 2 +- src/openrct2/Context.cpp | 2 +- src/openrct2/Context.h | 2 +- src/openrct2/Date.cpp | 2 +- src/openrct2/Date.h | 2 +- src/openrct2/Diagnostic.cpp | 2 +- src/openrct2/Diagnostic.h | 2 +- src/openrct2/Editor.cpp | 2 +- src/openrct2/Editor.h | 2 +- src/openrct2/EditorObjectSelectionSession.cpp | 2 +- src/openrct2/EditorObjectSelectionSession.h | 2 +- src/openrct2/FileClassifier.cpp | 2 +- src/openrct2/FileClassifier.h | 2 +- src/openrct2/Game.cpp | 2 +- src/openrct2/Game.h | 2 +- src/openrct2/GameState.cpp | 2 +- src/openrct2/GameState.h | 2 +- src/openrct2/GameStateSnapshots.cpp | 2 +- src/openrct2/GameStateSnapshots.h | 2 +- src/openrct2/Identifiers.h | 2 +- src/openrct2/Input.cpp | 2 +- src/openrct2/Input.h | 2 +- src/openrct2/Limits.h | 2 +- src/openrct2/OpenRCT2.cpp | 2 +- src/openrct2/OpenRCT2.h | 2 +- src/openrct2/ParkImporter.cpp | 2 +- src/openrct2/ParkImporter.h | 2 +- src/openrct2/PlatformEnvironment.cpp | 2 +- src/openrct2/PlatformEnvironment.h | 2 +- src/openrct2/ReplayManager.cpp | 2 +- src/openrct2/ReplayManager.h | 2 +- src/openrct2/SpriteIds.h | 2 +- src/openrct2/System.hpp | 2 +- src/openrct2/TrackImporter.cpp | 2 +- src/openrct2/TrackImporter.h | 2 +- src/openrct2/Version.cpp | 2 +- src/openrct2/Version.h | 2 +- src/openrct2/actions/BalloonPressAction.cpp | 2 +- src/openrct2/actions/BalloonPressAction.h | 2 +- src/openrct2/actions/BannerPlaceAction.cpp | 2 +- src/openrct2/actions/BannerPlaceAction.h | 2 +- src/openrct2/actions/BannerRemoveAction.cpp | 2 +- src/openrct2/actions/BannerRemoveAction.h | 2 +- src/openrct2/actions/BannerSetColourAction.cpp | 2 +- src/openrct2/actions/BannerSetColourAction.h | 2 +- src/openrct2/actions/BannerSetNameAction.cpp | 2 +- src/openrct2/actions/BannerSetNameAction.h | 2 +- src/openrct2/actions/BannerSetStyleAction.cpp | 2 +- src/openrct2/actions/BannerSetStyleAction.h | 2 +- src/openrct2/actions/CheatSetAction.cpp | 2 +- src/openrct2/actions/CheatSetAction.h | 2 +- src/openrct2/actions/ClearAction.cpp | 2 +- src/openrct2/actions/ClearAction.h | 2 +- src/openrct2/actions/CommandFlag.h | 2 +- src/openrct2/actions/CustomAction.cpp | 2 +- src/openrct2/actions/CustomAction.h | 2 +- src/openrct2/actions/FootpathAdditionPlaceAction.cpp | 2 +- src/openrct2/actions/FootpathAdditionPlaceAction.h | 2 +- src/openrct2/actions/FootpathAdditionRemoveAction.cpp | 2 +- src/openrct2/actions/FootpathAdditionRemoveAction.h | 2 +- src/openrct2/actions/FootpathLayoutPlaceAction.cpp | 2 +- src/openrct2/actions/FootpathLayoutPlaceAction.h | 2 +- src/openrct2/actions/FootpathPlaceAction.cpp | 2 +- src/openrct2/actions/FootpathPlaceAction.h | 2 +- src/openrct2/actions/FootpathRemoveAction.cpp | 2 +- src/openrct2/actions/FootpathRemoveAction.h | 2 +- src/openrct2/actions/GameAction.cpp | 2 +- src/openrct2/actions/GameAction.h | 2 +- src/openrct2/actions/GameActionRegistry.cpp | 2 +- src/openrct2/actions/GameActionResult.h | 2 +- src/openrct2/actions/GameSetSpeedAction.cpp | 2 +- src/openrct2/actions/GameSetSpeedAction.h | 2 +- src/openrct2/actions/GuestSetFlagsAction.cpp | 2 +- src/openrct2/actions/GuestSetFlagsAction.h | 2 +- src/openrct2/actions/GuestSetNameAction.cpp | 2 +- src/openrct2/actions/GuestSetNameAction.h | 2 +- src/openrct2/actions/LandBuyRightsAction.cpp | 2 +- src/openrct2/actions/LandBuyRightsAction.h | 2 +- src/openrct2/actions/LandLowerAction.cpp | 2 +- src/openrct2/actions/LandLowerAction.h | 2 +- src/openrct2/actions/LandRaiseAction.cpp | 2 +- src/openrct2/actions/LandRaiseAction.h | 2 +- src/openrct2/actions/LandSetHeightAction.cpp | 2 +- src/openrct2/actions/LandSetHeightAction.h | 2 +- src/openrct2/actions/LandSetRightsAction.cpp | 2 +- src/openrct2/actions/LandSetRightsAction.h | 2 +- src/openrct2/actions/LandSmoothAction.cpp | 2 +- src/openrct2/actions/LandSmoothAction.h | 2 +- src/openrct2/actions/LargeSceneryPlaceAction.cpp | 2 +- src/openrct2/actions/LargeSceneryPlaceAction.h | 2 +- src/openrct2/actions/LargeSceneryRemoveAction.cpp | 2 +- src/openrct2/actions/LargeSceneryRemoveAction.h | 2 +- src/openrct2/actions/LargeScenerySetColourAction.cpp | 2 +- src/openrct2/actions/LargeScenerySetColourAction.h | 2 +- src/openrct2/actions/LoadOrQuitAction.cpp | 2 +- src/openrct2/actions/LoadOrQuitAction.h | 2 +- src/openrct2/actions/MapChangeSizeAction.cpp | 2 +- src/openrct2/actions/MapChangeSizeAction.h | 2 +- src/openrct2/actions/MazePlaceTrackAction.cpp | 2 +- src/openrct2/actions/MazePlaceTrackAction.h | 2 +- src/openrct2/actions/MazeSetTrackAction.cpp | 2 +- src/openrct2/actions/MazeSetTrackAction.h | 2 +- src/openrct2/actions/NetworkModifyGroupAction.cpp | 2 +- src/openrct2/actions/NetworkModifyGroupAction.h | 2 +- src/openrct2/actions/ParkEntrancePlaceAction.cpp | 2 +- src/openrct2/actions/ParkEntrancePlaceAction.h | 2 +- src/openrct2/actions/ParkEntranceRemoveAction.cpp | 2 +- src/openrct2/actions/ParkEntranceRemoveAction.h | 2 +- src/openrct2/actions/ParkMarketingAction.cpp | 2 +- src/openrct2/actions/ParkMarketingAction.h | 2 +- src/openrct2/actions/ParkSetDateAction.cpp | 2 +- src/openrct2/actions/ParkSetDateAction.h | 2 +- src/openrct2/actions/ParkSetEntranceFeeAction.cpp | 2 +- src/openrct2/actions/ParkSetEntranceFeeAction.h | 2 +- src/openrct2/actions/ParkSetLoanAction.cpp | 2 +- src/openrct2/actions/ParkSetLoanAction.h | 2 +- src/openrct2/actions/ParkSetNameAction.cpp | 2 +- src/openrct2/actions/ParkSetNameAction.h | 2 +- src/openrct2/actions/ParkSetParameterAction.cpp | 2 +- src/openrct2/actions/ParkSetParameterAction.h | 2 +- src/openrct2/actions/ParkSetResearchFundingAction.cpp | 2 +- src/openrct2/actions/ParkSetResearchFundingAction.h | 2 +- src/openrct2/actions/PauseToggleAction.cpp | 2 +- src/openrct2/actions/PauseToggleAction.h | 2 +- src/openrct2/actions/PeepPickupAction.cpp | 2 +- src/openrct2/actions/PeepPickupAction.h | 2 +- src/openrct2/actions/PeepSpawnPlaceAction.cpp | 2 +- src/openrct2/actions/PeepSpawnPlaceAction.h | 2 +- src/openrct2/actions/PlayerKickAction.cpp | 2 +- src/openrct2/actions/PlayerKickAction.h | 2 +- src/openrct2/actions/PlayerSetGroupAction.cpp | 2 +- src/openrct2/actions/PlayerSetGroupAction.h | 2 +- src/openrct2/actions/ResultWithMessage.h | 2 +- src/openrct2/actions/RideCreateAction.cpp | 2 +- src/openrct2/actions/RideCreateAction.h | 2 +- src/openrct2/actions/RideDemolishAction.cpp | 2 +- src/openrct2/actions/RideDemolishAction.h | 2 +- src/openrct2/actions/RideEntranceExitPlaceAction.cpp | 2 +- src/openrct2/actions/RideEntranceExitPlaceAction.h | 2 +- src/openrct2/actions/RideEntranceExitRemoveAction.cpp | 2 +- src/openrct2/actions/RideEntranceExitRemoveAction.h | 2 +- src/openrct2/actions/RideFreezeRatingAction.cpp | 2 +- src/openrct2/actions/RideFreezeRatingAction.h | 2 +- src/openrct2/actions/RideSetAppearanceAction.cpp | 2 +- src/openrct2/actions/RideSetAppearanceAction.h | 2 +- src/openrct2/actions/RideSetColourSchemeAction.cpp | 2 +- src/openrct2/actions/RideSetColourSchemeAction.h | 2 +- src/openrct2/actions/RideSetNameAction.cpp | 2 +- src/openrct2/actions/RideSetNameAction.h | 2 +- src/openrct2/actions/RideSetPriceAction.cpp | 2 +- src/openrct2/actions/RideSetPriceAction.h | 2 +- src/openrct2/actions/RideSetSettingAction.cpp | 2 +- src/openrct2/actions/RideSetSettingAction.h | 2 +- src/openrct2/actions/RideSetStatusAction.cpp | 2 +- src/openrct2/actions/RideSetStatusAction.h | 2 +- src/openrct2/actions/RideSetVehicleAction.cpp | 2 +- src/openrct2/actions/RideSetVehicleAction.h | 2 +- src/openrct2/actions/ScenarioSetSettingAction.cpp | 2 +- src/openrct2/actions/ScenarioSetSettingAction.h | 2 +- src/openrct2/actions/ScenerySetRestrictedAction.cpp | 2 +- src/openrct2/actions/ScenerySetRestrictedAction.h | 2 +- src/openrct2/actions/SignSetNameAction.cpp | 2 +- src/openrct2/actions/SignSetNameAction.h | 2 +- src/openrct2/actions/SignSetStyleAction.cpp | 2 +- src/openrct2/actions/SignSetStyleAction.h | 2 +- src/openrct2/actions/SmallSceneryPlaceAction.cpp | 2 +- src/openrct2/actions/SmallSceneryPlaceAction.h | 2 +- src/openrct2/actions/SmallSceneryRemoveAction.cpp | 2 +- src/openrct2/actions/SmallSceneryRemoveAction.h | 2 +- src/openrct2/actions/SmallScenerySetColourAction.cpp | 2 +- src/openrct2/actions/SmallScenerySetColourAction.h | 2 +- src/openrct2/actions/StaffFireAction.cpp | 2 +- src/openrct2/actions/StaffFireAction.h | 2 +- src/openrct2/actions/StaffHireNewAction.cpp | 2 +- src/openrct2/actions/StaffHireNewAction.h | 2 +- src/openrct2/actions/StaffSetColourAction.cpp | 2 +- src/openrct2/actions/StaffSetColourAction.h | 2 +- src/openrct2/actions/StaffSetCostumeAction.cpp | 2 +- src/openrct2/actions/StaffSetCostumeAction.h | 2 +- src/openrct2/actions/StaffSetNameAction.cpp | 2 +- src/openrct2/actions/StaffSetNameAction.h | 2 +- src/openrct2/actions/StaffSetOrdersAction.cpp | 2 +- src/openrct2/actions/StaffSetOrdersAction.h | 2 +- src/openrct2/actions/StaffSetPatrolAreaAction.cpp | 2 +- src/openrct2/actions/StaffSetPatrolAreaAction.h | 2 +- src/openrct2/actions/SurfaceSetStyleAction.cpp | 2 +- src/openrct2/actions/SurfaceSetStyleAction.h | 2 +- src/openrct2/actions/TileModifyAction.cpp | 2 +- src/openrct2/actions/TileModifyAction.h | 2 +- src/openrct2/actions/TrackDesignAction.cpp | 2 +- src/openrct2/actions/TrackDesignAction.h | 2 +- src/openrct2/actions/TrackPlaceAction.cpp | 2 +- src/openrct2/actions/TrackPlaceAction.h | 2 +- src/openrct2/actions/TrackRemoveAction.cpp | 2 +- src/openrct2/actions/TrackRemoveAction.h | 2 +- src/openrct2/actions/TrackSetBrakeSpeedAction.cpp | 2 +- src/openrct2/actions/TrackSetBrakeSpeedAction.h | 2 +- src/openrct2/actions/WallPlaceAction.cpp | 2 +- src/openrct2/actions/WallPlaceAction.h | 2 +- src/openrct2/actions/WallRemoveAction.cpp | 2 +- src/openrct2/actions/WallRemoveAction.h | 2 +- src/openrct2/actions/WallSetColourAction.cpp | 2 +- src/openrct2/actions/WallSetColourAction.h | 2 +- src/openrct2/actions/WaterLowerAction.cpp | 2 +- src/openrct2/actions/WaterLowerAction.h | 2 +- src/openrct2/actions/WaterRaiseAction.cpp | 2 +- src/openrct2/actions/WaterRaiseAction.h | 2 +- src/openrct2/actions/WaterSetHeightAction.cpp | 2 +- src/openrct2/actions/WaterSetHeightAction.h | 2 +- src/openrct2/audio/Audio.cpp | 2 +- src/openrct2/audio/Audio.h | 2 +- src/openrct2/audio/AudioChannel.h | 2 +- src/openrct2/audio/AudioContext.h | 2 +- src/openrct2/audio/AudioMixer.h | 2 +- src/openrct2/audio/AudioSource.h | 2 +- src/openrct2/audio/DummyAudioContext.cpp | 2 +- src/openrct2/command_line/CommandLine.cpp | 2 +- src/openrct2/command_line/CommandLine.hpp | 2 +- src/openrct2/command_line/ConvertCommand.cpp | 2 +- src/openrct2/command_line/ParkInfoCommands.cpp | 2 +- src/openrct2/command_line/RootCommands.cpp | 2 +- src/openrct2/command_line/ScreenshotCommands.cpp | 2 +- src/openrct2/command_line/SimulateCommands.cpp | 2 +- src/openrct2/command_line/UriHandler.cpp | 2 +- src/openrct2/command_line/sprite/SpriteAppend.cpp | 2 +- src/openrct2/command_line/sprite/SpriteBuild.cpp | 2 +- src/openrct2/command_line/sprite/SpriteCombine.cpp | 2 +- src/openrct2/command_line/sprite/SpriteCommands.cpp | 2 +- src/openrct2/command_line/sprite/SpriteCommands.h | 2 +- src/openrct2/command_line/sprite/SpriteCreate.cpp | 2 +- src/openrct2/command_line/sprite/SpriteDetails.cpp | 2 +- src/openrct2/command_line/sprite/SpriteExport.cpp | 2 +- src/openrct2/command_line/sprite/SpriteExportAll.cpp | 2 +- src/openrct2/command_line/sprite/SpriteExportObject.cpp | 2 +- src/openrct2/command_line/sprite/SpriteFile.cpp | 2 +- src/openrct2/command_line/sprite/SpriteFile.h | 2 +- src/openrct2/config/Config.cpp | 2 +- src/openrct2/config/Config.h | 2 +- src/openrct2/config/ConfigEnum.hpp | 2 +- src/openrct2/config/ConfigTypes.h | 2 +- src/openrct2/config/IniReader.cpp | 2 +- src/openrct2/config/IniReader.hpp | 2 +- src/openrct2/config/IniWriter.cpp | 2 +- src/openrct2/config/IniWriter.hpp | 2 +- src/openrct2/core/Algorithm.hpp | 2 +- src/openrct2/core/BackgroundWorker.hpp | 2 +- src/openrct2/core/BitSet.hpp | 2 +- src/openrct2/core/CallingConventions.h | 2 +- src/openrct2/core/ChecksumStream.cpp | 2 +- src/openrct2/core/ChecksumStream.h | 2 +- src/openrct2/core/CircularBuffer.h | 2 +- src/openrct2/core/CodepointView.hpp | 2 +- src/openrct2/core/Collections.hpp | 2 +- src/openrct2/core/Compression.cpp | 2 +- src/openrct2/core/Compression.h | 2 +- src/openrct2/core/Console.cpp | 2 +- src/openrct2/core/Console.hpp | 2 +- src/openrct2/core/Crypt.CNG.cpp | 2 +- src/openrct2/core/Crypt.OpenRCT2.cpp | 2 +- src/openrct2/core/Crypt.OpenSSL.cpp | 2 +- src/openrct2/core/Crypt.h | 2 +- src/openrct2/core/DataSerialiser.h | 2 +- src/openrct2/core/DataSerialiserTag.h | 2 +- src/openrct2/core/DataSerialiserTraits.h | 2 +- src/openrct2/core/DateTime.h | 2 +- src/openrct2/core/Diagnostics.cpp | 2 +- src/openrct2/core/Diagnostics.hpp | 2 +- src/openrct2/core/Endianness.h | 2 +- src/openrct2/core/EnumMap.hpp | 2 +- src/openrct2/core/EnumUtils.hpp | 2 +- src/openrct2/core/File.cpp | 2 +- src/openrct2/core/File.h | 2 +- src/openrct2/core/FileIndex.hpp | 2 +- src/openrct2/core/FileScanner.cpp | 2 +- src/openrct2/core/FileScanner.h | 2 +- src/openrct2/core/FileStream.cpp | 2 +- src/openrct2/core/FileStream.h | 2 +- src/openrct2/core/FileSystem.hpp | 2 +- src/openrct2/core/FileWatcher.cpp | 2 +- src/openrct2/core/FileWatcher.h | 2 +- src/openrct2/core/FixedPoint.hpp | 2 +- src/openrct2/core/FlagHolder.hpp | 2 +- src/openrct2/core/GroupVector.hpp | 2 +- src/openrct2/core/Guard.cpp | 2 +- src/openrct2/core/Guard.hpp | 2 +- src/openrct2/core/Http.Android.cpp | 2 +- src/openrct2/core/Http.WinHttp.cpp | 2 +- src/openrct2/core/Http.cURL.cpp | 2 +- src/openrct2/core/Http.h | 2 +- src/openrct2/core/IStream.cpp | 2 +- src/openrct2/core/IStream.hpp | 2 +- src/openrct2/core/Identifier.hpp | 2 +- src/openrct2/core/Imaging.cpp | 2 +- src/openrct2/core/Imaging.h | 2 +- src/openrct2/core/JobPool.cpp | 2 +- src/openrct2/core/JobPool.h | 2 +- src/openrct2/core/Json.cpp | 2 +- src/openrct2/core/Json.hpp | 2 +- src/openrct2/core/JsonFwd.hpp | 2 +- src/openrct2/core/Memory.hpp | 2 +- src/openrct2/core/MemoryStream.cpp | 2 +- src/openrct2/core/MemoryStream.h | 2 +- src/openrct2/core/Meta.hpp | 2 +- src/openrct2/core/Money.hpp | 2 +- src/openrct2/core/Numerics.hpp | 2 +- src/openrct2/core/OrcaStream.hpp | 2 +- src/openrct2/core/Path.cpp | 2 +- src/openrct2/core/Path.hpp | 2 +- src/openrct2/core/RTL.FriBidi.cpp | 2 +- src/openrct2/core/RTL.ICU.cpp | 2 +- src/openrct2/core/RTL.h | 2 +- src/openrct2/core/Random.hpp | 2 +- src/openrct2/core/Range.hpp | 2 +- src/openrct2/core/Speed.hpp | 2 +- src/openrct2/core/StreamBuffer.cpp | 2 +- src/openrct2/core/StreamBuffer.hpp | 2 +- src/openrct2/core/String.cpp | 2 +- src/openrct2/core/String.hpp | 2 +- src/openrct2/core/StringBuilder.cpp | 2 +- src/openrct2/core/StringBuilder.h | 2 +- src/openrct2/core/StringReader.cpp | 2 +- src/openrct2/core/StringReader.h | 2 +- src/openrct2/core/StringTypes.h | 2 +- src/openrct2/core/Timer.hpp | 2 +- src/openrct2/core/UTF8.cpp | 2 +- src/openrct2/core/UTF8.h | 2 +- src/openrct2/core/UnicodeChar.h | 2 +- src/openrct2/core/UnitConversion.cpp | 2 +- src/openrct2/core/UnitConversion.h | 2 +- src/openrct2/core/Zip.cpp | 2 +- src/openrct2/core/Zip.h | 2 +- src/openrct2/core/ZipAndroid.cpp | 2 +- src/openrct2/core/ZipStream.hpp | 2 +- src/openrct2/drawing/AVX2Drawing.cpp | 2 +- src/openrct2/drawing/Drawing.Sprite.BMP.cpp | 2 +- src/openrct2/drawing/Drawing.Sprite.RLE.cpp | 2 +- src/openrct2/drawing/Drawing.Sprite.cpp | 2 +- src/openrct2/drawing/Drawing.String.cpp | 2 +- src/openrct2/drawing/Drawing.String.h | 2 +- src/openrct2/drawing/Drawing.cpp | 2 +- src/openrct2/drawing/Drawing.h | 2 +- src/openrct2/drawing/DrawingLock.hpp | 2 +- src/openrct2/drawing/FilterPaletteIds.h | 2 +- src/openrct2/drawing/Font.cpp | 2 +- src/openrct2/drawing/Font.h | 2 +- src/openrct2/drawing/IDrawingContext.h | 2 +- src/openrct2/drawing/IDrawingEngine.h | 2 +- src/openrct2/drawing/Image.cpp | 2 +- src/openrct2/drawing/Image.h | 2 +- src/openrct2/drawing/ImageId.hpp | 2 +- src/openrct2/drawing/ImageImporter.cpp | 2 +- src/openrct2/drawing/ImageImporter.h | 2 +- src/openrct2/drawing/ImageIndexType.h | 2 +- src/openrct2/drawing/LightFX.cpp | 2 +- src/openrct2/drawing/LightFX.h | 2 +- src/openrct2/drawing/Line.cpp | 2 +- src/openrct2/drawing/NewDrawing.cpp | 2 +- src/openrct2/drawing/NewDrawing.h | 2 +- src/openrct2/drawing/Rectangle.cpp | 2 +- src/openrct2/drawing/Rectangle.h | 2 +- src/openrct2/drawing/RenderTarget.cpp | 2 +- src/openrct2/drawing/RenderTarget.h | 2 +- src/openrct2/drawing/SSE41Drawing.cpp | 2 +- src/openrct2/drawing/ScrollingText.cpp | 2 +- src/openrct2/drawing/ScrollingText.h | 2 +- src/openrct2/drawing/TTF.cpp | 2 +- src/openrct2/drawing/TTF.h | 2 +- src/openrct2/drawing/Text.cpp | 2 +- src/openrct2/drawing/Text.h | 2 +- src/openrct2/drawing/Weather.cpp | 2 +- src/openrct2/drawing/Weather.h | 2 +- src/openrct2/drawing/X8DrawingEngine.cpp | 2 +- src/openrct2/drawing/X8DrawingEngine.h | 2 +- src/openrct2/entity/Balloon.cpp | 2 +- src/openrct2/entity/Balloon.h | 2 +- src/openrct2/entity/Duck.cpp | 2 +- src/openrct2/entity/Duck.h | 2 +- src/openrct2/entity/EntityBase.cpp | 2 +- src/openrct2/entity/EntityList.h | 2 +- src/openrct2/entity/EntityRegistry.cpp | 2 +- src/openrct2/entity/EntityRegistry.h | 2 +- src/openrct2/entity/EntityTweener.cpp | 2 +- src/openrct2/entity/EntityTweener.h | 2 +- src/openrct2/entity/Fountain.cpp | 2 +- src/openrct2/entity/Fountain.h | 2 +- src/openrct2/entity/Guest.cpp | 2 +- src/openrct2/entity/Guest.h | 2 +- src/openrct2/entity/Litter.h | 2 +- src/openrct2/entity/MoneyEffect.cpp | 2 +- src/openrct2/entity/MoneyEffect.h | 2 +- src/openrct2/entity/Particle.cpp | 2 +- src/openrct2/entity/Particle.h | 2 +- src/openrct2/entity/PatrolArea.cpp | 2 +- src/openrct2/entity/PatrolArea.h | 2 +- src/openrct2/entity/Peep.cpp | 2 +- src/openrct2/entity/Peep.h | 2 +- src/openrct2/entity/Staff.cpp | 2 +- src/openrct2/entity/Staff.h | 2 +- src/openrct2/entity/Yaw.hpp | 2 +- src/openrct2/interface/Chat.cpp | 2 +- src/openrct2/interface/Chat.h | 2 +- src/openrct2/interface/Colour.cpp | 2 +- src/openrct2/interface/Colour.h | 2 +- src/openrct2/interface/ColourWithFlags.cpp | 2 +- src/openrct2/interface/ColourWithFlags.h | 2 +- src/openrct2/interface/Cursors.cpp | 2 +- src/openrct2/interface/Cursors.h | 2 +- src/openrct2/interface/FontFamilies.cpp | 2 +- src/openrct2/interface/FontFamilies.h | 2 +- src/openrct2/interface/Fonts.cpp | 2 +- src/openrct2/interface/Fonts.h | 2 +- src/openrct2/interface/InteractiveConsole.cpp | 2 +- src/openrct2/interface/InteractiveConsole.h | 2 +- src/openrct2/interface/Screenshot.cpp | 2 +- src/openrct2/interface/Screenshot.h | 2 +- src/openrct2/interface/ScrollArea.h | 2 +- src/openrct2/interface/StdInOutConsole.cpp | 2 +- src/openrct2/interface/StdInOutConsole.h | 2 +- src/openrct2/interface/Viewport.cpp | 2 +- src/openrct2/interface/Viewport.h | 2 +- src/openrct2/interface/Widget.h | 2 +- src/openrct2/interface/Window.cpp | 2 +- src/openrct2/interface/Window.h | 2 +- src/openrct2/interface/WindowBase.h | 2 +- src/openrct2/interface/WindowClasses.h | 2 +- src/openrct2/interface/ZoomLevel.cpp | 2 +- src/openrct2/localisation/Currency.cpp | 2 +- src/openrct2/localisation/Currency.h | 2 +- src/openrct2/localisation/CurrencyTypes.h | 2 +- src/openrct2/localisation/FormatCodes.cpp | 2 +- src/openrct2/localisation/FormatCodes.h | 2 +- src/openrct2/localisation/Formatter.cpp | 2 +- src/openrct2/localisation/Formatter.h | 2 +- src/openrct2/localisation/Formatting.cpp | 2 +- src/openrct2/localisation/Formatting.h | 2 +- src/openrct2/localisation/Language.cpp | 2 +- src/openrct2/localisation/Language.h | 2 +- src/openrct2/localisation/LanguagePack.cpp | 2 +- src/openrct2/localisation/LanguagePack.h | 2 +- src/openrct2/localisation/Localisation.Date.cpp | 2 +- src/openrct2/localisation/Localisation.Date.h | 2 +- src/openrct2/localisation/LocalisationService.cpp | 2 +- src/openrct2/localisation/LocalisationService.h | 2 +- src/openrct2/localisation/StringIdType.h | 2 +- src/openrct2/localisation/StringIds.h | 2 +- src/openrct2/management/Award.cpp | 2 +- src/openrct2/management/Award.h | 2 +- src/openrct2/management/Finance.cpp | 2 +- src/openrct2/management/Finance.h | 2 +- src/openrct2/management/Marketing.cpp | 2 +- src/openrct2/management/Marketing.h | 2 +- src/openrct2/management/NewsItem.cpp | 2 +- src/openrct2/management/NewsItem.h | 2 +- src/openrct2/management/Research.cpp | 2 +- src/openrct2/management/Research.h | 2 +- src/openrct2/math/Trigonometry.hpp | 2 +- src/openrct2/network/DiscordService.cpp | 2 +- src/openrct2/network/DiscordService.h | 2 +- src/openrct2/network/Network.h | 2 +- src/openrct2/network/NetworkAction.cpp | 2 +- src/openrct2/network/NetworkAction.h | 2 +- src/openrct2/network/NetworkBase.cpp | 2 +- src/openrct2/network/NetworkConnection.cpp | 2 +- src/openrct2/network/NetworkConnection.h | 2 +- src/openrct2/network/NetworkGroup.cpp | 2 +- src/openrct2/network/NetworkGroup.h | 2 +- src/openrct2/network/NetworkKey.cpp | 2 +- src/openrct2/network/NetworkKey.h | 2 +- src/openrct2/network/NetworkPacket.cpp | 2 +- src/openrct2/network/NetworkPacket.h | 2 +- src/openrct2/network/NetworkPlayer.cpp | 2 +- src/openrct2/network/NetworkPlayer.h | 2 +- src/openrct2/network/NetworkServerAdvertiser.cpp | 2 +- src/openrct2/network/NetworkServerAdvertiser.h | 2 +- src/openrct2/network/NetworkTypes.h | 2 +- src/openrct2/network/NetworkUser.cpp | 2 +- src/openrct2/network/NetworkUser.h | 2 +- src/openrct2/network/ServerList.cpp | 2 +- src/openrct2/network/ServerList.h | 2 +- src/openrct2/network/Socket.cpp | 2 +- src/openrct2/network/Socket.h | 2 +- src/openrct2/object/AudioObject.cpp | 2 +- src/openrct2/object/AudioObject.h | 2 +- src/openrct2/object/AudioSampleTable.cpp | 2 +- src/openrct2/object/AudioSampleTable.h | 2 +- src/openrct2/object/BannerObject.cpp | 2 +- src/openrct2/object/BannerObject.h | 2 +- src/openrct2/object/BannerSceneryEntry.h | 2 +- src/openrct2/object/ClimateObject.cpp | 2 +- src/openrct2/object/ClimateObject.h | 2 +- src/openrct2/object/DefaultObjects.cpp | 2 +- src/openrct2/object/DefaultObjects.h | 2 +- src/openrct2/object/EntranceEntry.h | 2 +- src/openrct2/object/EntranceObject.cpp | 2 +- src/openrct2/object/EntranceObject.h | 2 +- src/openrct2/object/FootpathEntry.h | 2 +- src/openrct2/object/FootpathObject.cpp | 2 +- src/openrct2/object/FootpathObject.h | 2 +- src/openrct2/object/FootpathRailingsObject.cpp | 2 +- src/openrct2/object/FootpathRailingsObject.h | 2 +- src/openrct2/object/FootpathSurfaceObject.cpp | 2 +- src/openrct2/object/FootpathSurfaceObject.h | 2 +- src/openrct2/object/ImageTable.cpp | 2 +- src/openrct2/object/ImageTable.h | 2 +- src/openrct2/object/LargeSceneryEntry.h | 2 +- src/openrct2/object/LargeSceneryObject.cpp | 2 +- src/openrct2/object/LargeSceneryObject.h | 2 +- src/openrct2/object/MusicObject.cpp | 2 +- src/openrct2/object/MusicObject.h | 2 +- src/openrct2/object/Object.cpp | 2 +- src/openrct2/object/Object.h | 2 +- src/openrct2/object/ObjectAsset.h | 2 +- src/openrct2/object/ObjectEntryManager.h | 2 +- src/openrct2/object/ObjectFactory.cpp | 2 +- src/openrct2/object/ObjectFactory.h | 2 +- src/openrct2/object/ObjectLimits.h | 2 +- src/openrct2/object/ObjectList.cpp | 2 +- src/openrct2/object/ObjectList.h | 2 +- src/openrct2/object/ObjectManager.cpp | 2 +- src/openrct2/object/ObjectManager.h | 2 +- src/openrct2/object/ObjectRepository.cpp | 2 +- src/openrct2/object/ObjectRepository.h | 2 +- src/openrct2/object/ObjectTypes.cpp | 2 +- src/openrct2/object/ObjectTypes.h | 2 +- src/openrct2/object/PathAdditionEntry.h | 2 +- src/openrct2/object/PathAdditionObject.cpp | 2 +- src/openrct2/object/PathAdditionObject.h | 2 +- src/openrct2/object/PeepAnimationsObject.cpp | 2 +- src/openrct2/object/PeepAnimationsObject.h | 2 +- src/openrct2/object/PeepNamesObject.cpp | 2 +- src/openrct2/object/PeepNamesObject.h | 2 +- src/openrct2/object/ResourceTable.cpp | 2 +- src/openrct2/object/ResourceTable.h | 2 +- src/openrct2/object/RideObject.cpp | 2 +- src/openrct2/object/RideObject.h | 2 +- src/openrct2/object/ScenarioMetaObject.cpp | 2 +- src/openrct2/object/ScenarioMetaObject.h | 2 +- src/openrct2/object/SceneryGroupEntry.h | 2 +- src/openrct2/object/SceneryGroupObject.cpp | 2 +- src/openrct2/object/SceneryGroupObject.h | 2 +- src/openrct2/object/SceneryObject.h | 2 +- src/openrct2/object/SmallSceneryEntry.h | 2 +- src/openrct2/object/SmallSceneryObject.cpp | 2 +- src/openrct2/object/SmallSceneryObject.h | 2 +- src/openrct2/object/StationObject.cpp | 2 +- src/openrct2/object/StationObject.h | 2 +- src/openrct2/object/StringTable.cpp | 2 +- src/openrct2/object/StringTable.h | 2 +- src/openrct2/object/TerrainEdgeObject.cpp | 2 +- src/openrct2/object/TerrainEdgeObject.h | 2 +- src/openrct2/object/TerrainSurfaceObject.cpp | 2 +- src/openrct2/object/TerrainSurfaceObject.h | 2 +- src/openrct2/object/WallObject.cpp | 2 +- src/openrct2/object/WallObject.h | 2 +- src/openrct2/object/WallSceneryEntry.cpp | 2 +- src/openrct2/object/WallSceneryEntry.h | 2 +- src/openrct2/object/WaterEntry.h | 2 +- src/openrct2/object/WaterObject.cpp | 2 +- src/openrct2/object/WaterObject.h | 2 +- src/openrct2/paint/Boundbox.h | 2 +- src/openrct2/paint/Paint.Entity.cpp | 2 +- src/openrct2/paint/Paint.Entity.h | 2 +- src/openrct2/paint/Paint.SessionFlags.h | 2 +- src/openrct2/paint/Paint.cpp | 2 +- src/openrct2/paint/Paint.h | 2 +- src/openrct2/paint/PaintHelpers.cpp | 2 +- src/openrct2/paint/Painter.cpp | 2 +- src/openrct2/paint/Painter.h | 2 +- src/openrct2/paint/VirtualFloor.cpp | 2 +- src/openrct2/paint/VirtualFloor.h | 2 +- src/openrct2/paint/support/MetalSupports.cpp | 2 +- src/openrct2/paint/support/MetalSupports.h | 2 +- src/openrct2/paint/support/WoodenSupports.cpp | 2 +- src/openrct2/paint/support/WoodenSupports.h | 2 +- src/openrct2/paint/support/WoodenSupports.hpp | 2 +- src/openrct2/paint/tile_element/Paint.Banner.cpp | 2 +- src/openrct2/paint/tile_element/Paint.Entrance.cpp | 2 +- src/openrct2/paint/tile_element/Paint.LargeScenery.cpp | 2 +- src/openrct2/paint/tile_element/Paint.Path.cpp | 2 +- src/openrct2/paint/tile_element/Paint.PathAddition.cpp | 2 +- src/openrct2/paint/tile_element/Paint.PathAddition.h | 2 +- src/openrct2/paint/tile_element/Paint.SmallScenery.cpp | 2 +- src/openrct2/paint/tile_element/Paint.Surface.cpp | 2 +- src/openrct2/paint/tile_element/Paint.Surface.h | 2 +- src/openrct2/paint/tile_element/Paint.TileElement.cpp | 2 +- src/openrct2/paint/tile_element/Paint.TileElement.h | 2 +- src/openrct2/paint/tile_element/Paint.Tunnel.h | 2 +- src/openrct2/paint/tile_element/Paint.Wall.cpp | 2 +- src/openrct2/paint/tile_element/Segment.h | 2 +- src/openrct2/paint/track/Segment.h | 2 +- src/openrct2/paint/track/Support.h | 2 +- src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/AlpineCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/BobsleighCoaster.cpp | 2 +- .../paint/track/coaster/ClassicStandUpRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp | 2 +- .../paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp | 2 +- .../paint/track/coaster/FlyingRollerCoasterInverted.cpp | 2 +- src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/HybridCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp | 2 +- src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp | 2 +- .../paint/track/coaster/LayDownRollerCoasterInverted.cpp | 2 +- src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/MineRide.cpp | 2 +- src/openrct2/paint/track/coaster/MineTrainCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp | 2 +- .../paint/track/coaster/MultiDimensionRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/Steeplechase.cpp | 2 +- src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/TwisterRollerCoaster.h | 2 +- src/openrct2/paint/track/coaster/VirginiaReel.cpp | 2 +- src/openrct2/paint/track/coaster/WildMouse.cpp | 2 +- src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp | 2 +- src/openrct2/paint/track/coaster/WoodenWildMouse.cpp | 2 +- src/openrct2/paint/track/gentle/CarRide.cpp | 2 +- src/openrct2/paint/track/gentle/Circus.cpp | 2 +- src/openrct2/paint/track/gentle/CrookedHouse.cpp | 2 +- src/openrct2/paint/track/gentle/Dodgems.cpp | 2 +- src/openrct2/paint/track/gentle/FerrisWheel.cpp | 2 +- src/openrct2/paint/track/gentle/FlyingSaucers.cpp | 2 +- src/openrct2/paint/track/gentle/GhostTrain.cpp | 2 +- src/openrct2/paint/track/gentle/HauntedHouse.cpp | 2 +- src/openrct2/paint/track/gentle/Maze.cpp | 2 +- src/openrct2/paint/track/gentle/MerryGoRound.cpp | 2 +- src/openrct2/paint/track/gentle/MiniGolf.cpp | 2 +- src/openrct2/paint/track/gentle/MiniHelicopters.cpp | 2 +- src/openrct2/paint/track/gentle/MonorailCycles.cpp | 2 +- src/openrct2/paint/track/gentle/ObservationTower.cpp | 2 +- src/openrct2/paint/track/gentle/SpaceRings.cpp | 2 +- src/openrct2/paint/track/gentle/SpiralSlide.cpp | 2 +- src/openrct2/paint/track/shops/Facility.cpp | 2 +- src/openrct2/paint/track/shops/Shop.cpp | 2 +- src/openrct2/paint/track/thrill/3dCinema.cpp | 2 +- src/openrct2/paint/track/thrill/Enterprise.cpp | 2 +- src/openrct2/paint/track/thrill/GoKarts.cpp | 2 +- src/openrct2/paint/track/thrill/LaunchedFreefall.cpp | 2 +- src/openrct2/paint/track/thrill/MagicCarpet.cpp | 2 +- src/openrct2/paint/track/thrill/MotionSimulator.cpp | 2 +- src/openrct2/paint/track/thrill/RotoDrop.cpp | 2 +- src/openrct2/paint/track/thrill/SwingingInverterShip.cpp | 2 +- src/openrct2/paint/track/thrill/SwingingShip.cpp | 2 +- src/openrct2/paint/track/thrill/TopSpin.cpp | 2 +- src/openrct2/paint/track/thrill/Twist.cpp | 2 +- src/openrct2/paint/track/transport/Chairlift.cpp | 2 +- src/openrct2/paint/track/transport/Lift.cpp | 2 +- src/openrct2/paint/track/transport/MiniatureRailway.cpp | 2 +- src/openrct2/paint/track/transport/Monorail.cpp | 2 +- src/openrct2/paint/track/transport/SuspendedMonorail.cpp | 2 +- src/openrct2/paint/track/water/BoatHire.cpp | 2 +- src/openrct2/paint/track/water/DinghySlide.cpp | 2 +- src/openrct2/paint/track/water/DinghySlideCovered.cpp | 2 +- src/openrct2/paint/track/water/LogFlume.cpp | 2 +- src/openrct2/paint/track/water/RiverRapids.cpp | 2 +- src/openrct2/paint/track/water/SplashBoats.cpp | 2 +- src/openrct2/paint/track/water/SubmarineRide.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.MiniGolf.h | 2 +- src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.Submarine.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp | 2 +- src/openrct2/paint/vehicle/VehiclePaint.cpp | 2 +- src/openrct2/paint/vehicle/VehiclePaint.h | 2 +- src/openrct2/park/Legacy.cpp | 2 +- src/openrct2/park/Legacy.h | 2 +- src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/park/ParkFile.h | 2 +- src/openrct2/park/ParkPreview.cpp | 2 +- src/openrct2/park/ParkPreview.h | 2 +- src/openrct2/peep/GuestPathfinding.cpp | 2 +- src/openrct2/peep/GuestPathfinding.h | 2 +- src/openrct2/peep/PeepAnimations.cpp | 2 +- src/openrct2/peep/PeepAnimations.h | 2 +- src/openrct2/peep/PeepSpriteIds.h | 2 +- src/openrct2/peep/PeepThoughts.cpp | 2 +- src/openrct2/peep/PeepThoughts.h | 2 +- src/openrct2/peep/RideUseSystem.cpp | 2 +- src/openrct2/peep/RideUseSystem.h | 2 +- src/openrct2/platform/Crash.cpp | 2 +- src/openrct2/platform/Crash.h | 2 +- src/openrct2/platform/Memory.h | 2 +- src/openrct2/platform/Platform.Android.cpp | 2 +- src/openrct2/platform/Platform.Common.cpp | 2 +- src/openrct2/platform/Platform.Emscripten.cpp | 2 +- src/openrct2/platform/Platform.Linux.cpp | 2 +- src/openrct2/platform/Platform.Posix.cpp | 2 +- src/openrct2/platform/Platform.Win32.cpp | 2 +- src/openrct2/platform/Platform.h | 2 +- src/openrct2/platform/Platform.macOS.mm | 2 +- src/openrct2/profiling/Profiling.cpp | 2 +- src/openrct2/profiling/Profiling.h | 2 +- src/openrct2/profiling/ProfilingMacros.hpp | 2 +- src/openrct2/rct1/Csg.cpp | 2 +- src/openrct2/rct1/Csg.h | 2 +- src/openrct2/rct1/Limits.h | 2 +- src/openrct2/rct1/RCT1.h | 2 +- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct1/T4Importer.cpp | 2 +- src/openrct2/rct1/Tables.cpp | 2 +- src/openrct2/rct1/Tables.h | 2 +- src/openrct2/rct12/CSChar.h | 2 +- src/openrct2/rct12/CSStringConverter.cpp | 2 +- src/openrct2/rct12/CSStringConverter.h | 2 +- src/openrct2/rct12/EntryList.h | 2 +- src/openrct2/rct12/Limits.h | 2 +- src/openrct2/rct12/RCT12.cpp | 2 +- src/openrct2/rct12/RCT12.h | 2 +- src/openrct2/rct12/ScenarioPatcher.cpp | 2 +- src/openrct2/rct12/ScenarioPatcher.h | 2 +- src/openrct2/rct12/TD46.cpp | 2 +- src/openrct2/rct12/TD46.h | 2 +- src/openrct2/rct2/DATLimits.h | 2 +- src/openrct2/rct2/Limits.h | 2 +- src/openrct2/rct2/RCT2.cpp | 2 +- src/openrct2/rct2/RCT2.h | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/rct2/SeaDecrypt.cpp | 2 +- src/openrct2/rct2/T6Exporter.cpp | 2 +- src/openrct2/rct2/T6Exporter.h | 2 +- src/openrct2/rct2/T6Importer.cpp | 2 +- src/openrct2/ride/Angles.h | 2 +- src/openrct2/ride/CableLift.cpp | 2 +- src/openrct2/ride/CableLift.h | 2 +- src/openrct2/ride/CarEntry.cpp | 2 +- src/openrct2/ride/CarEntry.h | 2 +- src/openrct2/ride/MazeCost.cpp | 2 +- src/openrct2/ride/MazeCost.h | 2 +- src/openrct2/ride/Ride.cpp | 2 +- src/openrct2/ride/Ride.h | 2 +- src/openrct2/ride/RideAudio.cpp | 2 +- src/openrct2/ride/RideAudio.h | 2 +- src/openrct2/ride/RideColour.h | 2 +- src/openrct2/ride/RideConstruction.cpp | 2 +- src/openrct2/ride/RideConstruction.h | 2 +- src/openrct2/ride/RideData.cpp | 2 +- src/openrct2/ride/RideData.h | 2 +- src/openrct2/ride/RideEntry.h | 2 +- src/openrct2/ride/RideManager.cpp | 2 +- src/openrct2/ride/RideManager.hpp | 2 +- src/openrct2/ride/RideRatings.cpp | 2 +- src/openrct2/ride/RideRatings.h | 2 +- src/openrct2/ride/RideStringIds.h | 2 +- src/openrct2/ride/RideTypes.h | 2 +- src/openrct2/ride/ShopItem.cpp | 2 +- src/openrct2/ride/ShopItem.h | 2 +- src/openrct2/ride/Station.cpp | 2 +- src/openrct2/ride/Station.h | 2 +- src/openrct2/ride/Track.cpp | 2 +- src/openrct2/ride/Track.h | 2 +- src/openrct2/ride/TrackData.cpp | 2 +- src/openrct2/ride/TrackData.h | 2 +- src/openrct2/ride/TrackDesign.cpp | 2 +- src/openrct2/ride/TrackDesign.h | 2 +- src/openrct2/ride/TrackDesignRepository.cpp | 2 +- src/openrct2/ride/TrackDesignRepository.h | 2 +- src/openrct2/ride/TrackDesignSave.cpp | 2 +- src/openrct2/ride/TrackPaint.cpp | 2 +- src/openrct2/ride/TrackPaint.h | 2 +- src/openrct2/ride/TrackStyle.cpp | 2 +- src/openrct2/ride/TrackStyle.h | 2 +- src/openrct2/ride/TrainManager.cpp | 2 +- src/openrct2/ride/TrainManager.h | 2 +- src/openrct2/ride/Vehicle.cpp | 2 +- src/openrct2/ride/Vehicle.h | 2 +- src/openrct2/ride/VehicleColour.h | 2 +- src/openrct2/ride/VehicleData.cpp | 2 +- src/openrct2/ride/VehicleData.h | 2 +- src/openrct2/ride/VehicleGeometry.cpp | 2 +- src/openrct2/ride/VehicleGeometry.h | 2 +- src/openrct2/ride/VehicleRiderControl.cpp | 2 +- src/openrct2/ride/VehicleSubpositionData.cpp | 2 +- src/openrct2/ride/VehicleSubpositionData.h | 2 +- src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/AlpineCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/BobsleighCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h | 2 +- .../ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/GigaCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/HybridCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/HyperTwister.h | 2 +- src/openrct2/ride/rtd/coaster/Hypercoaster.h | 2 +- src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/MineRide.h | 2 +- src/openrct2/ride/rtd/coaster/MineTrainCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/SpinningWildMouse.h | 2 +- src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/SteelWildMouse.h | 2 +- src/openrct2/ride/rtd/coaster/Steeplechase.h | 2 +- src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/VirginiaReel.h | 2 +- src/openrct2/ride/rtd/coaster/WaterCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h | 2 +- src/openrct2/ride/rtd/coaster/WoodenWildMouse.h | 2 +- src/openrct2/ride/rtd/gentle/CarRide.h | 2 +- src/openrct2/ride/rtd/gentle/Circus.h | 2 +- src/openrct2/ride/rtd/gentle/CrookedHouse.h | 2 +- src/openrct2/ride/rtd/gentle/Dodgems.h | 2 +- src/openrct2/ride/rtd/gentle/FerrisWheel.h | 2 +- src/openrct2/ride/rtd/gentle/FlyingSaucers.h | 2 +- src/openrct2/ride/rtd/gentle/GhostTrain.h | 2 +- src/openrct2/ride/rtd/gentle/HauntedHouse.h | 2 +- src/openrct2/ride/rtd/gentle/Maze.h | 2 +- src/openrct2/ride/rtd/gentle/MerryGoRound.h | 2 +- src/openrct2/ride/rtd/gentle/MiniGolf.h | 2 +- src/openrct2/ride/rtd/gentle/MiniHelicopters.h | 2 +- src/openrct2/ride/rtd/gentle/MonorailCycles.h | 2 +- src/openrct2/ride/rtd/gentle/MonsterTrucks.h | 2 +- src/openrct2/ride/rtd/gentle/ObservationTower.h | 2 +- src/openrct2/ride/rtd/gentle/SpaceRings.h | 2 +- src/openrct2/ride/rtd/gentle/SpiralSlide.h | 2 +- src/openrct2/ride/rtd/shops/CashMachine.h | 2 +- src/openrct2/ride/rtd/shops/DrinkStall.h | 2 +- src/openrct2/ride/rtd/shops/FirstAid.h | 2 +- src/openrct2/ride/rtd/shops/FoodStall.h | 2 +- src/openrct2/ride/rtd/shops/InformationKiosk.h | 2 +- src/openrct2/ride/rtd/shops/Shop.h | 2 +- src/openrct2/ride/rtd/shops/Toilets.h | 2 +- src/openrct2/ride/rtd/thrill/3DCinema.h | 2 +- src/openrct2/ride/rtd/thrill/Enterprise.h | 2 +- src/openrct2/ride/rtd/thrill/GoKarts.h | 2 +- src/openrct2/ride/rtd/thrill/LaunchedFreefall.h | 2 +- src/openrct2/ride/rtd/thrill/MagicCarpet.h | 2 +- src/openrct2/ride/rtd/thrill/MotionSimulator.h | 2 +- src/openrct2/ride/rtd/thrill/RotoDrop.h | 2 +- src/openrct2/ride/rtd/thrill/SwingingInverterShip.h | 2 +- src/openrct2/ride/rtd/thrill/SwingingShip.h | 2 +- src/openrct2/ride/rtd/thrill/TopSpin.h | 2 +- src/openrct2/ride/rtd/thrill/Twist.h | 2 +- src/openrct2/ride/rtd/transport/Chairlift.h | 2 +- src/openrct2/ride/rtd/transport/Lift.h | 2 +- src/openrct2/ride/rtd/transport/MiniatureRailway.h | 2 +- src/openrct2/ride/rtd/transport/Monorail.h | 2 +- src/openrct2/ride/rtd/transport/SuspendedMonorail.h | 2 +- src/openrct2/ride/rtd/water/BoatHire.h | 2 +- src/openrct2/ride/rtd/water/DinghySlide.h | 2 +- src/openrct2/ride/rtd/water/LogFlume.h | 2 +- src/openrct2/ride/rtd/water/RiverRafts.h | 2 +- src/openrct2/ride/rtd/water/RiverRapids.h | 2 +- src/openrct2/ride/rtd/water/SplashBoats.h | 2 +- src/openrct2/ride/rtd/water/SubmarineRide.h | 2 +- src/openrct2/sawyer_coding/SawyerChunk.cpp | 2 +- src/openrct2/sawyer_coding/SawyerChunk.h | 2 +- src/openrct2/sawyer_coding/SawyerChunkReader.cpp | 2 +- src/openrct2/sawyer_coding/SawyerChunkReader.h | 2 +- src/openrct2/sawyer_coding/SawyerChunkWriter.cpp | 2 +- src/openrct2/sawyer_coding/SawyerChunkWriter.h | 2 +- src/openrct2/sawyer_coding/SawyerCoding.cpp | 2 +- src/openrct2/sawyer_coding/SawyerCoding.h | 2 +- src/openrct2/scenario/Scenario.cpp | 2 +- src/openrct2/scenario/Scenario.h | 2 +- src/openrct2/scenario/ScenarioCategory.cpp | 2 +- src/openrct2/scenario/ScenarioCategory.h | 2 +- src/openrct2/scenario/ScenarioObjective.cpp | 2 +- src/openrct2/scenario/ScenarioObjective.h | 2 +- src/openrct2/scenario/ScenarioOptions.h | 2 +- src/openrct2/scenario/ScenarioRepository.cpp | 2 +- src/openrct2/scenario/ScenarioRepository.h | 2 +- src/openrct2/scenario/ScenarioSources.cpp | 2 +- src/openrct2/scenario/ScenarioSources.h | 2 +- src/openrct2/scenes/Scene.cpp | 2 +- src/openrct2/scenes/Scene.h | 2 +- src/openrct2/scenes/intro/IntroScene.cpp | 2 +- src/openrct2/scenes/intro/IntroScene.h | 2 +- src/openrct2/scenes/preloader/PreloaderScene.cpp | 2 +- src/openrct2/scenes/preloader/PreloaderScene.h | 2 +- src/openrct2/scenes/title/Command/End.cpp | 2 +- src/openrct2/scenes/title/Command/End.h | 2 +- src/openrct2/scenes/title/Command/FollowEntity.cpp | 2 +- src/openrct2/scenes/title/Command/FollowEntity.h | 2 +- src/openrct2/scenes/title/Command/LoadPark.cpp | 2 +- src/openrct2/scenes/title/Command/LoadPark.h | 2 +- src/openrct2/scenes/title/Command/LoadScenario.cpp | 2 +- src/openrct2/scenes/title/Command/LoadScenario.h | 2 +- src/openrct2/scenes/title/Command/Restart.cpp | 2 +- src/openrct2/scenes/title/Command/Restart.h | 2 +- src/openrct2/scenes/title/Command/RotateView.cpp | 2 +- src/openrct2/scenes/title/Command/RotateView.h | 2 +- src/openrct2/scenes/title/Command/SetLocation.cpp | 2 +- src/openrct2/scenes/title/Command/SetLocation.h | 2 +- src/openrct2/scenes/title/Command/SetSpeed.cpp | 2 +- src/openrct2/scenes/title/Command/SetSpeed.h | 2 +- src/openrct2/scenes/title/Command/SetZoom.cpp | 2 +- src/openrct2/scenes/title/Command/SetZoom.h | 2 +- src/openrct2/scenes/title/Command/Wait.cpp | 2 +- src/openrct2/scenes/title/Command/Wait.h | 2 +- src/openrct2/scenes/title/TitleScene.cpp | 2 +- src/openrct2/scenes/title/TitleScene.h | 2 +- src/openrct2/scenes/title/TitleSequence.cpp | 2 +- src/openrct2/scenes/title/TitleSequence.h | 2 +- src/openrct2/scenes/title/TitleSequenceManager.cpp | 2 +- src/openrct2/scenes/title/TitleSequenceManager.h | 2 +- src/openrct2/scenes/title/TitleSequencePlayer.h | 2 +- src/openrct2/scripting/Duktape.hpp | 2 +- src/openrct2/scripting/HookEngine.cpp | 2 +- src/openrct2/scripting/HookEngine.h | 2 +- src/openrct2/scripting/IconNames.hpp | 2 +- src/openrct2/scripting/Plugin.cpp | 2 +- src/openrct2/scripting/Plugin.h | 2 +- src/openrct2/scripting/ScriptEngine.cpp | 2 +- src/openrct2/scripting/ScriptEngine.h | 2 +- src/openrct2/scripting/bindings/entity/ScBalloon.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScBalloon.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScEntity.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScGuest.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScGuest.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScLitter.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScLitter.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScMoneyEffect.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScMoneyEffect.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScParticle.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScParticle.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScPeep.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScStaff.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScStaff.hpp | 2 +- src/openrct2/scripting/bindings/entity/ScVehicle.cpp | 2 +- src/openrct2/scripting/bindings/entity/ScVehicle.hpp | 2 +- src/openrct2/scripting/bindings/game/ScCheats.hpp | 2 +- src/openrct2/scripting/bindings/game/ScConfiguration.hpp | 2 +- src/openrct2/scripting/bindings/game/ScConsole.hpp | 2 +- src/openrct2/scripting/bindings/game/ScContext.hpp | 2 +- src/openrct2/scripting/bindings/game/ScDisposable.hpp | 2 +- src/openrct2/scripting/bindings/game/ScPlugin.hpp | 2 +- src/openrct2/scripting/bindings/game/ScProfiler.hpp | 2 +- src/openrct2/scripting/bindings/network/ScNetwork.cpp | 2 +- src/openrct2/scripting/bindings/network/ScNetwork.hpp | 2 +- src/openrct2/scripting/bindings/network/ScPlayer.cpp | 2 +- src/openrct2/scripting/bindings/network/ScPlayer.hpp | 2 +- src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp | 2 +- src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp | 2 +- src/openrct2/scripting/bindings/network/ScSocket.hpp | 2 +- src/openrct2/scripting/bindings/object/ScInstalledObject.cpp | 2 +- src/openrct2/scripting/bindings/object/ScInstalledObject.hpp | 2 +- src/openrct2/scripting/bindings/object/ScObject.hpp | 2 +- src/openrct2/scripting/bindings/object/ScObjectManager.cpp | 2 +- src/openrct2/scripting/bindings/object/ScObjectManager.h | 2 +- src/openrct2/scripting/bindings/world/ScAward.cpp | 2 +- src/openrct2/scripting/bindings/world/ScAward.hpp | 2 +- src/openrct2/scripting/bindings/world/ScClimate.hpp | 2 +- src/openrct2/scripting/bindings/world/ScDate.hpp | 2 +- src/openrct2/scripting/bindings/world/ScMap.cpp | 2 +- src/openrct2/scripting/bindings/world/ScMap.hpp | 2 +- src/openrct2/scripting/bindings/world/ScPark.cpp | 2 +- src/openrct2/scripting/bindings/world/ScPark.hpp | 2 +- src/openrct2/scripting/bindings/world/ScParkMessage.cpp | 2 +- src/openrct2/scripting/bindings/world/ScParkMessage.hpp | 2 +- src/openrct2/scripting/bindings/world/ScResearch.cpp | 2 +- src/openrct2/scripting/bindings/world/ScResearch.hpp | 2 +- src/openrct2/scripting/bindings/world/ScScenario.hpp | 2 +- src/openrct2/scripting/bindings/world/ScTile.cpp | 2 +- src/openrct2/scripting/bindings/world/ScTile.hpp | 2 +- src/openrct2/scripting/bindings/world/ScTileElement.cpp | 2 +- src/openrct2/scripting/bindings/world/ScTileElement.hpp | 2 +- src/openrct2/ui/DummyUiContext.cpp | 2 +- src/openrct2/ui/DummyWindowManager.cpp | 2 +- src/openrct2/ui/UiContext.h | 2 +- src/openrct2/ui/WindowManager.h | 2 +- src/openrct2/util/Util.cpp | 2 +- src/openrct2/util/Util.h | 2 +- src/openrct2/windows/Intent.cpp | 2 +- src/openrct2/windows/Intent.h | 2 +- src/openrct2/windows/TileInspectorGlobals.h | 2 +- src/openrct2/world/Banner.cpp | 2 +- src/openrct2/world/Banner.h | 2 +- src/openrct2/world/Climate.cpp | 2 +- src/openrct2/world/Climate.h | 2 +- src/openrct2/world/ConstructionClearance.cpp | 2 +- src/openrct2/world/ConstructionClearance.h | 2 +- src/openrct2/world/Entrance.cpp | 2 +- src/openrct2/world/Entrance.h | 2 +- src/openrct2/world/Footpath.cpp | 2 +- src/openrct2/world/Footpath.h | 2 +- src/openrct2/world/Location.hpp | 2 +- src/openrct2/world/Map.cpp | 2 +- src/openrct2/world/Map.h | 2 +- src/openrct2/world/MapAnimation.cpp | 2 +- src/openrct2/world/MapAnimation.h | 2 +- src/openrct2/world/MapLimits.h | 2 +- src/openrct2/world/MapSelection.cpp | 2 +- src/openrct2/world/MapSelection.h | 2 +- src/openrct2/world/Park.cpp | 2 +- src/openrct2/world/Park.h | 2 +- src/openrct2/world/ParkData.h | 2 +- src/openrct2/world/QuarterTile.cpp | 2 +- src/openrct2/world/QuarterTile.h | 2 +- src/openrct2/world/Scenery.cpp | 2 +- src/openrct2/world/Scenery.h | 2 +- src/openrct2/world/ScenerySelection.h | 2 +- src/openrct2/world/SurfaceData.cpp | 2 +- src/openrct2/world/TileElementsView.h | 2 +- src/openrct2/world/TileInspector.cpp | 2 +- src/openrct2/world/TileInspector.h | 2 +- src/openrct2/world/TilePointerIndex.hpp | 2 +- src/openrct2/world/Wall.cpp | 2 +- src/openrct2/world/Wall.h | 2 +- src/openrct2/world/map_generator/HeightMap.hpp | 2 +- src/openrct2/world/map_generator/MapGen.cpp | 2 +- src/openrct2/world/map_generator/MapGen.h | 2 +- src/openrct2/world/map_generator/MapHelpers.cpp | 2 +- src/openrct2/world/map_generator/MapHelpers.h | 2 +- src/openrct2/world/map_generator/PngTerrainGenerator.cpp | 2 +- src/openrct2/world/map_generator/PngTerrainGenerator.h | 2 +- src/openrct2/world/map_generator/SimplexNoise.cpp | 2 +- src/openrct2/world/map_generator/SimplexNoise.h | 2 +- src/openrct2/world/map_generator/SurfaceSelection.cpp | 2 +- src/openrct2/world/map_generator/SurfaceSelection.h | 2 +- src/openrct2/world/map_generator/TreePlacement.cpp | 2 +- src/openrct2/world/map_generator/TreePlacement.h | 2 +- src/openrct2/world/tile_element/BannerElement.h | 2 +- src/openrct2/world/tile_element/EntranceElement.cpp | 2 +- src/openrct2/world/tile_element/EntranceElement.h | 2 +- src/openrct2/world/tile_element/LargeSceneryElement.cpp | 2 +- src/openrct2/world/tile_element/LargeSceneryElement.h | 2 +- src/openrct2/world/tile_element/PathElement.cpp | 2 +- src/openrct2/world/tile_element/PathElement.h | 2 +- src/openrct2/world/tile_element/Slope.cpp | 2 +- src/openrct2/world/tile_element/Slope.h | 2 +- src/openrct2/world/tile_element/SmallSceneryElement.cpp | 2 +- src/openrct2/world/tile_element/SmallSceneryElement.h | 2 +- src/openrct2/world/tile_element/SurfaceElement.cpp | 2 +- src/openrct2/world/tile_element/SurfaceElement.h | 2 +- src/openrct2/world/tile_element/TileElement.cpp | 2 +- src/openrct2/world/tile_element/TileElement.h | 2 +- src/openrct2/world/tile_element/TileElementBase.cpp | 2 +- src/openrct2/world/tile_element/TileElementBase.h | 2 +- src/openrct2/world/tile_element/TileElementType.h | 2 +- src/openrct2/world/tile_element/TrackElement.cpp | 2 +- src/openrct2/world/tile_element/TrackElement.h | 2 +- src/openrct2/world/tile_element/WallElement.cpp | 2 +- src/openrct2/world/tile_element/WallElement.h | 2 +- 1272 files changed, 1272 insertions(+), 1272 deletions(-) diff --git a/src/openrct2-cli/Cli.cpp b/src/openrct2-cli/Cli.cpp index e034d80718ec..27eea43ac47a 100644 --- a/src/openrct2-cli/Cli.cpp +++ b/src/openrct2-cli/Cli.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorData.cpp b/src/openrct2-ui/CursorData.cpp index 1e583e7c76e8..d36a33b5f89a 100644 --- a/src/openrct2-ui/CursorData.cpp +++ b/src/openrct2-ui/CursorData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorData.h b/src/openrct2-ui/CursorData.h index 9d22ffba1eff..4f95c8bfda69 100644 --- a/src/openrct2-ui/CursorData.h +++ b/src/openrct2-ui/CursorData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorRepository.cpp b/src/openrct2-ui/CursorRepository.cpp index 9a98428c9bba..ef71e517b900 100644 --- a/src/openrct2-ui/CursorRepository.cpp +++ b/src/openrct2-ui/CursorRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/CursorRepository.h b/src/openrct2-ui/CursorRepository.h index 4540c8c7ea98..e81820b048b5 100644 --- a/src/openrct2-ui/CursorRepository.h +++ b/src/openrct2-ui/CursorRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ProvisionalElements.cpp b/src/openrct2-ui/ProvisionalElements.cpp index e8a2508a624d..fdf5c32de7ce 100644 --- a/src/openrct2-ui/ProvisionalElements.cpp +++ b/src/openrct2-ui/ProvisionalElements.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ProvisionalElements.h b/src/openrct2-ui/ProvisionalElements.h index 008b46795495..318a0cf1a08c 100644 --- a/src/openrct2-ui/ProvisionalElements.h +++ b/src/openrct2-ui/ProvisionalElements.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/SDLException.cpp b/src/openrct2-ui/SDLException.cpp index 934256a7757d..ce766ada7e2e 100644 --- a/src/openrct2-ui/SDLException.cpp +++ b/src/openrct2-ui/SDLException.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/SDLException.h b/src/openrct2-ui/SDLException.h index d3e6ce605381..a05e0022f4af 100644 --- a/src/openrct2-ui/SDLException.h +++ b/src/openrct2-ui/SDLException.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/TextComposition.cpp b/src/openrct2-ui/TextComposition.cpp index a960080de3b1..a257f0663bb6 100644 --- a/src/openrct2-ui/TextComposition.cpp +++ b/src/openrct2-ui/TextComposition.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/TextComposition.h b/src/openrct2-ui/TextComposition.h index 0160d8f1aaed..67f1a4b1f0e2 100644 --- a/src/openrct2-ui/TextComposition.h +++ b/src/openrct2-ui/TextComposition.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/Ui.cpp b/src/openrct2-ui/Ui.cpp index 230f87955046..d54b3bc7de6a 100644 --- a/src/openrct2-ui/Ui.cpp +++ b/src/openrct2-ui/Ui.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/Ui.h b/src/openrct2-ui/Ui.h index 8d962defe507..c1576f2d70e6 100644 --- a/src/openrct2-ui/Ui.h +++ b/src/openrct2-ui/Ui.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.Android.cpp b/src/openrct2-ui/UiContext.Android.cpp index 2c50ac247aac..7a39021bbd86 100644 --- a/src/openrct2-ui/UiContext.Android.cpp +++ b/src/openrct2-ui/UiContext.Android.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.Linux.cpp b/src/openrct2-ui/UiContext.Linux.cpp index 7b2978d93a31..b6227623cdf2 100644 --- a/src/openrct2-ui/UiContext.Linux.cpp +++ b/src/openrct2-ui/UiContext.Linux.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.Win32.cpp b/src/openrct2-ui/UiContext.Win32.cpp index 45d2cf881cb6..dede65893fde 100644 --- a/src/openrct2-ui/UiContext.Win32.cpp +++ b/src/openrct2-ui/UiContext.Win32.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index e187ae82efb1..c6517f0a28b9 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.h b/src/openrct2-ui/UiContext.h index a6a0cf058ec6..f4d0e50074aa 100644 --- a/src/openrct2-ui/UiContext.h +++ b/src/openrct2-ui/UiContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiContext.macOS.mm b/src/openrct2-ui/UiContext.macOS.mm index 8be31015f35e..8aa9f0539b44 100644 --- a/src/openrct2-ui/UiContext.macOS.mm +++ b/src/openrct2-ui/UiContext.macOS.mm @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/UiStringIds.h b/src/openrct2-ui/UiStringIds.h index 9d3d72d8cd9a..42ba445f912e 100644 --- a/src/openrct2-ui/UiStringIds.h +++ b/src/openrct2-ui/UiStringIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index cf0c19c967d0..6d6da13224b8 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/WindowManager.h b/src/openrct2-ui/WindowManager.h index 7c10dc3deac1..592b36876353 100644 --- a/src/openrct2-ui/WindowManager.h +++ b/src/openrct2-ui/WindowManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioChannel.cpp b/src/openrct2-ui/audio/AudioChannel.cpp index f188e7637d48..3d139120d257 100644 --- a/src/openrct2-ui/audio/AudioChannel.cpp +++ b/src/openrct2-ui/audio/AudioChannel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioContext.cpp b/src/openrct2-ui/audio/AudioContext.cpp index 96e7b2455ba2..6340a6baefc2 100644 --- a/src/openrct2-ui/audio/AudioContext.cpp +++ b/src/openrct2-ui/audio/AudioContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioContext.h b/src/openrct2-ui/audio/AudioContext.h index 8cb6e092065c..8451b3bae8cc 100644 --- a/src/openrct2-ui/audio/AudioContext.h +++ b/src/openrct2-ui/audio/AudioContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioFormat.h b/src/openrct2-ui/audio/AudioFormat.h index f96faea5211f..d4ef7e17c81f 100644 --- a/src/openrct2-ui/audio/AudioFormat.h +++ b/src/openrct2-ui/audio/AudioFormat.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioMixer.cpp b/src/openrct2-ui/audio/AudioMixer.cpp index a52acc7f73d6..ad7ea788ba20 100644 --- a/src/openrct2-ui/audio/AudioMixer.cpp +++ b/src/openrct2-ui/audio/AudioMixer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/AudioMixer.h b/src/openrct2-ui/audio/AudioMixer.h index 7e4aaa782c96..b43d655e216a 100644 --- a/src/openrct2-ui/audio/AudioMixer.h +++ b/src/openrct2-ui/audio/AudioMixer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/FlacAudioSource.cpp b/src/openrct2-ui/audio/FlacAudioSource.cpp index accdcb299df0..1ece316b77ff 100644 --- a/src/openrct2-ui/audio/FlacAudioSource.cpp +++ b/src/openrct2-ui/audio/FlacAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/MemoryAudioSource.cpp b/src/openrct2-ui/audio/MemoryAudioSource.cpp index 88dc696d32dc..f30be731e561 100644 --- a/src/openrct2-ui/audio/MemoryAudioSource.cpp +++ b/src/openrct2-ui/audio/MemoryAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/OggAudioSource.cpp b/src/openrct2-ui/audio/OggAudioSource.cpp index 3fcf663cbd57..b7f92a33566c 100644 --- a/src/openrct2-ui/audio/OggAudioSource.cpp +++ b/src/openrct2-ui/audio/OggAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/SDLAudioSource.cpp b/src/openrct2-ui/audio/SDLAudioSource.cpp index d7d26f5ff85c..abf3d0070aab 100644 --- a/src/openrct2-ui/audio/SDLAudioSource.cpp +++ b/src/openrct2-ui/audio/SDLAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/SDLAudioSource.h b/src/openrct2-ui/audio/SDLAudioSource.h index a5d966827a11..c454e1ad3a5f 100644 --- a/src/openrct2-ui/audio/SDLAudioSource.h +++ b/src/openrct2-ui/audio/SDLAudioSource.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/audio/WavAudioSource.cpp b/src/openrct2-ui/audio/WavAudioSource.cpp index 5b6e12ff8b6d..e5e549825109 100644 --- a/src/openrct2-ui/audio/WavAudioSource.cpp +++ b/src/openrct2-ui/audio/WavAudioSource.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/BitmapReader.cpp b/src/openrct2-ui/drawing/BitmapReader.cpp index 17b168b4d42d..8abdfa16d8d1 100644 --- a/src/openrct2-ui/drawing/BitmapReader.cpp +++ b/src/openrct2-ui/drawing/BitmapReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/BitmapReader.h b/src/openrct2-ui/drawing/BitmapReader.h index a161f9303ddb..20172f14ef6f 100644 --- a/src/openrct2-ui/drawing/BitmapReader.h +++ b/src/openrct2-ui/drawing/BitmapReader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp b/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp index e582fa59900c..ba171cde389e 100644 --- a/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp +++ b/src/openrct2-ui/drawing/engines/DrawingEngineFactory.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp index f58f25f74b51..4437f785b966 100644 --- a/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/HardwareDisplayDrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp index 191edfd6bf9e..2e7ecbe87aaf 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h index a664fc19f0bc..bb35c6f9214b 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyPaletteShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp index 15bc824d4c9b..a04639213590 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h index be08972f9d35..7f7f544b5553 100644 --- a/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/ApplyTransparencyShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.cpp b/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.cpp index 9c70d892b30d..5db2f78464e5 100644 --- a/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.h b/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.h index 90c89a3e7676..2faa9ede10d6 100644 --- a/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/CopyRectShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h b/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h index cdd4071a8c2b..c814a7b85b27 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h +++ b/src/openrct2-ui/drawing/engines/opengl/DrawCommands.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp index 5e896f8a9f68..6068134feaa1 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h index 58145ee9e570..6f09b825621a 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/DrawLineShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp index 32d46bdbf79e..d12a64e1a0ba 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h index 38e67c8c69f0..13684402b46a 100644 --- a/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h +++ b/src/openrct2-ui/drawing/engines/opengl/DrawRectShader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h b/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h index 8fa8911a5f58..949897ab8027 100644 --- a/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h +++ b/src/openrct2-ui/drawing/engines/opengl/GLSLTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp index 34256753302d..8a6eaa6b57f4 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h index 93f4f3192706..24599e640140 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h index ac03cdefa0f9..9feaef12e08e 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPIProc.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index bfb58b3d0f98..ae1a5f2b6d5e 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp index 1b467792b3cb..0dfc5bbb4b0d 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h index 4b5d50ed7e2a..fabda1cc32be 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp index 7634c16ffa59..de9d3b275a19 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h index 556a509fe34f..4bbe712c9741 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLShaderProgram.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp index daf44030257f..07f6dd2bd1eb 100644 --- a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h index b3e982c33cd1..8b7e54619bbc 100644 --- a/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h +++ b/src/openrct2-ui/drawing/engines/opengl/SwapFramebuffer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index 14e772e21469..e3039b11142f 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h index aa580a16ac77..ee18c15c9e19 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp index 09a070bfd33d..dd2d555703ea 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h index fdcac5547618..b4358c4d2f33 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h +++ b/src/openrct2-ui/drawing/engines/opengl/TransparencyDepth.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/InputManager.cpp b/src/openrct2-ui/input/InputManager.cpp index 6f2d5a8bdd40..7979e533746b 100644 --- a/src/openrct2-ui/input/InputManager.cpp +++ b/src/openrct2-ui/input/InputManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/InputManager.h b/src/openrct2-ui/input/InputManager.h index dd0a20d91255..c9cf6ce8dd8a 100644 --- a/src/openrct2-ui/input/InputManager.h +++ b/src/openrct2-ui/input/InputManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 125a9097abfa..42b214953715 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/MouseInput.h b/src/openrct2-ui/input/MouseInput.h index f87172e812ba..b86dd3d61f19 100644 --- a/src/openrct2-ui/input/MouseInput.h +++ b/src/openrct2-ui/input/MouseInput.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutIds.h b/src/openrct2-ui/input/ShortcutIds.h index f81169e644ff..18ca1b7b43fb 100644 --- a/src/openrct2-ui/input/ShortcutIds.h +++ b/src/openrct2-ui/input/ShortcutIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutInput.cpp b/src/openrct2-ui/input/ShortcutInput.cpp index 193722340625..106636cbadce 100644 --- a/src/openrct2-ui/input/ShortcutInput.cpp +++ b/src/openrct2-ui/input/ShortcutInput.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutManager.cpp b/src/openrct2-ui/input/ShortcutManager.cpp index 5a2f321a51f0..5b913be2128a 100644 --- a/src/openrct2-ui/input/ShortcutManager.cpp +++ b/src/openrct2-ui/input/ShortcutManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/ShortcutManager.h b/src/openrct2-ui/input/ShortcutManager.h index 50fcd7ae288c..87d6f0e4f15a 100644 --- a/src/openrct2-ui/input/ShortcutManager.h +++ b/src/openrct2-ui/input/ShortcutManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/input/Shortcuts.cpp b/src/openrct2-ui/input/Shortcuts.cpp index df517933d3b6..63853c6b0ef9 100644 --- a/src/openrct2-ui/input/Shortcuts.cpp +++ b/src/openrct2-ui/input/Shortcuts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Dropdown.h b/src/openrct2-ui/interface/Dropdown.h index ccb41849a72a..dd9dbfeedcf5 100644 --- a/src/openrct2-ui/interface/Dropdown.h +++ b/src/openrct2-ui/interface/Dropdown.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/FileBrowser.cpp b/src/openrct2-ui/interface/FileBrowser.cpp index ab7a0539c318..8a550cfb0f6c 100644 --- a/src/openrct2-ui/interface/FileBrowser.cpp +++ b/src/openrct2-ui/interface/FileBrowser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/FileBrowser.h b/src/openrct2-ui/interface/FileBrowser.h index e2d850106849..806c757352f0 100644 --- a/src/openrct2-ui/interface/FileBrowser.h +++ b/src/openrct2-ui/interface/FileBrowser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Graph.cpp b/src/openrct2-ui/interface/Graph.cpp index 6c737fb90939..37783c41b68f 100644 --- a/src/openrct2-ui/interface/Graph.cpp +++ b/src/openrct2-ui/interface/Graph.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Graph.h b/src/openrct2-ui/interface/Graph.h index eb56c738066d..03a55f690603 100644 --- a/src/openrct2-ui/interface/Graph.h +++ b/src/openrct2-ui/interface/Graph.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/InGameConsole.cpp b/src/openrct2-ui/interface/InGameConsole.cpp index 1c2c85685b2c..c707b906fd9b 100644 --- a/src/openrct2-ui/interface/InGameConsole.cpp +++ b/src/openrct2-ui/interface/InGameConsole.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/InGameConsole.h b/src/openrct2-ui/interface/InGameConsole.h index b1fc28e6760f..4608dffb0b84 100644 --- a/src/openrct2-ui/interface/InGameConsole.h +++ b/src/openrct2-ui/interface/InGameConsole.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/LandTool.cpp b/src/openrct2-ui/interface/LandTool.cpp index 4168449551ef..f9dc63e6cbc1 100644 --- a/src/openrct2-ui/interface/LandTool.cpp +++ b/src/openrct2-ui/interface/LandTool.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/LandTool.h b/src/openrct2-ui/interface/LandTool.h index ba700f016158..96387b06b6ce 100644 --- a/src/openrct2-ui/interface/LandTool.h +++ b/src/openrct2-ui/interface/LandTool.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Objective.cpp b/src/openrct2-ui/interface/Objective.cpp index 760230a0d132..a920005bf9d5 100644 --- a/src/openrct2-ui/interface/Objective.cpp +++ b/src/openrct2-ui/interface/Objective.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Objective.h b/src/openrct2-ui/interface/Objective.h index 4e8f387b402d..1e08082fde56 100644 --- a/src/openrct2-ui/interface/Objective.h +++ b/src/openrct2-ui/interface/Objective.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Theme.cpp b/src/openrct2-ui/interface/Theme.cpp index 19e126415b70..fd7f85ab8203 100644 --- a/src/openrct2-ui/interface/Theme.cpp +++ b/src/openrct2-ui/interface/Theme.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Theme.h b/src/openrct2-ui/interface/Theme.h index 67840fd5a0cd..3eb6352a0ef2 100644 --- a/src/openrct2-ui/interface/Theme.h +++ b/src/openrct2-ui/interface/Theme.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Viewport.h b/src/openrct2-ui/interface/Viewport.h index fe5029b0fe1f..9ada9ee4c381 100644 --- a/src/openrct2-ui/interface/Viewport.h +++ b/src/openrct2-ui/interface/Viewport.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index a49ff97d735d..f56100e78e57 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/ViewportInteraction.h b/src/openrct2-ui/interface/ViewportInteraction.h index c060011a61d9..864477762471 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.h +++ b/src/openrct2-ui/interface/ViewportInteraction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/ViewportQuery.cpp b/src/openrct2-ui/interface/ViewportQuery.cpp index e11091b659e4..39909103c4bb 100644 --- a/src/openrct2-ui/interface/ViewportQuery.cpp +++ b/src/openrct2-ui/interface/ViewportQuery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/ViewportQuery.h b/src/openrct2-ui/interface/ViewportQuery.h index 922cc3bb2ed4..740f577bc07d 100644 --- a/src/openrct2-ui/interface/ViewportQuery.h +++ b/src/openrct2-ui/interface/ViewportQuery.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 5cbc8249f99c..8515103a8c6a 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Widget.h b/src/openrct2-ui/interface/Widget.h index da160cb0d76c..a59ca9b885c4 100644 --- a/src/openrct2-ui/interface/Widget.h +++ b/src/openrct2-ui/interface/Widget.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index b8b68a8e66a7..1230df707d52 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/interface/Window.h b/src/openrct2-ui/interface/Window.h index dca1d5d5df9d..2eff99d49a05 100644 --- a/src/openrct2-ui/interface/Window.h +++ b/src/openrct2-ui/interface/Window.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index b025036747a4..e9d3575ce25d 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/ride/Construction.h b/src/openrct2-ui/ride/Construction.h index a275b87717b6..cb6dda3ddd66 100644 --- a/src/openrct2-ui/ride/Construction.h +++ b/src/openrct2-ui/ride/Construction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomImages.cpp b/src/openrct2-ui/scripting/CustomImages.cpp index ac2a1727e128..6e5662d29d55 100644 --- a/src/openrct2-ui/scripting/CustomImages.cpp +++ b/src/openrct2-ui/scripting/CustomImages.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomImages.h b/src/openrct2-ui/scripting/CustomImages.h index a2cb2a5ca35e..29833dcb56da 100644 --- a/src/openrct2-ui/scripting/CustomImages.h +++ b/src/openrct2-ui/scripting/CustomImages.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomListView.cpp b/src/openrct2-ui/scripting/CustomListView.cpp index add4be58e9cd..80f0c18e0e0a 100644 --- a/src/openrct2-ui/scripting/CustomListView.cpp +++ b/src/openrct2-ui/scripting/CustomListView.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomListView.h b/src/openrct2-ui/scripting/CustomListView.h index 119ac4fa4f77..3aa4ea00edaa 100644 --- a/src/openrct2-ui/scripting/CustomListView.h +++ b/src/openrct2-ui/scripting/CustomListView.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomMenu.cpp b/src/openrct2-ui/scripting/CustomMenu.cpp index 9dc2682995da..7cc4835f7f11 100644 --- a/src/openrct2-ui/scripting/CustomMenu.cpp +++ b/src/openrct2-ui/scripting/CustomMenu.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomMenu.h b/src/openrct2-ui/scripting/CustomMenu.h index 4263fc2e379f..0a62209aa958 100644 --- a/src/openrct2-ui/scripting/CustomMenu.h +++ b/src/openrct2-ui/scripting/CustomMenu.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index 6b16a6f41aea..ecc3a5910f68 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/CustomWindow.h b/src/openrct2-ui/scripting/CustomWindow.h index ce755e71914c..eafdf12f3340 100644 --- a/src/openrct2-ui/scripting/CustomWindow.h +++ b/src/openrct2-ui/scripting/CustomWindow.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index b40278c2aef4..d46a07bc311a 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScImageManager.hpp b/src/openrct2-ui/scripting/ScImageManager.hpp index 525365aa4c56..b746daa8171b 100644 --- a/src/openrct2-ui/scripting/ScImageManager.hpp +++ b/src/openrct2-ui/scripting/ScImageManager.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScTileSelection.hpp b/src/openrct2-ui/scripting/ScTileSelection.hpp index b3546dd97583..d484c15cc538 100644 --- a/src/openrct2-ui/scripting/ScTileSelection.hpp +++ b/src/openrct2-ui/scripting/ScTileSelection.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScTitleSequence.hpp b/src/openrct2-ui/scripting/ScTitleSequence.hpp index 9bc5982238d7..6a84b322cbd5 100644 --- a/src/openrct2-ui/scripting/ScTitleSequence.hpp +++ b/src/openrct2-ui/scripting/ScTitleSequence.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScUi.hpp b/src/openrct2-ui/scripting/ScUi.hpp index 1d9cb20cb93b..f11b23295c07 100644 --- a/src/openrct2-ui/scripting/ScUi.hpp +++ b/src/openrct2-ui/scripting/ScUi.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScViewport.hpp b/src/openrct2-ui/scripting/ScViewport.hpp index 2d387931276e..41b7d6d47d2c 100644 --- a/src/openrct2-ui/scripting/ScViewport.hpp +++ b/src/openrct2-ui/scripting/ScViewport.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScWidget.hpp b/src/openrct2-ui/scripting/ScWidget.hpp index 936865ed3c1e..20980ff54d57 100644 --- a/src/openrct2-ui/scripting/ScWidget.hpp +++ b/src/openrct2-ui/scripting/ScWidget.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/ScWindow.hpp b/src/openrct2-ui/scripting/ScWindow.hpp index 9129c781d158..4eb41191a559 100644 --- a/src/openrct2-ui/scripting/ScWindow.hpp +++ b/src/openrct2-ui/scripting/ScWindow.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/UiExtensions.cpp b/src/openrct2-ui/scripting/UiExtensions.cpp index ff2210ce8ea9..3f05f7b0212f 100644 --- a/src/openrct2-ui/scripting/UiExtensions.cpp +++ b/src/openrct2-ui/scripting/UiExtensions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/scripting/UiExtensions.h b/src/openrct2-ui/scripting/UiExtensions.h index fca8c95b9347..7b0ea4b664cf 100644 --- a/src/openrct2-ui/scripting/UiExtensions.h +++ b/src/openrct2-ui/scripting/UiExtensions.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/title/TitleSequencePlayer.cpp b/src/openrct2-ui/title/TitleSequencePlayer.cpp index 47867a9a0932..525832774490 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.cpp +++ b/src/openrct2-ui/title/TitleSequencePlayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/title/TitleSequencePlayer.h b/src/openrct2-ui/title/TitleSequencePlayer.h index d751a899ab7d..034988388424 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.h +++ b/src/openrct2-ui/title/TitleSequencePlayer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/About.cpp b/src/openrct2-ui/windows/About.cpp index f5188b0823ae..9dd5aaddea71 100644 --- a/src/openrct2-ui/windows/About.cpp +++ b/src/openrct2-ui/windows/About.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/AssetPacks.cpp b/src/openrct2-ui/windows/AssetPacks.cpp index 6705cb6f6d24..9c9f295e5468 100644 --- a/src/openrct2-ui/windows/AssetPacks.cpp +++ b/src/openrct2-ui/windows/AssetPacks.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Banner.cpp b/src/openrct2-ui/windows/Banner.cpp index 127c39d33a8c..02a1ec52fb3b 100644 --- a/src/openrct2-ui/windows/Banner.cpp +++ b/src/openrct2-ui/windows/Banner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Changelog.cpp b/src/openrct2-ui/windows/Changelog.cpp index 59d335f5f6ca..086b0b696f50 100644 --- a/src/openrct2-ui/windows/Changelog.cpp +++ b/src/openrct2-ui/windows/Changelog.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 941eacb6b474..8438960d7652 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 71f1dda8d8e7..0e5d7ba945c8 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index 4d8d6e83eb00..28d727df5a42 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/DebugPaint.cpp b/src/openrct2-ui/windows/DebugPaint.cpp index d556c8668d18..c4ddd5a03bd6 100644 --- a/src/openrct2-ui/windows/DebugPaint.cpp +++ b/src/openrct2-ui/windows/DebugPaint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/DemolishRidePrompt.cpp b/src/openrct2-ui/windows/DemolishRidePrompt.cpp index 2cfb809dc451..4309c925829b 100644 --- a/src/openrct2-ui/windows/DemolishRidePrompt.cpp +++ b/src/openrct2-ui/windows/DemolishRidePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index c6b9cd1328b2..1cc85c6056ab 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorBottomToolbar.cpp b/src/openrct2-ui/windows/EditorBottomToolbar.cpp index d528c24fa747..d56788051d49 100644 --- a/src/openrct2-ui/windows/EditorBottomToolbar.cpp +++ b/src/openrct2-ui/windows/EditorBottomToolbar.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index dc46740127f4..1f9185d6f5b5 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 8c7d89e42bf6..e8706208c2fb 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index cb14f3fa561a..25211ec79386 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 68fa1e61b32a..d1a4540341f7 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Error.cpp b/src/openrct2-ui/windows/Error.cpp index f7c932a9c949..d91dae1098c7 100644 --- a/src/openrct2-ui/windows/Error.cpp +++ b/src/openrct2-ui/windows/Error.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 0789f0347038..129ed874b736 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 4da27dc435ac..d88d04e409c0 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 09373cda6308..e06600522177 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 9bf88fa08e80..7b745c56ecbc 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index 0c5a4222b567..74e57eddebd3 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index 57d43db79bd1..3f0f95405f9f 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Land.cpp b/src/openrct2-ui/windows/Land.cpp index 27208711dc44..ec0a8b320a7d 100644 --- a/src/openrct2-ui/windows/Land.cpp +++ b/src/openrct2-ui/windows/Land.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index 871289e04b7c..70883e248b82 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 602fb40792d2..7529e075a69f 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Main.cpp b/src/openrct2-ui/windows/Main.cpp index 420b7f4cd6d1..53e07a532c8b 100644 --- a/src/openrct2-ui/windows/Main.cpp +++ b/src/openrct2-ui/windows/Main.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 18e1fa87ae47..60c39289da67 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 38c448c01efa..5a250ea704c1 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/MapTooltip.cpp b/src/openrct2-ui/windows/MapTooltip.cpp index e09dd2616359..429f5841e199 100644 --- a/src/openrct2-ui/windows/MapTooltip.cpp +++ b/src/openrct2-ui/windows/MapTooltip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 7ed86827a5b9..c816048aae61 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index e295792c0948..4d79196f7987 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/NetworkStatus.cpp b/src/openrct2-ui/windows/NetworkStatus.cpp index f506bf78b13e..6965c399fc01 100644 --- a/src/openrct2-ui/windows/NetworkStatus.cpp +++ b/src/openrct2-ui/windows/NetworkStatus.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/NewCampaign.cpp b/src/openrct2-ui/windows/NewCampaign.cpp index 418a96635189..94ec49fdb60b 100644 --- a/src/openrct2-ui/windows/NewCampaign.cpp +++ b/src/openrct2-ui/windows/NewCampaign.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 2fed074aa856..311ef9fd0ee6 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 30583cc988ae..5798e4017d75 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index f533d8058cb8..5b202a76dfea 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index e493b2dd17f6..228589e914cf 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/OverwritePrompt.cpp b/src/openrct2-ui/windows/OverwritePrompt.cpp index 28e1cde80234..e397c532952a 100644 --- a/src/openrct2-ui/windows/OverwritePrompt.cpp +++ b/src/openrct2-ui/windows/OverwritePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 8de02560e0ea..ce5a05a3e0c2 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index 231a032a0f43..812715e84e15 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 7bad97d828aa..5f9073fe7061 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ProgressWindow.cpp b/src/openrct2-ui/windows/ProgressWindow.cpp index 89a900ea0f49..696a0493a0a3 100644 --- a/src/openrct2-ui/windows/ProgressWindow.cpp +++ b/src/openrct2-ui/windows/ProgressWindow.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp index bbc269530e49..382e9e4cfc71 100644 --- a/src/openrct2-ui/windows/RefurbishRidePrompt.cpp +++ b/src/openrct2-ui/windows/RefurbishRidePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index a9c1310e7ddc..e1f42970fd92 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index e4fbfac15bbd..76f419253eb6 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 5fcdae10487f..e66371320222 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index 410e4813955f..5ef34114fd65 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/SavePrompt.cpp b/src/openrct2-ui/windows/SavePrompt.cpp index 23f8fa2807b1..a9885235d105 100644 --- a/src/openrct2-ui/windows/SavePrompt.cpp +++ b/src/openrct2-ui/windows/SavePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 4a35dc1e1138..32ab2155281a 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 55984ac6acb3..3708bce133e8 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/SceneryScatter.cpp b/src/openrct2-ui/windows/SceneryScatter.cpp index 9fc6d1402353..d708d5f5a755 100644 --- a/src/openrct2-ui/windows/SceneryScatter.cpp +++ b/src/openrct2-ui/windows/SceneryScatter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index dfa38b90016a..abb1ae9ba9be 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ServerStart.cpp b/src/openrct2-ui/windows/ServerStart.cpp index adea8f28c15f..8f2404b3ab9c 100644 --- a/src/openrct2-ui/windows/ServerStart.cpp +++ b/src/openrct2-ui/windows/ServerStart.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index 7cd951b77da0..e64e9c9822b3 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index e4b4cf9dc892..dc0b63111fd2 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index f986fbf6b30d..c80da2f450f1 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/StaffFirePrompt.cpp b/src/openrct2-ui/windows/StaffFirePrompt.cpp index afc3473248a3..0b4786aac7d7 100644 --- a/src/openrct2-ui/windows/StaffFirePrompt.cpp +++ b/src/openrct2-ui/windows/StaffFirePrompt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index a7ec8e9a2546..160439eb0763 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index 3eba555bfed0..f53956411eca 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index b6ed3c6b702c..24e04b9f6934 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 30f1bbb92731..ac27c5e7fd26 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleExit.cpp b/src/openrct2-ui/windows/TitleExit.cpp index 97cefee22ed4..1bf0203e5525 100644 --- a/src/openrct2-ui/windows/TitleExit.cpp +++ b/src/openrct2-ui/windows/TitleExit.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleLogo.cpp b/src/openrct2-ui/windows/TitleLogo.cpp index 41683e0dc686..1b44e381868c 100644 --- a/src/openrct2-ui/windows/TitleLogo.cpp +++ b/src/openrct2-ui/windows/TitleLogo.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleMenu.cpp b/src/openrct2-ui/windows/TitleMenu.cpp index 65df8a8e39fc..a40dc82d3bf1 100644 --- a/src/openrct2-ui/windows/TitleMenu.cpp +++ b/src/openrct2-ui/windows/TitleMenu.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleOptions.cpp b/src/openrct2-ui/windows/TitleOptions.cpp index 87ea4896bc23..f73e3fa26c35 100644 --- a/src/openrct2-ui/windows/TitleOptions.cpp +++ b/src/openrct2-ui/windows/TitleOptions.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TitleVersion.cpp b/src/openrct2-ui/windows/TitleVersion.cpp index cadeb66624f0..f949f1ef8ac4 100644 --- a/src/openrct2-ui/windows/TitleVersion.cpp +++ b/src/openrct2-ui/windows/TitleVersion.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Tooltip.cpp b/src/openrct2-ui/windows/Tooltip.cpp index bcf558fef4e0..933c14b10f9e 100644 --- a/src/openrct2-ui/windows/Tooltip.cpp +++ b/src/openrct2-ui/windows/Tooltip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 940a1f5d81f7..a12d256eee82 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TrackDesignManage.cpp b/src/openrct2-ui/windows/TrackDesignManage.cpp index f79bb05cd2b1..e9142fd17090 100644 --- a/src/openrct2-ui/windows/TrackDesignManage.cpp +++ b/src/openrct2-ui/windows/TrackDesignManage.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 9a65afe4f8f8..9b2f0be6673d 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 9783599eae97..2347c7c9a810 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Transparency.cpp b/src/openrct2-ui/windows/Transparency.cpp index 73f0defddc03..db056a33baaa 100644 --- a/src/openrct2-ui/windows/Transparency.cpp +++ b/src/openrct2-ui/windows/Transparency.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 0fef3c583b58..edb27ed5a095 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Viewport.cpp b/src/openrct2-ui/windows/Viewport.cpp index a2d11750fb19..e5e5b1b9aad3 100644 --- a/src/openrct2-ui/windows/Viewport.cpp +++ b/src/openrct2-ui/windows/Viewport.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Water.cpp b/src/openrct2-ui/windows/Water.cpp index 30f3309568bc..f652f1eb3132 100644 --- a/src/openrct2-ui/windows/Water.cpp +++ b/src/openrct2-ui/windows/Water.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-ui/windows/Windows.h b/src/openrct2-ui/windows/Windows.h index a96345c992b5..f049fb79ff06 100644 --- a/src/openrct2-ui/windows/Windows.h +++ b/src/openrct2-ui/windows/Windows.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2-win/openrct2-win.cpp b/src/openrct2-win/openrct2-win.cpp index d0e43aa3f5e2..d6c6bc801c52 100644 --- a/src/openrct2-win/openrct2-win.cpp +++ b/src/openrct2-win/openrct2-win.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPack.cpp b/src/openrct2/AssetPack.cpp index c843cf652a4d..389e7d6a4bd1 100644 --- a/src/openrct2/AssetPack.cpp +++ b/src/openrct2/AssetPack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPack.h b/src/openrct2/AssetPack.h index a6a1a5d65a1d..0aec092ad023 100644 --- a/src/openrct2/AssetPack.h +++ b/src/openrct2/AssetPack.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPackManager.cpp b/src/openrct2/AssetPackManager.cpp index 9e12d400b752..f1c90edb9383 100644 --- a/src/openrct2/AssetPackManager.cpp +++ b/src/openrct2/AssetPackManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/AssetPackManager.h b/src/openrct2/AssetPackManager.h index 2fcf5dba117a..e8ad2aac1d2d 100644 --- a/src/openrct2/AssetPackManager.h +++ b/src/openrct2/AssetPackManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Cheats.cpp b/src/openrct2/Cheats.cpp index 72d6db7fcb50..190aa6633d5d 100644 --- a/src/openrct2/Cheats.cpp +++ b/src/openrct2/Cheats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Cheats.h b/src/openrct2/Cheats.h index 85b14724b4bf..b81c28b02208 100644 --- a/src/openrct2/Cheats.h +++ b/src/openrct2/Cheats.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index e697a8a4854d..79b953873a54 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Context.h b/src/openrct2/Context.h index 92e9b33eb5c8..46738aca3018 100644 --- a/src/openrct2/Context.h +++ b/src/openrct2/Context.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Date.cpp b/src/openrct2/Date.cpp index 1375677a480c..af1d5af71281 100644 --- a/src/openrct2/Date.cpp +++ b/src/openrct2/Date.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Date.h b/src/openrct2/Date.h index 74cda83ac7d3..936bac86e067 100644 --- a/src/openrct2/Date.h +++ b/src/openrct2/Date.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Diagnostic.cpp b/src/openrct2/Diagnostic.cpp index 9d6114b53734..35f23a2c17e2 100644 --- a/src/openrct2/Diagnostic.cpp +++ b/src/openrct2/Diagnostic.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Diagnostic.h b/src/openrct2/Diagnostic.h index 61bec06474dc..7744b8f5fbe3 100644 --- a/src/openrct2/Diagnostic.h +++ b/src/openrct2/Diagnostic.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index 44995fc961da..ebe5d8fe0a38 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Editor.h b/src/openrct2/Editor.h index 6281cee5cfc5..36223fcdb581 100644 --- a/src/openrct2/Editor.h +++ b/src/openrct2/Editor.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/EditorObjectSelectionSession.cpp b/src/openrct2/EditorObjectSelectionSession.cpp index 356c3f0056d6..d709534e81e9 100644 --- a/src/openrct2/EditorObjectSelectionSession.cpp +++ b/src/openrct2/EditorObjectSelectionSession.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/EditorObjectSelectionSession.h b/src/openrct2/EditorObjectSelectionSession.h index 527704cc2b5e..c5c01a13262c 100644 --- a/src/openrct2/EditorObjectSelectionSession.h +++ b/src/openrct2/EditorObjectSelectionSession.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/FileClassifier.cpp b/src/openrct2/FileClassifier.cpp index 1b0bc7f4ffa6..e666116c1390 100644 --- a/src/openrct2/FileClassifier.cpp +++ b/src/openrct2/FileClassifier.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/FileClassifier.h b/src/openrct2/FileClassifier.h index e360b8d3c98e..b0d168c987af 100644 --- a/src/openrct2/FileClassifier.h +++ b/src/openrct2/FileClassifier.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index 1314b67094ee..6e3c1b0f5982 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Game.h b/src/openrct2/Game.h index 13d5a3b989ea..3971cc2e1ad0 100644 --- a/src/openrct2/Game.h +++ b/src/openrct2/Game.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameState.cpp b/src/openrct2/GameState.cpp index 3de0e5b5a1fb..20814afa99a4 100644 --- a/src/openrct2/GameState.cpp +++ b/src/openrct2/GameState.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index 7370c08f3d05..06ff80274973 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameStateSnapshots.cpp b/src/openrct2/GameStateSnapshots.cpp index 1bbfd3f1d64f..58eaeae29cc7 100644 --- a/src/openrct2/GameStateSnapshots.cpp +++ b/src/openrct2/GameStateSnapshots.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/GameStateSnapshots.h b/src/openrct2/GameStateSnapshots.h index 87d892b9ab28..32601e3628c8 100644 --- a/src/openrct2/GameStateSnapshots.h +++ b/src/openrct2/GameStateSnapshots.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Identifiers.h b/src/openrct2/Identifiers.h index 96d8949f6c7c..f8fd87fddf1d 100644 --- a/src/openrct2/Identifiers.h +++ b/src/openrct2/Identifiers.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Input.cpp b/src/openrct2/Input.cpp index da023b981648..f0c5c359a8e6 100644 --- a/src/openrct2/Input.cpp +++ b/src/openrct2/Input.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Input.h b/src/openrct2/Input.h index 7411b8cc34aa..8cfc09d7cee3 100644 --- a/src/openrct2/Input.h +++ b/src/openrct2/Input.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Limits.h b/src/openrct2/Limits.h index c2a07a01abe6..ed45a66d03f0 100644 --- a/src/openrct2/Limits.h +++ b/src/openrct2/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/OpenRCT2.cpp b/src/openrct2/OpenRCT2.cpp index e4030b2471e4..d2ac266f3e04 100644 --- a/src/openrct2/OpenRCT2.cpp +++ b/src/openrct2/OpenRCT2.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/OpenRCT2.h b/src/openrct2/OpenRCT2.h index b77281eb60dc..110bf56bbebc 100644 --- a/src/openrct2/OpenRCT2.h +++ b/src/openrct2/OpenRCT2.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ParkImporter.cpp b/src/openrct2/ParkImporter.cpp index 01d127a0c986..daae96f70c2e 100644 --- a/src/openrct2/ParkImporter.cpp +++ b/src/openrct2/ParkImporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ParkImporter.h b/src/openrct2/ParkImporter.h index 15ccc0b3c019..bbcb3de400ba 100644 --- a/src/openrct2/ParkImporter.h +++ b/src/openrct2/ParkImporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/PlatformEnvironment.cpp b/src/openrct2/PlatformEnvironment.cpp index f656142adb0b..9434eeab12ac 100644 --- a/src/openrct2/PlatformEnvironment.cpp +++ b/src/openrct2/PlatformEnvironment.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/PlatformEnvironment.h b/src/openrct2/PlatformEnvironment.h index 99f1abb24c27..f3142e4842d0 100644 --- a/src/openrct2/PlatformEnvironment.h +++ b/src/openrct2/PlatformEnvironment.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index 4a681c186298..3ac51c759e60 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ReplayManager.h b/src/openrct2/ReplayManager.h index a6a9ef741093..7fd61f709689 100644 --- a/src/openrct2/ReplayManager.h +++ b/src/openrct2/ReplayManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/SpriteIds.h b/src/openrct2/SpriteIds.h index f53b4f79f55d..a09781e72913 100644 --- a/src/openrct2/SpriteIds.h +++ b/src/openrct2/SpriteIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/System.hpp b/src/openrct2/System.hpp index 510097d7403a..644e7d391c96 100644 --- a/src/openrct2/System.hpp +++ b/src/openrct2/System.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/TrackImporter.cpp b/src/openrct2/TrackImporter.cpp index fb77f38e5a19..530a3602704c 100644 --- a/src/openrct2/TrackImporter.cpp +++ b/src/openrct2/TrackImporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/TrackImporter.h b/src/openrct2/TrackImporter.h index 6c2afa0cc379..10c807b783a1 100644 --- a/src/openrct2/TrackImporter.h +++ b/src/openrct2/TrackImporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Version.cpp b/src/openrct2/Version.cpp index 921bd12be923..4025f148733a 100644 --- a/src/openrct2/Version.cpp +++ b/src/openrct2/Version.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h index c56269e2d09d..e089cab8e658 100644 --- a/src/openrct2/Version.h +++ b/src/openrct2/Version.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BalloonPressAction.cpp b/src/openrct2/actions/BalloonPressAction.cpp index 7065ca4c9640..19c72338de98 100644 --- a/src/openrct2/actions/BalloonPressAction.cpp +++ b/src/openrct2/actions/BalloonPressAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BalloonPressAction.h b/src/openrct2/actions/BalloonPressAction.h index 468cba5809c2..75928a472e9a 100644 --- a/src/openrct2/actions/BalloonPressAction.h +++ b/src/openrct2/actions/BalloonPressAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 824653fdb07d..653bc0a42bd0 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerPlaceAction.h b/src/openrct2/actions/BannerPlaceAction.h index b6dbd55e4673..115886acf564 100644 --- a/src/openrct2/actions/BannerPlaceAction.h +++ b/src/openrct2/actions/BannerPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerRemoveAction.cpp b/src/openrct2/actions/BannerRemoveAction.cpp index 5e7f876c89c4..61a389a36331 100644 --- a/src/openrct2/actions/BannerRemoveAction.cpp +++ b/src/openrct2/actions/BannerRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerRemoveAction.h b/src/openrct2/actions/BannerRemoveAction.h index 448e7e82a6a7..d2063d321f42 100644 --- a/src/openrct2/actions/BannerRemoveAction.h +++ b/src/openrct2/actions/BannerRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetColourAction.cpp b/src/openrct2/actions/BannerSetColourAction.cpp index 28d96324a3ed..f376beee991d 100644 --- a/src/openrct2/actions/BannerSetColourAction.cpp +++ b/src/openrct2/actions/BannerSetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetColourAction.h b/src/openrct2/actions/BannerSetColourAction.h index 271c2073a475..56fec7f7b294 100644 --- a/src/openrct2/actions/BannerSetColourAction.h +++ b/src/openrct2/actions/BannerSetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetNameAction.cpp b/src/openrct2/actions/BannerSetNameAction.cpp index af0c879c7af5..26b7d65887fc 100644 --- a/src/openrct2/actions/BannerSetNameAction.cpp +++ b/src/openrct2/actions/BannerSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetNameAction.h b/src/openrct2/actions/BannerSetNameAction.h index f4b75ac5064a..38d9bbd35f55 100644 --- a/src/openrct2/actions/BannerSetNameAction.h +++ b/src/openrct2/actions/BannerSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index 2048edbcd416..e6e27b955608 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/BannerSetStyleAction.h b/src/openrct2/actions/BannerSetStyleAction.h index 504e301cd2e7..7af76d39817c 100644 --- a/src/openrct2/actions/BannerSetStyleAction.h +++ b/src/openrct2/actions/BannerSetStyleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 4fd2bc668102..4b38f9fdcd8b 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CheatSetAction.h b/src/openrct2/actions/CheatSetAction.h index 750e19583624..ce8e7e304dd9 100644 --- a/src/openrct2/actions/CheatSetAction.h +++ b/src/openrct2/actions/CheatSetAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index c3a9143dd2f0..8bf6667bd6c0 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ClearAction.h b/src/openrct2/actions/ClearAction.h index d0d9b58a42c9..d087b251571d 100644 --- a/src/openrct2/actions/ClearAction.h +++ b/src/openrct2/actions/ClearAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CommandFlag.h b/src/openrct2/actions/CommandFlag.h index 07e56743c067..b77f3b175c92 100644 --- a/src/openrct2/actions/CommandFlag.h +++ b/src/openrct2/actions/CommandFlag.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CustomAction.cpp b/src/openrct2/actions/CustomAction.cpp index 1a4c08a62f2a..90f70fff026a 100644 --- a/src/openrct2/actions/CustomAction.cpp +++ b/src/openrct2/actions/CustomAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/CustomAction.h b/src/openrct2/actions/CustomAction.h index fcf8ca14b27e..0ee60f159c10 100644 --- a/src/openrct2/actions/CustomAction.h +++ b/src/openrct2/actions/CustomAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 223274e44f31..c99121b1b3a7 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.h b/src/openrct2/actions/FootpathAdditionPlaceAction.h index 4e032c4c88c1..c5a40a033ecf 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.h +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index 73632af68ebb..eb4e0682decc 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.h b/src/openrct2/actions/FootpathAdditionRemoveAction.h index c7f2b9298b61..8e7f02fc9ab7 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.h +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index a53b296064fe..b96db0593c01 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.h b/src/openrct2/actions/FootpathLayoutPlaceAction.h index c971241c4d58..0868e9ed958f 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.h +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 7bd4df0ec67b..a5cd479dd1ee 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathPlaceAction.h b/src/openrct2/actions/FootpathPlaceAction.h index 325e139766ea..b4edf2d4ef32 100644 --- a/src/openrct2/actions/FootpathPlaceAction.h +++ b/src/openrct2/actions/FootpathPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index 9513813d4535..ea5c961fbe8d 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/FootpathRemoveAction.h b/src/openrct2/actions/FootpathRemoveAction.h index 302bde76e320..c0284793fa4e 100644 --- a/src/openrct2/actions/FootpathRemoveAction.h +++ b/src/openrct2/actions/FootpathRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index a47bce001ae8..8d2c7a3d25bb 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index 9574dccb1fb8..0f59341d08b1 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameActionRegistry.cpp b/src/openrct2/actions/GameActionRegistry.cpp index de3bb3516817..afeeaaa43b2e 100644 --- a/src/openrct2/actions/GameActionRegistry.cpp +++ b/src/openrct2/actions/GameActionRegistry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameActionResult.h b/src/openrct2/actions/GameActionResult.h index 201bc0ed97fb..c97ab32d583b 100644 --- a/src/openrct2/actions/GameActionResult.h +++ b/src/openrct2/actions/GameActionResult.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameSetSpeedAction.cpp b/src/openrct2/actions/GameSetSpeedAction.cpp index 3d385c914b7e..f17ba9a0ed06 100644 --- a/src/openrct2/actions/GameSetSpeedAction.cpp +++ b/src/openrct2/actions/GameSetSpeedAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GameSetSpeedAction.h b/src/openrct2/actions/GameSetSpeedAction.h index e42cfed52738..89842556c271 100644 --- a/src/openrct2/actions/GameSetSpeedAction.h +++ b/src/openrct2/actions/GameSetSpeedAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetFlagsAction.cpp b/src/openrct2/actions/GuestSetFlagsAction.cpp index 6d331517423c..f3c921fa2a47 100644 --- a/src/openrct2/actions/GuestSetFlagsAction.cpp +++ b/src/openrct2/actions/GuestSetFlagsAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetFlagsAction.h b/src/openrct2/actions/GuestSetFlagsAction.h index d20c58e7c39b..1cda6807a3d6 100644 --- a/src/openrct2/actions/GuestSetFlagsAction.h +++ b/src/openrct2/actions/GuestSetFlagsAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetNameAction.cpp b/src/openrct2/actions/GuestSetNameAction.cpp index 820d139a9f92..8b6c098bd9a8 100644 --- a/src/openrct2/actions/GuestSetNameAction.cpp +++ b/src/openrct2/actions/GuestSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/GuestSetNameAction.h b/src/openrct2/actions/GuestSetNameAction.h index d9a423c0a471..9fb1f7581a83 100644 --- a/src/openrct2/actions/GuestSetNameAction.h +++ b/src/openrct2/actions/GuestSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandBuyRightsAction.cpp b/src/openrct2/actions/LandBuyRightsAction.cpp index df7accd36076..a7424c789c45 100644 --- a/src/openrct2/actions/LandBuyRightsAction.cpp +++ b/src/openrct2/actions/LandBuyRightsAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandBuyRightsAction.h b/src/openrct2/actions/LandBuyRightsAction.h index 6269d633e061..adb2fe994a1c 100644 --- a/src/openrct2/actions/LandBuyRightsAction.h +++ b/src/openrct2/actions/LandBuyRightsAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index dd93bfdb2aa9..4ae65882d009 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandLowerAction.h b/src/openrct2/actions/LandLowerAction.h index e7bb79fc342f..a9aba164be88 100644 --- a/src/openrct2/actions/LandLowerAction.h +++ b/src/openrct2/actions/LandLowerAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index 15134436b1aa..36ac04f9af67 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandRaiseAction.h b/src/openrct2/actions/LandRaiseAction.h index 2987288edca2..36b9ade0f253 100644 --- a/src/openrct2/actions/LandRaiseAction.h +++ b/src/openrct2/actions/LandRaiseAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index 48939c5ab673..b616f80fb65c 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetHeightAction.h b/src/openrct2/actions/LandSetHeightAction.h index c5a0791f4698..b6a0fe93c6e3 100644 --- a/src/openrct2/actions/LandSetHeightAction.h +++ b/src/openrct2/actions/LandSetHeightAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index f5f68fe0a760..5e6dd9dfbb92 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSetRightsAction.h b/src/openrct2/actions/LandSetRightsAction.h index e64975708b7d..ccd4d355d5ae 100644 --- a/src/openrct2/actions/LandSetRightsAction.h +++ b/src/openrct2/actions/LandSetRightsAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSmoothAction.cpp b/src/openrct2/actions/LandSmoothAction.cpp index 23ddcfbd737a..07616351eee6 100644 --- a/src/openrct2/actions/LandSmoothAction.cpp +++ b/src/openrct2/actions/LandSmoothAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LandSmoothAction.h b/src/openrct2/actions/LandSmoothAction.h index a78f2e1346e4..bedab19c47dc 100644 --- a/src/openrct2/actions/LandSmoothAction.h +++ b/src/openrct2/actions/LandSmoothAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 6355a94c0fc2..9f08d29860ba 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.h b/src/openrct2/actions/LargeSceneryPlaceAction.h index a9956df98803..504cd38a90ef 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.h +++ b/src/openrct2/actions/LargeSceneryPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index bf29e736c427..3183339ce954 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.h b/src/openrct2/actions/LargeSceneryRemoveAction.h index eb95d08a3cec..2c6ad2c9df50 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.h +++ b/src/openrct2/actions/LargeSceneryRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeScenerySetColourAction.cpp b/src/openrct2/actions/LargeScenerySetColourAction.cpp index cd803749db3c..3c8e4b93de2b 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.cpp +++ b/src/openrct2/actions/LargeScenerySetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LargeScenerySetColourAction.h b/src/openrct2/actions/LargeScenerySetColourAction.h index 5c0af2bc6169..8958ac734e08 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.h +++ b/src/openrct2/actions/LargeScenerySetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LoadOrQuitAction.cpp b/src/openrct2/actions/LoadOrQuitAction.cpp index 9c978305dde7..9adc39f1d615 100644 --- a/src/openrct2/actions/LoadOrQuitAction.cpp +++ b/src/openrct2/actions/LoadOrQuitAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/LoadOrQuitAction.h b/src/openrct2/actions/LoadOrQuitAction.h index 271dac08ebf0..e9d25553d1d4 100644 --- a/src/openrct2/actions/LoadOrQuitAction.h +++ b/src/openrct2/actions/LoadOrQuitAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MapChangeSizeAction.cpp b/src/openrct2/actions/MapChangeSizeAction.cpp index 227926b02c03..c50cb7d2aedf 100644 --- a/src/openrct2/actions/MapChangeSizeAction.cpp +++ b/src/openrct2/actions/MapChangeSizeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MapChangeSizeAction.h b/src/openrct2/actions/MapChangeSizeAction.h index 95bff8bebd09..dd3562155c44 100644 --- a/src/openrct2/actions/MapChangeSizeAction.h +++ b/src/openrct2/actions/MapChangeSizeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 9ce59392054d..3d15fb1eda9c 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazePlaceTrackAction.h b/src/openrct2/actions/MazePlaceTrackAction.h index 7d0cb6baf8fc..f118d14e333c 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.h +++ b/src/openrct2/actions/MazePlaceTrackAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 86fa63997a24..423d63f948c6 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/MazeSetTrackAction.h b/src/openrct2/actions/MazeSetTrackAction.h index f504b9dbecfe..a7db54aa1875 100644 --- a/src/openrct2/actions/MazeSetTrackAction.h +++ b/src/openrct2/actions/MazeSetTrackAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/NetworkModifyGroupAction.cpp b/src/openrct2/actions/NetworkModifyGroupAction.cpp index aefbbe9f54f5..b276dbe405f3 100644 --- a/src/openrct2/actions/NetworkModifyGroupAction.cpp +++ b/src/openrct2/actions/NetworkModifyGroupAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/NetworkModifyGroupAction.h b/src/openrct2/actions/NetworkModifyGroupAction.h index b70296dc940b..41d5aebc0fd6 100644 --- a/src/openrct2/actions/NetworkModifyGroupAction.h +++ b/src/openrct2/actions/NetworkModifyGroupAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index 4faadb0d495b..f28dc013bf3e 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.h b/src/openrct2/actions/ParkEntrancePlaceAction.h index 7f642b6c2f14..60164a22dcd3 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.h +++ b/src/openrct2/actions/ParkEntrancePlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.cpp b/src/openrct2/actions/ParkEntranceRemoveAction.cpp index 395984a466df..909009899228 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.cpp +++ b/src/openrct2/actions/ParkEntranceRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.h b/src/openrct2/actions/ParkEntranceRemoveAction.h index 56c5a9e7e0c7..e459a45f7ef1 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.h +++ b/src/openrct2/actions/ParkEntranceRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index a4bcb231c1e8..497ef60d0e42 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkMarketingAction.h b/src/openrct2/actions/ParkMarketingAction.h index 996f836c91c4..7e5aec1f0620 100644 --- a/src/openrct2/actions/ParkMarketingAction.h +++ b/src/openrct2/actions/ParkMarketingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetDateAction.cpp b/src/openrct2/actions/ParkSetDateAction.cpp index 8b3c5407aeff..8827905481a9 100644 --- a/src/openrct2/actions/ParkSetDateAction.cpp +++ b/src/openrct2/actions/ParkSetDateAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetDateAction.h b/src/openrct2/actions/ParkSetDateAction.h index bc9836b7e813..a42c8c870c49 100644 --- a/src/openrct2/actions/ParkSetDateAction.h +++ b/src/openrct2/actions/ParkSetDateAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp index e95949dfde18..442168be0c17 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.h b/src/openrct2/actions/ParkSetEntranceFeeAction.h index 748b826280f9..84ef9c79f468 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.h +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetLoanAction.cpp b/src/openrct2/actions/ParkSetLoanAction.cpp index f283e6ad190a..689ced745672 100644 --- a/src/openrct2/actions/ParkSetLoanAction.cpp +++ b/src/openrct2/actions/ParkSetLoanAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetLoanAction.h b/src/openrct2/actions/ParkSetLoanAction.h index 6bdd27c49c18..e2ed95511c9a 100644 --- a/src/openrct2/actions/ParkSetLoanAction.h +++ b/src/openrct2/actions/ParkSetLoanAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetNameAction.cpp b/src/openrct2/actions/ParkSetNameAction.cpp index 95b4ea1a3f4f..53581f9c79ac 100644 --- a/src/openrct2/actions/ParkSetNameAction.cpp +++ b/src/openrct2/actions/ParkSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetNameAction.h b/src/openrct2/actions/ParkSetNameAction.h index 1c4682f54ac0..96b083d8c8de 100644 --- a/src/openrct2/actions/ParkSetNameAction.h +++ b/src/openrct2/actions/ParkSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetParameterAction.cpp b/src/openrct2/actions/ParkSetParameterAction.cpp index be583c8be3f6..efce22509805 100644 --- a/src/openrct2/actions/ParkSetParameterAction.cpp +++ b/src/openrct2/actions/ParkSetParameterAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetParameterAction.h b/src/openrct2/actions/ParkSetParameterAction.h index 162a74527521..6fca01c2018c 100644 --- a/src/openrct2/actions/ParkSetParameterAction.h +++ b/src/openrct2/actions/ParkSetParameterAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetResearchFundingAction.cpp b/src/openrct2/actions/ParkSetResearchFundingAction.cpp index 7de77f035f7d..666852afa579 100644 --- a/src/openrct2/actions/ParkSetResearchFundingAction.cpp +++ b/src/openrct2/actions/ParkSetResearchFundingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ParkSetResearchFundingAction.h b/src/openrct2/actions/ParkSetResearchFundingAction.h index 7650ada7d892..587800ac4384 100644 --- a/src/openrct2/actions/ParkSetResearchFundingAction.h +++ b/src/openrct2/actions/ParkSetResearchFundingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PauseToggleAction.cpp b/src/openrct2/actions/PauseToggleAction.cpp index 1e59ec4eb9b3..c89d6738a983 100644 --- a/src/openrct2/actions/PauseToggleAction.cpp +++ b/src/openrct2/actions/PauseToggleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PauseToggleAction.h b/src/openrct2/actions/PauseToggleAction.h index 25dc7cb78adb..6d93c12b9c76 100644 --- a/src/openrct2/actions/PauseToggleAction.h +++ b/src/openrct2/actions/PauseToggleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepPickupAction.cpp b/src/openrct2/actions/PeepPickupAction.cpp index 78b5ee08695f..ea92b4b2afef 100644 --- a/src/openrct2/actions/PeepPickupAction.cpp +++ b/src/openrct2/actions/PeepPickupAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepPickupAction.h b/src/openrct2/actions/PeepPickupAction.h index 90dd05b75215..b59054eb27ce 100644 --- a/src/openrct2/actions/PeepPickupAction.h +++ b/src/openrct2/actions/PeepPickupAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.cpp b/src/openrct2/actions/PeepSpawnPlaceAction.cpp index 0526f8a579e0..19f4a129bb15 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.cpp +++ b/src/openrct2/actions/PeepSpawnPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.h b/src/openrct2/actions/PeepSpawnPlaceAction.h index cba9dec74b08..274455beb0a6 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.h +++ b/src/openrct2/actions/PeepSpawnPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerKickAction.cpp b/src/openrct2/actions/PlayerKickAction.cpp index 7d22599eae3e..33bebb40ee79 100644 --- a/src/openrct2/actions/PlayerKickAction.cpp +++ b/src/openrct2/actions/PlayerKickAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerKickAction.h b/src/openrct2/actions/PlayerKickAction.h index 9aba3822e3c2..783550a6960e 100644 --- a/src/openrct2/actions/PlayerKickAction.h +++ b/src/openrct2/actions/PlayerKickAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerSetGroupAction.cpp b/src/openrct2/actions/PlayerSetGroupAction.cpp index 1b6029e4e583..731dbda09c6e 100644 --- a/src/openrct2/actions/PlayerSetGroupAction.cpp +++ b/src/openrct2/actions/PlayerSetGroupAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/PlayerSetGroupAction.h b/src/openrct2/actions/PlayerSetGroupAction.h index c4adba0eb4d8..bccbeca1b8e4 100644 --- a/src/openrct2/actions/PlayerSetGroupAction.h +++ b/src/openrct2/actions/PlayerSetGroupAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ResultWithMessage.h b/src/openrct2/actions/ResultWithMessage.h index f78b8b5b7579..f7b888a51260 100644 --- a/src/openrct2/actions/ResultWithMessage.h +++ b/src/openrct2/actions/ResultWithMessage.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index dcf4f21627b3..9a0ac4848e9f 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideCreateAction.h b/src/openrct2/actions/RideCreateAction.h index b386d45ddb93..698243f860ed 100644 --- a/src/openrct2/actions/RideCreateAction.h +++ b/src/openrct2/actions/RideCreateAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index d73215282a43..b5ad30812677 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideDemolishAction.h b/src/openrct2/actions/RideDemolishAction.h index fcd598380675..6bacbd2d7e1f 100644 --- a/src/openrct2/actions/RideDemolishAction.h +++ b/src/openrct2/actions/RideDemolishAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 791204bb5c10..66ed9aa0b21c 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.h b/src/openrct2/actions/RideEntranceExitPlaceAction.h index a0b2be59ad12..1dd4f7d4c305 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.h +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp index 83c79ff14086..4dc23352109c 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.cpp +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideEntranceExitRemoveAction.h b/src/openrct2/actions/RideEntranceExitRemoveAction.h index cb955f86ea7c..ba118a189224 100644 --- a/src/openrct2/actions/RideEntranceExitRemoveAction.h +++ b/src/openrct2/actions/RideEntranceExitRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideFreezeRatingAction.cpp b/src/openrct2/actions/RideFreezeRatingAction.cpp index b35bbf4bc83d..f7844e324bee 100644 --- a/src/openrct2/actions/RideFreezeRatingAction.cpp +++ b/src/openrct2/actions/RideFreezeRatingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideFreezeRatingAction.h b/src/openrct2/actions/RideFreezeRatingAction.h index adf90b74b3b7..2e7942988897 100644 --- a/src/openrct2/actions/RideFreezeRatingAction.h +++ b/src/openrct2/actions/RideFreezeRatingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetAppearanceAction.cpp b/src/openrct2/actions/RideSetAppearanceAction.cpp index fa961931bf29..7b5d7720af93 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.cpp +++ b/src/openrct2/actions/RideSetAppearanceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetAppearanceAction.h b/src/openrct2/actions/RideSetAppearanceAction.h index 58f8055ff8d4..8d6b06d878b9 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.h +++ b/src/openrct2/actions/RideSetAppearanceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetColourSchemeAction.cpp b/src/openrct2/actions/RideSetColourSchemeAction.cpp index b99273e77b23..31030b11ce5b 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.cpp +++ b/src/openrct2/actions/RideSetColourSchemeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetColourSchemeAction.h b/src/openrct2/actions/RideSetColourSchemeAction.h index 398effee96f3..cb59860b3e52 100644 --- a/src/openrct2/actions/RideSetColourSchemeAction.h +++ b/src/openrct2/actions/RideSetColourSchemeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index 1d6427d99bf0..7645f608c66d 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetNameAction.h b/src/openrct2/actions/RideSetNameAction.h index 4a4c14fa318e..b48a6e03f586 100644 --- a/src/openrct2/actions/RideSetNameAction.h +++ b/src/openrct2/actions/RideSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetPriceAction.cpp b/src/openrct2/actions/RideSetPriceAction.cpp index f82ed4ff49bf..bbe3c3c8ea95 100644 --- a/src/openrct2/actions/RideSetPriceAction.cpp +++ b/src/openrct2/actions/RideSetPriceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetPriceAction.h b/src/openrct2/actions/RideSetPriceAction.h index b3800f8a0fda..12630228ff4d 100644 --- a/src/openrct2/actions/RideSetPriceAction.h +++ b/src/openrct2/actions/RideSetPriceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index a32c38ab1cc7..d39d4bce9923 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetSettingAction.h b/src/openrct2/actions/RideSetSettingAction.h index 55e2c74e4290..5b5b939bfe8d 100644 --- a/src/openrct2/actions/RideSetSettingAction.h +++ b/src/openrct2/actions/RideSetSettingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index 2cf65587d0f3..a0c8ca3c6073 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetStatusAction.h b/src/openrct2/actions/RideSetStatusAction.h index 78cf3a046f78..1a6b4905222d 100644 --- a/src/openrct2/actions/RideSetStatusAction.h +++ b/src/openrct2/actions/RideSetStatusAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetVehicleAction.cpp b/src/openrct2/actions/RideSetVehicleAction.cpp index 26db9f36fc67..b26619077af9 100644 --- a/src/openrct2/actions/RideSetVehicleAction.cpp +++ b/src/openrct2/actions/RideSetVehicleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/RideSetVehicleAction.h b/src/openrct2/actions/RideSetVehicleAction.h index 625f9b7741b0..417c32063f52 100644 --- a/src/openrct2/actions/RideSetVehicleAction.h +++ b/src/openrct2/actions/RideSetVehicleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenarioSetSettingAction.cpp b/src/openrct2/actions/ScenarioSetSettingAction.cpp index da91ec5284c2..a9c95b981ae6 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.cpp +++ b/src/openrct2/actions/ScenarioSetSettingAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenarioSetSettingAction.h b/src/openrct2/actions/ScenarioSetSettingAction.h index a06e24cfac88..e7959aa77922 100644 --- a/src/openrct2/actions/ScenarioSetSettingAction.h +++ b/src/openrct2/actions/ScenarioSetSettingAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenerySetRestrictedAction.cpp b/src/openrct2/actions/ScenerySetRestrictedAction.cpp index b47df1b22185..d9b7a5cb693e 100644 --- a/src/openrct2/actions/ScenerySetRestrictedAction.cpp +++ b/src/openrct2/actions/ScenerySetRestrictedAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/ScenerySetRestrictedAction.h b/src/openrct2/actions/ScenerySetRestrictedAction.h index 32e227090fe8..cf88c98037dd 100644 --- a/src/openrct2/actions/ScenerySetRestrictedAction.h +++ b/src/openrct2/actions/ScenerySetRestrictedAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetNameAction.cpp b/src/openrct2/actions/SignSetNameAction.cpp index 687d691d0f47..038d27ce0130 100644 --- a/src/openrct2/actions/SignSetNameAction.cpp +++ b/src/openrct2/actions/SignSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetNameAction.h b/src/openrct2/actions/SignSetNameAction.h index 1114f47d3d57..0f1374d68191 100644 --- a/src/openrct2/actions/SignSetNameAction.h +++ b/src/openrct2/actions/SignSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetStyleAction.cpp b/src/openrct2/actions/SignSetStyleAction.cpp index d30dd7ee02a5..d075f9574e67 100644 --- a/src/openrct2/actions/SignSetStyleAction.cpp +++ b/src/openrct2/actions/SignSetStyleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SignSetStyleAction.h b/src/openrct2/actions/SignSetStyleAction.h index 9626bc7baf35..fc0ba3fdd819 100644 --- a/src/openrct2/actions/SignSetStyleAction.h +++ b/src/openrct2/actions/SignSetStyleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index c5ff87375ba4..c9529d3a303e 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.h b/src/openrct2/actions/SmallSceneryPlaceAction.h index e94343375973..1419b07dc520 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.h +++ b/src/openrct2/actions/SmallSceneryPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index a2e82b1746a2..e545f66bd7d1 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.h b/src/openrct2/actions/SmallSceneryRemoveAction.h index a75ce17e6e4e..432dc704aa42 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.h +++ b/src/openrct2/actions/SmallSceneryRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index d6f2b33d759a..9e8c45cdcca8 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SmallScenerySetColourAction.h b/src/openrct2/actions/SmallScenerySetColourAction.h index 1b1e76ca0cdb..d899c2700bb1 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.h +++ b/src/openrct2/actions/SmallScenerySetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffFireAction.cpp b/src/openrct2/actions/StaffFireAction.cpp index 0a762b19d465..8982e99820d9 100644 --- a/src/openrct2/actions/StaffFireAction.cpp +++ b/src/openrct2/actions/StaffFireAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffFireAction.h b/src/openrct2/actions/StaffFireAction.h index b1ba498729a6..8c0841e92d17 100644 --- a/src/openrct2/actions/StaffFireAction.h +++ b/src/openrct2/actions/StaffFireAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffHireNewAction.cpp b/src/openrct2/actions/StaffHireNewAction.cpp index 15316138fc65..c054c7159f43 100644 --- a/src/openrct2/actions/StaffHireNewAction.cpp +++ b/src/openrct2/actions/StaffHireNewAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffHireNewAction.h b/src/openrct2/actions/StaffHireNewAction.h index 0e3a635fec0f..0a6cb1b58608 100644 --- a/src/openrct2/actions/StaffHireNewAction.h +++ b/src/openrct2/actions/StaffHireNewAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetColourAction.cpp b/src/openrct2/actions/StaffSetColourAction.cpp index 6c5080e8291f..6c91ecb264fc 100644 --- a/src/openrct2/actions/StaffSetColourAction.cpp +++ b/src/openrct2/actions/StaffSetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetColourAction.h b/src/openrct2/actions/StaffSetColourAction.h index 22dce4465b50..0f1ff392d31e 100644 --- a/src/openrct2/actions/StaffSetColourAction.h +++ b/src/openrct2/actions/StaffSetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetCostumeAction.cpp b/src/openrct2/actions/StaffSetCostumeAction.cpp index 4022f81a7a6e..62cfb245c9c4 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.cpp +++ b/src/openrct2/actions/StaffSetCostumeAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetCostumeAction.h b/src/openrct2/actions/StaffSetCostumeAction.h index 9e544031ef08..31f2206424ed 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.h +++ b/src/openrct2/actions/StaffSetCostumeAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetNameAction.cpp b/src/openrct2/actions/StaffSetNameAction.cpp index cfedb2d2bc52..09dea3e15188 100644 --- a/src/openrct2/actions/StaffSetNameAction.cpp +++ b/src/openrct2/actions/StaffSetNameAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetNameAction.h b/src/openrct2/actions/StaffSetNameAction.h index 20afb793919d..29dcf578ce21 100644 --- a/src/openrct2/actions/StaffSetNameAction.h +++ b/src/openrct2/actions/StaffSetNameAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetOrdersAction.cpp b/src/openrct2/actions/StaffSetOrdersAction.cpp index 43a92c52feec..286841761bb6 100644 --- a/src/openrct2/actions/StaffSetOrdersAction.cpp +++ b/src/openrct2/actions/StaffSetOrdersAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetOrdersAction.h b/src/openrct2/actions/StaffSetOrdersAction.h index 08aabd7e1fcd..a1538eea1c58 100644 --- a/src/openrct2/actions/StaffSetOrdersAction.h +++ b/src/openrct2/actions/StaffSetOrdersAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp index 2512bbc3554c..59b104a73df5 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.h b/src/openrct2/actions/StaffSetPatrolAreaAction.h index 5c2b89757b45..b390a96e4ddf 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.h +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SurfaceSetStyleAction.cpp b/src/openrct2/actions/SurfaceSetStyleAction.cpp index 753ba3f64ec5..880757cebb63 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.cpp +++ b/src/openrct2/actions/SurfaceSetStyleAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/SurfaceSetStyleAction.h b/src/openrct2/actions/SurfaceSetStyleAction.h index 1017dcd79ccc..c47d961c18f0 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.h +++ b/src/openrct2/actions/SurfaceSetStyleAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TileModifyAction.cpp b/src/openrct2/actions/TileModifyAction.cpp index 0190748ff70b..95a964664913 100644 --- a/src/openrct2/actions/TileModifyAction.cpp +++ b/src/openrct2/actions/TileModifyAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TileModifyAction.h b/src/openrct2/actions/TileModifyAction.h index a91e61f212b5..1c0214353c79 100644 --- a/src/openrct2/actions/TileModifyAction.h +++ b/src/openrct2/actions/TileModifyAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 5f6311ad56e2..bb405cb6f5f7 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackDesignAction.h b/src/openrct2/actions/TrackDesignAction.h index 526a9e8f4863..2b658d24865c 100644 --- a/src/openrct2/actions/TrackDesignAction.h +++ b/src/openrct2/actions/TrackDesignAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 205487016868..1f8a285a63df 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackPlaceAction.h b/src/openrct2/actions/TrackPlaceAction.h index b01472e05193..0e420b250dca 100644 --- a/src/openrct2/actions/TrackPlaceAction.h +++ b/src/openrct2/actions/TrackPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index af9e4e774903..caa5df46ec46 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackRemoveAction.h b/src/openrct2/actions/TrackRemoveAction.h index cdcf3ce97d06..ffad32da2f11 100644 --- a/src/openrct2/actions/TrackRemoveAction.h +++ b/src/openrct2/actions/TrackRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp index 85bee7375321..36a55e1511bb 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.h b/src/openrct2/actions/TrackSetBrakeSpeedAction.h index 05740afe0f1d..0489ea673d30 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.h +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index 585fd24d8e15..bf05008586af 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WallPlaceAction.h b/src/openrct2/actions/WallPlaceAction.h index 94f9f031d07a..5f35f0d1e7ed 100644 --- a/src/openrct2/actions/WallPlaceAction.h +++ b/src/openrct2/actions/WallPlaceAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WallRemoveAction.cpp b/src/openrct2/actions/WallRemoveAction.cpp index f093e7d636e1..602e4c653369 100644 --- a/src/openrct2/actions/WallRemoveAction.cpp +++ b/src/openrct2/actions/WallRemoveAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WallRemoveAction.h b/src/openrct2/actions/WallRemoveAction.h index 51fa65c13b69..1a233da0644c 100644 --- a/src/openrct2/actions/WallRemoveAction.h +++ b/src/openrct2/actions/WallRemoveAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WallSetColourAction.cpp b/src/openrct2/actions/WallSetColourAction.cpp index 08352e12ec8d..e1216def6f13 100644 --- a/src/openrct2/actions/WallSetColourAction.cpp +++ b/src/openrct2/actions/WallSetColourAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WallSetColourAction.h b/src/openrct2/actions/WallSetColourAction.h index 8aceb414bea0..d4823f4f685e 100644 --- a/src/openrct2/actions/WallSetColourAction.h +++ b/src/openrct2/actions/WallSetColourAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WaterLowerAction.cpp b/src/openrct2/actions/WaterLowerAction.cpp index e468ca894d6a..5a455d7118c2 100644 --- a/src/openrct2/actions/WaterLowerAction.cpp +++ b/src/openrct2/actions/WaterLowerAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WaterLowerAction.h b/src/openrct2/actions/WaterLowerAction.h index 2dcafd1529b2..ca9642f0bfc9 100644 --- a/src/openrct2/actions/WaterLowerAction.h +++ b/src/openrct2/actions/WaterLowerAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WaterRaiseAction.cpp b/src/openrct2/actions/WaterRaiseAction.cpp index 7da27c780cbb..a35d433e7780 100644 --- a/src/openrct2/actions/WaterRaiseAction.cpp +++ b/src/openrct2/actions/WaterRaiseAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WaterRaiseAction.h b/src/openrct2/actions/WaterRaiseAction.h index 3e2313e9f293..adc69bfaa301 100644 --- a/src/openrct2/actions/WaterRaiseAction.h +++ b/src/openrct2/actions/WaterRaiseAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WaterSetHeightAction.cpp b/src/openrct2/actions/WaterSetHeightAction.cpp index d4ab67503891..b1ee86b8aa6c 100644 --- a/src/openrct2/actions/WaterSetHeightAction.cpp +++ b/src/openrct2/actions/WaterSetHeightAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/actions/WaterSetHeightAction.h b/src/openrct2/actions/WaterSetHeightAction.h index 243f0fe36322..3b9ebc843b56 100644 --- a/src/openrct2/actions/WaterSetHeightAction.h +++ b/src/openrct2/actions/WaterSetHeightAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/Audio.cpp b/src/openrct2/audio/Audio.cpp index a12c789048df..a088e8e10db8 100644 --- a/src/openrct2/audio/Audio.cpp +++ b/src/openrct2/audio/Audio.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/Audio.h b/src/openrct2/audio/Audio.h index b7ffcfa3650a..6691609b5b66 100644 --- a/src/openrct2/audio/Audio.h +++ b/src/openrct2/audio/Audio.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/AudioChannel.h b/src/openrct2/audio/AudioChannel.h index 4d54e1f0075c..365d19c25c40 100644 --- a/src/openrct2/audio/AudioChannel.h +++ b/src/openrct2/audio/AudioChannel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/AudioContext.h b/src/openrct2/audio/AudioContext.h index c2c949828d66..937b7d2e34cb 100644 --- a/src/openrct2/audio/AudioContext.h +++ b/src/openrct2/audio/AudioContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/AudioMixer.h b/src/openrct2/audio/AudioMixer.h index 0c09d99c4ebd..703f9869a544 100644 --- a/src/openrct2/audio/AudioMixer.h +++ b/src/openrct2/audio/AudioMixer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/AudioSource.h b/src/openrct2/audio/AudioSource.h index 08cfeeb40cd0..e9a916d48914 100644 --- a/src/openrct2/audio/AudioSource.h +++ b/src/openrct2/audio/AudioSource.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/audio/DummyAudioContext.cpp b/src/openrct2/audio/DummyAudioContext.cpp index 82ca69dc600f..afb988aa8298 100644 --- a/src/openrct2/audio/DummyAudioContext.cpp +++ b/src/openrct2/audio/DummyAudioContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/CommandLine.cpp b/src/openrct2/command_line/CommandLine.cpp index c6aea16821dc..238d751789c5 100644 --- a/src/openrct2/command_line/CommandLine.cpp +++ b/src/openrct2/command_line/CommandLine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/CommandLine.hpp b/src/openrct2/command_line/CommandLine.hpp index 86dedc02330a..3f1dca1f6bd2 100644 --- a/src/openrct2/command_line/CommandLine.hpp +++ b/src/openrct2/command_line/CommandLine.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/ConvertCommand.cpp b/src/openrct2/command_line/ConvertCommand.cpp index 0d6851c27938..6d128379eae2 100644 --- a/src/openrct2/command_line/ConvertCommand.cpp +++ b/src/openrct2/command_line/ConvertCommand.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/ParkInfoCommands.cpp b/src/openrct2/command_line/ParkInfoCommands.cpp index ecb96124ed12..d73e6f9b73d7 100644 --- a/src/openrct2/command_line/ParkInfoCommands.cpp +++ b/src/openrct2/command_line/ParkInfoCommands.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/RootCommands.cpp b/src/openrct2/command_line/RootCommands.cpp index 6629f801f46f..e1348992652d 100644 --- a/src/openrct2/command_line/RootCommands.cpp +++ b/src/openrct2/command_line/RootCommands.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/ScreenshotCommands.cpp b/src/openrct2/command_line/ScreenshotCommands.cpp index 215f622a7efd..3ed43fd7e47d 100644 --- a/src/openrct2/command_line/ScreenshotCommands.cpp +++ b/src/openrct2/command_line/ScreenshotCommands.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/SimulateCommands.cpp b/src/openrct2/command_line/SimulateCommands.cpp index e2fcaf276b2b..ec34d4365b0d 100644 --- a/src/openrct2/command_line/SimulateCommands.cpp +++ b/src/openrct2/command_line/SimulateCommands.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/UriHandler.cpp b/src/openrct2/command_line/UriHandler.cpp index 3e2443b7d6f3..d9bc95189210 100644 --- a/src/openrct2/command_line/UriHandler.cpp +++ b/src/openrct2/command_line/UriHandler.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteAppend.cpp b/src/openrct2/command_line/sprite/SpriteAppend.cpp index 90e635d9c7e8..c7a2a2ca9d4e 100644 --- a/src/openrct2/command_line/sprite/SpriteAppend.cpp +++ b/src/openrct2/command_line/sprite/SpriteAppend.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteBuild.cpp b/src/openrct2/command_line/sprite/SpriteBuild.cpp index 0f07a299e715..74f9cc214dce 100644 --- a/src/openrct2/command_line/sprite/SpriteBuild.cpp +++ b/src/openrct2/command_line/sprite/SpriteBuild.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteCombine.cpp b/src/openrct2/command_line/sprite/SpriteCombine.cpp index ba4533bf34b5..102ed15b1203 100644 --- a/src/openrct2/command_line/sprite/SpriteCombine.cpp +++ b/src/openrct2/command_line/sprite/SpriteCombine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteCommands.cpp b/src/openrct2/command_line/sprite/SpriteCommands.cpp index ea28f4e67e66..19a05032ed14 100644 --- a/src/openrct2/command_line/sprite/SpriteCommands.cpp +++ b/src/openrct2/command_line/sprite/SpriteCommands.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteCommands.h b/src/openrct2/command_line/sprite/SpriteCommands.h index b80ea1deafcd..9ccc930ce8ec 100644 --- a/src/openrct2/command_line/sprite/SpriteCommands.h +++ b/src/openrct2/command_line/sprite/SpriteCommands.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteCreate.cpp b/src/openrct2/command_line/sprite/SpriteCreate.cpp index c88564e79c59..e0f726d806e2 100644 --- a/src/openrct2/command_line/sprite/SpriteCreate.cpp +++ b/src/openrct2/command_line/sprite/SpriteCreate.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteDetails.cpp b/src/openrct2/command_line/sprite/SpriteDetails.cpp index 0521046afa30..d4729d262e5f 100644 --- a/src/openrct2/command_line/sprite/SpriteDetails.cpp +++ b/src/openrct2/command_line/sprite/SpriteDetails.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteExport.cpp b/src/openrct2/command_line/sprite/SpriteExport.cpp index 482c19ea07b0..72546d71c0ab 100644 --- a/src/openrct2/command_line/sprite/SpriteExport.cpp +++ b/src/openrct2/command_line/sprite/SpriteExport.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteExportAll.cpp b/src/openrct2/command_line/sprite/SpriteExportAll.cpp index 12779f1bb984..1af3684a9b77 100644 --- a/src/openrct2/command_line/sprite/SpriteExportAll.cpp +++ b/src/openrct2/command_line/sprite/SpriteExportAll.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteExportObject.cpp b/src/openrct2/command_line/sprite/SpriteExportObject.cpp index d5bcdd3a8c36..36922485d5ca 100644 --- a/src/openrct2/command_line/sprite/SpriteExportObject.cpp +++ b/src/openrct2/command_line/sprite/SpriteExportObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteFile.cpp b/src/openrct2/command_line/sprite/SpriteFile.cpp index 88bcbdd48971..fafdc562ea3a 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.cpp +++ b/src/openrct2/command_line/sprite/SpriteFile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/command_line/sprite/SpriteFile.h b/src/openrct2/command_line/sprite/SpriteFile.h index 76dec7998b1f..0c6f42183fb4 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.h +++ b/src/openrct2/command_line/sprite/SpriteFile.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index 2aef53b51d8a..ead2328319ee 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index ef531cbe5146..7604bc16c71a 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/ConfigEnum.hpp b/src/openrct2/config/ConfigEnum.hpp index 22a2b6d34201..0964af7e7703 100644 --- a/src/openrct2/config/ConfigEnum.hpp +++ b/src/openrct2/config/ConfigEnum.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/ConfigTypes.h b/src/openrct2/config/ConfigTypes.h index 080bcd59ba79..423ed6fc87a7 100644 --- a/src/openrct2/config/ConfigTypes.h +++ b/src/openrct2/config/ConfigTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniReader.cpp b/src/openrct2/config/IniReader.cpp index 55c4956209ee..3867bc17da46 100644 --- a/src/openrct2/config/IniReader.cpp +++ b/src/openrct2/config/IniReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniReader.hpp b/src/openrct2/config/IniReader.hpp index 3fe2e4b72bba..be1057f0506e 100644 --- a/src/openrct2/config/IniReader.hpp +++ b/src/openrct2/config/IniReader.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniWriter.cpp b/src/openrct2/config/IniWriter.cpp index 5a527757fd73..99460dfa26ef 100644 --- a/src/openrct2/config/IniWriter.cpp +++ b/src/openrct2/config/IniWriter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/config/IniWriter.hpp b/src/openrct2/config/IniWriter.hpp index c78bc20eca9e..1dbcf0469210 100644 --- a/src/openrct2/config/IniWriter.hpp +++ b/src/openrct2/config/IniWriter.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Algorithm.hpp b/src/openrct2/core/Algorithm.hpp index decbe916f14e..479840874d02 100644 --- a/src/openrct2/core/Algorithm.hpp +++ b/src/openrct2/core/Algorithm.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/BackgroundWorker.hpp b/src/openrct2/core/BackgroundWorker.hpp index cb3535271944..5d840754a0e9 100644 --- a/src/openrct2/core/BackgroundWorker.hpp +++ b/src/openrct2/core/BackgroundWorker.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/BitSet.hpp b/src/openrct2/core/BitSet.hpp index fad5855e3f91..ebe148f34e84 100644 --- a/src/openrct2/core/BitSet.hpp +++ b/src/openrct2/core/BitSet.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/CallingConventions.h b/src/openrct2/core/CallingConventions.h index 1a1a978ebd8e..142a7ccc5c5a 100644 --- a/src/openrct2/core/CallingConventions.h +++ b/src/openrct2/core/CallingConventions.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ChecksumStream.cpp b/src/openrct2/core/ChecksumStream.cpp index 477acb8eb04b..1b96b4e9c89f 100644 --- a/src/openrct2/core/ChecksumStream.cpp +++ b/src/openrct2/core/ChecksumStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ChecksumStream.h b/src/openrct2/core/ChecksumStream.h index 248e9fbc00b4..466669285c59 100644 --- a/src/openrct2/core/ChecksumStream.h +++ b/src/openrct2/core/ChecksumStream.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/CircularBuffer.h b/src/openrct2/core/CircularBuffer.h index 432a20f8efd7..271308706f05 100644 --- a/src/openrct2/core/CircularBuffer.h +++ b/src/openrct2/core/CircularBuffer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/CodepointView.hpp b/src/openrct2/core/CodepointView.hpp index 2e3775211038..8f06f82de61f 100644 --- a/src/openrct2/core/CodepointView.hpp +++ b/src/openrct2/core/CodepointView.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Collections.hpp b/src/openrct2/core/Collections.hpp index dee800ef6faa..4ce368078323 100644 --- a/src/openrct2/core/Collections.hpp +++ b/src/openrct2/core/Collections.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Compression.cpp b/src/openrct2/core/Compression.cpp index 5f05b41e9d7c..ec89398eac4e 100644 --- a/src/openrct2/core/Compression.cpp +++ b/src/openrct2/core/Compression.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Compression.h b/src/openrct2/core/Compression.h index ecbf5cf0545e..7cbe6485464e 100644 --- a/src/openrct2/core/Compression.h +++ b/src/openrct2/core/Compression.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Console.cpp b/src/openrct2/core/Console.cpp index c73c42a60b51..7facc09888be 100644 --- a/src/openrct2/core/Console.cpp +++ b/src/openrct2/core/Console.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Console.hpp b/src/openrct2/core/Console.hpp index 23eb496430c3..52723cf4071a 100644 --- a/src/openrct2/core/Console.hpp +++ b/src/openrct2/core/Console.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.CNG.cpp b/src/openrct2/core/Crypt.CNG.cpp index 00b302256b0e..cceac0670f33 100644 --- a/src/openrct2/core/Crypt.CNG.cpp +++ b/src/openrct2/core/Crypt.CNG.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.OpenRCT2.cpp b/src/openrct2/core/Crypt.OpenRCT2.cpp index 9add20257ab1..6ebfc3c42c6e 100644 --- a/src/openrct2/core/Crypt.OpenRCT2.cpp +++ b/src/openrct2/core/Crypt.OpenRCT2.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.OpenSSL.cpp b/src/openrct2/core/Crypt.OpenSSL.cpp index 4169d7219543..8b08fa788af2 100644 --- a/src/openrct2/core/Crypt.OpenSSL.cpp +++ b/src/openrct2/core/Crypt.OpenSSL.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Crypt.h b/src/openrct2/core/Crypt.h index d6f02e76e3be..3d8779dd9b62 100644 --- a/src/openrct2/core/Crypt.h +++ b/src/openrct2/core/Crypt.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DataSerialiser.h b/src/openrct2/core/DataSerialiser.h index 59d9a3aae81d..caee893affcb 100644 --- a/src/openrct2/core/DataSerialiser.h +++ b/src/openrct2/core/DataSerialiser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DataSerialiserTag.h b/src/openrct2/core/DataSerialiserTag.h index 55de42cd716d..9b83872165c6 100644 --- a/src/openrct2/core/DataSerialiserTag.h +++ b/src/openrct2/core/DataSerialiserTag.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DataSerialiserTraits.h b/src/openrct2/core/DataSerialiserTraits.h index 01e9af91c695..72d2bad2b199 100644 --- a/src/openrct2/core/DataSerialiserTraits.h +++ b/src/openrct2/core/DataSerialiserTraits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/DateTime.h b/src/openrct2/core/DateTime.h index 95132e23a3cd..7d752dd2b5e7 100644 --- a/src/openrct2/core/DateTime.h +++ b/src/openrct2/core/DateTime.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Diagnostics.cpp b/src/openrct2/core/Diagnostics.cpp index fec947d2ea2b..110f8c746c31 100644 --- a/src/openrct2/core/Diagnostics.cpp +++ b/src/openrct2/core/Diagnostics.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Diagnostics.hpp b/src/openrct2/core/Diagnostics.hpp index 0950302a3197..77ed05571893 100644 --- a/src/openrct2/core/Diagnostics.hpp +++ b/src/openrct2/core/Diagnostics.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Endianness.h b/src/openrct2/core/Endianness.h index cebb5de0993d..b0683738abd4 100644 --- a/src/openrct2/core/Endianness.h +++ b/src/openrct2/core/Endianness.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/EnumMap.hpp b/src/openrct2/core/EnumMap.hpp index 7aeccf0fb588..8eeb3aeb0234 100644 --- a/src/openrct2/core/EnumMap.hpp +++ b/src/openrct2/core/EnumMap.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/EnumUtils.hpp b/src/openrct2/core/EnumUtils.hpp index eead9b76a271..8c1bc0e2b488 100644 --- a/src/openrct2/core/EnumUtils.hpp +++ b/src/openrct2/core/EnumUtils.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/File.cpp b/src/openrct2/core/File.cpp index e0cad111526e..b7e82f68e64c 100644 --- a/src/openrct2/core/File.cpp +++ b/src/openrct2/core/File.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/File.h b/src/openrct2/core/File.h index bac10253b534..35be6d4ac35a 100644 --- a/src/openrct2/core/File.h +++ b/src/openrct2/core/File.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileIndex.hpp b/src/openrct2/core/FileIndex.hpp index 10ebf9328276..af9e7c00874f 100644 --- a/src/openrct2/core/FileIndex.hpp +++ b/src/openrct2/core/FileIndex.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileScanner.cpp b/src/openrct2/core/FileScanner.cpp index 74a3d546317a..95599bfb0f18 100644 --- a/src/openrct2/core/FileScanner.cpp +++ b/src/openrct2/core/FileScanner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileScanner.h b/src/openrct2/core/FileScanner.h index ba102aec1c0b..783bdc5f09dc 100644 --- a/src/openrct2/core/FileScanner.h +++ b/src/openrct2/core/FileScanner.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileStream.cpp b/src/openrct2/core/FileStream.cpp index 7a0c551ddbf9..301ef639fa1b 100644 --- a/src/openrct2/core/FileStream.cpp +++ b/src/openrct2/core/FileStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileStream.h b/src/openrct2/core/FileStream.h index ca11d8ac83a9..dc22add6004a 100644 --- a/src/openrct2/core/FileStream.h +++ b/src/openrct2/core/FileStream.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileSystem.hpp b/src/openrct2/core/FileSystem.hpp index c5b9d0f3d5b2..758c49612802 100644 --- a/src/openrct2/core/FileSystem.hpp +++ b/src/openrct2/core/FileSystem.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileWatcher.cpp b/src/openrct2/core/FileWatcher.cpp index 5deb35db4681..899cc5972604 100644 --- a/src/openrct2/core/FileWatcher.cpp +++ b/src/openrct2/core/FileWatcher.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FileWatcher.h b/src/openrct2/core/FileWatcher.h index 4fd673a9244e..efbf16edd65f 100644 --- a/src/openrct2/core/FileWatcher.h +++ b/src/openrct2/core/FileWatcher.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FixedPoint.hpp b/src/openrct2/core/FixedPoint.hpp index d892d01a86b1..5d573d188c29 100644 --- a/src/openrct2/core/FixedPoint.hpp +++ b/src/openrct2/core/FixedPoint.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/FlagHolder.hpp b/src/openrct2/core/FlagHolder.hpp index 8e6d58688d7f..ce47af480fce 100644 --- a/src/openrct2/core/FlagHolder.hpp +++ b/src/openrct2/core/FlagHolder.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/GroupVector.hpp b/src/openrct2/core/GroupVector.hpp index cb5a03f7a7b4..00ddcb13dd0d 100644 --- a/src/openrct2/core/GroupVector.hpp +++ b/src/openrct2/core/GroupVector.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Guard.cpp b/src/openrct2/core/Guard.cpp index 2eb1598e69c7..b844ec726f7f 100644 --- a/src/openrct2/core/Guard.cpp +++ b/src/openrct2/core/Guard.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Guard.hpp b/src/openrct2/core/Guard.hpp index 1160de6ff6a6..5da9e319e306 100644 --- a/src/openrct2/core/Guard.hpp +++ b/src/openrct2/core/Guard.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.Android.cpp b/src/openrct2/core/Http.Android.cpp index 244765ba6385..ad4c469f9184 100644 --- a/src/openrct2/core/Http.Android.cpp +++ b/src/openrct2/core/Http.Android.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.WinHttp.cpp b/src/openrct2/core/Http.WinHttp.cpp index 309d515d9f48..71e9d7f7dc40 100644 --- a/src/openrct2/core/Http.WinHttp.cpp +++ b/src/openrct2/core/Http.WinHttp.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.cURL.cpp b/src/openrct2/core/Http.cURL.cpp index fc06edeca1f6..add4e4221d22 100644 --- a/src/openrct2/core/Http.cURL.cpp +++ b/src/openrct2/core/Http.cURL.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Http.h b/src/openrct2/core/Http.h index 22eb318602a8..667a1bed3e51 100644 --- a/src/openrct2/core/Http.h +++ b/src/openrct2/core/Http.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/IStream.cpp b/src/openrct2/core/IStream.cpp index 9824a3a2028c..dac47978dffa 100644 --- a/src/openrct2/core/IStream.cpp +++ b/src/openrct2/core/IStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/IStream.hpp b/src/openrct2/core/IStream.hpp index fd0135d80463..c4db46b000d8 100644 --- a/src/openrct2/core/IStream.hpp +++ b/src/openrct2/core/IStream.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Identifier.hpp b/src/openrct2/core/Identifier.hpp index 9d0190774b55..fca9fa16710b 100644 --- a/src/openrct2/core/Identifier.hpp +++ b/src/openrct2/core/Identifier.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Imaging.cpp b/src/openrct2/core/Imaging.cpp index 24042a089848..38dd8656fbc7 100644 --- a/src/openrct2/core/Imaging.cpp +++ b/src/openrct2/core/Imaging.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Imaging.h b/src/openrct2/core/Imaging.h index 15d81aca9107..59dd8262d835 100644 --- a/src/openrct2/core/Imaging.h +++ b/src/openrct2/core/Imaging.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/JobPool.cpp b/src/openrct2/core/JobPool.cpp index f2f087c71d66..5f2e9e3cb2df 100644 --- a/src/openrct2/core/JobPool.cpp +++ b/src/openrct2/core/JobPool.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/JobPool.h b/src/openrct2/core/JobPool.h index bc724ff30910..5835cc0e287c 100644 --- a/src/openrct2/core/JobPool.h +++ b/src/openrct2/core/JobPool.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Json.cpp b/src/openrct2/core/Json.cpp index d30ba56d1372..8217316d9a9d 100644 --- a/src/openrct2/core/Json.cpp +++ b/src/openrct2/core/Json.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Json.hpp b/src/openrct2/core/Json.hpp index e93c68db8c57..bc59eeded457 100644 --- a/src/openrct2/core/Json.hpp +++ b/src/openrct2/core/Json.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/JsonFwd.hpp b/src/openrct2/core/JsonFwd.hpp index f4f4c487455f..18feb097c400 100644 --- a/src/openrct2/core/JsonFwd.hpp +++ b/src/openrct2/core/JsonFwd.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Memory.hpp b/src/openrct2/core/Memory.hpp index 5e5cfbf8883f..7accb81dfe6f 100644 --- a/src/openrct2/core/Memory.hpp +++ b/src/openrct2/core/Memory.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/MemoryStream.cpp b/src/openrct2/core/MemoryStream.cpp index c3ad06a8e7fd..de3d3574708f 100644 --- a/src/openrct2/core/MemoryStream.cpp +++ b/src/openrct2/core/MemoryStream.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/MemoryStream.h b/src/openrct2/core/MemoryStream.h index ee5af581b8a4..ad0e7fc38759 100644 --- a/src/openrct2/core/MemoryStream.h +++ b/src/openrct2/core/MemoryStream.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Meta.hpp b/src/openrct2/core/Meta.hpp index f0e653897f5b..a4895a9ebb65 100644 --- a/src/openrct2/core/Meta.hpp +++ b/src/openrct2/core/Meta.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Money.hpp b/src/openrct2/core/Money.hpp index 2af65b4a05e1..ef803316f8f5 100644 --- a/src/openrct2/core/Money.hpp +++ b/src/openrct2/core/Money.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Numerics.hpp b/src/openrct2/core/Numerics.hpp index d85e04d90a49..3be6171b62c4 100644 --- a/src/openrct2/core/Numerics.hpp +++ b/src/openrct2/core/Numerics.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/OrcaStream.hpp b/src/openrct2/core/OrcaStream.hpp index 16f31d7ab98b..093f27fbc7ed 100644 --- a/src/openrct2/core/OrcaStream.hpp +++ b/src/openrct2/core/OrcaStream.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Path.cpp b/src/openrct2/core/Path.cpp index 4880ba99c064..5a9f414b1ac3 100644 --- a/src/openrct2/core/Path.cpp +++ b/src/openrct2/core/Path.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Path.hpp b/src/openrct2/core/Path.hpp index 5bc2c034f282..7386b30541cc 100644 --- a/src/openrct2/core/Path.hpp +++ b/src/openrct2/core/Path.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/RTL.FriBidi.cpp b/src/openrct2/core/RTL.FriBidi.cpp index b428716eab07..e909e370e222 100644 --- a/src/openrct2/core/RTL.FriBidi.cpp +++ b/src/openrct2/core/RTL.FriBidi.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/RTL.ICU.cpp b/src/openrct2/core/RTL.ICU.cpp index 7d76b896e571..c1a12f979126 100644 --- a/src/openrct2/core/RTL.ICU.cpp +++ b/src/openrct2/core/RTL.ICU.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/RTL.h b/src/openrct2/core/RTL.h index 2383a1d64e5b..12b79448781c 100644 --- a/src/openrct2/core/RTL.h +++ b/src/openrct2/core/RTL.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Random.hpp b/src/openrct2/core/Random.hpp index 2d051b186ef5..3ac484af6c47 100644 --- a/src/openrct2/core/Random.hpp +++ b/src/openrct2/core/Random.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Range.hpp b/src/openrct2/core/Range.hpp index 49adfd9ee592..6e15dd643891 100644 --- a/src/openrct2/core/Range.hpp +++ b/src/openrct2/core/Range.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Speed.hpp b/src/openrct2/core/Speed.hpp index f1a14cf5d3f4..7246438f376b 100644 --- a/src/openrct2/core/Speed.hpp +++ b/src/openrct2/core/Speed.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StreamBuffer.cpp b/src/openrct2/core/StreamBuffer.cpp index 9378bee9401f..d440bbc65ee9 100644 --- a/src/openrct2/core/StreamBuffer.cpp +++ b/src/openrct2/core/StreamBuffer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StreamBuffer.hpp b/src/openrct2/core/StreamBuffer.hpp index 48d0a89732b9..cf1395085609 100644 --- a/src/openrct2/core/StreamBuffer.hpp +++ b/src/openrct2/core/StreamBuffer.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/String.cpp b/src/openrct2/core/String.cpp index 10218ef8e078..276f80bf9b5e 100644 --- a/src/openrct2/core/String.cpp +++ b/src/openrct2/core/String.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/String.hpp b/src/openrct2/core/String.hpp index 42b80cd787e2..abc6ef2326bb 100644 --- a/src/openrct2/core/String.hpp +++ b/src/openrct2/core/String.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringBuilder.cpp b/src/openrct2/core/StringBuilder.cpp index f8ff0df51952..ad334fab9e10 100644 --- a/src/openrct2/core/StringBuilder.cpp +++ b/src/openrct2/core/StringBuilder.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringBuilder.h b/src/openrct2/core/StringBuilder.h index 9787bafe2959..eb96e2d6fc66 100644 --- a/src/openrct2/core/StringBuilder.h +++ b/src/openrct2/core/StringBuilder.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringReader.cpp b/src/openrct2/core/StringReader.cpp index 952f2b0bdbb1..9f3f5e78b94e 100644 --- a/src/openrct2/core/StringReader.cpp +++ b/src/openrct2/core/StringReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringReader.h b/src/openrct2/core/StringReader.h index 717c4154f5ea..160b6ed9cdcd 100644 --- a/src/openrct2/core/StringReader.h +++ b/src/openrct2/core/StringReader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/StringTypes.h b/src/openrct2/core/StringTypes.h index a60a2d0dec1c..77488a202aa1 100644 --- a/src/openrct2/core/StringTypes.h +++ b/src/openrct2/core/StringTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Timer.hpp b/src/openrct2/core/Timer.hpp index cc7559751e24..5ee0973aa3b2 100644 --- a/src/openrct2/core/Timer.hpp +++ b/src/openrct2/core/Timer.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UTF8.cpp b/src/openrct2/core/UTF8.cpp index 713ed89f69fc..f078075651e8 100644 --- a/src/openrct2/core/UTF8.cpp +++ b/src/openrct2/core/UTF8.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UTF8.h b/src/openrct2/core/UTF8.h index f4bce12b36a5..10547e5adc54 100644 --- a/src/openrct2/core/UTF8.h +++ b/src/openrct2/core/UTF8.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UnicodeChar.h b/src/openrct2/core/UnicodeChar.h index 03bfa62c4c46..29ca2f1edfac 100644 --- a/src/openrct2/core/UnicodeChar.h +++ b/src/openrct2/core/UnicodeChar.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UnitConversion.cpp b/src/openrct2/core/UnitConversion.cpp index 8ed4b2aa6ef9..77b88ae87333 100644 --- a/src/openrct2/core/UnitConversion.cpp +++ b/src/openrct2/core/UnitConversion.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/UnitConversion.h b/src/openrct2/core/UnitConversion.h index 0c45c3f6c4b1..cd205f96f9a4 100644 --- a/src/openrct2/core/UnitConversion.h +++ b/src/openrct2/core/UnitConversion.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Zip.cpp b/src/openrct2/core/Zip.cpp index a8baf7756cf2..3cabcaf3f8e5 100644 --- a/src/openrct2/core/Zip.cpp +++ b/src/openrct2/core/Zip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/Zip.h b/src/openrct2/core/Zip.h index d1c811bc6781..fc840db04beb 100644 --- a/src/openrct2/core/Zip.h +++ b/src/openrct2/core/Zip.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ZipAndroid.cpp b/src/openrct2/core/ZipAndroid.cpp index 13fb35b24d52..87a8ee0c741a 100644 --- a/src/openrct2/core/ZipAndroid.cpp +++ b/src/openrct2/core/ZipAndroid.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/core/ZipStream.hpp b/src/openrct2/core/ZipStream.hpp index aada34d302d2..89e397a0a90a 100644 --- a/src/openrct2/core/ZipStream.hpp +++ b/src/openrct2/core/ZipStream.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/AVX2Drawing.cpp b/src/openrct2/drawing/AVX2Drawing.cpp index 4672cc141895..a8eda8b118dc 100644 --- a/src/openrct2/drawing/AVX2Drawing.cpp +++ b/src/openrct2/drawing/AVX2Drawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp index 4bb0a322a180..1934fa268b28 100644 --- a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp index c725405b5edd..cf128415c9f3 100644 --- a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 331b55394f0f..d393e503f313 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 11068b9b763f..6231cd7582d7 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.String.h b/src/openrct2/drawing/Drawing.String.h index c8552582c09b..249bd1d37ca2 100644 --- a/src/openrct2/drawing/Drawing.String.h +++ b/src/openrct2/drawing/Drawing.String.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index f62334d0bd39..998f17fa9fd7 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 6dcf26996bbe..dcb6f9834ccd 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/DrawingLock.hpp b/src/openrct2/drawing/DrawingLock.hpp index dfee74002855..f04acaff8a8f 100644 --- a/src/openrct2/drawing/DrawingLock.hpp +++ b/src/openrct2/drawing/DrawingLock.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/FilterPaletteIds.h b/src/openrct2/drawing/FilterPaletteIds.h index a8ea2f7a680b..729e65dd2ada 100644 --- a/src/openrct2/drawing/FilterPaletteIds.h +++ b/src/openrct2/drawing/FilterPaletteIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp index fb42a6dd76f3..5fa48895dd6d 100644 --- a/src/openrct2/drawing/Font.cpp +++ b/src/openrct2/drawing/Font.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Font.h b/src/openrct2/drawing/Font.h index fda084eee8b9..282778db5a5e 100644 --- a/src/openrct2/drawing/Font.h +++ b/src/openrct2/drawing/Font.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/IDrawingContext.h b/src/openrct2/drawing/IDrawingContext.h index 5183296d4fb0..0266a5fc666c 100644 --- a/src/openrct2/drawing/IDrawingContext.h +++ b/src/openrct2/drawing/IDrawingContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/IDrawingEngine.h b/src/openrct2/drawing/IDrawingEngine.h index 7b673d2110f0..f704b2ebc7f4 100644 --- a/src/openrct2/drawing/IDrawingEngine.h +++ b/src/openrct2/drawing/IDrawingEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Image.cpp b/src/openrct2/drawing/Image.cpp index 0433333ced16..9c1ab72d5c30 100644 --- a/src/openrct2/drawing/Image.cpp +++ b/src/openrct2/drawing/Image.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Image.h b/src/openrct2/drawing/Image.h index 1529b1429e00..72057d966156 100644 --- a/src/openrct2/drawing/Image.h +++ b/src/openrct2/drawing/Image.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageId.hpp b/src/openrct2/drawing/ImageId.hpp index 203702ee53bd..699b096ae857 100644 --- a/src/openrct2/drawing/ImageId.hpp +++ b/src/openrct2/drawing/ImageId.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageImporter.cpp b/src/openrct2/drawing/ImageImporter.cpp index 717d10ab2ae5..30e2339123a9 100644 --- a/src/openrct2/drawing/ImageImporter.cpp +++ b/src/openrct2/drawing/ImageImporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageImporter.h b/src/openrct2/drawing/ImageImporter.h index 0a957e02aa79..c0e32ea8a567 100644 --- a/src/openrct2/drawing/ImageImporter.h +++ b/src/openrct2/drawing/ImageImporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ImageIndexType.h b/src/openrct2/drawing/ImageIndexType.h index 1a0cb843be5a..bf345f3fc2a4 100644 --- a/src/openrct2/drawing/ImageIndexType.h +++ b/src/openrct2/drawing/ImageIndexType.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/LightFX.cpp b/src/openrct2/drawing/LightFX.cpp index 2325588820d0..fbcfa6037200 100644 --- a/src/openrct2/drawing/LightFX.cpp +++ b/src/openrct2/drawing/LightFX.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/LightFX.h b/src/openrct2/drawing/LightFX.h index 364706bbc982..8ee5dcb482fe 100644 --- a/src/openrct2/drawing/LightFX.h +++ b/src/openrct2/drawing/LightFX.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Line.cpp b/src/openrct2/drawing/Line.cpp index 4f54f7fe109f..a098709ec43a 100644 --- a/src/openrct2/drawing/Line.cpp +++ b/src/openrct2/drawing/Line.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/NewDrawing.cpp b/src/openrct2/drawing/NewDrawing.cpp index c66ff5f78e09..b41fe978171f 100644 --- a/src/openrct2/drawing/NewDrawing.cpp +++ b/src/openrct2/drawing/NewDrawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/NewDrawing.h b/src/openrct2/drawing/NewDrawing.h index 1764366440df..27150ee2abc3 100644 --- a/src/openrct2/drawing/NewDrawing.h +++ b/src/openrct2/drawing/NewDrawing.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Rectangle.cpp b/src/openrct2/drawing/Rectangle.cpp index d0bb871490f2..23da364d5bcf 100644 --- a/src/openrct2/drawing/Rectangle.cpp +++ b/src/openrct2/drawing/Rectangle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Rectangle.h b/src/openrct2/drawing/Rectangle.h index 2ac65519e9c2..3b53df38c013 100644 --- a/src/openrct2/drawing/Rectangle.h +++ b/src/openrct2/drawing/Rectangle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/RenderTarget.cpp b/src/openrct2/drawing/RenderTarget.cpp index 90a6b78deff9..04d943c0529b 100644 --- a/src/openrct2/drawing/RenderTarget.cpp +++ b/src/openrct2/drawing/RenderTarget.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/RenderTarget.h b/src/openrct2/drawing/RenderTarget.h index 72ddbc84b910..8a6bc1404e5f 100644 --- a/src/openrct2/drawing/RenderTarget.h +++ b/src/openrct2/drawing/RenderTarget.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/SSE41Drawing.cpp b/src/openrct2/drawing/SSE41Drawing.cpp index 4f16db22f451..5b4de493b6a2 100644 --- a/src/openrct2/drawing/SSE41Drawing.cpp +++ b/src/openrct2/drawing/SSE41Drawing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index eda4eaf831df..be710945570f 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/ScrollingText.h b/src/openrct2/drawing/ScrollingText.h index 2c5f5fe46e63..e095f12725bd 100644 --- a/src/openrct2/drawing/ScrollingText.h +++ b/src/openrct2/drawing/ScrollingText.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/TTF.cpp b/src/openrct2/drawing/TTF.cpp index 358bd95f41f7..e2f853ed0935 100644 --- a/src/openrct2/drawing/TTF.cpp +++ b/src/openrct2/drawing/TTF.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/TTF.h b/src/openrct2/drawing/TTF.h index c53246c8f4c7..b63b76667aae 100644 --- a/src/openrct2/drawing/TTF.h +++ b/src/openrct2/drawing/TTF.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index 67657253c3c4..ce8feed1ccbd 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Text.h b/src/openrct2/drawing/Text.h index 3c7c59edba45..c52b842ad740 100644 --- a/src/openrct2/drawing/Text.h +++ b/src/openrct2/drawing/Text.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Weather.cpp b/src/openrct2/drawing/Weather.cpp index b69cc47025c1..b7662c04bb57 100644 --- a/src/openrct2/drawing/Weather.cpp +++ b/src/openrct2/drawing/Weather.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/Weather.h b/src/openrct2/drawing/Weather.h index 6e6feca85463..8cd669e9fdb4 100644 --- a/src/openrct2/drawing/Weather.h +++ b/src/openrct2/drawing/Weather.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index f4f02aa56bf9..93ec5cc6d3b6 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index a0825c35f7e7..dd3c79b3ad67 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Balloon.cpp b/src/openrct2/entity/Balloon.cpp index cd6de6e31bd0..9a6d1cd51672 100644 --- a/src/openrct2/entity/Balloon.cpp +++ b/src/openrct2/entity/Balloon.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Balloon.h b/src/openrct2/entity/Balloon.h index de805d173312..0c8038f4d7bf 100644 --- a/src/openrct2/entity/Balloon.h +++ b/src/openrct2/entity/Balloon.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Duck.cpp b/src/openrct2/entity/Duck.cpp index ade802111996..312acde67aaa 100644 --- a/src/openrct2/entity/Duck.cpp +++ b/src/openrct2/entity/Duck.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Duck.h b/src/openrct2/entity/Duck.h index a29c64e7be39..3f0e25783234 100644 --- a/src/openrct2/entity/Duck.h +++ b/src/openrct2/entity/Duck.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityBase.cpp b/src/openrct2/entity/EntityBase.cpp index cf49d24a39f4..9e6aacb0beb5 100644 --- a/src/openrct2/entity/EntityBase.cpp +++ b/src/openrct2/entity/EntityBase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityList.h b/src/openrct2/entity/EntityList.h index 05eb0269ba69..b654e047bf13 100644 --- a/src/openrct2/entity/EntityList.h +++ b/src/openrct2/entity/EntityList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityRegistry.cpp b/src/openrct2/entity/EntityRegistry.cpp index d43a69b029b7..26b7696aaf94 100644 --- a/src/openrct2/entity/EntityRegistry.cpp +++ b/src/openrct2/entity/EntityRegistry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityRegistry.h b/src/openrct2/entity/EntityRegistry.h index ae2f3a401b70..1d8797945364 100644 --- a/src/openrct2/entity/EntityRegistry.h +++ b/src/openrct2/entity/EntityRegistry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityTweener.cpp b/src/openrct2/entity/EntityTweener.cpp index 460a318393a4..94e8749c41ba 100644 --- a/src/openrct2/entity/EntityTweener.cpp +++ b/src/openrct2/entity/EntityTweener.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/EntityTweener.h b/src/openrct2/entity/EntityTweener.h index 7d77f7a02e38..5e539100d926 100644 --- a/src/openrct2/entity/EntityTweener.h +++ b/src/openrct2/entity/EntityTweener.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Fountain.cpp b/src/openrct2/entity/Fountain.cpp index 0d9e221b9c67..c091300a4302 100644 --- a/src/openrct2/entity/Fountain.cpp +++ b/src/openrct2/entity/Fountain.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Fountain.h b/src/openrct2/entity/Fountain.h index adeb42ad8b4e..bd8b7ed8c9dd 100644 --- a/src/openrct2/entity/Fountain.h +++ b/src/openrct2/entity/Fountain.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index a8f96c0ec8ff..21cc061fdd84 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Guest.h b/src/openrct2/entity/Guest.h index f00922709899..66d5965a6146 100644 --- a/src/openrct2/entity/Guest.h +++ b/src/openrct2/entity/Guest.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Litter.h b/src/openrct2/entity/Litter.h index 41ed66823cf5..8eacc89c642d 100644 --- a/src/openrct2/entity/Litter.h +++ b/src/openrct2/entity/Litter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/MoneyEffect.cpp b/src/openrct2/entity/MoneyEffect.cpp index af16c466eaaf..937553d70275 100644 --- a/src/openrct2/entity/MoneyEffect.cpp +++ b/src/openrct2/entity/MoneyEffect.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/MoneyEffect.h b/src/openrct2/entity/MoneyEffect.h index f98b7449f875..94f05f48cb79 100644 --- a/src/openrct2/entity/MoneyEffect.h +++ b/src/openrct2/entity/MoneyEffect.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Particle.cpp b/src/openrct2/entity/Particle.cpp index aeb549c9019d..36b88391b2d3 100644 --- a/src/openrct2/entity/Particle.cpp +++ b/src/openrct2/entity/Particle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Particle.h b/src/openrct2/entity/Particle.h index 1a80c84f9c18..d5ea419a3b96 100644 --- a/src/openrct2/entity/Particle.h +++ b/src/openrct2/entity/Particle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/PatrolArea.cpp b/src/openrct2/entity/PatrolArea.cpp index 0d4efcdaf971..eabe83e1a2d3 100644 --- a/src/openrct2/entity/PatrolArea.cpp +++ b/src/openrct2/entity/PatrolArea.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/PatrolArea.h b/src/openrct2/entity/PatrolArea.h index 463f2ef7047d..3c88facbf266 100644 --- a/src/openrct2/entity/PatrolArea.h +++ b/src/openrct2/entity/PatrolArea.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index bfbb1a121b2e..a546d94d24e1 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Peep.h b/src/openrct2/entity/Peep.h index 2eb783394d63..72a501cae698 100644 --- a/src/openrct2/entity/Peep.h +++ b/src/openrct2/entity/Peep.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index b4fad12336aa..7f171bdd3bcb 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Staff.h b/src/openrct2/entity/Staff.h index 905f5d40250f..db836bb28d4e 100644 --- a/src/openrct2/entity/Staff.h +++ b/src/openrct2/entity/Staff.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/entity/Yaw.hpp b/src/openrct2/entity/Yaw.hpp index 1c43168e25c2..c72bc08b9a15 100644 --- a/src/openrct2/entity/Yaw.hpp +++ b/src/openrct2/entity/Yaw.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Chat.cpp b/src/openrct2/interface/Chat.cpp index c98d838b89d9..7511821759ed 100644 --- a/src/openrct2/interface/Chat.cpp +++ b/src/openrct2/interface/Chat.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Chat.h b/src/openrct2/interface/Chat.h index 9d0d538ab24c..4b690e2a885f 100644 --- a/src/openrct2/interface/Chat.h +++ b/src/openrct2/interface/Chat.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index ad818b3dc268..7806bf5b6400 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index dcdf341e456e..e710969f639b 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/ColourWithFlags.cpp b/src/openrct2/interface/ColourWithFlags.cpp index 8ebd645551fd..f6efd053b684 100644 --- a/src/openrct2/interface/ColourWithFlags.cpp +++ b/src/openrct2/interface/ColourWithFlags.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/ColourWithFlags.h b/src/openrct2/interface/ColourWithFlags.h index 31301fd781ce..99edbdaac7e0 100644 --- a/src/openrct2/interface/ColourWithFlags.h +++ b/src/openrct2/interface/ColourWithFlags.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Cursors.cpp b/src/openrct2/interface/Cursors.cpp index c736b9479ac0..65ca6e0d8f3f 100644 --- a/src/openrct2/interface/Cursors.cpp +++ b/src/openrct2/interface/Cursors.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Cursors.h b/src/openrct2/interface/Cursors.h index 2d9195f93f31..b340551a624a 100644 --- a/src/openrct2/interface/Cursors.h +++ b/src/openrct2/interface/Cursors.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/FontFamilies.cpp b/src/openrct2/interface/FontFamilies.cpp index 25c085432d66..c5e89282753f 100644 --- a/src/openrct2/interface/FontFamilies.cpp +++ b/src/openrct2/interface/FontFamilies.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/FontFamilies.h b/src/openrct2/interface/FontFamilies.h index 86fde63f0114..8913b765f019 100644 --- a/src/openrct2/interface/FontFamilies.h +++ b/src/openrct2/interface/FontFamilies.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Fonts.cpp b/src/openrct2/interface/Fonts.cpp index f4f38731219e..bf1d0d207b9c 100644 --- a/src/openrct2/interface/Fonts.cpp +++ b/src/openrct2/interface/Fonts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Fonts.h b/src/openrct2/interface/Fonts.h index c6098b689442..278096787a02 100644 --- a/src/openrct2/interface/Fonts.h +++ b/src/openrct2/interface/Fonts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 727a56c4c898..b4e2bc07ce00 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/InteractiveConsole.h b/src/openrct2/interface/InteractiveConsole.h index edfb315b7a19..bc4aedf3c367 100644 --- a/src/openrct2/interface/InteractiveConsole.h +++ b/src/openrct2/interface/InteractiveConsole.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index 4ed67f180887..2507983d4928 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Screenshot.h b/src/openrct2/interface/Screenshot.h index 2aa0a514cf55..ee1bbf35370a 100644 --- a/src/openrct2/interface/Screenshot.h +++ b/src/openrct2/interface/Screenshot.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/ScrollArea.h b/src/openrct2/interface/ScrollArea.h index d677085ef949..4a052a42c5db 100644 --- a/src/openrct2/interface/ScrollArea.h +++ b/src/openrct2/interface/ScrollArea.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/StdInOutConsole.cpp b/src/openrct2/interface/StdInOutConsole.cpp index 5eb143b58aee..9fe947c1de57 100644 --- a/src/openrct2/interface/StdInOutConsole.cpp +++ b/src/openrct2/interface/StdInOutConsole.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/StdInOutConsole.h b/src/openrct2/interface/StdInOutConsole.h index b79ac20c971d..7106c6d8199c 100644 --- a/src/openrct2/interface/StdInOutConsole.h +++ b/src/openrct2/interface/StdInOutConsole.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 4a80ed11c780..5365da81071e 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index ca3e52cb7bb0..73e77cb98af2 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index 450fa7c3abc2..db441255cf80 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index ae6cd138979e..46b4e2646f36 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index e5dd911b499e..76d20a69484d 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/WindowBase.h b/src/openrct2/interface/WindowBase.h index ee1369b9e102..ba41c40d32ee 100644 --- a/src/openrct2/interface/WindowBase.h +++ b/src/openrct2/interface/WindowBase.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/WindowClasses.h b/src/openrct2/interface/WindowClasses.h index c3b95982e9d5..242c5e8ffc0f 100644 --- a/src/openrct2/interface/WindowClasses.h +++ b/src/openrct2/interface/WindowClasses.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/interface/ZoomLevel.cpp b/src/openrct2/interface/ZoomLevel.cpp index 9af9241eaf53..5133b0981591 100644 --- a/src/openrct2/interface/ZoomLevel.cpp +++ b/src/openrct2/interface/ZoomLevel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Currency.cpp b/src/openrct2/localisation/Currency.cpp index d1c5b397ce76..8cc490d97ebf 100644 --- a/src/openrct2/localisation/Currency.cpp +++ b/src/openrct2/localisation/Currency.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Currency.h b/src/openrct2/localisation/Currency.h index a3b16cbd5a62..a3933504e498 100644 --- a/src/openrct2/localisation/Currency.h +++ b/src/openrct2/localisation/Currency.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/CurrencyTypes.h b/src/openrct2/localisation/CurrencyTypes.h index 81990981138b..5c70315c79cc 100644 --- a/src/openrct2/localisation/CurrencyTypes.h +++ b/src/openrct2/localisation/CurrencyTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/FormatCodes.cpp b/src/openrct2/localisation/FormatCodes.cpp index 209a00441d36..9511c692397d 100644 --- a/src/openrct2/localisation/FormatCodes.cpp +++ b/src/openrct2/localisation/FormatCodes.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/FormatCodes.h b/src/openrct2/localisation/FormatCodes.h index f5a69cfcb0ab..5e3557d49434 100644 --- a/src/openrct2/localisation/FormatCodes.h +++ b/src/openrct2/localisation/FormatCodes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatter.cpp b/src/openrct2/localisation/Formatter.cpp index cd3ffea1e82f..17c645919a03 100644 --- a/src/openrct2/localisation/Formatter.cpp +++ b/src/openrct2/localisation/Formatter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatter.h b/src/openrct2/localisation/Formatter.h index ac06bc3e9ed5..d9bb1befbf79 100644 --- a/src/openrct2/localisation/Formatter.h +++ b/src/openrct2/localisation/Formatter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatting.cpp b/src/openrct2/localisation/Formatting.cpp index 12b239b07559..42e71b747638 100644 --- a/src/openrct2/localisation/Formatting.cpp +++ b/src/openrct2/localisation/Formatting.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Formatting.h b/src/openrct2/localisation/Formatting.h index eaa7dcb77512..7532584ed002 100644 --- a/src/openrct2/localisation/Formatting.h +++ b/src/openrct2/localisation/Formatting.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Language.cpp b/src/openrct2/localisation/Language.cpp index 8d4ecc399377..5e438776b412 100644 --- a/src/openrct2/localisation/Language.cpp +++ b/src/openrct2/localisation/Language.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Language.h b/src/openrct2/localisation/Language.h index 6501c9c23652..3e5a0e09bd7f 100644 --- a/src/openrct2/localisation/Language.h +++ b/src/openrct2/localisation/Language.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LanguagePack.cpp b/src/openrct2/localisation/LanguagePack.cpp index ea47dc0b4fcd..2211b5253db7 100644 --- a/src/openrct2/localisation/LanguagePack.cpp +++ b/src/openrct2/localisation/LanguagePack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LanguagePack.h b/src/openrct2/localisation/LanguagePack.h index 8225e52fee87..40e4b14c1307 100644 --- a/src/openrct2/localisation/LanguagePack.h +++ b/src/openrct2/localisation/LanguagePack.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Localisation.Date.cpp b/src/openrct2/localisation/Localisation.Date.cpp index ba63f3d04ae4..903baba7e53f 100644 --- a/src/openrct2/localisation/Localisation.Date.cpp +++ b/src/openrct2/localisation/Localisation.Date.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/Localisation.Date.h b/src/openrct2/localisation/Localisation.Date.h index a9f4f210be44..d347af316c7c 100644 --- a/src/openrct2/localisation/Localisation.Date.h +++ b/src/openrct2/localisation/Localisation.Date.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LocalisationService.cpp b/src/openrct2/localisation/LocalisationService.cpp index ee4e9c8983ca..1bfb957afd29 100644 --- a/src/openrct2/localisation/LocalisationService.cpp +++ b/src/openrct2/localisation/LocalisationService.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/LocalisationService.h b/src/openrct2/localisation/LocalisationService.h index 4a4a92e9fe82..c384f72ecc4a 100644 --- a/src/openrct2/localisation/LocalisationService.h +++ b/src/openrct2/localisation/LocalisationService.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/StringIdType.h b/src/openrct2/localisation/StringIdType.h index 522a962eeaeb..3d24438c5248 100644 --- a/src/openrct2/localisation/StringIdType.h +++ b/src/openrct2/localisation/StringIdType.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 89bf3294f8ba..8c9ab7e0bf02 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Award.cpp b/src/openrct2/management/Award.cpp index 24f9f8804bd6..9f898691c387 100644 --- a/src/openrct2/management/Award.cpp +++ b/src/openrct2/management/Award.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Award.h b/src/openrct2/management/Award.h index 02950ff455e6..2e48c0f736cc 100644 --- a/src/openrct2/management/Award.h +++ b/src/openrct2/management/Award.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index ec854a490357..5af335e36213 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Finance.h b/src/openrct2/management/Finance.h index 7cf390a1c315..7e2411b35352 100644 --- a/src/openrct2/management/Finance.h +++ b/src/openrct2/management/Finance.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Marketing.cpp b/src/openrct2/management/Marketing.cpp index 7e2576ac1e46..76bb1ea3b024 100644 --- a/src/openrct2/management/Marketing.cpp +++ b/src/openrct2/management/Marketing.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Marketing.h b/src/openrct2/management/Marketing.h index 3f1e4595ec3d..ce44d850ee7f 100644 --- a/src/openrct2/management/Marketing.h +++ b/src/openrct2/management/Marketing.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/NewsItem.cpp b/src/openrct2/management/NewsItem.cpp index 58743f503c35..cf9b0fb3050c 100644 --- a/src/openrct2/management/NewsItem.cpp +++ b/src/openrct2/management/NewsItem.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/NewsItem.h b/src/openrct2/management/NewsItem.h index 28721f8d3060..fd6acf7b23b2 100644 --- a/src/openrct2/management/NewsItem.h +++ b/src/openrct2/management/NewsItem.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 45c194ff1d5f..c608ba27ce5d 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/management/Research.h b/src/openrct2/management/Research.h index d6403ee42e45..076d6e16ce06 100644 --- a/src/openrct2/management/Research.h +++ b/src/openrct2/management/Research.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/math/Trigonometry.hpp b/src/openrct2/math/Trigonometry.hpp index a2d32281dbc0..66301675f37f 100644 --- a/src/openrct2/math/Trigonometry.hpp +++ b/src/openrct2/math/Trigonometry.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/DiscordService.cpp b/src/openrct2/network/DiscordService.cpp index c8dbd518d91e..7904170bd478 100644 --- a/src/openrct2/network/DiscordService.cpp +++ b/src/openrct2/network/DiscordService.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/DiscordService.h b/src/openrct2/network/DiscordService.h index e946b2fc0933..c2229268f745 100644 --- a/src/openrct2/network/DiscordService.h +++ b/src/openrct2/network/DiscordService.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/Network.h b/src/openrct2/network/Network.h index 3f4fd9d5e031..68708eca7d4a 100644 --- a/src/openrct2/network/Network.h +++ b/src/openrct2/network/Network.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkAction.cpp b/src/openrct2/network/NetworkAction.cpp index f6d66ba75d9d..0825870df3b5 100644 --- a/src/openrct2/network/NetworkAction.cpp +++ b/src/openrct2/network/NetworkAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkAction.h b/src/openrct2/network/NetworkAction.h index 37b6b47baf54..bafa4880aa10 100644 --- a/src/openrct2/network/NetworkAction.h +++ b/src/openrct2/network/NetworkAction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 019b022b78b9..ba4544fe5caa 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkConnection.cpp b/src/openrct2/network/NetworkConnection.cpp index 36fd6866d712..1f7cec090c36 100644 --- a/src/openrct2/network/NetworkConnection.cpp +++ b/src/openrct2/network/NetworkConnection.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkConnection.h b/src/openrct2/network/NetworkConnection.h index 6ed1045858b4..8cde30e81d4d 100644 --- a/src/openrct2/network/NetworkConnection.h +++ b/src/openrct2/network/NetworkConnection.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkGroup.cpp b/src/openrct2/network/NetworkGroup.cpp index 0a96fe3ad4bd..f9a171d15eaf 100644 --- a/src/openrct2/network/NetworkGroup.cpp +++ b/src/openrct2/network/NetworkGroup.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkGroup.h b/src/openrct2/network/NetworkGroup.h index 140d8e7b9807..54a3641c0271 100644 --- a/src/openrct2/network/NetworkGroup.h +++ b/src/openrct2/network/NetworkGroup.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkKey.cpp b/src/openrct2/network/NetworkKey.cpp index 0cf1a66c30d3..a71e171270eb 100644 --- a/src/openrct2/network/NetworkKey.cpp +++ b/src/openrct2/network/NetworkKey.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkKey.h b/src/openrct2/network/NetworkKey.h index f46224bce45f..9ba5aee67524 100644 --- a/src/openrct2/network/NetworkKey.h +++ b/src/openrct2/network/NetworkKey.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPacket.cpp b/src/openrct2/network/NetworkPacket.cpp index 82a87808bae4..85028ef1f5d6 100644 --- a/src/openrct2/network/NetworkPacket.cpp +++ b/src/openrct2/network/NetworkPacket.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPacket.h b/src/openrct2/network/NetworkPacket.h index 72688485aac7..7fbe8c6a0e81 100644 --- a/src/openrct2/network/NetworkPacket.h +++ b/src/openrct2/network/NetworkPacket.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPlayer.cpp b/src/openrct2/network/NetworkPlayer.cpp index e92799e6a08b..718ef1b0ec51 100644 --- a/src/openrct2/network/NetworkPlayer.cpp +++ b/src/openrct2/network/NetworkPlayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkPlayer.h b/src/openrct2/network/NetworkPlayer.h index b1d94027cc29..6dfab45c3bb6 100644 --- a/src/openrct2/network/NetworkPlayer.h +++ b/src/openrct2/network/NetworkPlayer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkServerAdvertiser.cpp b/src/openrct2/network/NetworkServerAdvertiser.cpp index c97d89c72e19..ae09e7d6b5c5 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.cpp +++ b/src/openrct2/network/NetworkServerAdvertiser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkServerAdvertiser.h b/src/openrct2/network/NetworkServerAdvertiser.h index c7d8e7f3efbb..d6afea18490e 100644 --- a/src/openrct2/network/NetworkServerAdvertiser.h +++ b/src/openrct2/network/NetworkServerAdvertiser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkTypes.h b/src/openrct2/network/NetworkTypes.h index fc027f478d4a..f058e3a2edb4 100644 --- a/src/openrct2/network/NetworkTypes.h +++ b/src/openrct2/network/NetworkTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkUser.cpp b/src/openrct2/network/NetworkUser.cpp index 36cf045d26c8..23216e2c4323 100644 --- a/src/openrct2/network/NetworkUser.cpp +++ b/src/openrct2/network/NetworkUser.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/NetworkUser.h b/src/openrct2/network/NetworkUser.h index 3a0504a83dd2..acaa0c324a1a 100644 --- a/src/openrct2/network/NetworkUser.h +++ b/src/openrct2/network/NetworkUser.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/ServerList.cpp b/src/openrct2/network/ServerList.cpp index 11ab4dfb7374..4076eee578e5 100644 --- a/src/openrct2/network/ServerList.cpp +++ b/src/openrct2/network/ServerList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/ServerList.h b/src/openrct2/network/ServerList.h index c57450b8d379..1aca5f3d0ee3 100644 --- a/src/openrct2/network/ServerList.h +++ b/src/openrct2/network/ServerList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp index 795b96bcdaa1..71cb20ae3ce6 100644 --- a/src/openrct2/network/Socket.cpp +++ b/src/openrct2/network/Socket.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/network/Socket.h b/src/openrct2/network/Socket.h index 034e615d7e2a..f95db5b99ca0 100644 --- a/src/openrct2/network/Socket.h +++ b/src/openrct2/network/Socket.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioObject.cpp b/src/openrct2/object/AudioObject.cpp index 2ffda387252c..b1c1c3cb4bf3 100644 --- a/src/openrct2/object/AudioObject.cpp +++ b/src/openrct2/object/AudioObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioObject.h b/src/openrct2/object/AudioObject.h index 64fd4f2d86a1..c204b672dbf2 100644 --- a/src/openrct2/object/AudioObject.h +++ b/src/openrct2/object/AudioObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioSampleTable.cpp b/src/openrct2/object/AudioSampleTable.cpp index 9c7d5f42009b..4e07ea9997e4 100644 --- a/src/openrct2/object/AudioSampleTable.cpp +++ b/src/openrct2/object/AudioSampleTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/AudioSampleTable.h b/src/openrct2/object/AudioSampleTable.h index f91fb0778b1a..27f5e346e301 100644 --- a/src/openrct2/object/AudioSampleTable.h +++ b/src/openrct2/object/AudioSampleTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/BannerObject.cpp b/src/openrct2/object/BannerObject.cpp index f310049a7de0..799435fef8f8 100644 --- a/src/openrct2/object/BannerObject.cpp +++ b/src/openrct2/object/BannerObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/BannerObject.h b/src/openrct2/object/BannerObject.h index 621b5bbf0e9b..fc04e93d83fc 100644 --- a/src/openrct2/object/BannerObject.h +++ b/src/openrct2/object/BannerObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/BannerSceneryEntry.h b/src/openrct2/object/BannerSceneryEntry.h index 8465c6a8fdac..520aed10975d 100644 --- a/src/openrct2/object/BannerSceneryEntry.h +++ b/src/openrct2/object/BannerSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ClimateObject.cpp b/src/openrct2/object/ClimateObject.cpp index 6d4364b4d04d..96cfe50fd5a8 100644 --- a/src/openrct2/object/ClimateObject.cpp +++ b/src/openrct2/object/ClimateObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ClimateObject.h b/src/openrct2/object/ClimateObject.h index 1607bbc14c4a..0d754c203b9e 100644 --- a/src/openrct2/object/ClimateObject.h +++ b/src/openrct2/object/ClimateObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/DefaultObjects.cpp b/src/openrct2/object/DefaultObjects.cpp index c093b85c573d..b745b4db7e3b 100644 --- a/src/openrct2/object/DefaultObjects.cpp +++ b/src/openrct2/object/DefaultObjects.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/DefaultObjects.h b/src/openrct2/object/DefaultObjects.h index c28720c0ae28..93c5183232b0 100644 --- a/src/openrct2/object/DefaultObjects.h +++ b/src/openrct2/object/DefaultObjects.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/EntranceEntry.h b/src/openrct2/object/EntranceEntry.h index a3d8dd782fdf..32a373ff8abb 100644 --- a/src/openrct2/object/EntranceEntry.h +++ b/src/openrct2/object/EntranceEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/EntranceObject.cpp b/src/openrct2/object/EntranceObject.cpp index 46ccb74a91d9..59ecb7b0e935 100644 --- a/src/openrct2/object/EntranceObject.cpp +++ b/src/openrct2/object/EntranceObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/EntranceObject.h b/src/openrct2/object/EntranceObject.h index 6203acb2f5ee..f98aa42410a0 100644 --- a/src/openrct2/object/EntranceObject.h +++ b/src/openrct2/object/EntranceObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathEntry.h b/src/openrct2/object/FootpathEntry.h index ae0fb0052c72..f6292201068f 100644 --- a/src/openrct2/object/FootpathEntry.h +++ b/src/openrct2/object/FootpathEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index 03deac49c8a6..97546c93688a 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathObject.h b/src/openrct2/object/FootpathObject.h index 4f9298a12d76..3624b0e1ee3d 100644 --- a/src/openrct2/object/FootpathObject.h +++ b/src/openrct2/object/FootpathObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index 4e78a6d0011c..dcf0012a7781 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathRailingsObject.h b/src/openrct2/object/FootpathRailingsObject.h index 8a18064f0bc2..977ddbbacff5 100644 --- a/src/openrct2/object/FootpathRailingsObject.h +++ b/src/openrct2/object/FootpathRailingsObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathSurfaceObject.cpp b/src/openrct2/object/FootpathSurfaceObject.cpp index 0e310d3a19be..33773d069777 100644 --- a/src/openrct2/object/FootpathSurfaceObject.cpp +++ b/src/openrct2/object/FootpathSurfaceObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/FootpathSurfaceObject.h b/src/openrct2/object/FootpathSurfaceObject.h index d3647019d3be..1cbe4a69e071 100644 --- a/src/openrct2/object/FootpathSurfaceObject.h +++ b/src/openrct2/object/FootpathSurfaceObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index ee1d78ce21d4..b401b27c7ade 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ImageTable.h b/src/openrct2/object/ImageTable.h index 1a4ff375355b..89954d543613 100644 --- a/src/openrct2/object/ImageTable.h +++ b/src/openrct2/object/ImageTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/LargeSceneryEntry.h b/src/openrct2/object/LargeSceneryEntry.h index a20408ae5339..95c0da1fdf8a 100644 --- a/src/openrct2/object/LargeSceneryEntry.h +++ b/src/openrct2/object/LargeSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp index bc34542074dd..63ff25c6cf13 100644 --- a/src/openrct2/object/LargeSceneryObject.cpp +++ b/src/openrct2/object/LargeSceneryObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/LargeSceneryObject.h b/src/openrct2/object/LargeSceneryObject.h index 186382e4e284..5fe8612883ab 100644 --- a/src/openrct2/object/LargeSceneryObject.h +++ b/src/openrct2/object/LargeSceneryObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/MusicObject.cpp b/src/openrct2/object/MusicObject.cpp index 3555d54225fc..a8f1590c7668 100644 --- a/src/openrct2/object/MusicObject.cpp +++ b/src/openrct2/object/MusicObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/MusicObject.h b/src/openrct2/object/MusicObject.h index ae266cffb1ca..76a8f28f50c8 100644 --- a/src/openrct2/object/MusicObject.h +++ b/src/openrct2/object/MusicObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index f70921c41db6..54a2825f8828 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 81ea8d2b28e3..2b9c04379489 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectAsset.h b/src/openrct2/object/ObjectAsset.h index 5b0f9a764928..2bda3de11467 100644 --- a/src/openrct2/object/ObjectAsset.h +++ b/src/openrct2/object/ObjectAsset.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectEntryManager.h b/src/openrct2/object/ObjectEntryManager.h index 42de1d4949d2..50a4e946427b 100644 --- a/src/openrct2/object/ObjectEntryManager.h +++ b/src/openrct2/object/ObjectEntryManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectFactory.cpp b/src/openrct2/object/ObjectFactory.cpp index d40c33588600..e7abb80ecdf2 100644 --- a/src/openrct2/object/ObjectFactory.cpp +++ b/src/openrct2/object/ObjectFactory.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectFactory.h b/src/openrct2/object/ObjectFactory.h index 4b2be14cf26c..9401e0b451d8 100644 --- a/src/openrct2/object/ObjectFactory.h +++ b/src/openrct2/object/ObjectFactory.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectLimits.h b/src/openrct2/object/ObjectLimits.h index cd2af1fa2206..9126e4bba005 100644 --- a/src/openrct2/object/ObjectLimits.h +++ b/src/openrct2/object/ObjectLimits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectList.cpp b/src/openrct2/object/ObjectList.cpp index 0c71b854e7c9..535e4eea447a 100644 --- a/src/openrct2/object/ObjectList.cpp +++ b/src/openrct2/object/ObjectList.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectList.h b/src/openrct2/object/ObjectList.h index e0413d715cbd..bf5bb234ced1 100644 --- a/src/openrct2/object/ObjectList.h +++ b/src/openrct2/object/ObjectList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index d89f4ab9bfed..79ccd8f3de40 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectManager.h b/src/openrct2/object/ObjectManager.h index 947f1b7d2635..3d913dc0e1d6 100644 --- a/src/openrct2/object/ObjectManager.h +++ b/src/openrct2/object/ObjectManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 27c1b89ca15b..7c8b8b9b847b 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectRepository.h b/src/openrct2/object/ObjectRepository.h index 4feb8c157653..3cda2be98c84 100644 --- a/src/openrct2/object/ObjectRepository.h +++ b/src/openrct2/object/ObjectRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectTypes.cpp b/src/openrct2/object/ObjectTypes.cpp index 30f88aa31374..657805d33659 100644 --- a/src/openrct2/object/ObjectTypes.cpp +++ b/src/openrct2/object/ObjectTypes.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ObjectTypes.h b/src/openrct2/object/ObjectTypes.h index 89c6b9489a1f..0985920fa685 100644 --- a/src/openrct2/object/ObjectTypes.h +++ b/src/openrct2/object/ObjectTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PathAdditionEntry.h b/src/openrct2/object/PathAdditionEntry.h index f3a59d26a59f..0a8af8a5aa9a 100644 --- a/src/openrct2/object/PathAdditionEntry.h +++ b/src/openrct2/object/PathAdditionEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PathAdditionObject.cpp b/src/openrct2/object/PathAdditionObject.cpp index c86b0ffe0084..99661d28f224 100644 --- a/src/openrct2/object/PathAdditionObject.cpp +++ b/src/openrct2/object/PathAdditionObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PathAdditionObject.h b/src/openrct2/object/PathAdditionObject.h index f96b19fd4be9..763d64e43cb7 100644 --- a/src/openrct2/object/PathAdditionObject.h +++ b/src/openrct2/object/PathAdditionObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp index 040d20892442..b88466e051b4 100644 --- a/src/openrct2/object/PeepAnimationsObject.cpp +++ b/src/openrct2/object/PeepAnimationsObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PeepAnimationsObject.h b/src/openrct2/object/PeepAnimationsObject.h index 6373d6f4d307..9783924a4b96 100644 --- a/src/openrct2/object/PeepAnimationsObject.h +++ b/src/openrct2/object/PeepAnimationsObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PeepNamesObject.cpp b/src/openrct2/object/PeepNamesObject.cpp index 41b367a15137..dc3345d0fd2f 100644 --- a/src/openrct2/object/PeepNamesObject.cpp +++ b/src/openrct2/object/PeepNamesObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/PeepNamesObject.h b/src/openrct2/object/PeepNamesObject.h index d2e2bd4e2b58..04a2700d70ba 100644 --- a/src/openrct2/object/PeepNamesObject.h +++ b/src/openrct2/object/PeepNamesObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ResourceTable.cpp b/src/openrct2/object/ResourceTable.cpp index 910ab0547d17..35e58eae1d7f 100644 --- a/src/openrct2/object/ResourceTable.cpp +++ b/src/openrct2/object/ResourceTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ResourceTable.h b/src/openrct2/object/ResourceTable.h index d8fb67d1a0e2..fc91c6b0fe79 100644 --- a/src/openrct2/object/ResourceTable.h +++ b/src/openrct2/object/ResourceTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index a0201d61573f..c87dd3f2b176 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/RideObject.h b/src/openrct2/object/RideObject.h index 8b159a445c6f..947f2e211ee6 100644 --- a/src/openrct2/object/RideObject.h +++ b/src/openrct2/object/RideObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ScenarioMetaObject.cpp b/src/openrct2/object/ScenarioMetaObject.cpp index b4573a20a30c..f2ac05e8d3c7 100644 --- a/src/openrct2/object/ScenarioMetaObject.cpp +++ b/src/openrct2/object/ScenarioMetaObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/ScenarioMetaObject.h b/src/openrct2/object/ScenarioMetaObject.h index 4eb734f03b05..16879df4363a 100644 --- a/src/openrct2/object/ScenarioMetaObject.h +++ b/src/openrct2/object/ScenarioMetaObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SceneryGroupEntry.h b/src/openrct2/object/SceneryGroupEntry.h index bbaef394d57a..5da2d5bbc853 100644 --- a/src/openrct2/object/SceneryGroupEntry.h +++ b/src/openrct2/object/SceneryGroupEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index afd52871b8fc..bc5bbf229139 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SceneryGroupObject.h b/src/openrct2/object/SceneryGroupObject.h index 14cbd73330e5..b0d9f4febfe0 100644 --- a/src/openrct2/object/SceneryGroupObject.h +++ b/src/openrct2/object/SceneryGroupObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SceneryObject.h b/src/openrct2/object/SceneryObject.h index cea6c9cde64a..c44ffebe6207 100644 --- a/src/openrct2/object/SceneryObject.h +++ b/src/openrct2/object/SceneryObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SmallSceneryEntry.h b/src/openrct2/object/SmallSceneryEntry.h index beedcd42da50..02250c555bcb 100644 --- a/src/openrct2/object/SmallSceneryEntry.h +++ b/src/openrct2/object/SmallSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SmallSceneryObject.cpp b/src/openrct2/object/SmallSceneryObject.cpp index 77d9ca50acf1..4d8e6bad5f7a 100644 --- a/src/openrct2/object/SmallSceneryObject.cpp +++ b/src/openrct2/object/SmallSceneryObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/SmallSceneryObject.h b/src/openrct2/object/SmallSceneryObject.h index b66a1fdd9961..cffb1001582e 100644 --- a/src/openrct2/object/SmallSceneryObject.h +++ b/src/openrct2/object/SmallSceneryObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StationObject.cpp b/src/openrct2/object/StationObject.cpp index 3cace4d106ac..5b804339c0ba 100644 --- a/src/openrct2/object/StationObject.cpp +++ b/src/openrct2/object/StationObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StationObject.h b/src/openrct2/object/StationObject.h index ace3d0fa4237..2e24e8d2887e 100644 --- a/src/openrct2/object/StationObject.h +++ b/src/openrct2/object/StationObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp index 9c6fe8c044b8..5fa2b68e0978 100644 --- a/src/openrct2/object/StringTable.cpp +++ b/src/openrct2/object/StringTable.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/StringTable.h b/src/openrct2/object/StringTable.h index f5f27b245f71..69326d2c5533 100644 --- a/src/openrct2/object/StringTable.h +++ b/src/openrct2/object/StringTable.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainEdgeObject.cpp b/src/openrct2/object/TerrainEdgeObject.cpp index 829969e2ab66..bf82222b43a8 100644 --- a/src/openrct2/object/TerrainEdgeObject.cpp +++ b/src/openrct2/object/TerrainEdgeObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainEdgeObject.h b/src/openrct2/object/TerrainEdgeObject.h index 05b5681b2603..5a5ffdfc14bc 100644 --- a/src/openrct2/object/TerrainEdgeObject.h +++ b/src/openrct2/object/TerrainEdgeObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainSurfaceObject.cpp b/src/openrct2/object/TerrainSurfaceObject.cpp index 313b9972864f..a8a5f161b370 100644 --- a/src/openrct2/object/TerrainSurfaceObject.cpp +++ b/src/openrct2/object/TerrainSurfaceObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/TerrainSurfaceObject.h b/src/openrct2/object/TerrainSurfaceObject.h index 103613cdcf65..6cb5fc13f9b3 100644 --- a/src/openrct2/object/TerrainSurfaceObject.h +++ b/src/openrct2/object/TerrainSurfaceObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallObject.cpp b/src/openrct2/object/WallObject.cpp index 00fb7046731f..68315558e623 100644 --- a/src/openrct2/object/WallObject.cpp +++ b/src/openrct2/object/WallObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallObject.h b/src/openrct2/object/WallObject.h index ad31cd996e81..e8fd1b72b678 100644 --- a/src/openrct2/object/WallObject.h +++ b/src/openrct2/object/WallObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallSceneryEntry.cpp b/src/openrct2/object/WallSceneryEntry.cpp index 56b20a411ef6..66ae8914f807 100644 --- a/src/openrct2/object/WallSceneryEntry.cpp +++ b/src/openrct2/object/WallSceneryEntry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WallSceneryEntry.h b/src/openrct2/object/WallSceneryEntry.h index 4eb7860b3f0e..7a8e6d7136bd 100644 --- a/src/openrct2/object/WallSceneryEntry.h +++ b/src/openrct2/object/WallSceneryEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WaterEntry.h b/src/openrct2/object/WaterEntry.h index 8c226a364ca6..0bacaa098423 100644 --- a/src/openrct2/object/WaterEntry.h +++ b/src/openrct2/object/WaterEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index 5e5c11df7963..c4bbefb70637 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/object/WaterObject.h b/src/openrct2/object/WaterObject.h index 86e15d8751cf..043820cbffa9 100644 --- a/src/openrct2/object/WaterObject.h +++ b/src/openrct2/object/WaterObject.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Boundbox.h b/src/openrct2/paint/Boundbox.h index 313e630d39f4..f2607195e354 100644 --- a/src/openrct2/paint/Boundbox.h +++ b/src/openrct2/paint/Boundbox.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.Entity.cpp b/src/openrct2/paint/Paint.Entity.cpp index 0cec9296d545..31b9e45af937 100644 --- a/src/openrct2/paint/Paint.Entity.cpp +++ b/src/openrct2/paint/Paint.Entity.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.Entity.h b/src/openrct2/paint/Paint.Entity.h index 3f8117e1f5e9..b481242284e6 100644 --- a/src/openrct2/paint/Paint.Entity.h +++ b/src/openrct2/paint/Paint.Entity.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.SessionFlags.h b/src/openrct2/paint/Paint.SessionFlags.h index ea8789d24cf9..4827717e243f 100644 --- a/src/openrct2/paint/Paint.SessionFlags.h +++ b/src/openrct2/paint/Paint.SessionFlags.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index 25ef16622b1b..91c650475798 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Paint.h b/src/openrct2/paint/Paint.h index c2fe62c34601..e457879ae641 100644 --- a/src/openrct2/paint/Paint.h +++ b/src/openrct2/paint/Paint.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/PaintHelpers.cpp b/src/openrct2/paint/PaintHelpers.cpp index 2f4fab1190e6..d28b3c05868a 100644 --- a/src/openrct2/paint/PaintHelpers.cpp +++ b/src/openrct2/paint/PaintHelpers.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index 2117d4060479..f478095391ff 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/Painter.h b/src/openrct2/paint/Painter.h index b3d15e30f1d1..2d5dd8d7e843 100644 --- a/src/openrct2/paint/Painter.h +++ b/src/openrct2/paint/Painter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/VirtualFloor.cpp b/src/openrct2/paint/VirtualFloor.cpp index d25477478df6..980ef992d0a1 100644 --- a/src/openrct2/paint/VirtualFloor.cpp +++ b/src/openrct2/paint/VirtualFloor.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/VirtualFloor.h b/src/openrct2/paint/VirtualFloor.h index 91b97934c679..2cd86c82a324 100644 --- a/src/openrct2/paint/VirtualFloor.h +++ b/src/openrct2/paint/VirtualFloor.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/MetalSupports.cpp b/src/openrct2/paint/support/MetalSupports.cpp index b1dc668b11d6..27046b534aaf 100644 --- a/src/openrct2/paint/support/MetalSupports.cpp +++ b/src/openrct2/paint/support/MetalSupports.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/MetalSupports.h b/src/openrct2/paint/support/MetalSupports.h index 37b446b19a44..adf271b9ef0d 100644 --- a/src/openrct2/paint/support/MetalSupports.h +++ b/src/openrct2/paint/support/MetalSupports.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/WoodenSupports.cpp b/src/openrct2/paint/support/WoodenSupports.cpp index fa6c09672af9..83d9cfcaf0c3 100644 --- a/src/openrct2/paint/support/WoodenSupports.cpp +++ b/src/openrct2/paint/support/WoodenSupports.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/WoodenSupports.h b/src/openrct2/paint/support/WoodenSupports.h index e3688d73f265..f619ebfbea21 100644 --- a/src/openrct2/paint/support/WoodenSupports.h +++ b/src/openrct2/paint/support/WoodenSupports.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/support/WoodenSupports.hpp b/src/openrct2/paint/support/WoodenSupports.hpp index e26198ced273..8e0fad764470 100644 --- a/src/openrct2/paint/support/WoodenSupports.hpp +++ b/src/openrct2/paint/support/WoodenSupports.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index 8b77f6741bfb..a8815fba5602 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index ade9930b58e4..63d14015ce91 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index a920063aa112..d40e33d14e1b 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index f053c2cdcfb3..5a6fc0e70cb6 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp index 12279a7218be..862491475f9f 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.h b/src/openrct2/paint/tile_element/Paint.PathAddition.h index 195e022fe934..e58d235c32b5 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.h +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp index e14b86493247..6465bad85a57 100644 --- a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index 8f0b38d7c509..bff92c9d418c 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Surface.h b/src/openrct2/paint/tile_element/Paint.Surface.h index eeb36ffe5d22..beec163c60b4 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.h +++ b/src/openrct2/paint/tile_element/Paint.Surface.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index aed518f01485..cfd243c58ab3 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.h b/src/openrct2/paint/tile_element/Paint.TileElement.h index 2d174fa13432..a782a05a4e12 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.h +++ b/src/openrct2/paint/tile_element/Paint.TileElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Tunnel.h b/src/openrct2/paint/tile_element/Paint.Tunnel.h index 297fd7c43867..d378473cb0f5 100644 --- a/src/openrct2/paint/tile_element/Paint.Tunnel.h +++ b/src/openrct2/paint/tile_element/Paint.Tunnel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index 2c7d927bd11b..0bdd4dff3fc9 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Segment.h b/src/openrct2/paint/tile_element/Segment.h index 999bb89a18bc..dea80c9caeac 100644 --- a/src/openrct2/paint/tile_element/Segment.h +++ b/src/openrct2/paint/tile_element/Segment.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/Segment.h b/src/openrct2/paint/track/Segment.h index 87a05b090794..043a88407938 100644 --- a/src/openrct2/paint/track/Segment.h +++ b/src/openrct2/paint/track/Segment.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/Support.h b/src/openrct2/paint/track/Support.h index ed1c9b2d152a..6edbf4461848 100644 --- a/src/openrct2/paint/track/Support.h +++ b/src/openrct2/paint/track/Support.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp index cb1cf4a83ba8..fab237d388eb 100644 --- a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp index af874e2053f4..353162b9dc54 100644 --- a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp index e24baea1a177..a0bb1eb8ab14 100644 --- a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp +++ b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp index 14963e10ade3..29b649884160 100644 --- a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp index ceb1361745c2..3a11e5998229 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp index d76f8df60b35..97faa2b831db 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp index 9fad42a9d3bb..72ddfa66e820 100644 --- a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp index 265c8cf0f4d1..debb26c41e6d 100644 --- a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp index 3fe74a1bbcb3..938824f5cb3a 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp index 611424075ef9..a89984fd118a 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp index 592d8e37445e..4b50560b6cc9 100644 --- a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/HybridCoaster.cpp b/src/openrct2/paint/track/coaster/HybridCoaster.cpp index 9139ffed94f6..8d98eacc500e 100644 --- a/src/openrct2/paint/track/coaster/HybridCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HybridCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp index 0c8fb3f456ac..d1f2980063d7 100644 --- a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp index 71a7469c681b..64e56924b311 100644 --- a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp index 08cfd168c988..b5fa9d3fef14 100644 --- a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp index 569f8087e021..97fa1a8c08cd 100644 --- a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp index 73812824af00..a16ed8bc6a89 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp index 7f97bb4b8d42..422118876dfa 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp index da2cbfbdfc2f..f194277fd0d5 100644 --- a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp index 0345252cb175..cb7380dd1365 100644 --- a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp index 1f17ef33a1b8..78192eb8224b 100644 --- a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MineRide.cpp b/src/openrct2/paint/track/coaster/MineRide.cpp index 3eca31d55d70..79730be2c13e 100644 --- a/src/openrct2/paint/track/coaster/MineRide.cpp +++ b/src/openrct2/paint/track/coaster/MineRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp index b31f5f6a93bd..20bc7c358cd3 100644 --- a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp index ff994635b162..d3ac46033f47 100644 --- a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp index 7a91a0cf34eb..6c344c2443a4 100644 --- a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp index 8f9acd46fcfb..f32120049df9 100644 --- a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp index 2bd7e3833b3d..d5bb048d11d9 100644 --- a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp index 9c1287f71f77..089b04b000ad 100644 --- a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp index 4a128f2aacd2..23a0c8b376bf 100644 --- a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp index 696dc461c874..e072d9daf8e7 100644 --- a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp index ed61a6dac858..a6672b4809d5 100644 --- a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/Steeplechase.cpp b/src/openrct2/paint/track/coaster/Steeplechase.cpp index 3b345bf30bb4..b50cbbb0f1d2 100644 --- a/src/openrct2/paint/track/coaster/Steeplechase.cpp +++ b/src/openrct2/paint/track/coaster/Steeplechase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp index 0dab1bc6df63..b1bb2620ebb6 100644 --- a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp index 5e1149f68539..a58ddeefead7 100644 --- a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h index c490956e63e9..85e7b9852256 100644 --- a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h +++ b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/VirginiaReel.cpp b/src/openrct2/paint/track/coaster/VirginiaReel.cpp index 654183a9e09e..8f78d05a16cf 100644 --- a/src/openrct2/paint/track/coaster/VirginiaReel.cpp +++ b/src/openrct2/paint/track/coaster/VirginiaReel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WildMouse.cpp b/src/openrct2/paint/track/coaster/WildMouse.cpp index 800e8b3a6174..f8b944c00747 100644 --- a/src/openrct2/paint/track/coaster/WildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WildMouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp index 15d890dab389..f97f7b40505f 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp index 72eaaab5278b..6d941745485d 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp index 74a4070a40b4..4911ec264682 100644 --- a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/CarRide.cpp b/src/openrct2/paint/track/gentle/CarRide.cpp index 522d202970f3..8824850ccdac 100644 --- a/src/openrct2/paint/track/gentle/CarRide.cpp +++ b/src/openrct2/paint/track/gentle/CarRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/Circus.cpp b/src/openrct2/paint/track/gentle/Circus.cpp index 11bb974422a7..2b8aca2b834b 100644 --- a/src/openrct2/paint/track/gentle/Circus.cpp +++ b/src/openrct2/paint/track/gentle/Circus.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/CrookedHouse.cpp b/src/openrct2/paint/track/gentle/CrookedHouse.cpp index a45d557f90ab..c2fa6b84cb92 100644 --- a/src/openrct2/paint/track/gentle/CrookedHouse.cpp +++ b/src/openrct2/paint/track/gentle/CrookedHouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/Dodgems.cpp b/src/openrct2/paint/track/gentle/Dodgems.cpp index ca5e1ba7115c..e2f5b5da4975 100644 --- a/src/openrct2/paint/track/gentle/Dodgems.cpp +++ b/src/openrct2/paint/track/gentle/Dodgems.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/FerrisWheel.cpp b/src/openrct2/paint/track/gentle/FerrisWheel.cpp index 39b3e74c94ed..10bea380ac50 100644 --- a/src/openrct2/paint/track/gentle/FerrisWheel.cpp +++ b/src/openrct2/paint/track/gentle/FerrisWheel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp index e2d573ec5174..6401ff6c2a66 100644 --- a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp +++ b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/GhostTrain.cpp b/src/openrct2/paint/track/gentle/GhostTrain.cpp index 1ea28c0de97d..3e619b4863c9 100644 --- a/src/openrct2/paint/track/gentle/GhostTrain.cpp +++ b/src/openrct2/paint/track/gentle/GhostTrain.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/HauntedHouse.cpp b/src/openrct2/paint/track/gentle/HauntedHouse.cpp index 02fd4e69c77e..3d679058e9e3 100644 --- a/src/openrct2/paint/track/gentle/HauntedHouse.cpp +++ b/src/openrct2/paint/track/gentle/HauntedHouse.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/Maze.cpp b/src/openrct2/paint/track/gentle/Maze.cpp index c4e9cff68a93..eeb4d176dde4 100644 --- a/src/openrct2/paint/track/gentle/Maze.cpp +++ b/src/openrct2/paint/track/gentle/Maze.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MerryGoRound.cpp b/src/openrct2/paint/track/gentle/MerryGoRound.cpp index 2b594fbc8ebc..24bb4e2ce437 100644 --- a/src/openrct2/paint/track/gentle/MerryGoRound.cpp +++ b/src/openrct2/paint/track/gentle/MerryGoRound.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MiniGolf.cpp b/src/openrct2/paint/track/gentle/MiniGolf.cpp index 69c46c1b6597..97a9f6b97552 100644 --- a/src/openrct2/paint/track/gentle/MiniGolf.cpp +++ b/src/openrct2/paint/track/gentle/MiniGolf.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp index c2aba222aa3b..dc261df7f9ff 100644 --- a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp +++ b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/MonorailCycles.cpp b/src/openrct2/paint/track/gentle/MonorailCycles.cpp index 35cfaf8fb403..c8343abf7fbf 100644 --- a/src/openrct2/paint/track/gentle/MonorailCycles.cpp +++ b/src/openrct2/paint/track/gentle/MonorailCycles.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/ObservationTower.cpp b/src/openrct2/paint/track/gentle/ObservationTower.cpp index 58a9cf4f052f..a15e5e232c4c 100644 --- a/src/openrct2/paint/track/gentle/ObservationTower.cpp +++ b/src/openrct2/paint/track/gentle/ObservationTower.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/SpaceRings.cpp b/src/openrct2/paint/track/gentle/SpaceRings.cpp index 9f36e11a42ec..2f95bd1e1c4e 100644 --- a/src/openrct2/paint/track/gentle/SpaceRings.cpp +++ b/src/openrct2/paint/track/gentle/SpaceRings.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/gentle/SpiralSlide.cpp b/src/openrct2/paint/track/gentle/SpiralSlide.cpp index 596b9a05e0ec..0b0df1fa3ef0 100644 --- a/src/openrct2/paint/track/gentle/SpiralSlide.cpp +++ b/src/openrct2/paint/track/gentle/SpiralSlide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/shops/Facility.cpp b/src/openrct2/paint/track/shops/Facility.cpp index 49c81b5a2d03..293f38086f2c 100644 --- a/src/openrct2/paint/track/shops/Facility.cpp +++ b/src/openrct2/paint/track/shops/Facility.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/shops/Shop.cpp b/src/openrct2/paint/track/shops/Shop.cpp index a69c8be74eef..8bf4aa4088f2 100644 --- a/src/openrct2/paint/track/shops/Shop.cpp +++ b/src/openrct2/paint/track/shops/Shop.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/3dCinema.cpp b/src/openrct2/paint/track/thrill/3dCinema.cpp index 4ccca5d5fd03..47e5de72f33c 100644 --- a/src/openrct2/paint/track/thrill/3dCinema.cpp +++ b/src/openrct2/paint/track/thrill/3dCinema.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/Enterprise.cpp b/src/openrct2/paint/track/thrill/Enterprise.cpp index d86e06902802..f661853435bf 100644 --- a/src/openrct2/paint/track/thrill/Enterprise.cpp +++ b/src/openrct2/paint/track/thrill/Enterprise.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/GoKarts.cpp b/src/openrct2/paint/track/thrill/GoKarts.cpp index 1d42d6f87f82..8ca98969c8f9 100644 --- a/src/openrct2/paint/track/thrill/GoKarts.cpp +++ b/src/openrct2/paint/track/thrill/GoKarts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp index 96df8a54603f..035c7698b6e8 100644 --- a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp +++ b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/MagicCarpet.cpp b/src/openrct2/paint/track/thrill/MagicCarpet.cpp index 26cfde7054ff..0c5f8547e3e2 100644 --- a/src/openrct2/paint/track/thrill/MagicCarpet.cpp +++ b/src/openrct2/paint/track/thrill/MagicCarpet.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/MotionSimulator.cpp b/src/openrct2/paint/track/thrill/MotionSimulator.cpp index ad0bed60331e..bb8ca83eac51 100644 --- a/src/openrct2/paint/track/thrill/MotionSimulator.cpp +++ b/src/openrct2/paint/track/thrill/MotionSimulator.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/RotoDrop.cpp b/src/openrct2/paint/track/thrill/RotoDrop.cpp index 972bcb5ac546..16b94b64aef6 100644 --- a/src/openrct2/paint/track/thrill/RotoDrop.cpp +++ b/src/openrct2/paint/track/thrill/RotoDrop.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp index f775c1a2feb6..ab3a08a334b0 100644 --- a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/SwingingShip.cpp b/src/openrct2/paint/track/thrill/SwingingShip.cpp index 373540b44d67..93011408ae66 100644 --- a/src/openrct2/paint/track/thrill/SwingingShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingShip.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/TopSpin.cpp b/src/openrct2/paint/track/thrill/TopSpin.cpp index ef7841ebc94d..5496b80149c1 100644 --- a/src/openrct2/paint/track/thrill/TopSpin.cpp +++ b/src/openrct2/paint/track/thrill/TopSpin.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/thrill/Twist.cpp b/src/openrct2/paint/track/thrill/Twist.cpp index f9d1105f49ff..ddfbd45b337d 100644 --- a/src/openrct2/paint/track/thrill/Twist.cpp +++ b/src/openrct2/paint/track/thrill/Twist.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/Chairlift.cpp b/src/openrct2/paint/track/transport/Chairlift.cpp index cafe1377c9f1..14a2883365ee 100644 --- a/src/openrct2/paint/track/transport/Chairlift.cpp +++ b/src/openrct2/paint/track/transport/Chairlift.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/Lift.cpp b/src/openrct2/paint/track/transport/Lift.cpp index 0d6babd2c3d3..01758783a13c 100644 --- a/src/openrct2/paint/track/transport/Lift.cpp +++ b/src/openrct2/paint/track/transport/Lift.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/MiniatureRailway.cpp b/src/openrct2/paint/track/transport/MiniatureRailway.cpp index 15a6cb6cc07f..c19c824116ed 100644 --- a/src/openrct2/paint/track/transport/MiniatureRailway.cpp +++ b/src/openrct2/paint/track/transport/MiniatureRailway.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/Monorail.cpp b/src/openrct2/paint/track/transport/Monorail.cpp index dcf6e7a7870f..708f3f37d5fc 100644 --- a/src/openrct2/paint/track/transport/Monorail.cpp +++ b/src/openrct2/paint/track/transport/Monorail.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp index 1940f414f5b7..a172afcd5781 100644 --- a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp +++ b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/BoatHire.cpp b/src/openrct2/paint/track/water/BoatHire.cpp index 9f2a882f4782..9e5d8dcc976a 100644 --- a/src/openrct2/paint/track/water/BoatHire.cpp +++ b/src/openrct2/paint/track/water/BoatHire.cpp @@ -1,6 +1,6 @@ /***************************************************************************** /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/DinghySlide.cpp b/src/openrct2/paint/track/water/DinghySlide.cpp index ddf22b05a9ae..14ccded32d3f 100644 --- a/src/openrct2/paint/track/water/DinghySlide.cpp +++ b/src/openrct2/paint/track/water/DinghySlide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/DinghySlideCovered.cpp b/src/openrct2/paint/track/water/DinghySlideCovered.cpp index dbafb20388d1..af160a9d8d47 100644 --- a/src/openrct2/paint/track/water/DinghySlideCovered.cpp +++ b/src/openrct2/paint/track/water/DinghySlideCovered.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/LogFlume.cpp b/src/openrct2/paint/track/water/LogFlume.cpp index 39975870c6b7..a1710eb460e5 100644 --- a/src/openrct2/paint/track/water/LogFlume.cpp +++ b/src/openrct2/paint/track/water/LogFlume.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/RiverRapids.cpp b/src/openrct2/paint/track/water/RiverRapids.cpp index 37baf502fdb7..8d766027d21f 100644 --- a/src/openrct2/paint/track/water/RiverRapids.cpp +++ b/src/openrct2/paint/track/water/RiverRapids.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/SplashBoats.cpp b/src/openrct2/paint/track/water/SplashBoats.cpp index 3217de4eb8ec..03c0b53eb012 100644 --- a/src/openrct2/paint/track/water/SplashBoats.cpp +++ b/src/openrct2/paint/track/water/SplashBoats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/track/water/SubmarineRide.cpp b/src/openrct2/paint/track/water/SubmarineRide.cpp index 663b3dc5f479..8a31fc3026c4 100644 --- a/src/openrct2/paint/track/water/SubmarineRide.cpp +++ b/src/openrct2/paint/track/water/SubmarineRide.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp index bee22f00b820..39c48e06d7dd 100644 --- a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp index 3a6c0206b575..9a9bab0755d2 100644 --- a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h index affeca1e9771..4250706aa7c8 100644 --- a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h +++ b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp b/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp index 8046a52ed521..9e944ae76a4b 100644 --- a/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.ObservationTower.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp b/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp index 30f6e29dfd57..531cd67acfd1 100644 --- a/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.ReverserRollerCoaster.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp index f42d0c3880ea..b3ef99285761 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp b/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp index d433289be5a3..10896d4be981 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp b/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp index 48df702b0dae..099c7e4e29c6 100644 --- a/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp index ec94b6fae8e9..7d40072bd1e7 100644 --- a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp b/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp index 776880f7d1c9..1fb889fbb436 100644 --- a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/VehiclePaint.cpp b/src/openrct2/paint/vehicle/VehiclePaint.cpp index 4f9ad45d48c9..36841e85dfd5 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.cpp +++ b/src/openrct2/paint/vehicle/VehiclePaint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/paint/vehicle/VehiclePaint.h b/src/openrct2/paint/vehicle/VehiclePaint.h index 556edaba4345..aee9142fab86 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.h +++ b/src/openrct2/paint/vehicle/VehiclePaint.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/Legacy.cpp b/src/openrct2/park/Legacy.cpp index 9943e2f367b3..d3903496de6e 100644 --- a/src/openrct2/park/Legacy.cpp +++ b/src/openrct2/park/Legacy.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/Legacy.h b/src/openrct2/park/Legacy.h index 2cd07ef7f500..14813f0ae083 100644 --- a/src/openrct2/park/Legacy.h +++ b/src/openrct2/park/Legacy.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index a79402977a05..3cbe7619a5fa 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/ParkFile.h b/src/openrct2/park/ParkFile.h index 9cd5c8399a90..99a64c1ee504 100644 --- a/src/openrct2/park/ParkFile.h +++ b/src/openrct2/park/ParkFile.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/ParkPreview.cpp b/src/openrct2/park/ParkPreview.cpp index 43c7810092ed..0b7d05438b04 100644 --- a/src/openrct2/park/ParkPreview.cpp +++ b/src/openrct2/park/ParkPreview.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/park/ParkPreview.h b/src/openrct2/park/ParkPreview.h index 90b6a6d1738d..dfc1f654d909 100644 --- a/src/openrct2/park/ParkPreview.h +++ b/src/openrct2/park/ParkPreview.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/GuestPathfinding.cpp b/src/openrct2/peep/GuestPathfinding.cpp index 48bce8d6e48a..8bb7eced7da4 100644 --- a/src/openrct2/peep/GuestPathfinding.cpp +++ b/src/openrct2/peep/GuestPathfinding.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/GuestPathfinding.h b/src/openrct2/peep/GuestPathfinding.h index 72a0fb97fbfa..6d1b0d3e469f 100644 --- a/src/openrct2/peep/GuestPathfinding.h +++ b/src/openrct2/peep/GuestPathfinding.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepAnimations.cpp b/src/openrct2/peep/PeepAnimations.cpp index ba016cc6fd80..df1d77e4374f 100644 --- a/src/openrct2/peep/PeepAnimations.cpp +++ b/src/openrct2/peep/PeepAnimations.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepAnimations.h b/src/openrct2/peep/PeepAnimations.h index 67c6d83ec98b..b04db02aa62e 100644 --- a/src/openrct2/peep/PeepAnimations.h +++ b/src/openrct2/peep/PeepAnimations.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepSpriteIds.h b/src/openrct2/peep/PeepSpriteIds.h index 3068bab27637..749227c188b8 100644 --- a/src/openrct2/peep/PeepSpriteIds.h +++ b/src/openrct2/peep/PeepSpriteIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepThoughts.cpp b/src/openrct2/peep/PeepThoughts.cpp index 3578abca7ab1..223e13b0de3e 100644 --- a/src/openrct2/peep/PeepThoughts.cpp +++ b/src/openrct2/peep/PeepThoughts.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/PeepThoughts.h b/src/openrct2/peep/PeepThoughts.h index 82e4d1ded852..6fb530e3ae77 100644 --- a/src/openrct2/peep/PeepThoughts.h +++ b/src/openrct2/peep/PeepThoughts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/RideUseSystem.cpp b/src/openrct2/peep/RideUseSystem.cpp index 4334437f160e..8eadca2c161e 100644 --- a/src/openrct2/peep/RideUseSystem.cpp +++ b/src/openrct2/peep/RideUseSystem.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/peep/RideUseSystem.h b/src/openrct2/peep/RideUseSystem.h index 02b42a59c1f9..deb4f8533f9e 100644 --- a/src/openrct2/peep/RideUseSystem.h +++ b/src/openrct2/peep/RideUseSystem.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Crash.cpp b/src/openrct2/platform/Crash.cpp index 0db1a1a3a070..9539b07b3040 100644 --- a/src/openrct2/platform/Crash.cpp +++ b/src/openrct2/platform/Crash.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Crash.h b/src/openrct2/platform/Crash.h index fa57d97c5519..a12097e26237 100644 --- a/src/openrct2/platform/Crash.h +++ b/src/openrct2/platform/Crash.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Memory.h b/src/openrct2/platform/Memory.h index b215c000e23f..a17d09c9c34d 100644 --- a/src/openrct2/platform/Memory.h +++ b/src/openrct2/platform/Memory.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Android.cpp b/src/openrct2/platform/Platform.Android.cpp index dc0c0e4d6abc..0ebab9383b19 100644 --- a/src/openrct2/platform/Platform.Android.cpp +++ b/src/openrct2/platform/Platform.Android.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Common.cpp b/src/openrct2/platform/Platform.Common.cpp index fbe440fd2b08..aa1f9687b2d8 100644 --- a/src/openrct2/platform/Platform.Common.cpp +++ b/src/openrct2/platform/Platform.Common.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Emscripten.cpp b/src/openrct2/platform/Platform.Emscripten.cpp index 24f73120de57..4bf486b268db 100644 --- a/src/openrct2/platform/Platform.Emscripten.cpp +++ b/src/openrct2/platform/Platform.Emscripten.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp index 5bcb8f9d5e91..9eb095f59d65 100644 --- a/src/openrct2/platform/Platform.Linux.cpp +++ b/src/openrct2/platform/Platform.Linux.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Posix.cpp b/src/openrct2/platform/Platform.Posix.cpp index 5329756f1905..b33d3e17ee58 100644 --- a/src/openrct2/platform/Platform.Posix.cpp +++ b/src/openrct2/platform/Platform.Posix.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.Win32.cpp b/src/openrct2/platform/Platform.Win32.cpp index 1dd206642a64..75b9db30f512 100644 --- a/src/openrct2/platform/Platform.Win32.cpp +++ b/src/openrct2/platform/Platform.Win32.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.h b/src/openrct2/platform/Platform.h index 6d477c7cf919..b96ee1f6ee9f 100644 --- a/src/openrct2/platform/Platform.h +++ b/src/openrct2/platform/Platform.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/platform/Platform.macOS.mm b/src/openrct2/platform/Platform.macOS.mm index cdc1b6812cfa..ad465d05a243 100644 --- a/src/openrct2/platform/Platform.macOS.mm +++ b/src/openrct2/platform/Platform.macOS.mm @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/profiling/Profiling.cpp b/src/openrct2/profiling/Profiling.cpp index cafb70144632..6f8591a7a7d4 100644 --- a/src/openrct2/profiling/Profiling.cpp +++ b/src/openrct2/profiling/Profiling.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/profiling/Profiling.h b/src/openrct2/profiling/Profiling.h index 4d09fac4d773..ddc3718c15a7 100644 --- a/src/openrct2/profiling/Profiling.h +++ b/src/openrct2/profiling/Profiling.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/profiling/ProfilingMacros.hpp b/src/openrct2/profiling/ProfilingMacros.hpp index 5aab6e84687e..3474bb00e65b 100644 --- a/src/openrct2/profiling/ProfilingMacros.hpp +++ b/src/openrct2/profiling/ProfilingMacros.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Csg.cpp b/src/openrct2/rct1/Csg.cpp index 6d983c373bfb..990a48ff1207 100644 --- a/src/openrct2/rct1/Csg.cpp +++ b/src/openrct2/rct1/Csg.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Csg.h b/src/openrct2/rct1/Csg.h index 3d47b5bafc62..74d66078d493 100644 --- a/src/openrct2/rct1/Csg.h +++ b/src/openrct2/rct1/Csg.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Limits.h b/src/openrct2/rct1/Limits.h index 244e927d9fb0..5afb75c6180a 100644 --- a/src/openrct2/rct1/Limits.h +++ b/src/openrct2/rct1/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index d44e3ab0dae1..6a84d2893f55 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 02ccd8a1c10a..84e247c7dbf6 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/rct1/T4Importer.cpp index 12f6f0e90ebe..4c1a88e558ef 100644 --- a/src/openrct2/rct1/T4Importer.cpp +++ b/src/openrct2/rct1/T4Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp index 1b702dcf72ce..b60b8a61329d 100644 --- a/src/openrct2/rct1/Tables.cpp +++ b/src/openrct2/rct1/Tables.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/rct1/Tables.h index 1b7b424104de..5123aec28d36 100644 --- a/src/openrct2/rct1/Tables.h +++ b/src/openrct2/rct1/Tables.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/CSChar.h b/src/openrct2/rct12/CSChar.h index 1a9d69a4d95e..4cad7526a157 100644 --- a/src/openrct2/rct12/CSChar.h +++ b/src/openrct2/rct12/CSChar.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/CSStringConverter.cpp b/src/openrct2/rct12/CSStringConverter.cpp index 39b0644d1d28..8f967e4d8d34 100644 --- a/src/openrct2/rct12/CSStringConverter.cpp +++ b/src/openrct2/rct12/CSStringConverter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/CSStringConverter.h b/src/openrct2/rct12/CSStringConverter.h index f22ad32719f4..a9b007980a8d 100644 --- a/src/openrct2/rct12/CSStringConverter.h +++ b/src/openrct2/rct12/CSStringConverter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/EntryList.h b/src/openrct2/rct12/EntryList.h index d69b4aef7e90..e38357217aa4 100644 --- a/src/openrct2/rct12/EntryList.h +++ b/src/openrct2/rct12/EntryList.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/Limits.h b/src/openrct2/rct12/Limits.h index 2d5e8d6c00a9..bbb1eebcccf4 100644 --- a/src/openrct2/rct12/Limits.h +++ b/src/openrct2/rct12/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index db73507e3f23..fdc9f1845d93 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index 538738d37ea6..1fa0cb6a29ec 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/ScenarioPatcher.cpp b/src/openrct2/rct12/ScenarioPatcher.cpp index 3c8f25d3d3b5..5fece06eb135 100644 --- a/src/openrct2/rct12/ScenarioPatcher.cpp +++ b/src/openrct2/rct12/ScenarioPatcher.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/ScenarioPatcher.h b/src/openrct2/rct12/ScenarioPatcher.h index a3df7c39a53c..b613824e3e4b 100644 --- a/src/openrct2/rct12/ScenarioPatcher.h +++ b/src/openrct2/rct12/ScenarioPatcher.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/TD46.cpp b/src/openrct2/rct12/TD46.cpp index a8bb16d87ec7..40296098ca82 100644 --- a/src/openrct2/rct12/TD46.cpp +++ b/src/openrct2/rct12/TD46.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct12/TD46.h b/src/openrct2/rct12/TD46.h index 477ae6b70c9b..0fefb6ba6b22 100644 --- a/src/openrct2/rct12/TD46.h +++ b/src/openrct2/rct12/TD46.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/DATLimits.h b/src/openrct2/rct2/DATLimits.h index 06c9dda639c0..b892546dc481 100644 --- a/src/openrct2/rct2/DATLimits.h +++ b/src/openrct2/rct2/DATLimits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/Limits.h b/src/openrct2/rct2/Limits.h index 24497c06a1df..f49e32c33b9b 100644 --- a/src/openrct2/rct2/Limits.h +++ b/src/openrct2/rct2/Limits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/rct2/RCT2.cpp index e01bb4e82bef..ffe99d129d22 100644 --- a/src/openrct2/rct2/RCT2.cpp +++ b/src/openrct2/rct2/RCT2.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index c56d53ee5d51..d5e0e5bf7f1d 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 5bc197e1fe0f..8e1d5c340c84 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/SeaDecrypt.cpp b/src/openrct2/rct2/SeaDecrypt.cpp index 2fea66a60841..de63c5370c06 100644 --- a/src/openrct2/rct2/SeaDecrypt.cpp +++ b/src/openrct2/rct2/SeaDecrypt.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/rct2/T6Exporter.cpp index 0d321c3a9e7b..3b63eee8573f 100644 --- a/src/openrct2/rct2/T6Exporter.cpp +++ b/src/openrct2/rct2/T6Exporter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/T6Exporter.h b/src/openrct2/rct2/T6Exporter.h index b1af2315dacb..edc29697b47f 100644 --- a/src/openrct2/rct2/T6Exporter.h +++ b/src/openrct2/rct2/T6Exporter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index 299022875104..178ffb4c0dd3 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Angles.h b/src/openrct2/ride/Angles.h index 5b7b7e813c1c..e46d53cce93f 100644 --- a/src/openrct2/ride/Angles.h +++ b/src/openrct2/ride/Angles.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index 4c6ee665fbcc..b9b779cbf2d5 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CableLift.h b/src/openrct2/ride/CableLift.h index 1050b3406b60..798ad0265a12 100644 --- a/src/openrct2/ride/CableLift.h +++ b/src/openrct2/ride/CableLift.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CarEntry.cpp b/src/openrct2/ride/CarEntry.cpp index 33736379ffd5..99f84f611c84 100644 --- a/src/openrct2/ride/CarEntry.cpp +++ b/src/openrct2/ride/CarEntry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/CarEntry.h b/src/openrct2/ride/CarEntry.h index 1e65ca613f26..9e7c62179616 100644 --- a/src/openrct2/ride/CarEntry.h +++ b/src/openrct2/ride/CarEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/MazeCost.cpp b/src/openrct2/ride/MazeCost.cpp index 406cf3018b1b..7266bcd3473e 100644 --- a/src/openrct2/ride/MazeCost.cpp +++ b/src/openrct2/ride/MazeCost.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/MazeCost.h b/src/openrct2/ride/MazeCost.h index 9d0a6562da59..f8a0db1deb7b 100644 --- a/src/openrct2/ride/MazeCost.h +++ b/src/openrct2/ride/MazeCost.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 70393b3391d8..78a294d121dd 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 3570f05b10f7..29bb11ff6271 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideAudio.cpp b/src/openrct2/ride/RideAudio.cpp index b43e53e5283d..12f054a8de4c 100644 --- a/src/openrct2/ride/RideAudio.cpp +++ b/src/openrct2/ride/RideAudio.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideAudio.h b/src/openrct2/ride/RideAudio.h index 45d170fe150a..a4bf8d11639d 100644 --- a/src/openrct2/ride/RideAudio.h +++ b/src/openrct2/ride/RideAudio.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideColour.h b/src/openrct2/ride/RideColour.h index 5f0164d889b6..e4b2b9c47c15 100644 --- a/src/openrct2/ride/RideColour.h +++ b/src/openrct2/ride/RideColour.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 1cb93b6a8039..cc6e902ae62f 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideConstruction.h b/src/openrct2/ride/RideConstruction.h index 2fb54fc729b3..ba42cf52174f 100644 --- a/src/openrct2/ride/RideConstruction.h +++ b/src/openrct2/ride/RideConstruction.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideData.cpp b/src/openrct2/ride/RideData.cpp index 8be9c9abbb19..2bbd082993f5 100644 --- a/src/openrct2/ride/RideData.cpp +++ b/src/openrct2/ride/RideData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index 2f91fd0e1c91..1e28b33f0a3a 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideEntry.h b/src/openrct2/ride/RideEntry.h index f2ce9ddea0c2..980cafb76dc9 100644 --- a/src/openrct2/ride/RideEntry.h +++ b/src/openrct2/ride/RideEntry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideManager.cpp b/src/openrct2/ride/RideManager.cpp index 55ed3e0237ff..5105b571bf46 100644 --- a/src/openrct2/ride/RideManager.cpp +++ b/src/openrct2/ride/RideManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideManager.hpp b/src/openrct2/ride/RideManager.hpp index cd6b1756eb58..fd680c9d2c16 100644 --- a/src/openrct2/ride/RideManager.hpp +++ b/src/openrct2/ride/RideManager.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index c9009d23ed9a..b2b8918ed8de 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideRatings.h b/src/openrct2/ride/RideRatings.h index 51046cec9c79..c25e3b0676ea 100644 --- a/src/openrct2/ride/RideRatings.h +++ b/src/openrct2/ride/RideRatings.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideStringIds.h b/src/openrct2/ride/RideStringIds.h index 13bcb7f2ea49..8921b37d13ac 100644 --- a/src/openrct2/ride/RideStringIds.h +++ b/src/openrct2/ride/RideStringIds.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/RideTypes.h b/src/openrct2/ride/RideTypes.h index 241f3d81e75e..d279bb2bf370 100644 --- a/src/openrct2/ride/RideTypes.h +++ b/src/openrct2/ride/RideTypes.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/ShopItem.cpp b/src/openrct2/ride/ShopItem.cpp index e7d64ed010c3..53499ce110d7 100644 --- a/src/openrct2/ride/ShopItem.cpp +++ b/src/openrct2/ride/ShopItem.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/ShopItem.h b/src/openrct2/ride/ShopItem.h index 84b9581b4db4..d9744579a6e7 100644 --- a/src/openrct2/ride/ShopItem.h +++ b/src/openrct2/ride/ShopItem.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Station.cpp b/src/openrct2/ride/Station.cpp index 5b7016c42cb5..eec170949d3b 100644 --- a/src/openrct2/ride/Station.cpp +++ b/src/openrct2/ride/Station.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Station.h b/src/openrct2/ride/Station.h index 03beed4b68ee..a36b1d0d76b1 100644 --- a/src/openrct2/ride/Station.h +++ b/src/openrct2/ride/Station.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index e07f7aca4774..f99ac7984d9d 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index c2dd93676dc1..a16de6897e18 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index ffab13bc2603..7161b4481ae9 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 0727d3d7536c..1a678db4ed00 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index ded63ee05fa8..d45c13ffbdbc 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 61ad7b7c97c1..59567a0bd5e4 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesignRepository.cpp b/src/openrct2/ride/TrackDesignRepository.cpp index 379758cb778f..95d79f730ed0 100644 --- a/src/openrct2/ride/TrackDesignRepository.cpp +++ b/src/openrct2/ride/TrackDesignRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesignRepository.h b/src/openrct2/ride/TrackDesignRepository.h index b661bea5035f..2769f1ab5d4f 100644 --- a/src/openrct2/ride/TrackDesignRepository.h +++ b/src/openrct2/ride/TrackDesignRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index cebc468b8009..2c9c2ba962f1 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index 5d8c4131a0d7..9c35572f0b73 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackPaint.h b/src/openrct2/ride/TrackPaint.h index 2cfcf6bbfd9a..fd47663105e3 100644 --- a/src/openrct2/ride/TrackPaint.h +++ b/src/openrct2/ride/TrackPaint.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackStyle.cpp b/src/openrct2/ride/TrackStyle.cpp index 1d926da03fa2..c96641e77dbe 100644 --- a/src/openrct2/ride/TrackStyle.cpp +++ b/src/openrct2/ride/TrackStyle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrackStyle.h b/src/openrct2/ride/TrackStyle.h index 5d1495359e4f..06751d9ea052 100644 --- a/src/openrct2/ride/TrackStyle.h +++ b/src/openrct2/ride/TrackStyle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrainManager.cpp b/src/openrct2/ride/TrainManager.cpp index 4aad73ac8950..cc39b2b71146 100644 --- a/src/openrct2/ride/TrainManager.cpp +++ b/src/openrct2/ride/TrainManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/TrainManager.h b/src/openrct2/ride/TrainManager.h index 654820f56fc8..d6596c79b5d8 100644 --- a/src/openrct2/ride/TrainManager.h +++ b/src/openrct2/ride/TrainManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 682cfc403557..d9c556c0314f 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 9cad6626239a..48c21212d5fa 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleColour.h b/src/openrct2/ride/VehicleColour.h index 2d9dcace22e2..3da5f402ad69 100644 --- a/src/openrct2/ride/VehicleColour.h +++ b/src/openrct2/ride/VehicleColour.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleData.cpp b/src/openrct2/ride/VehicleData.cpp index 929e8226f73b..16e2e50850f0 100644 --- a/src/openrct2/ride/VehicleData.cpp +++ b/src/openrct2/ride/VehicleData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleData.h b/src/openrct2/ride/VehicleData.h index 859e4c039c08..33dd52927de5 100644 --- a/src/openrct2/ride/VehicleData.h +++ b/src/openrct2/ride/VehicleData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleGeometry.cpp b/src/openrct2/ride/VehicleGeometry.cpp index d834bb1e84ad..4eebc866e16c 100644 --- a/src/openrct2/ride/VehicleGeometry.cpp +++ b/src/openrct2/ride/VehicleGeometry.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleGeometry.h b/src/openrct2/ride/VehicleGeometry.h index 4d2e64958cbd..9ec6d311d066 100644 --- a/src/openrct2/ride/VehicleGeometry.h +++ b/src/openrct2/ride/VehicleGeometry.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleRiderControl.cpp b/src/openrct2/ride/VehicleRiderControl.cpp index e7aa9aee0306..43d8141114e1 100644 --- a/src/openrct2/ride/VehicleRiderControl.cpp +++ b/src/openrct2/ride/VehicleRiderControl.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleSubpositionData.cpp b/src/openrct2/ride/VehicleSubpositionData.cpp index c71bc2864bb8..a0e87bdd88c0 100644 --- a/src/openrct2/ride/VehicleSubpositionData.cpp +++ b/src/openrct2/ride/VehicleSubpositionData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/VehicleSubpositionData.h b/src/openrct2/ride/VehicleSubpositionData.h index e87ff24c9ddc..6e820283e371 100644 --- a/src/openrct2/ride/VehicleSubpositionData.h +++ b/src/openrct2/ride/VehicleSubpositionData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h b/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h index 94e3ee823a4d..d0f89858f89d 100644 --- a/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h +++ b/src/openrct2/ride/rtd/coaster/AirPoweredVerticalCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/AlpineCoaster.h b/src/openrct2/ride/rtd/coaster/AlpineCoaster.h index 97d506704828..6a02333e4250 100644 --- a/src/openrct2/ride/rtd/coaster/AlpineCoaster.h +++ b/src/openrct2/ride/rtd/coaster/AlpineCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h b/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h index ea10ef8e371c..f23979b53d55 100644 --- a/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h +++ b/src/openrct2/ride/rtd/coaster/BobsleighCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h index e7ce01f72f2b..e369e7743225 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicMiniRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h index a9704480fd9e..5f203d403871 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicStandUpRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h index ada5aaa0aebe..e0513e40f5e1 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h index 82d9db3e3e06..91e224c818ac 100644 --- a/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ClassicWoodenTwisterRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h b/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h index 5db6538ade7e..217eae60882c 100644 --- a/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h +++ b/src/openrct2/ride/rtd/coaster/CompactInvertedCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h b/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h index 5f82e978e464..30cdf7c7aea2 100644 --- a/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/CorkscrewRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h b/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h index 0b0cbf7cbf02..5e6af51f5805 100644 --- a/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/FlyingRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/GigaCoaster.h b/src/openrct2/ride/rtd/coaster/GigaCoaster.h index 2979f1511e65..682c0ac4da70 100644 --- a/src/openrct2/ride/rtd/coaster/GigaCoaster.h +++ b/src/openrct2/ride/rtd/coaster/GigaCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h b/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h index 98b91408b479..2deac214639b 100644 --- a/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h +++ b/src/openrct2/ride/rtd/coaster/HeartlineTwisterCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/HybridCoaster.h b/src/openrct2/ride/rtd/coaster/HybridCoaster.h index a0d7716e9986..252d7aa03627 100644 --- a/src/openrct2/ride/rtd/coaster/HybridCoaster.h +++ b/src/openrct2/ride/rtd/coaster/HybridCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/HyperTwister.h b/src/openrct2/ride/rtd/coaster/HyperTwister.h index ee3bfcdd1c62..dfa5077c8193 100644 --- a/src/openrct2/ride/rtd/coaster/HyperTwister.h +++ b/src/openrct2/ride/rtd/coaster/HyperTwister.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/Hypercoaster.h b/src/openrct2/ride/rtd/coaster/Hypercoaster.h index 3c2fd9b00b30..630e9fe30d3e 100644 --- a/src/openrct2/ride/rtd/coaster/Hypercoaster.h +++ b/src/openrct2/ride/rtd/coaster/Hypercoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h index efb832c6822f..f4e53e7dada5 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedHairpinCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h index 104c8b035f0b..24b49cea0b3a 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedImpulseCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h index 9748b0786acb..64eb9efa1bf9 100644 --- a/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/InvertedRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h b/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h index 6848a93b0d3a..e23588954da3 100644 --- a/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/JuniorRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h index b0231e783ee1..b0759f12302b 100644 --- a/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LIMLaunchedRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h index 3ffe932c08af..4b807d51af8a 100644 --- a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h index 35ad14edd5e2..dc717ddd493b 100644 --- a/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LayDownRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h index d0c86a9d7a3c..931cbec079c5 100644 --- a/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LoopingRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MineRide.h b/src/openrct2/ride/rtd/coaster/MineRide.h index 0d38cf3153e0..b9a7ec40207c 100644 --- a/src/openrct2/ride/rtd/coaster/MineRide.h +++ b/src/openrct2/ride/rtd/coaster/MineRide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h b/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h index 94662c8ca518..60fd727eb5d4 100644 --- a/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MineTrainCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h b/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h index 171a40ec5370..3cfbb55e7ba3 100644 --- a/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MiniRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h b/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h index 8feb069df1f1..4e34859ca596 100644 --- a/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MiniSuspendedCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h b/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h index 93239d1493b4..69aaf16904fe 100644 --- a/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/MultiDimensionRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h b/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h index 3a1df06beb45..347f7985a780 100644 --- a/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ReverseFreefallCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h b/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h index c5bfecf56a95..cedf9b1fb043 100644 --- a/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/ReverserRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h index 08f61f0b5131..eb57d5269d55 100644 --- a/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SideFrictionRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h index 91b38c937c87..99435f5b2dd5 100644 --- a/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SingleRailRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h b/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h index 977212ca0c53..2e4d2c157089 100644 --- a/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/SpinningWildMouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h b/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h index 8183018bbad4..f0f5acbe02a4 100644 --- a/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SpiralRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h index 26d56a5bbbe2..e25581f7f4c4 100644 --- a/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/StandUpRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SteelWildMouse.h b/src/openrct2/ride/rtd/coaster/SteelWildMouse.h index 039434790158..d38c63c3aedc 100644 --- a/src/openrct2/ride/rtd/coaster/SteelWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/SteelWildMouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/Steeplechase.h b/src/openrct2/ride/rtd/coaster/Steeplechase.h index 7e626b6c70c4..1440a7e9b119 100644 --- a/src/openrct2/ride/rtd/coaster/Steeplechase.h +++ b/src/openrct2/ride/rtd/coaster/Steeplechase.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h b/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h index 53e3219a5dc9..45ef9544c3ad 100644 --- a/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h +++ b/src/openrct2/ride/rtd/coaster/SuspendedSwingingCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h b/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h index 9bc1308ed4ad..765f8afe4a8c 100644 --- a/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/TwisterRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h b/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h index 617e05a91772..ff701e412012 100644 --- a/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h +++ b/src/openrct2/ride/rtd/coaster/VerticalDropCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/VirginiaReel.h b/src/openrct2/ride/rtd/coaster/VirginiaReel.h index b75bc4c7d15d..0ac2a9710881 100644 --- a/src/openrct2/ride/rtd/coaster/VirginiaReel.h +++ b/src/openrct2/ride/rtd/coaster/VirginiaReel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/WaterCoaster.h b/src/openrct2/ride/rtd/coaster/WaterCoaster.h index 20227abbe8c2..5f5d8b61d0de 100644 --- a/src/openrct2/ride/rtd/coaster/WaterCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WaterCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h index 37c2e6b4b4ad..ec5dc4dcaea0 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/WoodenRollerCoaster.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h b/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h index 8701007ebe9b..b7bdede3c68c 100644 --- a/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h +++ b/src/openrct2/ride/rtd/coaster/WoodenWildMouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/CarRide.h b/src/openrct2/ride/rtd/gentle/CarRide.h index 54572dfaa551..36cab8cd1c8d 100644 --- a/src/openrct2/ride/rtd/gentle/CarRide.h +++ b/src/openrct2/ride/rtd/gentle/CarRide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/Circus.h b/src/openrct2/ride/rtd/gentle/Circus.h index 8da007045503..bf30065a5318 100644 --- a/src/openrct2/ride/rtd/gentle/Circus.h +++ b/src/openrct2/ride/rtd/gentle/Circus.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/CrookedHouse.h b/src/openrct2/ride/rtd/gentle/CrookedHouse.h index be6621394711..76077bf18709 100644 --- a/src/openrct2/ride/rtd/gentle/CrookedHouse.h +++ b/src/openrct2/ride/rtd/gentle/CrookedHouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/Dodgems.h b/src/openrct2/ride/rtd/gentle/Dodgems.h index 8e1ce7691780..c49655d5cb0b 100644 --- a/src/openrct2/ride/rtd/gentle/Dodgems.h +++ b/src/openrct2/ride/rtd/gentle/Dodgems.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/FerrisWheel.h b/src/openrct2/ride/rtd/gentle/FerrisWheel.h index 170e3a260773..8f8cd318a35e 100644 --- a/src/openrct2/ride/rtd/gentle/FerrisWheel.h +++ b/src/openrct2/ride/rtd/gentle/FerrisWheel.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/FlyingSaucers.h b/src/openrct2/ride/rtd/gentle/FlyingSaucers.h index b7eac2f4fca5..69a702136d40 100644 --- a/src/openrct2/ride/rtd/gentle/FlyingSaucers.h +++ b/src/openrct2/ride/rtd/gentle/FlyingSaucers.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/GhostTrain.h b/src/openrct2/ride/rtd/gentle/GhostTrain.h index 245c6fa25b7f..37be525b4cda 100644 --- a/src/openrct2/ride/rtd/gentle/GhostTrain.h +++ b/src/openrct2/ride/rtd/gentle/GhostTrain.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/HauntedHouse.h b/src/openrct2/ride/rtd/gentle/HauntedHouse.h index 4bcfd7cc2ff7..e0d129412b86 100644 --- a/src/openrct2/ride/rtd/gentle/HauntedHouse.h +++ b/src/openrct2/ride/rtd/gentle/HauntedHouse.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/Maze.h b/src/openrct2/ride/rtd/gentle/Maze.h index be4beddff9ab..2915aee85d94 100644 --- a/src/openrct2/ride/rtd/gentle/Maze.h +++ b/src/openrct2/ride/rtd/gentle/Maze.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MerryGoRound.h b/src/openrct2/ride/rtd/gentle/MerryGoRound.h index fee4262319d0..4a06bfe36e01 100644 --- a/src/openrct2/ride/rtd/gentle/MerryGoRound.h +++ b/src/openrct2/ride/rtd/gentle/MerryGoRound.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MiniGolf.h b/src/openrct2/ride/rtd/gentle/MiniGolf.h index db2a18e14386..956ca12c1e6a 100644 --- a/src/openrct2/ride/rtd/gentle/MiniGolf.h +++ b/src/openrct2/ride/rtd/gentle/MiniGolf.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MiniHelicopters.h b/src/openrct2/ride/rtd/gentle/MiniHelicopters.h index c8d5a6f04187..368964597578 100644 --- a/src/openrct2/ride/rtd/gentle/MiniHelicopters.h +++ b/src/openrct2/ride/rtd/gentle/MiniHelicopters.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MonorailCycles.h b/src/openrct2/ride/rtd/gentle/MonorailCycles.h index b2f5fd0b4bb8..e7c2cc3cea78 100644 --- a/src/openrct2/ride/rtd/gentle/MonorailCycles.h +++ b/src/openrct2/ride/rtd/gentle/MonorailCycles.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/MonsterTrucks.h b/src/openrct2/ride/rtd/gentle/MonsterTrucks.h index a1ac95b240ed..c9e20a3ac208 100644 --- a/src/openrct2/ride/rtd/gentle/MonsterTrucks.h +++ b/src/openrct2/ride/rtd/gentle/MonsterTrucks.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/ObservationTower.h b/src/openrct2/ride/rtd/gentle/ObservationTower.h index b15a4c9f3ba8..dc9e2cca98ff 100644 --- a/src/openrct2/ride/rtd/gentle/ObservationTower.h +++ b/src/openrct2/ride/rtd/gentle/ObservationTower.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/SpaceRings.h b/src/openrct2/ride/rtd/gentle/SpaceRings.h index a55c18c99fcb..379e94a4e1d9 100644 --- a/src/openrct2/ride/rtd/gentle/SpaceRings.h +++ b/src/openrct2/ride/rtd/gentle/SpaceRings.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/gentle/SpiralSlide.h b/src/openrct2/ride/rtd/gentle/SpiralSlide.h index 43681f3aee56..d104bc023408 100644 --- a/src/openrct2/ride/rtd/gentle/SpiralSlide.h +++ b/src/openrct2/ride/rtd/gentle/SpiralSlide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/CashMachine.h b/src/openrct2/ride/rtd/shops/CashMachine.h index 1716535dd4fc..2443b003fc27 100644 --- a/src/openrct2/ride/rtd/shops/CashMachine.h +++ b/src/openrct2/ride/rtd/shops/CashMachine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/DrinkStall.h b/src/openrct2/ride/rtd/shops/DrinkStall.h index e1553be812cc..7d88ed5c4313 100644 --- a/src/openrct2/ride/rtd/shops/DrinkStall.h +++ b/src/openrct2/ride/rtd/shops/DrinkStall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/FirstAid.h b/src/openrct2/ride/rtd/shops/FirstAid.h index 96864e0ccda5..4874d821d7d5 100644 --- a/src/openrct2/ride/rtd/shops/FirstAid.h +++ b/src/openrct2/ride/rtd/shops/FirstAid.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/FoodStall.h b/src/openrct2/ride/rtd/shops/FoodStall.h index 09a4cb8bc298..a3a7ece43d5a 100644 --- a/src/openrct2/ride/rtd/shops/FoodStall.h +++ b/src/openrct2/ride/rtd/shops/FoodStall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/InformationKiosk.h b/src/openrct2/ride/rtd/shops/InformationKiosk.h index a6c3d89050ef..0f42a4308659 100644 --- a/src/openrct2/ride/rtd/shops/InformationKiosk.h +++ b/src/openrct2/ride/rtd/shops/InformationKiosk.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/Shop.h b/src/openrct2/ride/rtd/shops/Shop.h index 2cd68409f7a6..50adb96b6c69 100644 --- a/src/openrct2/ride/rtd/shops/Shop.h +++ b/src/openrct2/ride/rtd/shops/Shop.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/shops/Toilets.h b/src/openrct2/ride/rtd/shops/Toilets.h index 93f00b4c1d8b..8b36153d142e 100644 --- a/src/openrct2/ride/rtd/shops/Toilets.h +++ b/src/openrct2/ride/rtd/shops/Toilets.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/3DCinema.h b/src/openrct2/ride/rtd/thrill/3DCinema.h index ac0664ce8ffb..e17835a535c3 100644 --- a/src/openrct2/ride/rtd/thrill/3DCinema.h +++ b/src/openrct2/ride/rtd/thrill/3DCinema.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/Enterprise.h b/src/openrct2/ride/rtd/thrill/Enterprise.h index 6ee517e3c5ad..b7cd66f2142b 100644 --- a/src/openrct2/ride/rtd/thrill/Enterprise.h +++ b/src/openrct2/ride/rtd/thrill/Enterprise.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/GoKarts.h b/src/openrct2/ride/rtd/thrill/GoKarts.h index 2bcf23da8e30..9de2b7192309 100644 --- a/src/openrct2/ride/rtd/thrill/GoKarts.h +++ b/src/openrct2/ride/rtd/thrill/GoKarts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h b/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h index f97a8ab16eb1..8f641f42b04c 100644 --- a/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h +++ b/src/openrct2/ride/rtd/thrill/LaunchedFreefall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/MagicCarpet.h b/src/openrct2/ride/rtd/thrill/MagicCarpet.h index 41628ebfe562..6062cd149a76 100644 --- a/src/openrct2/ride/rtd/thrill/MagicCarpet.h +++ b/src/openrct2/ride/rtd/thrill/MagicCarpet.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/MotionSimulator.h b/src/openrct2/ride/rtd/thrill/MotionSimulator.h index ff180ceda6f0..306fc74cc57a 100644 --- a/src/openrct2/ride/rtd/thrill/MotionSimulator.h +++ b/src/openrct2/ride/rtd/thrill/MotionSimulator.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/RotoDrop.h b/src/openrct2/ride/rtd/thrill/RotoDrop.h index 926234eb849e..fde33fda502f 100644 --- a/src/openrct2/ride/rtd/thrill/RotoDrop.h +++ b/src/openrct2/ride/rtd/thrill/RotoDrop.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h b/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h index d7aa63896414..a0cc258ae314 100644 --- a/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h +++ b/src/openrct2/ride/rtd/thrill/SwingingInverterShip.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/SwingingShip.h b/src/openrct2/ride/rtd/thrill/SwingingShip.h index 649924cb7b9e..5e637c5c4e98 100644 --- a/src/openrct2/ride/rtd/thrill/SwingingShip.h +++ b/src/openrct2/ride/rtd/thrill/SwingingShip.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/TopSpin.h b/src/openrct2/ride/rtd/thrill/TopSpin.h index 48fc899f2d58..7ff6b3f50a80 100644 --- a/src/openrct2/ride/rtd/thrill/TopSpin.h +++ b/src/openrct2/ride/rtd/thrill/TopSpin.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/thrill/Twist.h b/src/openrct2/ride/rtd/thrill/Twist.h index d9ccb8455880..b99ca416750e 100644 --- a/src/openrct2/ride/rtd/thrill/Twist.h +++ b/src/openrct2/ride/rtd/thrill/Twist.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/Chairlift.h b/src/openrct2/ride/rtd/transport/Chairlift.h index 9f17363ef38a..f4d0b2185346 100644 --- a/src/openrct2/ride/rtd/transport/Chairlift.h +++ b/src/openrct2/ride/rtd/transport/Chairlift.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/Lift.h b/src/openrct2/ride/rtd/transport/Lift.h index c45437d2f302..15cf642c7806 100644 --- a/src/openrct2/ride/rtd/transport/Lift.h +++ b/src/openrct2/ride/rtd/transport/Lift.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/MiniatureRailway.h b/src/openrct2/ride/rtd/transport/MiniatureRailway.h index a0815449e08c..d67ddbea50d0 100644 --- a/src/openrct2/ride/rtd/transport/MiniatureRailway.h +++ b/src/openrct2/ride/rtd/transport/MiniatureRailway.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/Monorail.h b/src/openrct2/ride/rtd/transport/Monorail.h index 140ef4de932f..8e763811cec3 100644 --- a/src/openrct2/ride/rtd/transport/Monorail.h +++ b/src/openrct2/ride/rtd/transport/Monorail.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/transport/SuspendedMonorail.h b/src/openrct2/ride/rtd/transport/SuspendedMonorail.h index 5aee285603a8..7ebc8c0bb17c 100644 --- a/src/openrct2/ride/rtd/transport/SuspendedMonorail.h +++ b/src/openrct2/ride/rtd/transport/SuspendedMonorail.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/BoatHire.h b/src/openrct2/ride/rtd/water/BoatHire.h index 06815749fe08..43656ce763d7 100644 --- a/src/openrct2/ride/rtd/water/BoatHire.h +++ b/src/openrct2/ride/rtd/water/BoatHire.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/DinghySlide.h b/src/openrct2/ride/rtd/water/DinghySlide.h index aed7d861589f..fd902e3acf9d 100644 --- a/src/openrct2/ride/rtd/water/DinghySlide.h +++ b/src/openrct2/ride/rtd/water/DinghySlide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/LogFlume.h b/src/openrct2/ride/rtd/water/LogFlume.h index 4ea6dc87d9ad..02b8dd28ba7f 100644 --- a/src/openrct2/ride/rtd/water/LogFlume.h +++ b/src/openrct2/ride/rtd/water/LogFlume.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/RiverRafts.h b/src/openrct2/ride/rtd/water/RiverRafts.h index fe08b506a7c1..ca0689b00da2 100644 --- a/src/openrct2/ride/rtd/water/RiverRafts.h +++ b/src/openrct2/ride/rtd/water/RiverRafts.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/RiverRapids.h b/src/openrct2/ride/rtd/water/RiverRapids.h index 953585855aa2..b7424ae71b1b 100644 --- a/src/openrct2/ride/rtd/water/RiverRapids.h +++ b/src/openrct2/ride/rtd/water/RiverRapids.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/SplashBoats.h b/src/openrct2/ride/rtd/water/SplashBoats.h index 2494ce90bfea..b8c9cff03731 100644 --- a/src/openrct2/ride/rtd/water/SplashBoats.h +++ b/src/openrct2/ride/rtd/water/SplashBoats.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ride/rtd/water/SubmarineRide.h b/src/openrct2/ride/rtd/water/SubmarineRide.h index 809052649fe2..3aa57ca886ad 100644 --- a/src/openrct2/ride/rtd/water/SubmarineRide.h +++ b/src/openrct2/ride/rtd/water/SubmarineRide.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerChunk.cpp b/src/openrct2/sawyer_coding/SawyerChunk.cpp index c0a04dd764ab..b31ba6acfb9d 100644 --- a/src/openrct2/sawyer_coding/SawyerChunk.cpp +++ b/src/openrct2/sawyer_coding/SawyerChunk.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerChunk.h b/src/openrct2/sawyer_coding/SawyerChunk.h index f5a8e124d206..46aa6c6981a1 100644 --- a/src/openrct2/sawyer_coding/SawyerChunk.h +++ b/src/openrct2/sawyer_coding/SawyerChunk.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerChunkReader.cpp b/src/openrct2/sawyer_coding/SawyerChunkReader.cpp index 12c53bfa4a8e..ae7ca2ed59c6 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkReader.cpp +++ b/src/openrct2/sawyer_coding/SawyerChunkReader.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerChunkReader.h b/src/openrct2/sawyer_coding/SawyerChunkReader.h index ed20fe151ac9..c44fb5ac0b2c 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkReader.h +++ b/src/openrct2/sawyer_coding/SawyerChunkReader.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp b/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp index f777438c9694..b4ffeca2a2cb 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp +++ b/src/openrct2/sawyer_coding/SawyerChunkWriter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerChunkWriter.h b/src/openrct2/sawyer_coding/SawyerChunkWriter.h index 3b87b3d39fa9..655257105894 100644 --- a/src/openrct2/sawyer_coding/SawyerChunkWriter.h +++ b/src/openrct2/sawyer_coding/SawyerChunkWriter.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerCoding.cpp b/src/openrct2/sawyer_coding/SawyerCoding.cpp index 0da40d045d8a..3431bd20ea45 100644 --- a/src/openrct2/sawyer_coding/SawyerCoding.cpp +++ b/src/openrct2/sawyer_coding/SawyerCoding.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/sawyer_coding/SawyerCoding.h b/src/openrct2/sawyer_coding/SawyerCoding.h index 90b4a02e7100..1f7d53fc120a 100644 --- a/src/openrct2/sawyer_coding/SawyerCoding.h +++ b/src/openrct2/sawyer_coding/SawyerCoding.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index c56916809a07..69355c4a234a 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/Scenario.h b/src/openrct2/scenario/Scenario.h index 5a9effa15e27..1225b4ac552a 100644 --- a/src/openrct2/scenario/Scenario.h +++ b/src/openrct2/scenario/Scenario.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioCategory.cpp b/src/openrct2/scenario/ScenarioCategory.cpp index 0404202b6dd1..336f555774f7 100644 --- a/src/openrct2/scenario/ScenarioCategory.cpp +++ b/src/openrct2/scenario/ScenarioCategory.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioCategory.h b/src/openrct2/scenario/ScenarioCategory.h index de02649e5e4d..3ee1c2845701 100644 --- a/src/openrct2/scenario/ScenarioCategory.h +++ b/src/openrct2/scenario/ScenarioCategory.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioObjective.cpp b/src/openrct2/scenario/ScenarioObjective.cpp index a624ed36ad6d..856d6e4da1d2 100644 --- a/src/openrct2/scenario/ScenarioObjective.cpp +++ b/src/openrct2/scenario/ScenarioObjective.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioObjective.h b/src/openrct2/scenario/ScenarioObjective.h index 88685a677e96..bb606a3c7290 100644 --- a/src/openrct2/scenario/ScenarioObjective.h +++ b/src/openrct2/scenario/ScenarioObjective.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioOptions.h b/src/openrct2/scenario/ScenarioOptions.h index df448327d911..669effbae031 100644 --- a/src/openrct2/scenario/ScenarioOptions.h +++ b/src/openrct2/scenario/ScenarioOptions.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp index 52719352f2f4..5d6ca298c187 100644 --- a/src/openrct2/scenario/ScenarioRepository.cpp +++ b/src/openrct2/scenario/ScenarioRepository.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioRepository.h b/src/openrct2/scenario/ScenarioRepository.h index 6b9d9ff6c942..b051675dbaf9 100644 --- a/src/openrct2/scenario/ScenarioRepository.h +++ b/src/openrct2/scenario/ScenarioRepository.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioSources.cpp b/src/openrct2/scenario/ScenarioSources.cpp index 9a43c8c60049..16ff1dcf0204 100644 --- a/src/openrct2/scenario/ScenarioSources.cpp +++ b/src/openrct2/scenario/ScenarioSources.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenario/ScenarioSources.h b/src/openrct2/scenario/ScenarioSources.h index 6e64a2f8c84a..bd029272efe3 100644 --- a/src/openrct2/scenario/ScenarioSources.h +++ b/src/openrct2/scenario/ScenarioSources.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/Scene.cpp b/src/openrct2/scenes/Scene.cpp index 62f64623576f..e890bd6a7128 100644 --- a/src/openrct2/scenes/Scene.cpp +++ b/src/openrct2/scenes/Scene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/Scene.h b/src/openrct2/scenes/Scene.h index 86984b47d90e..cae75e109dc9 100644 --- a/src/openrct2/scenes/Scene.h +++ b/src/openrct2/scenes/Scene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/intro/IntroScene.cpp b/src/openrct2/scenes/intro/IntroScene.cpp index 852ccd81513f..46755c1f22e9 100644 --- a/src/openrct2/scenes/intro/IntroScene.cpp +++ b/src/openrct2/scenes/intro/IntroScene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/intro/IntroScene.h b/src/openrct2/scenes/intro/IntroScene.h index fc8d72a3ba99..579a0cfa9f1d 100644 --- a/src/openrct2/scenes/intro/IntroScene.h +++ b/src/openrct2/scenes/intro/IntroScene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/preloader/PreloaderScene.cpp b/src/openrct2/scenes/preloader/PreloaderScene.cpp index 5203d1728a65..9ad1315bddd8 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.cpp +++ b/src/openrct2/scenes/preloader/PreloaderScene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/preloader/PreloaderScene.h b/src/openrct2/scenes/preloader/PreloaderScene.h index 0da7774f6550..38a502ec9732 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.h +++ b/src/openrct2/scenes/preloader/PreloaderScene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/End.cpp b/src/openrct2/scenes/title/Command/End.cpp index fe0a04bcb968..bc4a33a8f234 100644 --- a/src/openrct2/scenes/title/Command/End.cpp +++ b/src/openrct2/scenes/title/Command/End.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/End.h b/src/openrct2/scenes/title/Command/End.h index 9c8361faa8c6..f6d42888dd6b 100644 --- a/src/openrct2/scenes/title/Command/End.h +++ b/src/openrct2/scenes/title/Command/End.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/FollowEntity.cpp b/src/openrct2/scenes/title/Command/FollowEntity.cpp index 88e6132d1b68..c984cbde77b0 100644 --- a/src/openrct2/scenes/title/Command/FollowEntity.cpp +++ b/src/openrct2/scenes/title/Command/FollowEntity.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/FollowEntity.h b/src/openrct2/scenes/title/Command/FollowEntity.h index 221bf082f7df..8f2167669227 100644 --- a/src/openrct2/scenes/title/Command/FollowEntity.h +++ b/src/openrct2/scenes/title/Command/FollowEntity.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadPark.cpp b/src/openrct2/scenes/title/Command/LoadPark.cpp index e9ae65f2da30..7077c91e9013 100644 --- a/src/openrct2/scenes/title/Command/LoadPark.cpp +++ b/src/openrct2/scenes/title/Command/LoadPark.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadPark.h b/src/openrct2/scenes/title/Command/LoadPark.h index 94b5a5810358..421197613953 100644 --- a/src/openrct2/scenes/title/Command/LoadPark.h +++ b/src/openrct2/scenes/title/Command/LoadPark.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadScenario.cpp b/src/openrct2/scenes/title/Command/LoadScenario.cpp index c58f0d4cbab9..1893c198c7a2 100644 --- a/src/openrct2/scenes/title/Command/LoadScenario.cpp +++ b/src/openrct2/scenes/title/Command/LoadScenario.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/LoadScenario.h b/src/openrct2/scenes/title/Command/LoadScenario.h index 3a9cb17bac25..8140ae056d11 100644 --- a/src/openrct2/scenes/title/Command/LoadScenario.h +++ b/src/openrct2/scenes/title/Command/LoadScenario.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Restart.cpp b/src/openrct2/scenes/title/Command/Restart.cpp index bb728894b166..951c589c8598 100644 --- a/src/openrct2/scenes/title/Command/Restart.cpp +++ b/src/openrct2/scenes/title/Command/Restart.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Restart.h b/src/openrct2/scenes/title/Command/Restart.h index e13731e8c0c1..3f5f9d29c2c6 100644 --- a/src/openrct2/scenes/title/Command/Restart.h +++ b/src/openrct2/scenes/title/Command/Restart.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/RotateView.cpp b/src/openrct2/scenes/title/Command/RotateView.cpp index d4699cad5798..5411bd673a5f 100644 --- a/src/openrct2/scenes/title/Command/RotateView.cpp +++ b/src/openrct2/scenes/title/Command/RotateView.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/RotateView.h b/src/openrct2/scenes/title/Command/RotateView.h index bbf9fda0afd4..fd71d044c820 100644 --- a/src/openrct2/scenes/title/Command/RotateView.h +++ b/src/openrct2/scenes/title/Command/RotateView.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetLocation.cpp b/src/openrct2/scenes/title/Command/SetLocation.cpp index ebf4bea7d3eb..3f9e1481540c 100644 --- a/src/openrct2/scenes/title/Command/SetLocation.cpp +++ b/src/openrct2/scenes/title/Command/SetLocation.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetLocation.h b/src/openrct2/scenes/title/Command/SetLocation.h index 5937f98f38b0..4bd6122566da 100644 --- a/src/openrct2/scenes/title/Command/SetLocation.h +++ b/src/openrct2/scenes/title/Command/SetLocation.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetSpeed.cpp b/src/openrct2/scenes/title/Command/SetSpeed.cpp index 350d4eb4bbbf..00657bfddc9e 100644 --- a/src/openrct2/scenes/title/Command/SetSpeed.cpp +++ b/src/openrct2/scenes/title/Command/SetSpeed.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetSpeed.h b/src/openrct2/scenes/title/Command/SetSpeed.h index 01dfb1e4c9d0..66bc6c73aa12 100644 --- a/src/openrct2/scenes/title/Command/SetSpeed.h +++ b/src/openrct2/scenes/title/Command/SetSpeed.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetZoom.cpp b/src/openrct2/scenes/title/Command/SetZoom.cpp index 6436d7c5dc59..a568eee29036 100644 --- a/src/openrct2/scenes/title/Command/SetZoom.cpp +++ b/src/openrct2/scenes/title/Command/SetZoom.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/SetZoom.h b/src/openrct2/scenes/title/Command/SetZoom.h index 369aa8214fe1..aed5a32eb01d 100644 --- a/src/openrct2/scenes/title/Command/SetZoom.h +++ b/src/openrct2/scenes/title/Command/SetZoom.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Wait.cpp b/src/openrct2/scenes/title/Command/Wait.cpp index b754bb1072af..dcbeaa92159e 100644 --- a/src/openrct2/scenes/title/Command/Wait.cpp +++ b/src/openrct2/scenes/title/Command/Wait.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/Command/Wait.h b/src/openrct2/scenes/title/Command/Wait.h index 50b8677f4b73..2671532fca1a 100644 --- a/src/openrct2/scenes/title/Command/Wait.h +++ b/src/openrct2/scenes/title/Command/Wait.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleScene.cpp b/src/openrct2/scenes/title/TitleScene.cpp index 7eceffa1587c..ebcb6605723f 100644 --- a/src/openrct2/scenes/title/TitleScene.cpp +++ b/src/openrct2/scenes/title/TitleScene.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleScene.h b/src/openrct2/scenes/title/TitleScene.h index 24114d21d83b..03be7cf5d3cc 100644 --- a/src/openrct2/scenes/title/TitleScene.h +++ b/src/openrct2/scenes/title/TitleScene.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequence.cpp b/src/openrct2/scenes/title/TitleSequence.cpp index f32a72aab96d..8a6277d97473 100644 --- a/src/openrct2/scenes/title/TitleSequence.cpp +++ b/src/openrct2/scenes/title/TitleSequence.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequence.h b/src/openrct2/scenes/title/TitleSequence.h index b712907414c0..c07a2d10307d 100644 --- a/src/openrct2/scenes/title/TitleSequence.h +++ b/src/openrct2/scenes/title/TitleSequence.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequenceManager.cpp b/src/openrct2/scenes/title/TitleSequenceManager.cpp index 5f29808365e3..a7e68de10575 100644 --- a/src/openrct2/scenes/title/TitleSequenceManager.cpp +++ b/src/openrct2/scenes/title/TitleSequenceManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequenceManager.h b/src/openrct2/scenes/title/TitleSequenceManager.h index 58c1bfdb2ef3..ae81b86aef7b 100644 --- a/src/openrct2/scenes/title/TitleSequenceManager.h +++ b/src/openrct2/scenes/title/TitleSequenceManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scenes/title/TitleSequencePlayer.h b/src/openrct2/scenes/title/TitleSequencePlayer.h index 1d2a4f64bef3..a0d9d1d5aad9 100644 --- a/src/openrct2/scenes/title/TitleSequencePlayer.h +++ b/src/openrct2/scenes/title/TitleSequencePlayer.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/Duktape.hpp b/src/openrct2/scripting/Duktape.hpp index 3dadf3eeba7e..dccff7780063 100644 --- a/src/openrct2/scripting/Duktape.hpp +++ b/src/openrct2/scripting/Duktape.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/HookEngine.cpp b/src/openrct2/scripting/HookEngine.cpp index 0a3ad83c1307..16599f9fa233 100644 --- a/src/openrct2/scripting/HookEngine.cpp +++ b/src/openrct2/scripting/HookEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/HookEngine.h b/src/openrct2/scripting/HookEngine.h index 8d4e4b1525a9..072abb139436 100644 --- a/src/openrct2/scripting/HookEngine.h +++ b/src/openrct2/scripting/HookEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/IconNames.hpp b/src/openrct2/scripting/IconNames.hpp index 84bdd331958b..0e59e2382267 100644 --- a/src/openrct2/scripting/IconNames.hpp +++ b/src/openrct2/scripting/IconNames.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/Plugin.cpp b/src/openrct2/scripting/Plugin.cpp index 4c487364a322..21a8a1a803c1 100644 --- a/src/openrct2/scripting/Plugin.cpp +++ b/src/openrct2/scripting/Plugin.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/Plugin.h b/src/openrct2/scripting/Plugin.h index db89340f8013..326f0442b1ad 100644 --- a/src/openrct2/scripting/Plugin.h +++ b/src/openrct2/scripting/Plugin.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index 35d50e380fe2..44598a778f00 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/ScriptEngine.h b/src/openrct2/scripting/ScriptEngine.h index cd54c054e555..c2d86fafc936 100644 --- a/src/openrct2/scripting/ScriptEngine.h +++ b/src/openrct2/scripting/ScriptEngine.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScBalloon.cpp b/src/openrct2/scripting/bindings/entity/ScBalloon.cpp index bfb17a94c67a..e1e9de8e78d3 100644 --- a/src/openrct2/scripting/bindings/entity/ScBalloon.cpp +++ b/src/openrct2/scripting/bindings/entity/ScBalloon.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScBalloon.hpp b/src/openrct2/scripting/bindings/entity/ScBalloon.hpp index d6e962b92ef7..346237e8f375 100644 --- a/src/openrct2/scripting/bindings/entity/ScBalloon.hpp +++ b/src/openrct2/scripting/bindings/entity/ScBalloon.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScEntity.hpp b/src/openrct2/scripting/bindings/entity/ScEntity.hpp index 3efdeacca2c2..aed36134d5e3 100644 --- a/src/openrct2/scripting/bindings/entity/ScEntity.hpp +++ b/src/openrct2/scripting/bindings/entity/ScEntity.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScGuest.cpp b/src/openrct2/scripting/bindings/entity/ScGuest.cpp index 8c921f98c338..36d0f2702aa9 100644 --- a/src/openrct2/scripting/bindings/entity/ScGuest.cpp +++ b/src/openrct2/scripting/bindings/entity/ScGuest.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScGuest.hpp b/src/openrct2/scripting/bindings/entity/ScGuest.hpp index 1bcb1ff1306f..03a7ff052535 100644 --- a/src/openrct2/scripting/bindings/entity/ScGuest.hpp +++ b/src/openrct2/scripting/bindings/entity/ScGuest.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScLitter.cpp b/src/openrct2/scripting/bindings/entity/ScLitter.cpp index ad012b8cf928..37e9a93340dc 100644 --- a/src/openrct2/scripting/bindings/entity/ScLitter.cpp +++ b/src/openrct2/scripting/bindings/entity/ScLitter.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScLitter.hpp b/src/openrct2/scripting/bindings/entity/ScLitter.hpp index 2e5a4d5dd05b..70c3dd39efd3 100644 --- a/src/openrct2/scripting/bindings/entity/ScLitter.hpp +++ b/src/openrct2/scripting/bindings/entity/ScLitter.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScMoneyEffect.cpp b/src/openrct2/scripting/bindings/entity/ScMoneyEffect.cpp index 0def2f9b9c0e..7b8c02d7a6d9 100644 --- a/src/openrct2/scripting/bindings/entity/ScMoneyEffect.cpp +++ b/src/openrct2/scripting/bindings/entity/ScMoneyEffect.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScMoneyEffect.hpp b/src/openrct2/scripting/bindings/entity/ScMoneyEffect.hpp index 295d8327eab8..8935b7322792 100644 --- a/src/openrct2/scripting/bindings/entity/ScMoneyEffect.hpp +++ b/src/openrct2/scripting/bindings/entity/ScMoneyEffect.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScParticle.cpp b/src/openrct2/scripting/bindings/entity/ScParticle.cpp index c876122cff5b..fe7374664cd4 100644 --- a/src/openrct2/scripting/bindings/entity/ScParticle.cpp +++ b/src/openrct2/scripting/bindings/entity/ScParticle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScParticle.hpp b/src/openrct2/scripting/bindings/entity/ScParticle.hpp index 3fd08873cb5e..b1991c1da7c4 100644 --- a/src/openrct2/scripting/bindings/entity/ScParticle.hpp +++ b/src/openrct2/scripting/bindings/entity/ScParticle.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScPeep.hpp b/src/openrct2/scripting/bindings/entity/ScPeep.hpp index 2d098c978beb..e3262ef630df 100644 --- a/src/openrct2/scripting/bindings/entity/ScPeep.hpp +++ b/src/openrct2/scripting/bindings/entity/ScPeep.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.cpp b/src/openrct2/scripting/bindings/entity/ScStaff.cpp index 11eed011ff2a..c580b9de8a6d 100644 --- a/src/openrct2/scripting/bindings/entity/ScStaff.cpp +++ b/src/openrct2/scripting/bindings/entity/ScStaff.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.hpp b/src/openrct2/scripting/bindings/entity/ScStaff.hpp index e34e8bfe6360..5c86c1b570ab 100644 --- a/src/openrct2/scripting/bindings/entity/ScStaff.hpp +++ b/src/openrct2/scripting/bindings/entity/ScStaff.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp index 521a2a2267bb..1af3af1b2302 100644 --- a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.hpp b/src/openrct2/scripting/bindings/entity/ScVehicle.hpp index 97fce3d007a3..f2fca357d7c8 100644 --- a/src/openrct2/scripting/bindings/entity/ScVehicle.hpp +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScCheats.hpp b/src/openrct2/scripting/bindings/game/ScCheats.hpp index f03902f0e463..fce32288c14c 100644 --- a/src/openrct2/scripting/bindings/game/ScCheats.hpp +++ b/src/openrct2/scripting/bindings/game/ScCheats.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScConfiguration.hpp b/src/openrct2/scripting/bindings/game/ScConfiguration.hpp index 40b163333b36..544ddc9e5e7d 100644 --- a/src/openrct2/scripting/bindings/game/ScConfiguration.hpp +++ b/src/openrct2/scripting/bindings/game/ScConfiguration.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScConsole.hpp b/src/openrct2/scripting/bindings/game/ScConsole.hpp index 90bc0847a2d7..18df59ca957b 100644 --- a/src/openrct2/scripting/bindings/game/ScConsole.hpp +++ b/src/openrct2/scripting/bindings/game/ScConsole.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScContext.hpp b/src/openrct2/scripting/bindings/game/ScContext.hpp index 3a5e2a32dcea..1e4f9a2e1f17 100644 --- a/src/openrct2/scripting/bindings/game/ScContext.hpp +++ b/src/openrct2/scripting/bindings/game/ScContext.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScDisposable.hpp b/src/openrct2/scripting/bindings/game/ScDisposable.hpp index 1a9ba288a3b7..35cc0ffa68a7 100644 --- a/src/openrct2/scripting/bindings/game/ScDisposable.hpp +++ b/src/openrct2/scripting/bindings/game/ScDisposable.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScPlugin.hpp b/src/openrct2/scripting/bindings/game/ScPlugin.hpp index bddb5b6ab7e4..294031fd6f0d 100644 --- a/src/openrct2/scripting/bindings/game/ScPlugin.hpp +++ b/src/openrct2/scripting/bindings/game/ScPlugin.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/game/ScProfiler.hpp b/src/openrct2/scripting/bindings/game/ScProfiler.hpp index 014871833b65..555d047bec76 100644 --- a/src/openrct2/scripting/bindings/game/ScProfiler.hpp +++ b/src/openrct2/scripting/bindings/game/ScProfiler.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScNetwork.cpp b/src/openrct2/scripting/bindings/network/ScNetwork.cpp index 604c7d50e79e..4d75d2182c14 100644 --- a/src/openrct2/scripting/bindings/network/ScNetwork.cpp +++ b/src/openrct2/scripting/bindings/network/ScNetwork.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScNetwork.hpp b/src/openrct2/scripting/bindings/network/ScNetwork.hpp index 18451b0168c3..b16c45a82e5d 100644 --- a/src/openrct2/scripting/bindings/network/ScNetwork.hpp +++ b/src/openrct2/scripting/bindings/network/ScNetwork.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayer.cpp b/src/openrct2/scripting/bindings/network/ScPlayer.cpp index 966f368e90dc..076527474254 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayer.cpp +++ b/src/openrct2/scripting/bindings/network/ScPlayer.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayer.hpp b/src/openrct2/scripting/bindings/network/ScPlayer.hpp index a1d3abcc63b2..d9ab47e5b025 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayer.hpp +++ b/src/openrct2/scripting/bindings/network/ScPlayer.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp b/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp index a9d259c9dea6..b08cb20ef8f4 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp +++ b/src/openrct2/scripting/bindings/network/ScPlayerGroup.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp b/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp index 23410dc96c4d..ea1ac8958028 100644 --- a/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp +++ b/src/openrct2/scripting/bindings/network/ScPlayerGroup.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/network/ScSocket.hpp b/src/openrct2/scripting/bindings/network/ScSocket.hpp index e28f5e41cb0f..a1066966c12c 100644 --- a/src/openrct2/scripting/bindings/network/ScSocket.hpp +++ b/src/openrct2/scripting/bindings/network/ScSocket.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScInstalledObject.cpp b/src/openrct2/scripting/bindings/object/ScInstalledObject.cpp index 1c8ca8d97b8e..68fe9030a92a 100644 --- a/src/openrct2/scripting/bindings/object/ScInstalledObject.cpp +++ b/src/openrct2/scripting/bindings/object/ScInstalledObject.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp b/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp index 7fa8bd2da197..fe8dd51f709d 100644 --- a/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp +++ b/src/openrct2/scripting/bindings/object/ScInstalledObject.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScObject.hpp b/src/openrct2/scripting/bindings/object/ScObject.hpp index c350cfb55bdc..4c4d851dbf89 100644 --- a/src/openrct2/scripting/bindings/object/ScObject.hpp +++ b/src/openrct2/scripting/bindings/object/ScObject.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScObjectManager.cpp b/src/openrct2/scripting/bindings/object/ScObjectManager.cpp index b02a6bce6208..c817e999eb86 100644 --- a/src/openrct2/scripting/bindings/object/ScObjectManager.cpp +++ b/src/openrct2/scripting/bindings/object/ScObjectManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/object/ScObjectManager.h b/src/openrct2/scripting/bindings/object/ScObjectManager.h index 630beb1a4f6b..16bdda6837be 100644 --- a/src/openrct2/scripting/bindings/object/ScObjectManager.h +++ b/src/openrct2/scripting/bindings/object/ScObjectManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScAward.cpp b/src/openrct2/scripting/bindings/world/ScAward.cpp index 739c86818f9e..875365d6334b 100644 --- a/src/openrct2/scripting/bindings/world/ScAward.cpp +++ b/src/openrct2/scripting/bindings/world/ScAward.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScAward.hpp b/src/openrct2/scripting/bindings/world/ScAward.hpp index f38b1a556f13..71ab30b46c46 100644 --- a/src/openrct2/scripting/bindings/world/ScAward.hpp +++ b/src/openrct2/scripting/bindings/world/ScAward.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScClimate.hpp b/src/openrct2/scripting/bindings/world/ScClimate.hpp index 54771ce53133..2944a8b5e90d 100644 --- a/src/openrct2/scripting/bindings/world/ScClimate.hpp +++ b/src/openrct2/scripting/bindings/world/ScClimate.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScDate.hpp b/src/openrct2/scripting/bindings/world/ScDate.hpp index 5c4148f9475e..c3e2e1c2faee 100644 --- a/src/openrct2/scripting/bindings/world/ScDate.hpp +++ b/src/openrct2/scripting/bindings/world/ScDate.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScMap.cpp b/src/openrct2/scripting/bindings/world/ScMap.cpp index bf9bef1b64e2..17b56e09bb11 100644 --- a/src/openrct2/scripting/bindings/world/ScMap.cpp +++ b/src/openrct2/scripting/bindings/world/ScMap.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScMap.hpp b/src/openrct2/scripting/bindings/world/ScMap.hpp index cf59c8662260..91dbff457655 100644 --- a/src/openrct2/scripting/bindings/world/ScMap.hpp +++ b/src/openrct2/scripting/bindings/world/ScMap.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index a06af41f299f..2f393db21cff 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScPark.hpp b/src/openrct2/scripting/bindings/world/ScPark.hpp index dcef4d43775c..b46fc2a1236e 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.hpp +++ b/src/openrct2/scripting/bindings/world/ScPark.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScParkMessage.cpp b/src/openrct2/scripting/bindings/world/ScParkMessage.cpp index 9a38e6a355c3..a4ec1682265c 100644 --- a/src/openrct2/scripting/bindings/world/ScParkMessage.cpp +++ b/src/openrct2/scripting/bindings/world/ScParkMessage.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScParkMessage.hpp b/src/openrct2/scripting/bindings/world/ScParkMessage.hpp index f619412dd056..ddaffac2bd80 100644 --- a/src/openrct2/scripting/bindings/world/ScParkMessage.hpp +++ b/src/openrct2/scripting/bindings/world/ScParkMessage.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScResearch.cpp b/src/openrct2/scripting/bindings/world/ScResearch.cpp index 971240fbe9c0..f97e1577d8c9 100644 --- a/src/openrct2/scripting/bindings/world/ScResearch.cpp +++ b/src/openrct2/scripting/bindings/world/ScResearch.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScResearch.hpp b/src/openrct2/scripting/bindings/world/ScResearch.hpp index 1cdb611258af..b62344c21c24 100644 --- a/src/openrct2/scripting/bindings/world/ScResearch.hpp +++ b/src/openrct2/scripting/bindings/world/ScResearch.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScScenario.hpp b/src/openrct2/scripting/bindings/world/ScScenario.hpp index 96f06ecc155a..e00b0e5d288f 100644 --- a/src/openrct2/scripting/bindings/world/ScScenario.hpp +++ b/src/openrct2/scripting/bindings/world/ScScenario.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTile.cpp b/src/openrct2/scripting/bindings/world/ScTile.cpp index 187d4731de98..d13b3612c231 100644 --- a/src/openrct2/scripting/bindings/world/ScTile.cpp +++ b/src/openrct2/scripting/bindings/world/ScTile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTile.hpp b/src/openrct2/scripting/bindings/world/ScTile.hpp index 158b5dc094b2..43acb2d2ed77 100644 --- a/src/openrct2/scripting/bindings/world/ScTile.hpp +++ b/src/openrct2/scripting/bindings/world/ScTile.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTileElement.cpp b/src/openrct2/scripting/bindings/world/ScTileElement.cpp index 8adb728bf836..be78b22180f9 100644 --- a/src/openrct2/scripting/bindings/world/ScTileElement.cpp +++ b/src/openrct2/scripting/bindings/world/ScTileElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScTileElement.hpp b/src/openrct2/scripting/bindings/world/ScTileElement.hpp index bb1f6ab22dc0..52c72fb04177 100644 --- a/src/openrct2/scripting/bindings/world/ScTileElement.hpp +++ b/src/openrct2/scripting/bindings/world/ScTileElement.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ui/DummyUiContext.cpp b/src/openrct2/ui/DummyUiContext.cpp index 1f638361f8e1..d2a175c63778 100644 --- a/src/openrct2/ui/DummyUiContext.cpp +++ b/src/openrct2/ui/DummyUiContext.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ui/DummyWindowManager.cpp b/src/openrct2/ui/DummyWindowManager.cpp index e37e0421563b..f6e21888072d 100644 --- a/src/openrct2/ui/DummyWindowManager.cpp +++ b/src/openrct2/ui/DummyWindowManager.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ui/UiContext.h b/src/openrct2/ui/UiContext.h index f42280963571..1f4feed2e925 100644 --- a/src/openrct2/ui/UiContext.h +++ b/src/openrct2/ui/UiContext.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/ui/WindowManager.h b/src/openrct2/ui/WindowManager.h index 1bd9d6f46cba..acec8e38e380 100644 --- a/src/openrct2/ui/WindowManager.h +++ b/src/openrct2/ui/WindowManager.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/util/Util.cpp b/src/openrct2/util/Util.cpp index 9653fcaf6d68..e989e4b07749 100644 --- a/src/openrct2/util/Util.cpp +++ b/src/openrct2/util/Util.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/util/Util.h b/src/openrct2/util/Util.h index 93a942d91676..61438e0c3d4e 100644 --- a/src/openrct2/util/Util.h +++ b/src/openrct2/util/Util.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/windows/Intent.cpp b/src/openrct2/windows/Intent.cpp index 9e7d9e3ca112..3db105abc08a 100644 --- a/src/openrct2/windows/Intent.cpp +++ b/src/openrct2/windows/Intent.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/windows/Intent.h b/src/openrct2/windows/Intent.h index 503faac59005..e8e16344fba9 100644 --- a/src/openrct2/windows/Intent.h +++ b/src/openrct2/windows/Intent.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/windows/TileInspectorGlobals.h b/src/openrct2/windows/TileInspectorGlobals.h index f6ac60f759df..396ed69812a3 100644 --- a/src/openrct2/windows/TileInspectorGlobals.h +++ b/src/openrct2/windows/TileInspectorGlobals.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Banner.cpp b/src/openrct2/world/Banner.cpp index 96ded195b955..aeec4dc64895 100644 --- a/src/openrct2/world/Banner.cpp +++ b/src/openrct2/world/Banner.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Banner.h b/src/openrct2/world/Banner.h index bf9e0c02fc68..705e6831200d 100644 --- a/src/openrct2/world/Banner.h +++ b/src/openrct2/world/Banner.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Climate.cpp b/src/openrct2/world/Climate.cpp index 41102741252c..f3dbeccf96a2 100644 --- a/src/openrct2/world/Climate.cpp +++ b/src/openrct2/world/Climate.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Climate.h b/src/openrct2/world/Climate.h index 013676b7b861..e8d987a85511 100644 --- a/src/openrct2/world/Climate.h +++ b/src/openrct2/world/Climate.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index 43b61e6ab381..e373165e38b7 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ConstructionClearance.h b/src/openrct2/world/ConstructionClearance.h index 8b0a06b2e325..4e30ae823006 100644 --- a/src/openrct2/world/ConstructionClearance.h +++ b/src/openrct2/world/ConstructionClearance.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 688e619c601b..9a7a0acdfdd6 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Entrance.h b/src/openrct2/world/Entrance.h index c3e1f20e92a8..4aaa57164185 100644 --- a/src/openrct2/world/Entrance.h +++ b/src/openrct2/world/Entrance.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index f6e65dd27c56..cba5d9b86138 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index f6dbe5a89105..2287d50128fe 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Location.hpp b/src/openrct2/world/Location.hpp index 1b12e2581fb5..02104bb37f04 100644 --- a/src/openrct2/world/Location.hpp +++ b/src/openrct2/world/Location.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 0fa429d2c45d..7a9df32179b3 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Map.h b/src/openrct2/world/Map.h index abedff9baf27..2b4eaea7c673 100644 --- a/src/openrct2/world/Map.h +++ b/src/openrct2/world/Map.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapAnimation.cpp b/src/openrct2/world/MapAnimation.cpp index 9a730d6effc2..ede9bd23a749 100644 --- a/src/openrct2/world/MapAnimation.cpp +++ b/src/openrct2/world/MapAnimation.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapAnimation.h b/src/openrct2/world/MapAnimation.h index e657266afd04..42416f212b76 100644 --- a/src/openrct2/world/MapAnimation.h +++ b/src/openrct2/world/MapAnimation.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapLimits.h b/src/openrct2/world/MapLimits.h index c903a1efac8f..fc7e36260442 100644 --- a/src/openrct2/world/MapLimits.h +++ b/src/openrct2/world/MapLimits.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapSelection.cpp b/src/openrct2/world/MapSelection.cpp index 6b2153abcffe..af6e0468adaf 100644 --- a/src/openrct2/world/MapSelection.cpp +++ b/src/openrct2/world/MapSelection.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/MapSelection.h b/src/openrct2/world/MapSelection.h index 5d732968f06c..cc70b7d634da 100644 --- a/src/openrct2/world/MapSelection.h +++ b/src/openrct2/world/MapSelection.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Park.cpp b/src/openrct2/world/Park.cpp index f3ed58761cce..90f7aded6c9a 100644 --- a/src/openrct2/world/Park.cpp +++ b/src/openrct2/world/Park.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Park.h b/src/openrct2/world/Park.h index aab0ac117bf5..fc8062d69ac6 100644 --- a/src/openrct2/world/Park.h +++ b/src/openrct2/world/Park.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ParkData.h b/src/openrct2/world/ParkData.h index 738e431ddc84..1503fe3750ab 100644 --- a/src/openrct2/world/ParkData.h +++ b/src/openrct2/world/ParkData.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/QuarterTile.cpp b/src/openrct2/world/QuarterTile.cpp index 03613ebc6a65..ca036a67d30c 100644 --- a/src/openrct2/world/QuarterTile.cpp +++ b/src/openrct2/world/QuarterTile.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/QuarterTile.h b/src/openrct2/world/QuarterTile.h index 44e1d2dc0200..72fcab2503fa 100644 --- a/src/openrct2/world/QuarterTile.h +++ b/src/openrct2/world/QuarterTile.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Scenery.cpp b/src/openrct2/world/Scenery.cpp index f0c5c952fb18..5b736050582d 100644 --- a/src/openrct2/world/Scenery.cpp +++ b/src/openrct2/world/Scenery.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Scenery.h b/src/openrct2/world/Scenery.h index de4ec0ea4989..71af78286587 100644 --- a/src/openrct2/world/Scenery.h +++ b/src/openrct2/world/Scenery.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/ScenerySelection.h b/src/openrct2/world/ScenerySelection.h index 1a1984ab73b1..a7c7b6d678af 100644 --- a/src/openrct2/world/ScenerySelection.h +++ b/src/openrct2/world/ScenerySelection.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/SurfaceData.cpp b/src/openrct2/world/SurfaceData.cpp index f1c374164402..bd8433ef0f37 100644 --- a/src/openrct2/world/SurfaceData.cpp +++ b/src/openrct2/world/SurfaceData.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TileElementsView.h b/src/openrct2/world/TileElementsView.h index 662a6dcfd0e8..502ff41bbaef 100644 --- a/src/openrct2/world/TileElementsView.h +++ b/src/openrct2/world/TileElementsView.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index 7db639571354..6ef5d97e4404 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TileInspector.h b/src/openrct2/world/TileInspector.h index 025eee264c49..ab59207315f8 100644 --- a/src/openrct2/world/TileInspector.h +++ b/src/openrct2/world/TileInspector.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/TilePointerIndex.hpp b/src/openrct2/world/TilePointerIndex.hpp index f0fbc535a220..201cbe09b179 100644 --- a/src/openrct2/world/TilePointerIndex.hpp +++ b/src/openrct2/world/TilePointerIndex.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Wall.cpp b/src/openrct2/world/Wall.cpp index a37edc2405af..096c3bdee217 100644 --- a/src/openrct2/world/Wall.cpp +++ b/src/openrct2/world/Wall.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/Wall.h b/src/openrct2/world/Wall.h index 504377533106..177c86487f32 100644 --- a/src/openrct2/world/Wall.h +++ b/src/openrct2/world/Wall.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/HeightMap.hpp b/src/openrct2/world/map_generator/HeightMap.hpp index 83bdaf62dfab..f58768ea7cad 100644 --- a/src/openrct2/world/map_generator/HeightMap.hpp +++ b/src/openrct2/world/map_generator/HeightMap.hpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/MapGen.cpp b/src/openrct2/world/map_generator/MapGen.cpp index e714cc196fbe..2200f368f5aa 100644 --- a/src/openrct2/world/map_generator/MapGen.cpp +++ b/src/openrct2/world/map_generator/MapGen.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/MapGen.h b/src/openrct2/world/map_generator/MapGen.h index 431a23121715..88474c88f59a 100644 --- a/src/openrct2/world/map_generator/MapGen.h +++ b/src/openrct2/world/map_generator/MapGen.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/MapHelpers.cpp b/src/openrct2/world/map_generator/MapHelpers.cpp index 7c7d7998864a..13ccc777c1d5 100644 --- a/src/openrct2/world/map_generator/MapHelpers.cpp +++ b/src/openrct2/world/map_generator/MapHelpers.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/MapHelpers.h b/src/openrct2/world/map_generator/MapHelpers.h index 32ac6f026cd0..c4fe03262d60 100644 --- a/src/openrct2/world/map_generator/MapHelpers.h +++ b/src/openrct2/world/map_generator/MapHelpers.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/PngTerrainGenerator.cpp b/src/openrct2/world/map_generator/PngTerrainGenerator.cpp index 9b3501da5728..6a8072fc3f2e 100644 --- a/src/openrct2/world/map_generator/PngTerrainGenerator.cpp +++ b/src/openrct2/world/map_generator/PngTerrainGenerator.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/PngTerrainGenerator.h b/src/openrct2/world/map_generator/PngTerrainGenerator.h index 6563d2b9af4d..f06a1e089b05 100644 --- a/src/openrct2/world/map_generator/PngTerrainGenerator.h +++ b/src/openrct2/world/map_generator/PngTerrainGenerator.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/SimplexNoise.cpp b/src/openrct2/world/map_generator/SimplexNoise.cpp index a79c3092668d..c772d819afed 100644 --- a/src/openrct2/world/map_generator/SimplexNoise.cpp +++ b/src/openrct2/world/map_generator/SimplexNoise.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/SimplexNoise.h b/src/openrct2/world/map_generator/SimplexNoise.h index f8e5a3f5151d..93f13d137ce2 100644 --- a/src/openrct2/world/map_generator/SimplexNoise.h +++ b/src/openrct2/world/map_generator/SimplexNoise.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/SurfaceSelection.cpp b/src/openrct2/world/map_generator/SurfaceSelection.cpp index 109b770524a6..ec95ad937645 100644 --- a/src/openrct2/world/map_generator/SurfaceSelection.cpp +++ b/src/openrct2/world/map_generator/SurfaceSelection.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/SurfaceSelection.h b/src/openrct2/world/map_generator/SurfaceSelection.h index 878441022a49..19c8e57ce99c 100644 --- a/src/openrct2/world/map_generator/SurfaceSelection.h +++ b/src/openrct2/world/map_generator/SurfaceSelection.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/TreePlacement.cpp b/src/openrct2/world/map_generator/TreePlacement.cpp index b87417c07cd2..c03bc0adb718 100644 --- a/src/openrct2/world/map_generator/TreePlacement.cpp +++ b/src/openrct2/world/map_generator/TreePlacement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/map_generator/TreePlacement.h b/src/openrct2/world/map_generator/TreePlacement.h index 80b45555abd9..b15e531474e6 100644 --- a/src/openrct2/world/map_generator/TreePlacement.h +++ b/src/openrct2/world/map_generator/TreePlacement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/BannerElement.h b/src/openrct2/world/tile_element/BannerElement.h index f84ebb032090..141353b6ffe2 100644 --- a/src/openrct2/world/tile_element/BannerElement.h +++ b/src/openrct2/world/tile_element/BannerElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/EntranceElement.cpp b/src/openrct2/world/tile_element/EntranceElement.cpp index 045bda544247..67db84ece392 100644 --- a/src/openrct2/world/tile_element/EntranceElement.cpp +++ b/src/openrct2/world/tile_element/EntranceElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/EntranceElement.h b/src/openrct2/world/tile_element/EntranceElement.h index aaa249f8add1..de20fab960db 100644 --- a/src/openrct2/world/tile_element/EntranceElement.h +++ b/src/openrct2/world/tile_element/EntranceElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/LargeSceneryElement.cpp b/src/openrct2/world/tile_element/LargeSceneryElement.cpp index 151abac85cd3..b88e4913c15a 100644 --- a/src/openrct2/world/tile_element/LargeSceneryElement.cpp +++ b/src/openrct2/world/tile_element/LargeSceneryElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/LargeSceneryElement.h b/src/openrct2/world/tile_element/LargeSceneryElement.h index edaaa4fdc969..98d0ed3be402 100644 --- a/src/openrct2/world/tile_element/LargeSceneryElement.h +++ b/src/openrct2/world/tile_element/LargeSceneryElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/PathElement.cpp b/src/openrct2/world/tile_element/PathElement.cpp index 340fdb3be52d..e86eae2abcdd 100644 --- a/src/openrct2/world/tile_element/PathElement.cpp +++ b/src/openrct2/world/tile_element/PathElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/PathElement.h b/src/openrct2/world/tile_element/PathElement.h index 236b6295b831..e88fa34d7fdc 100644 --- a/src/openrct2/world/tile_element/PathElement.h +++ b/src/openrct2/world/tile_element/PathElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/Slope.cpp b/src/openrct2/world/tile_element/Slope.cpp index 02b63117d48c..3a23c31c8c06 100644 --- a/src/openrct2/world/tile_element/Slope.cpp +++ b/src/openrct2/world/tile_element/Slope.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/Slope.h b/src/openrct2/world/tile_element/Slope.h index 9e61c9507df3..e21ca6a2ebaf 100644 --- a/src/openrct2/world/tile_element/Slope.h +++ b/src/openrct2/world/tile_element/Slope.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SmallSceneryElement.cpp b/src/openrct2/world/tile_element/SmallSceneryElement.cpp index abd29dc16669..a7bb8dd0615b 100644 --- a/src/openrct2/world/tile_element/SmallSceneryElement.cpp +++ b/src/openrct2/world/tile_element/SmallSceneryElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SmallSceneryElement.h b/src/openrct2/world/tile_element/SmallSceneryElement.h index cb63a03cf99d..70adc2ec472f 100644 --- a/src/openrct2/world/tile_element/SmallSceneryElement.h +++ b/src/openrct2/world/tile_element/SmallSceneryElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SurfaceElement.cpp b/src/openrct2/world/tile_element/SurfaceElement.cpp index d04d3b66f9d1..5bb5c9ca4494 100644 --- a/src/openrct2/world/tile_element/SurfaceElement.cpp +++ b/src/openrct2/world/tile_element/SurfaceElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/SurfaceElement.h b/src/openrct2/world/tile_element/SurfaceElement.h index b985d19dda9c..feb5cc1c4886 100644 --- a/src/openrct2/world/tile_element/SurfaceElement.h +++ b/src/openrct2/world/tile_element/SurfaceElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElement.cpp b/src/openrct2/world/tile_element/TileElement.cpp index 11c17c7aca85..2b5136b83fb0 100644 --- a/src/openrct2/world/tile_element/TileElement.cpp +++ b/src/openrct2/world/tile_element/TileElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElement.h b/src/openrct2/world/tile_element/TileElement.h index 02a78c28c211..e71f70808cd0 100644 --- a/src/openrct2/world/tile_element/TileElement.h +++ b/src/openrct2/world/tile_element/TileElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElementBase.cpp b/src/openrct2/world/tile_element/TileElementBase.cpp index 30a69b708adf..b8761693a17d 100644 --- a/src/openrct2/world/tile_element/TileElementBase.cpp +++ b/src/openrct2/world/tile_element/TileElementBase.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElementBase.h b/src/openrct2/world/tile_element/TileElementBase.h index b0344a921c2d..3060370c689a 100644 --- a/src/openrct2/world/tile_element/TileElementBase.h +++ b/src/openrct2/world/tile_element/TileElementBase.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TileElementType.h b/src/openrct2/world/tile_element/TileElementType.h index e4e6ec0d53ca..1209b35c7bc1 100644 --- a/src/openrct2/world/tile_element/TileElementType.h +++ b/src/openrct2/world/tile_element/TileElementType.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TrackElement.cpp b/src/openrct2/world/tile_element/TrackElement.cpp index ed66e092ae6e..a8e18a66cdbc 100644 --- a/src/openrct2/world/tile_element/TrackElement.cpp +++ b/src/openrct2/world/tile_element/TrackElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/TrackElement.h b/src/openrct2/world/tile_element/TrackElement.h index f65e2d1435c4..875e1f36a52a 100644 --- a/src/openrct2/world/tile_element/TrackElement.h +++ b/src/openrct2/world/tile_element/TrackElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/WallElement.cpp b/src/openrct2/world/tile_element/WallElement.cpp index f57bde5cf744..acbfd5125c3e 100644 --- a/src/openrct2/world/tile_element/WallElement.cpp +++ b/src/openrct2/world/tile_element/WallElement.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 diff --git a/src/openrct2/world/tile_element/WallElement.h b/src/openrct2/world/tile_element/WallElement.h index 45aaa7bacea8..4b2a48a07109 100644 --- a/src/openrct2/world/tile_element/WallElement.h +++ b/src/openrct2/world/tile_element/WallElement.h @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 From 8e2b3de749da046c8d3f8bf0e1dc47038a342443 Mon Sep 17 00:00:00 2001 From: Peppersawce <157759066+Peppersawce@users.noreply.github.com> Date: Mon, 5 Jan 2026 15:03:44 +0100 Subject: [PATCH 177/222] Preliminary Haiku OS support (#25659) --- CMakeLists.txt | 36 +++++++++++++----------- src/openrct2-ui/CMakeLists.txt | 4 +-- src/openrct2-ui/UiContext.Linux.cpp | 10 ++++++- src/openrct2/CMakeLists.txt | 2 +- src/openrct2/Context.cpp | 2 ++ src/openrct2/Version.h | 3 ++ src/openrct2/audio/Audio.cpp | 7 +++-- src/openrct2/config/Config.cpp | 7 ++++- src/openrct2/core/FileScanner.cpp | 14 ++++++--- src/openrct2/network/Socket.cpp | 4 +++ src/openrct2/platform/Platform.Linux.cpp | 24 +++++++++++++++- src/openrct2/platform/Platform.Posix.cpp | 3 +- src/openrct2/platform/Platform.h | 3 +- 13 files changed, 87 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6edd7f277ba..83943f2cb727 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -368,7 +368,7 @@ else () set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif () - if (APPLE AND NOT USE_MMAP) + if (HAIKU OR (APPLE AND NOT USE_MMAP)) set(CMAKE_POSITION_INDEPENDENT_CODE OFF) else () set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -517,23 +517,25 @@ if (NOT MACOS_BUNDLE OR (MACOS_BUNDLE AND WITH_TESTS)) endif() install(TARGETS "openrct2-cli" OPTIONAL RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") install(FILES ${DOC_FILES} DESTINATION "${CMAKE_INSTALL_DOCDIR}") - install(FILES "distribution/linux/io.openrct2.openrct2.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo") - if (NOT DISABLE_GUI) - install(FILES "resources/logo/icon_x16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x24.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/24x24/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x96.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/96x96/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_x256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "openrct2.png") - install(FILES "resources/logo/icon_flag.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps" RENAME "openrct2.svg") - install(FILES "distribution/linux/io.openrct2.openrct2.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") - install(FILES "distribution/linux/io.openrct2.savegame.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") - install(FILES "distribution/linux/io.openrct2.scenario.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") - install(FILES "distribution/linux/io.openrct2.uri.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + if (NOT HAIKU) + install(FILES "distribution/linux/io.openrct2.openrct2.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo") + if (NOT DISABLE_GUI) + install(FILES "resources/logo/icon_x16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x24.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/24x24/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x96.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/96x96/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_x256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "openrct2.png") + install(FILES "resources/logo/icon_flag.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps" RENAME "openrct2.svg") + install(FILES "distribution/linux/io.openrct2.openrct2.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + install(FILES "distribution/linux/io.openrct2.savegame.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + install(FILES "distribution/linux/io.openrct2.scenario.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + install(FILES "distribution/linux/io.openrct2.uri.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + endif() + install(FILES "distribution/linux/io.openrct2.mimeinfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages/" RENAME "openrct2.xml") endif() - install(FILES "distribution/linux/io.openrct2.mimeinfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages/" RENAME "openrct2.xml") install(DIRECTORY "distribution/man/" DESTINATION "${CMAKE_INSTALL_MANDIR}/man6" FILES_MATCHING PATTERN "*.6") if (MACOS_USE_DEPENDENCIES) diff --git a/src/openrct2-ui/CMakeLists.txt b/src/openrct2-ui/CMakeLists.txt index cd3e3ccc7fe6..d46972e05977 100644 --- a/src/openrct2-ui/CMakeLists.txt +++ b/src/openrct2-ui/CMakeLists.txt @@ -38,7 +38,7 @@ endif () if (NOT DISABLE_OPENGL AND NOT EMSCRIPTEN) # GL doesn't work nicely with macOS, while find_package doesn't work with multiarch on Ubuntu. - if (APPLE) + if (APPLE OR HAIKU) find_package(OpenGL REQUIRED) elseif (NOT WIN32) PKG_CHECK_MODULES(GL REQUIRED gl) @@ -100,7 +100,7 @@ endif () if (NOT DISABLE_OPENGL) if (WIN32) target_link_libraries(openrct2 opengl32) - elseif (APPLE) + elseif (APPLE OR HAIKU) target_link_libraries(openrct2 ${OPENGL_LIBRARY}) else () target_link_libraries(openrct2 ${GL_LIBRARIES}) diff --git a/src/openrct2-ui/UiContext.Linux.cpp b/src/openrct2-ui/UiContext.Linux.cpp index b6227623cdf2..6c3f7d352311 100644 --- a/src/openrct2-ui/UiContext.Linux.cpp +++ b/src/openrct2-ui/UiContext.Linux.cpp @@ -7,7 +7,7 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ -#if (defined(__unix__) || defined(__EMSCRIPTEN__)) && !defined(__ANDROID__) && !defined(__APPLE__) +#if (defined(__unix__) || defined(__HAIKU__) || defined(__EMSCRIPTEN__)) && !defined(__ANDROID__) && !defined(__APPLE__) #include "UiContext.h" @@ -129,14 +129,22 @@ namespace OpenRCT2::Ui void OpenFolder(const std::string& path) override { + #ifdef __HAIKU__ + const char* args[] = { "open", path.c_str(), nullptr }; + #else const char* args[] = { "xdg-open", path.c_str(), nullptr }; + #endif Platform::Execute(args); } void OpenURL(const std::string& url) override { #ifndef __EMSCRIPTEN__ + #ifdef __HAIKU__ + const char* args[] = { "open", url.c_str(), nullptr }; + #else const char* args[] = { "xdg-open", url.c_str(), nullptr }; + #endif Platform::Execute(args); #else MAIN_THREAD_EM_ASM({ window.open(UTF8ToString($0)); }, url.c_str()); diff --git a/src/openrct2/CMakeLists.txt b/src/openrct2/CMakeLists.txt index f314c9c33fa6..e74c6be4a780 100644 --- a/src/openrct2/CMakeLists.txt +++ b/src/openrct2/CMakeLists.txt @@ -180,7 +180,7 @@ if (MINGW) target_link_libraries(libopenrct2 -fstack-protector-strong) endif() -if (UNIX AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "BSD") +if (UNIX AND NOT HAIKU AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "BSD") # Include libdl for dlopen target_link_libraries(libopenrct2 dl) endif () diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 79b953873a54..b9d26595222d 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -483,6 +483,7 @@ namespace OpenRCT2 } #endif +#ifndef __HAIKU__ // Haiku's user is always root, skip warning them about it. if (Platform::ProcessIsElevated()) { std::string elevationWarning = _localisationService->GetString(STR_ADMIN_NOT_RECOMMENDED); @@ -495,6 +496,7 @@ namespace OpenRCT2 _uiContext->ShowMessageBox(elevationWarning); } } +#endif if (Platform::IsRunningInWine()) { diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h index e089cab8e658..cb63bc4dd238 100644 --- a/src/openrct2/Version.h +++ b/src/openrct2/Version.h @@ -72,6 +72,9 @@ #ifdef __EMSCRIPTEN__ #define OPENRCT2_PLATFORM "Emscripten" #endif +#ifdef __HAIKU__ + #define OPENRCT2_PLATFORM "Haiku" +#endif #ifndef OPENRCT2_PLATFORM #error Unknown platform! #endif diff --git a/src/openrct2/audio/Audio.cpp b/src/openrct2/audio/Audio.cpp index a088e8e10db8..c57f37e153b4 100644 --- a/src/openrct2/audio/Audio.cpp +++ b/src/openrct2/audio/Audio.cpp @@ -128,11 +128,12 @@ namespace OpenRCT2::Audio } } -#ifndef __linux__ - // The first device is always system default on Windows and macOS + // The first device is always system default std::string defaultDevice = LanguageGetString(STR_OPTIONS_SOUND_VALUE_DEFAULT); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnull-dereference" devices.insert(devices.begin(), defaultDevice); -#endif +#pragma GCC diagnostic pop _audioDevices = devices; } diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index ead2328319ee..30097e931fb2 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -50,6 +50,11 @@ static constexpr bool kEnlargedUiDefault = true; #else static constexpr bool kEnlargedUiDefault = false; #endif +#ifdef __HAIKU__ // Multi-threading is unstable here +static constexpr bool kMultiThreadingDefault = false; +#else +static constexpr bool kMultiThreadingDefault = true; +#endif namespace OpenRCT2::Config { @@ -238,7 +243,7 @@ namespace OpenRCT2::Config // Always have multi-threading disabled in debug builds, this makes things slower. model->multiThreading = false; #else - model->multiThreading = reader->GetBoolean("multithreading", true); + model->multiThreading = reader->GetBoolean("multithreading", kMultiThreadingDefault); #endif // _DEBUG model->trapCursor = reader->GetBoolean("trap_cursor", false); model->autoOpenShops = reader->GetBoolean("auto_open_shops", false); diff --git a/src/openrct2/core/FileScanner.cpp b/src/openrct2/core/FileScanner.cpp index 95599bfb0f18..18d3c7207593 100644 --- a/src/openrct2/core/FileScanner.cpp +++ b/src/openrct2/core/FileScanner.cpp @@ -12,7 +12,7 @@ #define WIN32_LEAN_AND_MEAN #endif #include -#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +#elif defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) #include #include #include @@ -251,7 +251,7 @@ class FileScannerWindows final : public FileScannerBase #endif // _WIN32 -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +#if defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) class FileScannerUnix final : public FileScannerBase { @@ -290,7 +290,13 @@ class FileScannerUnix final : public FileScannerBase { DirectoryChild result; result.Name = std::string(node->d_name); + #ifdef __HAIKU__ + struct stat stbuf; + stat(node->d_name, &stbuf); + if (S_ISDIR(stbuf.st_mode)) + #else if (node->d_type == DT_DIR) + #endif { result.Type = DirectoryChildType::directory; } @@ -318,13 +324,13 @@ class FileScannerUnix final : public FileScannerBase } }; -#endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +#endif // defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) std::unique_ptr Path::ScanDirectory(const std::string& pattern, bool recurse) { #ifdef _WIN32 return std::make_unique(pattern, recurse); -#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +#elif defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) return std::make_unique(pattern, recurse); #endif } diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp index 71cb20ae3ce6..09d5212f2626 100644 --- a/src/openrct2/network/Socket.cpp +++ b/src/openrct2/network/Socket.cpp @@ -72,6 +72,10 @@ #define FLAG_NO_PIPE 0 #endif // defined(__linux__) #endif // _WIN32 + +#ifdef __HAIKU__ + #include +#endif // clang-format on #include "Socket.h" diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp index 9eb095f59d65..1c53ba864e8f 100644 --- a/src/openrct2/platform/Platform.Linux.cpp +++ b/src/openrct2/platform/Platform.Linux.cpp @@ -7,7 +7,7 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ -#if defined(__unix__) && !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__) +#if (defined(__unix__) || defined(__HAIKU__)) && !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__) #include "../Diagnostic.h" @@ -38,6 +38,10 @@ #include "../localisation/Language.h" #include "Platform.h" + #ifdef __HAIKU__ + #include + #endif + namespace OpenRCT2::Platform { // EnvLangGuard allows us to temporarily set the user's locale @@ -154,6 +158,12 @@ namespace OpenRCT2::Platform "/usr/local/share/openrct2", "/var/lib/openrct2", "/usr/share/openrct2", + #ifdef __HAIKU__ + "/boot/system/data/openrct2", + "/boot/home/config/data/openrct2", + "/boot/system/non-packaged/data/openrct2", + "/boot/home/config/non-packaged/data/openrct2", + #endif }; // clang-format on for (const auto& prefix : prefixes) @@ -180,6 +190,18 @@ namespace OpenRCT2::Platform { LOG_FATAL("failed to read /proc/self/exe"); } + #elif defined(__HAIKU__) + image_info info; + int32 cookie = 0; + + while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) >= B_OK) + { + if (info.type == B_APP_IMAGE) + { + strlcpy(exePath, info.name, sizeof(exePath)); + break; + } + } #elif defined(__FreeBSD__) || defined(__NetBSD__) #if defined(__FreeBSD__) const int32_t mib[] = { diff --git a/src/openrct2/platform/Platform.Posix.cpp b/src/openrct2/platform/Platform.Posix.cpp index b33d3e17ee58..98777973cdbd 100644 --- a/src/openrct2/platform/Platform.Posix.cpp +++ b/src/openrct2/platform/Platform.Posix.cpp @@ -7,7 +7,8 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) \ + || defined(__HAIKU__) #include "Platform.h" diff --git a/src/openrct2/platform/Platform.h b/src/openrct2/platform/Platform.h index b96ee1f6ee9f..63ff5f0473f0 100644 --- a/src/openrct2/platform/Platform.h +++ b/src/openrct2/platform/Platform.h @@ -147,7 +147,8 @@ namespace OpenRCT2::Platform SteamPaths GetSteamPaths(); bool triggerSteamDownload(); -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) \ + || defined(__HAIKU__) std::string GetEnvironmentPath(const char* name); std::string GetHomePath(); #endif From 1b844d9e52d4d94fcf4bbb9eb08412d569473433 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Mon, 5 Jan 2026 19:31:34 +0100 Subject: [PATCH 178/222] Rework object header includes (#25742) * Remove EntityList.h includes in a few places * Remove Object.h dependency from Footpath.h * Remove Object.h dependency from Editor headers * Remove Object.h dependency from NetworkBase.h * Move RideFilters struct to RideTypes.h * Move ObjectSourceGame enum to its own header * Remove Object.h dependency from ObjectManager.h * Remove Object.h dependency from ObjectRepository.h * Remove Object.h dependency from ObjectTypes.h * Add missing copyright header to ObjectEntryManager.cpp * Add missing copyright header to SurfaceData.h --- src/openrct2-ui/ride/Construction.h | 1 + .../windows/EditorBottomToolbar.cpp | 1 - src/openrct2/Editor.h | 4 ++- src/openrct2/EditorObjectSelectionSession.h | 10 ++++++- src/openrct2/ParkImporter.h | 1 - src/openrct2/drawing/Drawing.cpp | 1 - src/openrct2/interface/InteractiveConsole.cpp | 1 - src/openrct2/interface/Viewport.cpp | 1 - src/openrct2/libopenrct2.vcxproj | 1 + src/openrct2/localisation/Language.cpp | 2 ++ src/openrct2/network/NetworkBase.cpp | 1 - src/openrct2/network/NetworkBase.h | 4 +-- src/openrct2/object/MusicObject.h | 1 + src/openrct2/object/Object.h | 21 +-------------- src/openrct2/object/ObjectEntryManager.cpp | 10 +++++++ src/openrct2/object/ObjectManager.h | 7 ++++- src/openrct2/object/ObjectRepository.h | 2 +- src/openrct2/object/ObjectSourceGame.h | 27 +++++++++++++++++++ src/openrct2/object/PathAdditionObject.cpp | 3 +-- .../ClassicWoodenTwisterRollerCoaster.cpp | 1 + src/openrct2/park/Legacy.h | 2 +- src/openrct2/park/ParkFile.cpp | 1 - src/openrct2/rct1/S4Importer.cpp | 1 - src/openrct2/ride/RideTypes.h | 6 +++++ src/openrct2/ride/Track.h | 2 +- src/openrct2/ride/TrackData.h | 1 + src/openrct2/scenario/Scenario.cpp | 2 -- .../scripting/bindings/entity/ScEntity.hpp | 1 - .../scripting/bindings/entity/ScStaff.cpp | 1 + src/openrct2/world/Footpath.h | 7 ++++- src/openrct2/world/SurfaceData.h | 9 +++++++ 31 files changed, 91 insertions(+), 42 deletions(-) create mode 100644 src/openrct2/object/ObjectSourceGame.h diff --git a/src/openrct2-ui/ride/Construction.h b/src/openrct2-ui/ride/Construction.h index cb6dda3ddd66..7bcb7503e091 100644 --- a/src/openrct2-ui/ride/Construction.h +++ b/src/openrct2-ui/ride/Construction.h @@ -12,6 +12,7 @@ #include #include #include +#include namespace OpenRCT2 { diff --git a/src/openrct2-ui/windows/EditorBottomToolbar.cpp b/src/openrct2-ui/windows/EditorBottomToolbar.cpp index d56788051d49..e30087fcdb42 100644 --- a/src/openrct2-ui/windows/EditorBottomToolbar.cpp +++ b/src/openrct2-ui/windows/EditorBottomToolbar.cpp @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2/Editor.h b/src/openrct2/Editor.h index 36223fcdb581..c696dd9aaa40 100644 --- a/src/openrct2/Editor.h +++ b/src/openrct2/Editor.h @@ -9,7 +9,9 @@ #pragma once -#include "object/Object.h" +#include "core/StringTypes.h" +#include "localisation/StringIdType.h" +#include "object/ObjectTypes.h" struct ResultWithMessage; diff --git a/src/openrct2/EditorObjectSelectionSession.h b/src/openrct2/EditorObjectSelectionSession.h index c5c01a13262c..2acf3eb91846 100644 --- a/src/openrct2/EditorObjectSelectionSession.h +++ b/src/openrct2/EditorObjectSelectionSession.h @@ -11,10 +11,18 @@ #include "core/EnumUtils.hpp" #include "core/FlagHolder.hpp" -#include "object/Object.h" +#include "localisation/StringIdType.h" +#include "object/ObjectTypes.h" +#include #include +namespace OpenRCT2 +{ + struct ObjectEntryDescriptor; + struct ObjectRepositoryItem; +} // namespace OpenRCT2 + struct ResultWithMessage; enum class EditorInputFlag : uint8_t diff --git a/src/openrct2/ParkImporter.h b/src/openrct2/ParkImporter.h index bbcb3de400ba..97119a538a24 100644 --- a/src/openrct2/ParkImporter.h +++ b/src/openrct2/ParkImporter.h @@ -10,7 +10,6 @@ #pragma once #include "core/StringTypes.h" -#include "object/Object.h" #include "object/ObjectList.h" #include diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 998f17fa9fd7..5604f0d4df4e 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -17,7 +17,6 @@ #include "../SpriteIds.h" #include "../config/Config.h" #include "../core/Guard.hpp" -#include "../object/Object.h" #include "../object/ObjectEntryManager.h" #include "../object/WaterEntry.h" #include "../platform/Platform.h" diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index b4e2bc07ce00..65b6f757712e 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -50,7 +50,6 @@ #include "../management/NewsItem.h" #include "../management/Research.h" #include "../network/Network.h" -#include "../object/Object.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 5365da81071e..8f66e92fb333 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -21,7 +21,6 @@ #include "../drawing/Drawing.h" #include "../drawing/IDrawingEngine.h" #include "../drawing/Rectangle.h" -#include "../entity/EntityList.h" #include "../entity/Guest.h" #include "../entity/Staff.h" #include "../interface/Cursors.h" diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 3abb613db5ff..36fd26acd9ad 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -358,6 +358,7 @@ + diff --git a/src/openrct2/localisation/Language.cpp b/src/openrct2/localisation/Language.cpp index 5e438776b412..96d10a802ace 100644 --- a/src/openrct2/localisation/Language.cpp +++ b/src/openrct2/localisation/Language.cpp @@ -7,6 +7,8 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ +#include "Language.h" + #include "../Context.h" #include "../core/String.hpp" #include "../drawing/ScrollingText.h" diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index ba4544fe5caa..b2e237aebe6b 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -23,7 +23,6 @@ #include "../core/File.h" #include "../core/Guard.hpp" #include "../core/Json.hpp" -#include "../entity/EntityList.h" #include "../entity/EntityRegistry.h" #include "../entity/EntityTweener.h" #include "../localisation/Formatter.h" diff --git a/src/openrct2/network/NetworkBase.h b/src/openrct2/network/NetworkBase.h index 006ab80a7e56..039fb2fda70b 100644 --- a/src/openrct2/network/NetworkBase.h +++ b/src/openrct2/network/NetworkBase.h @@ -2,7 +2,6 @@ #include "../System.hpp" #include "../actions/GameAction.h" -#include "../object/Object.h" #include "../scenario/Scenario.h" #include "NetworkConnection.h" #include "NetworkGroup.h" @@ -21,7 +20,8 @@ namespace OpenRCT2 { struct IContext; -} + struct ObjectRepositoryItem; +} // namespace OpenRCT2 namespace OpenRCT2::Network { diff --git a/src/openrct2/object/MusicObject.h b/src/openrct2/object/MusicObject.h index 76a8f28f50c8..d8aa09596f16 100644 --- a/src/openrct2/object/MusicObject.h +++ b/src/openrct2/object/MusicObject.h @@ -9,6 +9,7 @@ #pragma once +#include "../ride/RideTypes.h" #include "AudioSampleTable.h" #include "Object.h" diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 2b9c04379489..1e56a864893d 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -14,6 +14,7 @@ #include "../drawing/ImageIndexType.h" #include "ImageTable.h" #include "ObjectAsset.h" +#include "ObjectSourceGame.h" #include "ObjectTypes.h" #include "StringTable.h" @@ -22,8 +23,6 @@ #include #include -using ride_type_t = uint16_t; - namespace OpenRCT2::Drawing { struct RenderTarget; @@ -47,18 +46,6 @@ namespace OpenRCT2 constexpr uint8_t AllFlags = 0xFF; }; // namespace ObjectSelectionFlags - enum class ObjectSourceGame : uint8_t - { - custom, - wackyWorlds, - timeTwister, - openRCT2Official, - rct1, - addedAttractions, - loopyLandscapes, - rct2 = 8, - }; - #pragma pack(push, 1) /** * Object entry structure. @@ -112,12 +99,6 @@ namespace OpenRCT2 #pragma pack(pop) - struct RideFilters - { - uint8_t category[2]; - ride_type_t ride_type; - }; - enum class ObjectGeneration : uint8_t { DAT, diff --git a/src/openrct2/object/ObjectEntryManager.cpp b/src/openrct2/object/ObjectEntryManager.cpp index dc3f8531909c..c589d6ffbcc2 100644 --- a/src/openrct2/object/ObjectEntryManager.cpp +++ b/src/openrct2/object/ObjectEntryManager.cpp @@ -1,6 +1,16 @@ +/***************************************************************************** + * Copyright (c) 2014-2026 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + #include "ObjectEntryManager.h" #include "../Context.h" +#include "Object.h" #include "ObjectManager.h" namespace OpenRCT2::ObjectManager diff --git a/src/openrct2/object/ObjectManager.h b/src/openrct2/object/ObjectManager.h index 3d913dc0e1d6..cbe939700df4 100644 --- a/src/openrct2/object/ObjectManager.h +++ b/src/openrct2/object/ObjectManager.h @@ -9,7 +9,10 @@ #pragma once -#include "../object/Object.h" +#include "../localisation/StringIdType.h" +#include "../ride/RideTypes.h" +#include "ObjectSourceGame.h" +#include "ObjectTypes.h" #include #include @@ -19,7 +22,9 @@ namespace OpenRCT2 struct IObjectRepository; class Object; class ObjectList; + struct ObjectEntryDescriptor; struct ObjectRepositoryItem; + struct RCTObjectEntry; struct IObjectManager { diff --git a/src/openrct2/object/ObjectRepository.h b/src/openrct2/object/ObjectRepository.h index 3cda2be98c84..2d78c955df21 100644 --- a/src/openrct2/object/ObjectRepository.h +++ b/src/openrct2/object/ObjectRepository.h @@ -9,7 +9,7 @@ #pragma once -#include "../object/Object.h" +#include "ObjectTypes.h" #include "RideObject.h" #include diff --git a/src/openrct2/object/ObjectSourceGame.h b/src/openrct2/object/ObjectSourceGame.h new file mode 100644 index 000000000000..675b70b8d9cf --- /dev/null +++ b/src/openrct2/object/ObjectSourceGame.h @@ -0,0 +1,27 @@ +/***************************************************************************** + * Copyright (c) 2014-2026 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include + +namespace OpenRCT2 +{ + enum class ObjectSourceGame : uint8_t + { + custom, + wackyWorlds, + timeTwister, + openRCT2Official, + rct1, + addedAttractions, + loopyLandscapes, + rct2 = 8, + }; +} diff --git a/src/openrct2/object/PathAdditionObject.cpp b/src/openrct2/object/PathAdditionObject.cpp index 99661d28f224..4f46a91c00ea 100644 --- a/src/openrct2/object/PathAdditionObject.cpp +++ b/src/openrct2/object/PathAdditionObject.cpp @@ -14,9 +14,8 @@ #include "../core/Json.hpp" #include "../drawing/Drawing.h" #include "../interface/Cursors.h" -#include "../object/Object.h" -#include "../object/ObjectRepository.h" #include "ObjectList.h" +#include "ObjectRepository.h" #include diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp index 97faa2b831db..19677c6bf35d 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp @@ -8,6 +8,7 @@ *****************************************************************************/ #include "../../../SpriteIds.h" +#include "../../../drawing/Drawing.h" #include "../../../ride/Track.h" #include "../../../ride/TrackPaint.h" #include "../../tile_element/Paint.Tunnel.h" diff --git a/src/openrct2/park/Legacy.h b/src/openrct2/park/Legacy.h index 14813f0ae083..feec732a2813 100644 --- a/src/openrct2/park/Legacy.h +++ b/src/openrct2/park/Legacy.h @@ -10,7 +10,7 @@ #pragma once #include "../core/FlagHolder.hpp" -#include "../object/Object.h" +#include "../object/ObjectTypes.h" #include #include diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 3cbe7619a5fa..9ecefbf0f616 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -40,7 +40,6 @@ #include "../management/Award.h" #include "../management/Finance.h" #include "../management/NewsItem.h" -#include "../object/Object.h" #include "../object/ObjectLimits.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 84e247c7dbf6..63484a784776 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -38,7 +38,6 @@ #include "../management/Finance.h" #include "../management/Marketing.h" #include "../management/NewsItem.h" -#include "../object/Object.h" #include "../object/ObjectLimits.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" diff --git a/src/openrct2/ride/RideTypes.h b/src/openrct2/ride/RideTypes.h index d279bb2bf370..48bfd78045b7 100644 --- a/src/openrct2/ride/RideTypes.h +++ b/src/openrct2/ride/RideTypes.h @@ -21,6 +21,12 @@ struct Ride; using ride_type_t = uint16_t; static ride_type_t constexpr kRideTypeNull = 0xFF; +struct RideFilters +{ + uint8_t category[2]; + ride_type_t ride_type; +}; + /** * Couples a ride type and subtype together. */ diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index a16de6897e18..9f94f47d8f94 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -11,9 +11,9 @@ #include "../Identifiers.h" #include "../actions/CommandFlag.h" -#include "../object/Object.h" #include "../world/Location.hpp" #include "../world/QuarterTile.h" +#include "RideTypes.h" #include diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index 1a678db4ed00..428245919e77 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -10,6 +10,7 @@ #pragma once #include "../core/FlagHolder.hpp" +#include "../localisation/StringIdType.h" #include "../paint/support/MetalSupports.h" #include "../paint/support/WoodenSupports.h" #include "../paint/tile_element/Segment.h" diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 69355c4a234a..29843cd2cf13 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -36,10 +36,8 @@ #include "../management/NewsItem.h" #include "../management/Research.h" #include "../network/Network.h" -#include "../object/Object.h" #include "../object/ObjectEntryManager.h" #include "../object/ObjectLimits.h" -#include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/ScenarioMetaObject.h" #include "../object/WaterEntry.h" diff --git a/src/openrct2/scripting/bindings/entity/ScEntity.hpp b/src/openrct2/scripting/bindings/entity/ScEntity.hpp index aed36134d5e3..8440240705d0 100644 --- a/src/openrct2/scripting/bindings/entity/ScEntity.hpp +++ b/src/openrct2/scripting/bindings/entity/ScEntity.hpp @@ -13,7 +13,6 @@ #include "../../../Context.h" #include "../../../GameState.h" - #include "../../../entity/EntityList.h" #include "../../../entity/EntityRegistry.h" #include "../../../entity/Peep.h" #include "../../Duktape.hpp" diff --git a/src/openrct2/scripting/bindings/entity/ScStaff.cpp b/src/openrct2/scripting/bindings/entity/ScStaff.cpp index c580b9de8a6d..dc8f811f8612 100644 --- a/src/openrct2/scripting/bindings/entity/ScStaff.cpp +++ b/src/openrct2/scripting/bindings/entity/ScStaff.cpp @@ -16,6 +16,7 @@ #include "../../../object/ObjectManager.h" #include "../../../object/PeepAnimationsObject.h" #include "../../../peep/PeepAnimations.h" + #include "../../../rct12/RCT12.h" #include "../../../world/Map.h" namespace OpenRCT2::Scripting diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 2287d50128fe..63fde1cf827f 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -11,7 +11,12 @@ #include "../Identifiers.h" #include "../actions/CommandFlag.h" -#include "../object/Object.h" +#include "../interface/Colour.h" +#include "../localisation/StringIdType.h" +#include "../object/ObjectTypes.h" +#include "Location.hpp" + +#include namespace OpenRCT2 { diff --git a/src/openrct2/world/SurfaceData.h b/src/openrct2/world/SurfaceData.h index 3f3dfae8cf53..e74c2d82c443 100644 --- a/src/openrct2/world/SurfaceData.h +++ b/src/openrct2/world/SurfaceData.h @@ -1,3 +1,12 @@ +/***************************************************************************** + * Copyright (c) 2014-2026 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + #pragma once #include From b5cd780b3e9777db70c7e8547d03b237255cdb1b Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Mon, 5 Jan 2026 20:09:34 +0100 Subject: [PATCH 179/222] Rework drawing header includes (#25744) * Move Csg unit into OpenRCT2 namespace * Move G1Element into its own header file * Clean up SpriteCommands.h * Add trailing namespace comment to Csg.cpp * Remove Drawing.h dependency from Graph.h * Add include to G1Element.h * Remove Drawing.h include from ImageTable.h (used by all objects!) * Drop Drawing.h dependency from OpenGLFramebuffer.h * Drop Drawing.h dependency from TextureCache.h * Drop Drawing.h include from TitleScene.h * Drop Drawing.h dependency from Widget.h * Add include to SpriteFile.h * Add Drawing.h to PlayTests, S6ImportExportTests * Include in TitleScene.h for SIZE_MAX --- src/openrct2-ui/WindowManager.cpp | 1 + .../engines/opengl/OpenGLFramebuffer.h | 2 +- .../drawing/engines/opengl/TextureCache.h | 1 - src/openrct2-ui/input/Shortcuts.cpp | 1 + src/openrct2-ui/interface/FileBrowser.cpp | 1 + src/openrct2-ui/interface/Graph.cpp | 1 + src/openrct2-ui/interface/Graph.h | 2 +- src/openrct2-ui/interface/Widget.cpp | 1 + src/openrct2-ui/interface/Widget.h | 2 +- src/openrct2-ui/scripting/CustomListView.cpp | 1 + .../scripting/ScGraphicsContext.hpp | 2 +- src/openrct2-ui/title/TitleSequencePlayer.cpp | 1 + src/openrct2-ui/windows/Changelog.cpp | 1 + src/openrct2-ui/windows/Cheats.cpp | 1 + src/openrct2-ui/windows/ClearScenery.cpp | 1 + src/openrct2-ui/windows/DebugPaint.cpp | 1 + .../windows/EditorBottomToolbar.cpp | 1 + .../windows/EditorInventionsList.cpp | 1 + .../windows/EditorObjectSelection.cpp | 2 +- .../windows/EditorParkEntrance.cpp | 1 + src/openrct2-ui/windows/Finances.cpp | 1 + src/openrct2-ui/windows/Footpath.cpp | 1 + src/openrct2-ui/windows/GameBottomToolbar.cpp | 1 + src/openrct2-ui/windows/Guest.cpp | 1 + src/openrct2-ui/windows/InstallTrack.cpp | 1 + src/openrct2-ui/windows/Map.cpp | 1 + src/openrct2-ui/windows/Multiplayer.cpp | 2 +- src/openrct2-ui/windows/NetworkStatus.cpp | 2 +- src/openrct2-ui/windows/NewRide.cpp | 1 + src/openrct2-ui/windows/ObjectLoadError.cpp | 2 +- src/openrct2-ui/windows/Options.cpp | 1 + src/openrct2-ui/windows/OverwritePrompt.cpp | 1 + src/openrct2-ui/windows/Park.cpp | 1 + src/openrct2-ui/windows/Player.cpp | 2 +- src/openrct2-ui/windows/Research.cpp | 1 + src/openrct2-ui/windows/Ride.cpp | 1 + src/openrct2-ui/windows/RideConstruction.cpp | 1 + src/openrct2-ui/windows/Scenery.cpp | 1 + src/openrct2-ui/windows/SceneryScatter.cpp | 1 + src/openrct2-ui/windows/ServerList.cpp | 2 +- src/openrct2-ui/windows/ServerStart.cpp | 1 + src/openrct2-ui/windows/Staff.cpp | 1 + src/openrct2-ui/windows/Themes.cpp | 2 +- src/openrct2-ui/windows/TileInspector.cpp | 1 + src/openrct2-ui/windows/TopToolbar.cpp | 1 + src/openrct2-ui/windows/TrackDesignPlace.cpp | 1 + src/openrct2-ui/windows/TrackList.cpp | 1 + src/openrct2-ui/windows/Transparency.cpp | 1 + src/openrct2/Editor.cpp | 1 + src/openrct2/Game.cpp | 1 + src/openrct2/GameState.cpp | 1 + src/openrct2/actions/BannerSetNameAction.cpp | 1 + src/openrct2/actions/BannerSetStyleAction.cpp | 1 + .../actions/FootpathLayoutPlaceAction.cpp | 1 + src/openrct2/actions/MapChangeSizeAction.cpp | 2 +- src/openrct2/actions/RideDemolishAction.cpp | 1 + src/openrct2/actions/RideSetNameAction.cpp | 1 + src/openrct2/actions/RideSetSettingAction.cpp | 1 + src/openrct2/actions/SignSetNameAction.cpp | 1 + src/openrct2/actions/StaffFireAction.cpp | 1 + .../actions/StaffSetPatrolAreaAction.cpp | 1 + .../command_line/sprite/SpriteCommands.cpp | 1 + .../command_line/sprite/SpriteCommands.h | 9 +- .../command_line/sprite/SpriteFile.cpp | 3 +- src/openrct2/command_line/sprite/SpriteFile.h | 19 +-- src/openrct2/core/Imaging.h | 2 +- src/openrct2/drawing/Drawing.Sprite.BMP.cpp | 1 + src/openrct2/drawing/Drawing.h | 76 ++--------- src/openrct2/drawing/G1Element.h | 77 ++++++++++++ src/openrct2/drawing/Image.h | 7 +- src/openrct2/drawing/ImageImporter.cpp | 4 +- src/openrct2/drawing/ImageImporter.h | 17 +-- src/openrct2/entity/Peep.cpp | 1 + src/openrct2/interface/Colour.cpp | 2 +- src/openrct2/interface/WindowBase.cpp | 1 + src/openrct2/libopenrct2.vcxproj | 1 + src/openrct2/network/NetworkBase.cpp | 1 + src/openrct2/object/ClimateObject.cpp | 2 + .../object/FootpathRailingsObject.cpp | 1 + src/openrct2/object/FootpathSurfaceObject.cpp | 1 + src/openrct2/object/ImageTable.cpp | 1 + src/openrct2/object/ImageTable.h | 2 +- src/openrct2/object/MusicObject.cpp | 1 + src/openrct2/object/PeepAnimationsObject.cpp | 1 + src/openrct2/object/ScenarioMetaObject.cpp | 1 + src/openrct2/object/TerrainSurfaceObject.h | 1 + src/openrct2/object/WaterObject.cpp | 1 + src/openrct2/paint/Painter.cpp | 1 + .../paint/tile_element/Paint.Banner.cpp | 1 + .../paint/tile_element/Paint.Entrance.cpp | 1 + .../paint/tile_element/Paint.LargeScenery.cpp | 1 + .../paint/tile_element/Paint.Path.cpp | 1 + .../paint/tile_element/Paint.Wall.cpp | 1 + .../coaster/ClassicStandUpRollerCoaster.cpp | 1 + src/openrct2/rct1/Csg.cpp | 118 +++++++++--------- src/openrct2/rct1/Csg.h | 19 +-- src/openrct2/ride/Ride.cpp | 1 + src/openrct2/ride/TrackDesignSave.cpp | 1 + src/openrct2/scenario/Scenario.cpp | 1 + src/openrct2/scenes/title/TitleScene.cpp | 1 + src/openrct2/scenes/title/TitleScene.h | 3 +- .../scripting/bindings/world/ScPark.cpp | 1 + src/openrct2/world/Climate.cpp | 1 + test/tests/PlayTests.cpp | 1 + test/tests/S6ImportExportTests.cpp | 1 + 105 files changed, 288 insertions(+), 174 deletions(-) create mode 100644 src/openrct2/drawing/G1Element.h diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 6d6da13224b8..2ba5bece6752 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h index fabda1cc32be..2e1c86490053 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLFramebuffer.h @@ -11,7 +11,7 @@ #include "OpenGLAPI.h" -#include +#include #include struct SDL_Window; diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h index ee18c15c9e19..433b67f5d945 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2-ui/input/Shortcuts.cpp b/src/openrct2-ui/input/Shortcuts.cpp index 63853c6b0ef9..f15757c67321 100644 --- a/src/openrct2-ui/input/Shortcuts.cpp +++ b/src/openrct2-ui/input/Shortcuts.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/interface/FileBrowser.cpp b/src/openrct2-ui/interface/FileBrowser.cpp index 8a550cfb0f6c..272e7b9ac50b 100644 --- a/src/openrct2-ui/interface/FileBrowser.cpp +++ b/src/openrct2-ui/interface/FileBrowser.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/interface/Graph.cpp b/src/openrct2-ui/interface/Graph.cpp index 37783c41b68f..0421fd2e8f0e 100644 --- a/src/openrct2-ui/interface/Graph.cpp +++ b/src/openrct2-ui/interface/Graph.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include #include diff --git a/src/openrct2-ui/interface/Graph.h b/src/openrct2-ui/interface/Graph.h index 03a55f690603..01fa31972e2a 100644 --- a/src/openrct2-ui/interface/Graph.h +++ b/src/openrct2-ui/interface/Graph.h @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 8515103a8c6a..643a9abde133 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/interface/Widget.h b/src/openrct2-ui/interface/Widget.h index a59ca9b885c4..46143a4061c0 100644 --- a/src/openrct2-ui/interface/Widget.h +++ b/src/openrct2-ui/interface/Widget.h @@ -12,7 +12,7 @@ #include "Window.h" #include -#include +#include #include namespace OpenRCT2::Ui diff --git a/src/openrct2-ui/scripting/CustomListView.cpp b/src/openrct2-ui/scripting/CustomListView.cpp index 80f0c18e0e0a..7e42d301d105 100644 --- a/src/openrct2-ui/scripting/CustomListView.cpp +++ b/src/openrct2-ui/scripting/CustomListView.cpp @@ -18,6 +18,7 @@ #include #include #include + #include #include #include #include diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index d46a07bc311a..13f71112806a 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -13,8 +13,8 @@ #include "CustomImages.h" + #include #include - #include #include using namespace OpenRCT2::Drawing; diff --git a/src/openrct2-ui/title/TitleSequencePlayer.cpp b/src/openrct2-ui/title/TitleSequencePlayer.cpp index 525832774490..ceff734d9314 100644 --- a/src/openrct2-ui/title/TitleSequencePlayer.cpp +++ b/src/openrct2-ui/title/TitleSequencePlayer.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Changelog.cpp b/src/openrct2-ui/windows/Changelog.cpp index 086b0b696f50..5fe275e59ce9 100644 --- a/src/openrct2-ui/windows/Changelog.cpp +++ b/src/openrct2-ui/windows/Changelog.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 8438960d7652..30818497a109 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/ClearScenery.cpp b/src/openrct2-ui/windows/ClearScenery.cpp index 0e5d7ba945c8..7a86c3ea78be 100644 --- a/src/openrct2-ui/windows/ClearScenery.cpp +++ b/src/openrct2-ui/windows/ClearScenery.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/DebugPaint.cpp b/src/openrct2-ui/windows/DebugPaint.cpp index c4ddd5a03bd6..5fe25b22c73d 100644 --- a/src/openrct2-ui/windows/DebugPaint.cpp +++ b/src/openrct2-ui/windows/DebugPaint.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/EditorBottomToolbar.cpp b/src/openrct2-ui/windows/EditorBottomToolbar.cpp index e30087fcdb42..4f224caeed7f 100644 --- a/src/openrct2-ui/windows/EditorBottomToolbar.cpp +++ b/src/openrct2-ui/windows/EditorBottomToolbar.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 1f9185d6f5b5..4ef1a8ddc924 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index e8706208c2fb..f89080ead7d9 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -27,8 +27,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 25211ec79386..5b34a7323b7b 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 129ed874b736..3b3754e4cb23 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index d88d04e409c0..2057d8200a1c 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index e06600522177..09a71c57388b 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 7b745c56ecbc..796fb6782ca0 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index 3f0f95405f9f..72d13fad3c95 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 60c39289da67..8d7fbe9be7a5 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 4d79196f7987..e32fa3288118 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -17,8 +17,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/src/openrct2-ui/windows/NetworkStatus.cpp b/src/openrct2-ui/windows/NetworkStatus.cpp index 6965c399fc01..09563d8b5dea 100644 --- a/src/openrct2-ui/windows/NetworkStatus.cpp +++ b/src/openrct2-ui/windows/NetworkStatus.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 311ef9fd0ee6..5121ac6d26c1 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index 5b202a76dfea..234f0072660f 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -15,8 +15,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 228589e914cf..50553bdcfb94 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/OverwritePrompt.cpp b/src/openrct2-ui/windows/OverwritePrompt.cpp index e397c532952a..450f8c081db3 100644 --- a/src/openrct2-ui/windows/OverwritePrompt.cpp +++ b/src/openrct2-ui/windows/OverwritePrompt.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index ce5a05a3e0c2..9a9ebe501649 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 5f9073fe7061..79b5bc6e94c7 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index e1f42970fd92..0d396d719ee9 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 76f419253eb6..b8aecb329794 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index e66371320222..b5049b47da9e 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 3708bce133e8..789337fcbe9e 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/SceneryScatter.cpp b/src/openrct2-ui/windows/SceneryScatter.cpp index d708d5f5a755..99eaf8135aea 100644 --- a/src/openrct2-ui/windows/SceneryScatter.cpp +++ b/src/openrct2-ui/windows/SceneryScatter.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index abb1ae9ba9be..4b07e22daad7 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -19,8 +19,8 @@ #include #include #include + #include #include - #include #include #include #include diff --git a/src/openrct2-ui/windows/ServerStart.cpp b/src/openrct2-ui/windows/ServerStart.cpp index 8f2404b3ab9c..c9da344f35c4 100644 --- a/src/openrct2-ui/windows/ServerStart.cpp +++ b/src/openrct2-ui/windows/ServerStart.cpp @@ -17,6 +17,7 @@ #include #include #include + #include #include #include #include diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index c80da2f450f1..e4950a47d980 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 24e04b9f6934..85cbc7eb38bd 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -16,8 +16,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index ac27c5e7fd26..ac4a491cce7c 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index a12d256eee82..40f0aedf8f88 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 9b2f0be6673d..f174639fd29f 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 2347c7c9a810..b9bc36b34675 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Transparency.cpp b/src/openrct2-ui/windows/Transparency.cpp index db056a33baaa..636a3e592d6c 100644 --- a/src/openrct2-ui/windows/Transparency.cpp +++ b/src/openrct2-ui/windows/Transparency.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index ebe5d8fe0a38..16c695f49f9a 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -23,6 +23,7 @@ #include "core/EnumUtils.hpp" #include "core/Path.hpp" #include "core/String.hpp" +#include "drawing/Drawing.h" #include "entity/EntityList.h" #include "entity/EntityRegistry.h" #include "entity/Guest.h" diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index 6e3c1b0f5982..2952540dfb2c 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -31,6 +31,7 @@ #include "core/Money.hpp" #include "core/Path.hpp" #include "core/String.hpp" +#include "drawing/Drawing.h" #include "entity/EntityList.h" #include "entity/EntityRegistry.h" #include "entity/PatrolArea.h" diff --git a/src/openrct2/GameState.cpp b/src/openrct2/GameState.cpp index 20814afa99a4..a22c0006ecda 100644 --- a/src/openrct2/GameState.cpp +++ b/src/openrct2/GameState.cpp @@ -16,6 +16,7 @@ #include "ReplayManager.h" #include "actions/GameAction.h" #include "config/Config.h" +#include "drawing/Drawing.h" #include "entity/EntityTweener.h" #include "entity/PatrolArea.h" #include "interface/Screenshot.h" diff --git a/src/openrct2/actions/BannerSetNameAction.cpp b/src/openrct2/actions/BannerSetNameAction.cpp index 26b7d65887fc..28c2fff10098 100644 --- a/src/openrct2/actions/BannerSetNameAction.cpp +++ b/src/openrct2/actions/BannerSetNameAction.cpp @@ -12,6 +12,7 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../core/String.hpp" +#include "../drawing/Drawing.h" #include "../drawing/ScrollingText.h" #include "../localisation/StringIds.h" #include "../windows/Intent.h" diff --git a/src/openrct2/actions/BannerSetStyleAction.cpp b/src/openrct2/actions/BannerSetStyleAction.cpp index e6e27b955608..d14bdc21b95f 100644 --- a/src/openrct2/actions/BannerSetStyleAction.cpp +++ b/src/openrct2/actions/BannerSetStyleAction.cpp @@ -11,6 +11,7 @@ #include "../Context.h" #include "../Diagnostic.h" +#include "../drawing/Drawing.h" #include "../drawing/ScrollingText.h" #include "../localisation/StringIdType.h" #include "../management/Finance.h" diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index b96db0593c01..ca5579dceed8 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -20,6 +20,7 @@ #include "../world/Footpath.h" #include "../world/Location.hpp" #include "../world/Map.h" +#include "../world/MapLimits.h" #include "../world/Park.h" #include "../world/QuarterTile.h" #include "../world/tile_element/EntranceElement.h" diff --git a/src/openrct2/actions/MapChangeSizeAction.cpp b/src/openrct2/actions/MapChangeSizeAction.cpp index c50cb7d2aedf..714cb7df3b0a 100644 --- a/src/openrct2/actions/MapChangeSizeAction.cpp +++ b/src/openrct2/actions/MapChangeSizeAction.cpp @@ -11,7 +11,7 @@ #include "../Context.h" #include "../GameState.h" -#include "../drawing/IDrawingEngine.h" +#include "../drawing/Drawing.h" #include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index b5ad30812677..58dcdef7fce5 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -14,6 +14,7 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../core/MemoryStream.h" +#include "../drawing/Drawing.h" #include "../drawing/ScrollingText.h" #include "../entity/EntityList.h" #include "../management/NewsItem.h" diff --git a/src/openrct2/actions/RideSetNameAction.cpp b/src/openrct2/actions/RideSetNameAction.cpp index 7645f608c66d..0e68b9a02e53 100644 --- a/src/openrct2/actions/RideSetNameAction.cpp +++ b/src/openrct2/actions/RideSetNameAction.cpp @@ -13,6 +13,7 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../core/MemoryStream.h" +#include "../drawing/Drawing.h" #include "../drawing/ScrollingText.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index d39d4bce9923..e11e2debfce6 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -12,6 +12,7 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../GameState.h" +#include "../drawing/Drawing.h" #include "../object/ObjectManager.h" #include "../ride/Ride.h" #include "../ride/RideData.h" diff --git a/src/openrct2/actions/SignSetNameAction.cpp b/src/openrct2/actions/SignSetNameAction.cpp index 038d27ce0130..8a9fd2bdd1a6 100644 --- a/src/openrct2/actions/SignSetNameAction.cpp +++ b/src/openrct2/actions/SignSetNameAction.cpp @@ -11,6 +11,7 @@ #include "../Context.h" #include "../Diagnostic.h" +#include "../drawing/Drawing.h" #include "../drawing/ScrollingText.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" diff --git a/src/openrct2/actions/StaffFireAction.cpp b/src/openrct2/actions/StaffFireAction.cpp index 8982e99820d9..2897192301ea 100644 --- a/src/openrct2/actions/StaffFireAction.cpp +++ b/src/openrct2/actions/StaffFireAction.cpp @@ -11,6 +11,7 @@ #include "../Diagnostic.h" #include "../GameState.h" +#include "../drawing/Drawing.h" #include "../entity/EntityRegistry.h" #include "../entity/Staff.h" #include "../ui/WindowManager.h" diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp index 59b104a73df5..ba819f7df4b4 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp @@ -11,6 +11,7 @@ #include "../Diagnostic.h" #include "../GameState.h" +#include "../drawing/Drawing.h" #include "../entity/EntityRegistry.h" #include "../entity/PatrolArea.h" #include "../entity/Peep.h" diff --git a/src/openrct2/command_line/sprite/SpriteCommands.cpp b/src/openrct2/command_line/sprite/SpriteCommands.cpp index 19a05032ed14..2f4919d3bae7 100644 --- a/src/openrct2/command_line/sprite/SpriteCommands.cpp +++ b/src/openrct2/command_line/sprite/SpriteCommands.cpp @@ -13,6 +13,7 @@ #include "../../OpenRCT2.h" #include "../../core/Memory.hpp" #include "../../core/String.hpp" +#include "../../drawing/Drawing.h" #include "../../object/ObjectFactory.h" #include "../CommandLine.hpp" diff --git a/src/openrct2/command_line/sprite/SpriteCommands.h b/src/openrct2/command_line/sprite/SpriteCommands.h index 9ccc930ce8ec..16e847a1516d 100644 --- a/src/openrct2/command_line/sprite/SpriteCommands.h +++ b/src/openrct2/command_line/sprite/SpriteCommands.h @@ -9,15 +9,16 @@ #pragma once +#include "../../core/StringTypes.h" #include "../../drawing/ImageImporter.h" #include #include -#include -struct G1Element; -using utf8 = char; -using u8string_view = std::basic_string_view; +namespace OpenRCT2 +{ + struct G1Element; +} namespace OpenRCT2::CommandLine::Sprite { diff --git a/src/openrct2/command_line/sprite/SpriteFile.cpp b/src/openrct2/command_line/sprite/SpriteFile.cpp index fafdc562ea3a..a2b58b38fa1f 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.cpp +++ b/src/openrct2/command_line/sprite/SpriteFile.cpp @@ -10,6 +10,7 @@ #include "SpriteFile.h" #include "../../core/FileStream.h" +#include "../../drawing/ImageImporter.h" namespace OpenRCT2::CommandLine::Sprite { @@ -73,7 +74,7 @@ namespace OpenRCT2::CommandLine::Sprite isAbsolute = false; } - void SpriteFile::AddImage(ImageImporter::ImportResult& image) + void SpriteFile::AddImage(Drawing::ImageImportResult& image) { Header.numEntries++; // New image will have its data inserted after previous image diff --git a/src/openrct2/command_line/sprite/SpriteFile.h b/src/openrct2/command_line/sprite/SpriteFile.h index 0c6f42183fb4..3318b8e2fdf3 100644 --- a/src/openrct2/command_line/sprite/SpriteFile.h +++ b/src/openrct2/command_line/sprite/SpriteFile.h @@ -9,20 +9,25 @@ #pragma once -#include "../../drawing/Drawing.h" -#include "../../drawing/ImageImporter.h" +#include "../../core/StringTypes.h" +#include "../../drawing/G1Element.h" -namespace OpenRCT2::CommandLine::Sprite +#include + +namespace OpenRCT2::Drawing { - using OpenRCT2::Drawing::ImageImporter; + struct ImageImportResult; +} +namespace OpenRCT2::CommandLine::Sprite +{ class SpriteFile { public: - G1Header Header{}; - std::vector Entries; + OpenRCT2::G1Header Header{}; + std::vector Entries; std::vector Data; - void AddImage(ImageImporter::ImportResult& image); + void AddImage(Drawing::ImageImportResult& image); bool Save(const utf8* path); static std::optional Open(const utf8* path); diff --git a/src/openrct2/core/Imaging.h b/src/openrct2/core/Imaging.h index 59dd8262d835..281159d94b15 100644 --- a/src/openrct2/core/Imaging.h +++ b/src/openrct2/core/Imaging.h @@ -9,7 +9,7 @@ #pragma once -#include "../drawing/Drawing.h" +#include "../drawing/ColourPalette.h" #include #include diff --git a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp index 1934fa268b28..143d81d0e872 100644 --- a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp @@ -9,6 +9,7 @@ #include "Drawing.h" +using namespace OpenRCT2; using namespace OpenRCT2::Drawing; template diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index dcb6f9834ccd..f60e588c67f3 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -10,7 +10,6 @@ #pragma once #include "../core/CallingConventions.h" -#include "../core/FlagHolder.hpp" #include "../core/StringTypes.h" #include "../interface/Colour.h" #include "../interface/ZoomLevel.h" @@ -18,6 +17,7 @@ #include "ColourPalette.h" #include "FilterPaletteIds.h" #include "Font.h" +#include "G1Element.h" #include "ImageId.hpp" #include "RenderTarget.h" #include "Text.h" @@ -46,64 +46,6 @@ namespace OpenRCT2::Drawing struct IDrawingEngine; } -enum class G1Flag : uint8_t -{ - hasTransparency, // Image data contains transparent pixels (0XFF) which will not be rendered - one, - hasRLECompression, // Image data is encoded using RCT2's form of run length encoding - isPalette, // Image data is a sequence of palette entries R8G8B8 - hasZoomSprite, // Use a different sprite for higher zoom levels - noZoomDraw, // Does not get drawn at higher zoom levels (only zoom 0) -}; -using G1Flags = FlagHolder; - -struct G1Element -{ - uint8_t* offset = nullptr; // 0x00 - union - { - int16_t width = 0; // 0x04 - int16_t numColours; // If G1Flag::isPalette is set - }; - int16_t height = 0; // 0x06 - union - { - int16_t xOffset = 0; // 0x08 - int16_t startIndex; // If G1Flag::isPalette is set - }; - int16_t yOffset = 0; // 0x0A - G1Flags flags = {}; // 0x0C - int32_t zoomedOffset = 0; // 0x0E -}; - -#pragma pack(push, 1) -struct G1Header -{ - uint32_t numEntries = 0; - uint32_t totalSize = 0; -}; -static_assert(sizeof(G1Header) == 8); -#pragma pack(pop) - -struct Gx -{ - G1Header header; - std::vector elements; - std::unique_ptr data; -}; - -struct StoredG1Element -{ - uint32_t offset; // 0x00 note: uint32_t always! - int16_t width; // 0x04 - int16_t height; // 0x06 - int16_t xOffset; // 0x08 - int16_t yOffset; // 0x0A - G1Flags flags; // 0x0C - uint16_t zoomedOffset; // 0x0E -}; -static_assert(sizeof(StoredG1Element) == 0x10); - using DrawBlendOp = uint8_t; constexpr DrawBlendOp kBlendNone = 0; @@ -183,7 +125,7 @@ struct DrawSpriteArgs { ImageId Image; PaletteMap PalMap; - const G1Element& SourceImage; + const OpenRCT2::G1Element& SourceImage; int32_t SrcX; int32_t SrcY; int32_t Width; @@ -191,8 +133,8 @@ struct DrawSpriteArgs uint8_t* DestinationBits; DrawSpriteArgs( - ImageId image, const PaletteMap& palMap, const G1Element& sourceImage, int32_t srcX, int32_t srcY, int32_t width, - int32_t height, uint8_t* destinationBits) + ImageId image, const PaletteMap& palMap, const OpenRCT2::G1Element& sourceImage, int32_t srcX, int32_t srcY, + int32_t width, int32_t height, uint8_t* destinationBits) : Image(image) , PalMap(palMap) , SourceImage(sourceImage) @@ -323,10 +265,10 @@ bool GfxLoadCsg(); void GfxUnloadG1(); void GfxUnloadG2AndFonts(); void GfxUnloadCsg(); -const G1Element* GfxGetG1Element(const ImageId imageId); -const G1Element* GfxGetG1Element(ImageIndex image_id); -void GfxSetG1Element(ImageIndex imageId, const G1Element* g1); -std::optional GfxLoadGx(const std::vector& buffer); +const OpenRCT2::G1Element* GfxGetG1Element(const ImageId imageId); +const OpenRCT2::G1Element* GfxGetG1Element(ImageIndex image_id); +void GfxSetG1Element(ImageIndex imageId, const OpenRCT2::G1Element* g1); +std::optional GfxLoadGx(const std::vector& buffer); bool IsCsgLoaded(); void FASTCALL GfxSpriteToBuffer(OpenRCT2::Drawing::RenderTarget& rt, const DrawSpriteArgs& args); void FASTCALL GfxBmpSpriteToBuffer(OpenRCT2::Drawing::RenderTarget& rt, const DrawSpriteArgs& args); @@ -368,7 +310,7 @@ void TTFDrawString( OpenRCT2::Drawing::RenderTarget& rt, const_utf8string text, ColourWithFlags colour, const ScreenCoordsXY& coords, bool noFormatting, FontStyle fontStyle, TextDarkness darkness); -size_t G1CalculateDataSize(const G1Element* g1); +size_t G1CalculateDataSize(const OpenRCT2::G1Element* g1); void MaskScalar( int32_t width, int32_t height, const uint8_t* RESTRICT maskSrc, const uint8_t* RESTRICT colourSrc, uint8_t* RESTRICT dst, diff --git a/src/openrct2/drawing/G1Element.h b/src/openrct2/drawing/G1Element.h new file mode 100644 index 000000000000..a7d0790d3ad1 --- /dev/null +++ b/src/openrct2/drawing/G1Element.h @@ -0,0 +1,77 @@ +/***************************************************************************** + * Copyright (c) 2014-2026 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../core/CallingConventions.h" +#include "../core/FlagHolder.hpp" + +#include +#include + +namespace OpenRCT2 +{ + enum class G1Flag : uint8_t + { + hasTransparency, // Image data contains transparent pixels (0XFF) which will not be rendered + one, + hasRLECompression, // Image data is encoded using RCT2's form of run length encoding + isPalette, // Image data is a sequence of palette entries R8G8B8 + hasZoomSprite, // Use a different sprite for higher zoom levels + noZoomDraw, // Does not get drawn at higher zoom levels (only zoom 0) + }; + using G1Flags = FlagHolder; + + struct G1Element + { + uint8_t* offset = nullptr; // 0x00 + union + { + int16_t width = 0; // 0x04 + int16_t numColours; // If G1Flag::isPalette is set + }; + int16_t height = 0; // 0x06 + union + { + int16_t xOffset = 0; // 0x08 + int16_t startIndex; // If G1Flag::isPalette is set + }; + int16_t yOffset = 0; // 0x0A + G1Flags flags = {}; // 0x0C + int32_t zoomedOffset = 0; // 0x0E + }; + +#pragma pack(push, 1) + struct G1Header + { + uint32_t numEntries = 0; + uint32_t totalSize = 0; + }; + static_assert(sizeof(G1Header) == 8); +#pragma pack(pop) + + struct Gx + { + G1Header header; + std::vector elements; + std::unique_ptr data; + }; + + struct StoredG1Element + { + uint32_t offset; // 0x00 note: uint32_t always! + int16_t width; // 0x04 + int16_t height; // 0x06 + int16_t xOffset; // 0x08 + int16_t yOffset; // 0x0A + G1Flags flags; // 0x0C + uint16_t zoomedOffset; // 0x0E + }; + static_assert(sizeof(StoredG1Element) == 0x10); +} // namespace OpenRCT2 diff --git a/src/openrct2/drawing/Image.h b/src/openrct2/drawing/Image.h index 72057d966156..8302d7898546 100644 --- a/src/openrct2/drawing/Image.h +++ b/src/openrct2/drawing/Image.h @@ -15,7 +15,10 @@ #include #include -struct G1Element; +namespace OpenRCT2 +{ + struct G1Element; +} struct ImageList { @@ -55,7 +58,7 @@ constexpr bool operator!=(const ImageList& lhs, const ImageList& rhs) return !(lhs == rhs); } -uint32_t GfxObjectAllocateImages(const G1Element* images, uint32_t count); +uint32_t GfxObjectAllocateImages(const OpenRCT2::G1Element* images, uint32_t count); void GfxObjectFreeImages(uint32_t baseImageId, uint32_t count); void GfxObjectCheckAllImagesFreed(); size_t ImageListGetUsedCount(); diff --git a/src/openrct2/drawing/ImageImporter.cpp b/src/openrct2/drawing/ImageImporter.cpp index 30e2339123a9..e3f4073666f2 100644 --- a/src/openrct2/drawing/ImageImporter.cpp +++ b/src/openrct2/drawing/ImageImporter.cpp @@ -20,7 +20,7 @@ namespace OpenRCT2::Drawing { static constexpr int32_t kPaletteTransparent = -1; - ImageImporter::ImportResult ImageImporter::Import(const Image& image, ImageImportMeta& meta) const + ImageImportResult ImageImporter::Import(const Image& image, ImageImportMeta& meta) const { if (meta.srcSize.width == 0) meta.srcSize.width = image.Width; @@ -52,7 +52,7 @@ namespace OpenRCT2::Drawing if (HasFlag(meta.importFlags, ImportFlags::NoDrawOnZoom)) outElement.flags.set(G1Flag::noZoomDraw); - ImageImporter::ImportResult result; + ImageImportResult result; result.Element = outElement; result.Buffer = std::move(buffer); result.Element.offset = result.Buffer.data(); diff --git a/src/openrct2/drawing/ImageImporter.h b/src/openrct2/drawing/ImageImporter.h index c0e32ea8a567..af581b3c4bcc 100644 --- a/src/openrct2/drawing/ImageImporter.h +++ b/src/openrct2/drawing/ImageImporter.h @@ -12,7 +12,8 @@ #include "../core/EnumUtils.hpp" #include "../core/Imaging.h" #include "../core/JsonFwd.hpp" -#include "Drawing.h" +#include "../drawing/G1Element.h" +#include "../world/Location.hpp" #include #include @@ -51,19 +52,19 @@ namespace OpenRCT2::Drawing int32_t zoomedOffset{}; }; + struct ImageImportResult + { + G1Element Element{}; + std::vector Buffer; + }; + /** * Imports images to the internal RCT G1 format. */ class ImageImporter { public: - struct ImportResult - { - G1Element Element{}; - std::vector Buffer; - }; - - ImportResult Import(const Image& image, ImageImportMeta& meta) const; + ImageImportResult Import(const Image& image, ImageImportMeta& meta) const; private: enum class PaletteIndexType : uint8_t diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index a546d94d24e1..1036b34c83d4 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -25,6 +25,7 @@ #include "../core/EnumUtils.hpp" #include "../core/Guard.hpp" #include "../core/String.hpp" +#include "../drawing/Drawing.h" #include "../drawing/LightFX.h" #include "../entity/Balloon.h" #include "../entity/EntityList.h" diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index 7806bf5b6400..f48a591abef9 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -43,7 +43,7 @@ void ColoursInitMaps() { // Get palette index in g1 / g2 const auto paletteIndex = (i < kColourNumOriginal) ? SPR_PALETTE_2_START : SPR_G2_PALETTE_BEGIN - kColourNumOriginal; - const G1Element* g1 = GfxGetG1Element(paletteIndex + i); + const auto* g1 = GfxGetG1Element(paletteIndex + i); if (g1 != nullptr) { ColourMapA[i].colour_0 = static_cast(g1->offset[INDEX_COLOUR_0]); diff --git a/src/openrct2/interface/WindowBase.cpp b/src/openrct2/interface/WindowBase.cpp index df4ff760fb36..c7330714440d 100644 --- a/src/openrct2/interface/WindowBase.cpp +++ b/src/openrct2/interface/WindowBase.cpp @@ -1,6 +1,7 @@ #include "WindowBase.h" #include "../config/Config.h" +#include "../drawing/Drawing.h" #include "../entity/EntityList.h" #include "../entity/EntityRegistry.h" #include "Cursors.h" diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 36fd26acd9ad..2cdab4bcaaf5 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -247,6 +247,7 @@ + diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index b2e237aebe6b..5517c7267ee4 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -23,6 +23,7 @@ #include "../core/File.h" #include "../core/Guard.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" #include "../entity/EntityRegistry.h" #include "../entity/EntityTweener.h" #include "../localisation/Formatter.h" diff --git a/src/openrct2/object/ClimateObject.cpp b/src/openrct2/object/ClimateObject.cpp index 96cfe50fd5a8..1100f80a3917 100644 --- a/src/openrct2/object/ClimateObject.cpp +++ b/src/openrct2/object/ClimateObject.cpp @@ -13,8 +13,10 @@ #include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" #include "../localisation/Formatter.h" #include "../localisation/StringIds.h" +#include "../world/Location.hpp" #include diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index dcf0012a7781..a22fef4a328a 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -12,6 +12,7 @@ #include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" namespace OpenRCT2 { diff --git a/src/openrct2/object/FootpathSurfaceObject.cpp b/src/openrct2/object/FootpathSurfaceObject.cpp index 33773d069777..47ee6db15f6f 100644 --- a/src/openrct2/object/FootpathSurfaceObject.cpp +++ b/src/openrct2/object/FootpathSurfaceObject.cpp @@ -12,6 +12,7 @@ #include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" #include "../drawing/Image.h" #include "FootpathEntry.h" #include "ObjectRepository.h" diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index b401b27c7ade..d0673a5ad5e2 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -21,6 +21,7 @@ #include "../core/Json.hpp" #include "../core/Path.hpp" #include "../core/String.hpp" +#include "../drawing/Drawing.h" #include "../drawing/ImageImporter.h" #include "Object.h" #include "ObjectFactory.h" diff --git a/src/openrct2/object/ImageTable.h b/src/openrct2/object/ImageTable.h index 89954d543613..97189de7bd22 100644 --- a/src/openrct2/object/ImageTable.h +++ b/src/openrct2/object/ImageTable.h @@ -10,7 +10,7 @@ #pragma once #include "../core/JsonFwd.hpp" -#include "../drawing/Drawing.h" +#include "../drawing/G1Element.h" #include #include diff --git a/src/openrct2/object/MusicObject.cpp b/src/openrct2/object/MusicObject.cpp index a8f1590c7668..9f2e254f33c5 100644 --- a/src/openrct2/object/MusicObject.cpp +++ b/src/openrct2/object/MusicObject.cpp @@ -18,6 +18,7 @@ #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/Path.hpp" +#include "../drawing/Drawing.h" #include "../drawing/Image.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" diff --git a/src/openrct2/object/PeepAnimationsObject.cpp b/src/openrct2/object/PeepAnimationsObject.cpp index b88466e051b4..33fc76b09c54 100644 --- a/src/openrct2/object/PeepAnimationsObject.cpp +++ b/src/openrct2/object/PeepAnimationsObject.cpp @@ -14,6 +14,7 @@ #include "../core/EnumMap.hpp" #include "../core/Guard.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" #include "../peep/PeepAnimations.h" #include "../rct12/RCT12.h" #include "ObjectRepository.h" diff --git a/src/openrct2/object/ScenarioMetaObject.cpp b/src/openrct2/object/ScenarioMetaObject.cpp index f2ac05e8d3c7..55dd8fde751f 100644 --- a/src/openrct2/object/ScenarioMetaObject.cpp +++ b/src/openrct2/object/ScenarioMetaObject.cpp @@ -13,6 +13,7 @@ #include "../PlatformEnvironment.h" #include "../core/Guard.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" namespace OpenRCT2 { diff --git a/src/openrct2/object/TerrainSurfaceObject.h b/src/openrct2/object/TerrainSurfaceObject.h index 6cb5fc13f9b3..60400bb0dfd2 100644 --- a/src/openrct2/object/TerrainSurfaceObject.h +++ b/src/openrct2/object/TerrainSurfaceObject.h @@ -10,6 +10,7 @@ #pragma once #include "../core/Money.hpp" +#include "../interface/Colour.h" #include "Object.h" struct CoordsXY; diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index c4bbefb70637..e625132c45fe 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -14,6 +14,7 @@ #include "../OpenRCT2.h" #include "../core/IStream.hpp" #include "../core/Json.hpp" +#include "../drawing/Drawing.h" #include "../localisation/Formatter.h" #include "../localisation/Language.h" #include "../localisation/StringIds.h" diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index f478095391ff..fc19aace0345 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -14,6 +14,7 @@ #include "../ReplayManager.h" #include "../config/Config.h" #include "../core/Guard.hpp" +#include "../drawing/Drawing.h" #include "../drawing/IDrawingEngine.h" #include "../drawing/Text.h" #include "../interface/Viewport.h" diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index a8815fba5602..9ee850c88678 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -12,6 +12,7 @@ #include "../../Game.h" #include "../../GameState.h" #include "../../config/Config.h" +#include "../../drawing/Drawing.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" #include "../../localisation/Formatting.h" diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 63d14015ce91..136ca2375d90 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -14,6 +14,7 @@ #include "../../GameState.h" #include "../../SpriteIds.h" #include "../../config/Config.h" +#include "../../drawing/Drawing.h" #include "../../drawing/LightFX.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index d40e33d14e1b..29df463840eb 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -16,6 +16,7 @@ #include "../../core/EnumUtils.hpp" #include "../../core/Numerics.hpp" #include "../../core/UTF8.h" +#include "../../drawing/Drawing.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatting.h" #include "../../localisation/StringIds.h" diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 5a6fc0e70cb6..498e5afa5d5c 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -14,6 +14,7 @@ #include "../../GameState.h" #include "../../config/Config.h" #include "../../core/Numerics.hpp" +#include "../../drawing/Drawing.h" #include "../../entity/PatrolArea.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index 0bdd4dff3fc9..99702fdd8808 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -12,6 +12,7 @@ #include "../../Game.h" #include "../../GameState.h" #include "../../config/Config.h" +#include "../../drawing/Drawing.h" #include "../../interface/Colour.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatting.h" diff --git a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp index 29b649884160..ddba85292346 100644 --- a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp @@ -8,6 +8,7 @@ *****************************************************************************/ #include "../../../SpriteIds.h" +#include "../../../drawing/Drawing.h" #include "../../../ride/Ride.h" #include "../../../ride/Track.h" #include "../../../ride/TrackPaint.h" diff --git a/src/openrct2/rct1/Csg.cpp b/src/openrct2/rct1/Csg.cpp index 990a48ff1207..12d14bcee517 100644 --- a/src/openrct2/rct1/Csg.cpp +++ b/src/openrct2/rct1/Csg.cpp @@ -14,78 +14,80 @@ #include "../drawing/Drawing.h" #include "../rct1/Limits.h" -using namespace OpenRCT2; - -std::string FindCsg1datAtLocation(u8string_view path) +namespace OpenRCT2 { - auto checkPath1 = Path::Combine(path, u8"Data", u8"CSG1.DAT"); - auto checkPath2 = Path::Combine(path, u8"Data", u8"CSG1.1"); - - // Since Linux is case sensitive (and macOS sometimes too), make sure we handle case properly. - std::string path1result = Path::ResolveCasing(checkPath1); - if (!path1result.empty()) + std::string FindCsg1datAtLocation(u8string_view path) { - return path1result; - } + auto checkPath1 = Path::Combine(path, u8"Data", u8"CSG1.DAT"); + auto checkPath2 = Path::Combine(path, u8"Data", u8"CSG1.1"); - std::string path2result = Path::ResolveCasing(checkPath2); - return path2result; -} + // Since Linux is case sensitive (and macOS sometimes too), make sure we handle case properly. + std::string path1result = Path::ResolveCasing(checkPath1); + if (!path1result.empty()) + { + return path1result; + } -bool Csg1datPresentAtLocation(u8string_view path) -{ - auto location = FindCsg1datAtLocation(path); - return !location.empty(); -} + std::string path2result = Path::ResolveCasing(checkPath2); + return path2result; + } -u8string FindCsg1idatAtLocation(u8string_view path) -{ - auto result1 = Path::ResolveCasing(Path::Combine(path, u8"Data", u8"CSG1I.DAT")); - if (!result1.empty()) + bool Csg1datPresentAtLocation(u8string_view path) { - return result1; + auto location = FindCsg1datAtLocation(path); + return !location.empty(); } - auto result2 = Path::ResolveCasing(Path::Combine(path, u8"RCTdeluxe_install", u8"Data", u8"CSG1I.DAT")); - return result2; -} - -bool Csg1idatPresentAtLocation(u8string_view path) -{ - std::string location = FindCsg1idatAtLocation(path); - return !location.empty(); -} -bool RCT1DataPresentAtLocation(u8string_view path) -{ - return Csg1datPresentAtLocation(path) && Csg1idatPresentAtLocation(path) && CsgAtLocationIsUsable(path); -} + u8string FindCsg1idatAtLocation(u8string_view path) + { + auto result1 = Path::ResolveCasing(Path::Combine(path, u8"Data", u8"CSG1I.DAT")); + if (!result1.empty()) + { + return result1; + } + auto result2 = Path::ResolveCasing(Path::Combine(path, u8"RCTdeluxe_install", u8"Data", u8"CSG1I.DAT")); + return result2; + } -bool CsgIsUsable(const Gx& csg) -{ - return csg.header.totalSize == RCT1::Limits::kLLCsg1DatFileSize && csg.header.numEntries == RCT1::Limits::kNumLLCsgEntries; -} + bool Csg1idatPresentAtLocation(u8string_view path) + { + std::string location = FindCsg1idatAtLocation(path); + return !location.empty(); + } -bool CsgAtLocationIsUsable(u8string_view path) -{ - auto csg1HeaderPath = FindCsg1idatAtLocation(path); - if (csg1HeaderPath.empty()) + bool RCT1DataPresentAtLocation(u8string_view path) { - return false; + return Csg1datPresentAtLocation(path) && Csg1idatPresentAtLocation(path) && CsgAtLocationIsUsable(path); } - auto csg1DataPath = FindCsg1datAtLocation(path); - if (csg1DataPath.empty()) + bool CsgIsUsable(const Gx& csg) { - return false; + return csg.header.totalSize == RCT1::Limits::kLLCsg1DatFileSize + && csg.header.numEntries == RCT1::Limits::kNumLLCsgEntries; } - auto fileHeader = FileStream(csg1HeaderPath, FileMode::open); - auto fileData = FileStream(csg1DataPath, FileMode::open); - size_t fileHeaderSize = fileHeader.GetLength(); - size_t fileDataSize = fileData.GetLength(); + bool CsgAtLocationIsUsable(u8string_view path) + { + auto csg1HeaderPath = FindCsg1idatAtLocation(path); + if (csg1HeaderPath.empty()) + { + return false; + } + + auto csg1DataPath = FindCsg1datAtLocation(path); + if (csg1DataPath.empty()) + { + return false; + } - Gx csg = {}; - csg.header.numEntries = static_cast(fileHeaderSize / sizeof(StoredG1Element)); - csg.header.totalSize = static_cast(fileDataSize); - return CsgIsUsable(csg); -} + auto fileHeader = FileStream(csg1HeaderPath, FileMode::open); + auto fileData = FileStream(csg1DataPath, FileMode::open); + size_t fileHeaderSize = fileHeader.GetLength(); + size_t fileDataSize = fileData.GetLength(); + + Gx csg = {}; + csg.header.numEntries = static_cast(fileHeaderSize / sizeof(StoredG1Element)); + csg.header.totalSize = static_cast(fileDataSize); + return CsgIsUsable(csg); + } +} // namespace OpenRCT2 diff --git a/src/openrct2/rct1/Csg.h b/src/openrct2/rct1/Csg.h index 74d66078d493..d96ac8444eb4 100644 --- a/src/openrct2/rct1/Csg.h +++ b/src/openrct2/rct1/Csg.h @@ -11,12 +11,15 @@ #include "../core/StringTypes.h" -struct Gx; +namespace OpenRCT2 +{ + struct Gx; -bool RCT1DataPresentAtLocation(u8string_view path); -std::string FindCsg1datAtLocation(u8string_view path); -bool Csg1datPresentAtLocation(u8string_view path); -std::string FindCsg1idatAtLocation(u8string_view path); -bool Csg1idatPresentAtLocation(u8string_view path); -bool CsgIsUsable(const Gx& csg); -bool CsgAtLocationIsUsable(u8string_view path); + bool RCT1DataPresentAtLocation(u8string_view path); + std::string FindCsg1datAtLocation(u8string_view path); + bool Csg1datPresentAtLocation(u8string_view path); + std::string FindCsg1idatAtLocation(u8string_view path); + bool Csg1idatPresentAtLocation(u8string_view path); + bool CsgIsUsable(const Gx& csg); + bool CsgAtLocationIsUsable(u8string_view path); +} // namespace OpenRCT2 diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 78a294d121dd..a3ec8cc8a05e 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -28,6 +28,7 @@ #include "../core/EnumUtils.hpp" #include "../core/Guard.hpp" #include "../core/Numerics.hpp" +#include "../drawing/Drawing.h" #include "../entity/EntityList.h" #include "../entity/EntityRegistry.h" #include "../entity/Peep.h" diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index 2c9c2ba962f1..df9c305a769c 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -11,6 +11,7 @@ #include "../Diagnostic.h" #include "../Game.h" #include "../audio/Audio.h" +#include "../drawing/Drawing.h" #include "../interface/Viewport.h" #include "../localisation/StringIds.h" #include "../object/FootpathObject.h" diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 29843cd2cf13..eb97b59ddbfc 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -26,6 +26,7 @@ #include "../core/Path.hpp" #include "../core/Random.hpp" #include "../core/UnitConversion.h" +#include "../drawing/Drawing.h" #include "../entity/Duck.h" #include "../entity/Guest.h" #include "../entity/Staff.h" diff --git a/src/openrct2/scenes/title/TitleScene.cpp b/src/openrct2/scenes/title/TitleScene.cpp index ebcb6605723f..cadfc12206db 100644 --- a/src/openrct2/scenes/title/TitleScene.cpp +++ b/src/openrct2/scenes/title/TitleScene.cpp @@ -18,6 +18,7 @@ #include "../../audio/Audio.h" #include "../../config/Config.h" #include "../../core/Console.hpp" +#include "../../drawing/Drawing.h" #include "../../drawing/Text.h" #include "../../interface/Screenshot.h" #include "../../network/Network.h" diff --git a/src/openrct2/scenes/title/TitleScene.h b/src/openrct2/scenes/title/TitleScene.h index 03be7cf5d3cc..10fed6a85a3d 100644 --- a/src/openrct2/scenes/title/TitleScene.h +++ b/src/openrct2/scenes/title/TitleScene.h @@ -9,9 +9,10 @@ #pragma once -#include "../../drawing/Drawing.h" #include "../Scene.h" +#include + struct ITitleSequencePlayer; namespace OpenRCT2 diff --git a/src/openrct2/scripting/bindings/world/ScPark.cpp b/src/openrct2/scripting/bindings/world/ScPark.cpp index 2f393db21cff..a855fac0e90c 100644 --- a/src/openrct2/scripting/bindings/world/ScPark.cpp +++ b/src/openrct2/scripting/bindings/world/ScPark.cpp @@ -15,6 +15,7 @@ #include "../../../Date.h" #include "../../../GameState.h" #include "../../../core/String.hpp" + #include "../../../drawing/Drawing.h" #include "../../../entity/Guest.h" #include "../../../management/Finance.h" #include "../../../management/NewsItem.h" diff --git a/src/openrct2/world/Climate.cpp b/src/openrct2/world/Climate.cpp index f3dbeccf96a2..0dfe3c7c048e 100644 --- a/src/openrct2/world/Climate.cpp +++ b/src/openrct2/world/Climate.cpp @@ -19,6 +19,7 @@ #include "../audio/AudioMixer.h" #include "../config/Config.h" #include "../core/EnumUtils.hpp" +#include "../drawing/Drawing.h" #include "../object/ClimateObject.h" #include "../object/ObjectManager.h" #include "../profiling/Profiling.h" diff --git a/test/tests/PlayTests.cpp b/test/tests/PlayTests.cpp index 46db582abb64..941edf561397 100644 --- a/test/tests/PlayTests.cpp +++ b/test/tests/PlayTests.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp index fdf928140666..0d9de738c9e0 100644 --- a/test/tests/S6ImportExportTests.cpp +++ b/test/tests/S6ImportExportTests.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include From 7b2be3c9f9fc1f8259972dfaf24fce039f40aa69 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 26 Dec 2025 09:33:03 -0300 Subject: [PATCH 180/222] Remove unused include from /openrct2-cli folder --- src/openrct2-cli/Cli.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/openrct2-cli/Cli.cpp b/src/openrct2-cli/Cli.cpp index 27eea43ac47a..6f84cdd675c5 100644 --- a/src/openrct2-cli/Cli.cpp +++ b/src/openrct2-cli/Cli.cpp @@ -10,7 +10,6 @@ #include #include #include -#include using namespace OpenRCT2; From c9821b12028e8cd11aea936f6a745483fdd3fb1c Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:24:34 -0300 Subject: [PATCH 181/222] Remove unused includes in miscellaneous files (#25707) Cherry-picked from "make MechanicStatus a strong enum" branch --- src/openrct2-ui/windows/Ride.cpp | 3 --- src/openrct2/actions/CheatSetAction.cpp | 4 ---- src/openrct2/entity/Staff.cpp | 12 ------------ src/openrct2/rct1/RCT1.h | 1 - src/openrct2/rct1/S4Importer.cpp | 5 ----- src/openrct2/rct2/RCT2.h | 1 - src/openrct2/rct2/S6Importer.cpp | 2 -- src/openrct2/ride/Ride.cpp | 11 ----------- src/openrct2/ride/Vehicle.cpp | 8 -------- 9 files changed, 47 deletions(-) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index b8aecb329794..b5df721dbd3e 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -53,15 +53,12 @@ #include #include #include -#include #include #include #include -#include #include #include #include -#include #include #include #include diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 4b38f9fdcd8b..bc2f8af50d6a 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -10,7 +10,6 @@ #include "CheatSetAction.h" #include "../Cheats.h" -#include "../Context.h" #include "../Diagnostic.h" #include "../GameState.h" #include "../config/Config.h" @@ -32,13 +31,10 @@ #include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" -#include "../world/Banner.h" #include "../world/Climate.h" -#include "../world/Footpath.h" #include "../world/Location.hpp" #include "../world/Map.h" #include "../world/Park.h" -#include "../world/Scenery.h" #include "../world/tile_element/PathElement.h" #include "../world/tile_element/SmallSceneryElement.h" #include "../world/tile_element/SurfaceElement.h" diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index 7f171bdd3bcb..9dea6b21468f 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -11,38 +11,26 @@ #include "../Context.h" #include "../Diagnostic.h" -#include "../Game.h" #include "../GameState.h" -#include "../Input.h" #include "../actions/StaffSetOrdersAction.h" #include "../audio/Audio.h" #include "../core/DataSerialiser.h" -#include "../core/EnumUtils.hpp" #include "../entity/EntityList.h" #include "../entity/EntityRegistry.h" #include "../interface/Viewport.h" #include "../localisation/StringIds.h" -#include "../management/Finance.h" -#include "../network/Network.h" -#include "../object/ObjectEntryManager.h" -#include "../object/ObjectLimits.h" -#include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/PathAdditionEntry.h" #include "../object/PeepAnimationsObject.h" -#include "../object/SceneryGroupEntry.h" #include "../object/SmallSceneryEntry.h" -#include "../object/TerrainSurfaceObject.h" #include "../paint/tile_element/Paint.TileElement.h" #include "../peep/GuestPathfinding.h" #include "../ride/RideData.h" -#include "../ride/Station.h" #include "../ride/Track.h" #include "../ride/Vehicle.h" #include "../scenario/Scenario.h" #include "../util/Util.h" #include "../windows/Intent.h" -#include "../world/Entrance.h" #include "../world/Footpath.h" #include "../world/Map.h" #include "../world/Scenery.h" diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 6a84d2893f55..62329f5ea3c4 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -9,7 +9,6 @@ #pragma once -#include "../Diagnostic.h" #include "../core/FixedPoint.hpp" #include "../rct12/RCT12.h" #include "../ride/Angles.h" diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 63484a784776..16681818e12f 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -35,7 +35,6 @@ #include "../entity/Staff.h" #include "../localisation/Formatting.h" #include "../management/Award.h" -#include "../management/Finance.h" #include "../management/Marketing.h" #include "../management/NewsItem.h" #include "../object/ObjectLimits.h" @@ -52,9 +51,7 @@ #include "../ride/Ride.h" #include "../ride/RideData.h" #include "../ride/RideManager.hpp" -#include "../ride/Station.h" #include "../ride/Track.h" -#include "../ride/TrainManager.h" #include "../ride/Vehicle.h" #include "../sawyer_coding/SawyerCoding.h" #include "../scenario/Scenario.h" @@ -62,8 +59,6 @@ #include "../scenario/ScenarioRepository.h" #include "../scenario/ScenarioSources.h" #include "../world/Climate.h" -#include "../world/Entrance.h" -#include "../world/Footpath.h" #include "../world/Map.h" #include "../world/MapAnimation.h" #include "../world/Park.h" diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index d5e0e5bf7f1d..342706a82243 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -17,7 +17,6 @@ #include "../world/ParkData.h" #include "Limits.h" -#include #include struct RideObjectEntry; diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 8e1d5c340c84..5050fcf3a3e4 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -25,7 +25,6 @@ #include "../entity/PatrolArea.h" #include "../entity/Staff.h" #include "../localisation/Formatting.h" -#include "../object/ObjectLimits.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" @@ -42,7 +41,6 @@ #include "../ride/RideData.h" #include "../ride/Vehicle.h" #include "../sawyer_coding/SawyerChunkReader.h" -#include "../sawyer_coding/SawyerCoding.h" #include "../scenario/Scenario.h" #include "../scenario/ScenarioRepository.h" #include "../scenario/ScenarioSources.h" diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index a3ec8cc8a05e..2ef6a1737240 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -13,7 +13,6 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../Editor.h" -#include "../Game.h" #include "../GameState.h" #include "../Input.h" #include "../OpenRCT2.h" @@ -22,7 +21,6 @@ #include "../actions/RideSetStatusAction.h" #include "../actions/RideSetVehicleAction.h" #include "../audio/Audio.h" -#include "../audio/AudioMixer.h" #include "../config/Config.h" #include "../core/BitSet.hpp" #include "../core/EnumUtils.hpp" @@ -37,10 +35,7 @@ #include "../interface/WindowBase.h" #include "../localisation/Formatter.h" #include "../localisation/Formatting.h" -#include "../management/Finance.h" -#include "../management/Marketing.h" #include "../management/NewsItem.h" -#include "../network/Network.h" #include "../object/MusicObject.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" @@ -52,14 +47,12 @@ #include "../ui/WindowManager.h" #include "../util/Util.h" #include "../windows/Intent.h" -#include "../world/Banner.h" #include "../world/Climate.h" #include "../world/Entrance.h" #include "../world/Footpath.h" #include "../world/Location.hpp" #include "../world/Map.h" #include "../world/Park.h" -#include "../world/Scenery.h" #include "../world/TileElementsView.h" #include "../world/tile_element/EntranceElement.h" #include "../world/tile_element/PathElement.h" @@ -75,16 +68,12 @@ #include "Track.h" #include "TrackData.h" #include "TrackDesign.h" -#include "TrainManager.h" #include "Vehicle.h" #include -#include -#include #include #include #include -#include using namespace OpenRCT2; using namespace OpenRCT2::TrackMetaData; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index d9c556c0314f..52808a5ddb3e 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -12,13 +12,10 @@ #include "../Context.h" #include "../Diagnostic.h" #include "../Editor.h" -#include "../Game.h" #include "../GameState.h" #include "../OpenRCT2.h" #include "../actions/RideSetStatusAction.h" #include "../audio/Audio.h" -#include "../audio/AudioChannel.h" -#include "../audio/AudioMixer.h" #include "../config/Config.h" #include "../core/EnumUtils.hpp" #include "../core/FixedPoint.hpp" @@ -35,7 +32,6 @@ #include "../math/Trigonometry.hpp" #include "../object/SmallSceneryEntry.h" #include "../paint/vehicle/Vehicle.MiniGolf.h" -#include "../platform/Platform.h" #include "../profiling/Profiling.h" #include "../rct12/RCT12.h" #include "../scenario/Scenario.h" @@ -46,18 +42,14 @@ #include "../windows/Intent.h" #include "../world/Map.h" #include "../world/MapAnimation.h" -#include "../world/Park.h" -#include "../world/Scenery.h" #include "../world/tile_element/LargeSceneryElement.h" #include "../world/tile_element/PathElement.h" #include "../world/tile_element/SmallSceneryElement.h" #include "../world/tile_element/SurfaceElement.h" #include "../world/tile_element/TrackElement.h" #include "../world/tile_element/WallElement.h" -#include "CableLift.h" #include "Ride.h" #include "RideData.h" -#include "Station.h" #include "Track.h" #include "TrackData.h" #include "TrainManager.h" From 6a6bd8e1aaad657bc4d4713395c99ac544b9ea11 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Tue, 6 Jan 2026 21:03:31 +0100 Subject: [PATCH 182/222] Reduce dependencies for Ride.h (#25757) --- src/openrct2-ui/interface/FileBrowser.cpp | 1 + src/openrct2-ui/windows/EditorBottomToolbar.cpp | 1 + src/openrct2-ui/windows/EditorObjectSelection.cpp | 1 + src/openrct2-ui/windows/MazeConstruction.cpp | 1 + src/openrct2-ui/windows/Ride.cpp | 1 + src/openrct2-ui/windows/RideConstruction.cpp | 1 + src/openrct2/EditorObjectSelectionSession.cpp | 1 + src/openrct2/ReplayManager.cpp | 2 +- src/openrct2/actions/BannerPlaceAction.cpp | 1 + src/openrct2/actions/CheatSetAction.cpp | 1 + src/openrct2/actions/FootpathLayoutPlaceAction.cpp | 1 + src/openrct2/actions/FootpathPlaceAction.cpp | 1 + src/openrct2/actions/GameActionRegistry.cpp | 1 + src/openrct2/actions/LargeSceneryPlaceAction.cpp | 1 + src/openrct2/actions/MazePlaceTrackAction.cpp | 1 + src/openrct2/actions/MazeSetTrackAction.cpp | 1 + src/openrct2/actions/ParkEntrancePlaceAction.cpp | 1 + src/openrct2/actions/RideEntranceExitPlaceAction.cpp | 1 + src/openrct2/actions/RideSetSettingAction.cpp | 1 + src/openrct2/actions/RideSetStatusAction.cpp | 1 + src/openrct2/actions/TrackPlaceAction.cpp | 1 + src/openrct2/actions/TrackRemoveAction.cpp | 1 + src/openrct2/entity/EntityBase.cpp | 1 + src/openrct2/management/Award.cpp | 1 + src/openrct2/network/NetworkConnection.cpp | 1 + src/openrct2/network/NetworkGroup.cpp | 3 ++- src/openrct2/object/MusicObject.cpp | 1 + src/openrct2/paint/tile_element/Paint.LargeScenery.cpp | 1 + src/openrct2/paint/tile_element/Paint.Wall.cpp | 1 + src/openrct2/park/ParkFile.cpp | 1 + src/openrct2/rct2/RCT2.cpp | 1 + src/openrct2/ride/Ride.h | 6 ++---- src/openrct2/ride/RideConstruction.cpp | 1 + src/openrct2/ride/RideRatings.cpp | 1 + src/openrct2/ride/Track.cpp | 1 + src/openrct2/ride/TrackDesign.cpp | 1 + src/openrct2/ride/TrackDesignSave.cpp | 1 + src/openrct2/scenario/Scenario.cpp | 2 ++ src/openrct2/scenario/ScenarioObjective.cpp | 1 + src/openrct2/scripting/bindings/entity/ScGuest.cpp | 1 + src/openrct2/scripting/bindings/world/ScAward.cpp | 1 + src/openrct2/world/TileInspector.cpp | 1 + 42 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/openrct2-ui/interface/FileBrowser.cpp b/src/openrct2-ui/interface/FileBrowser.cpp index 272e7b9ac50b..bff761d54e4d 100644 --- a/src/openrct2-ui/interface/FileBrowser.cpp +++ b/src/openrct2-ui/interface/FileBrowser.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/EditorBottomToolbar.cpp b/src/openrct2-ui/windows/EditorBottomToolbar.cpp index 4f224caeed7f..6d4d1e151c90 100644 --- a/src/openrct2-ui/windows/EditorBottomToolbar.cpp +++ b/src/openrct2-ui/windows/EditorBottomToolbar.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index f89080ead7d9..c23c3e40d4d4 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index c816048aae61..61e300428730 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index b5df721dbd3e..a160ce345fb6 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index b5049b47da9e..41039bd2ba84 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2/EditorObjectSelectionSession.cpp b/src/openrct2/EditorObjectSelectionSession.cpp index d709534e81e9..d9be6bc77242 100644 --- a/src/openrct2/EditorObjectSelectionSession.cpp +++ b/src/openrct2/EditorObjectSelectionSession.cpp @@ -15,6 +15,7 @@ #include "Game.h" #include "GameState.h" #include "OpenRCT2.h" +#include "actions/ResultWithMessage.h" #include "drawing/Drawing.h" #include "entity/EntityList.h" #include "entity/Guest.h" diff --git a/src/openrct2/ReplayManager.cpp b/src/openrct2/ReplayManager.cpp index 3ac51c759e60..b7e30e1942f1 100644 --- a/src/openrct2/ReplayManager.cpp +++ b/src/openrct2/ReplayManager.cpp @@ -21,7 +21,6 @@ #include "actions/FootpathPlaceAction.h" #include "actions/GameAction.h" #include "actions/RideEntranceExitPlaceAction.h" -// #include "actions/RideSetSettingAction.h" #include "actions/TileModifyAction.h" #include "actions/TrackPlaceAction.h" #include "config/Config.h" @@ -30,6 +29,7 @@ #include "core/EnumUtils.hpp" #include "core/FileStream.h" #include "core/FileSystem.hpp" +#include "core/Guard.hpp" #include "core/Path.hpp" #include "core/String.hpp" #include "entity/EntityRegistry.h" diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 653bc0a42bd0..0cdf0e1bcffa 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -10,6 +10,7 @@ #include "BannerPlaceAction.h" #include "../Diagnostic.h" +#include "../core/Guard.hpp" #include "../management/Finance.h" #include "../object/BannerSceneryEntry.h" #include "../object/ObjectEntryManager.h" diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index bc2f8af50d6a..68746c713b93 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -14,6 +14,7 @@ #include "../GameState.h" #include "../config/Config.h" #include "../core/EnumUtils.hpp" +#include "../core/Guard.hpp" #include "../core/String.hpp" #include "../drawing/Drawing.h" #include "../entity/Duck.h" diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index ca5579dceed8..393ba2877a94 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -12,6 +12,7 @@ #include "../Cheats.h" #include "../GameState.h" #include "../OpenRCT2.h" +#include "../core/Guard.hpp" #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index a5cd479dd1ee..00bc6093ee40 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -14,6 +14,7 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../OpenRCT2.h" +#include "../core/Guard.hpp" #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" diff --git a/src/openrct2/actions/GameActionRegistry.cpp b/src/openrct2/actions/GameActionRegistry.cpp index afeeaaa43b2e..9d8a2bd15c64 100644 --- a/src/openrct2/actions/GameActionRegistry.cpp +++ b/src/openrct2/actions/GameActionRegistry.cpp @@ -7,6 +7,7 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ +#include "../core/Guard.hpp" #include "BalloonPressAction.h" #include "BannerPlaceAction.h" #include "BannerRemoveAction.h" diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 9f08d29860ba..e98e9e797905 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -12,6 +12,7 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../OpenRCT2.h" +#include "../core/Guard.hpp" #include "../management/Finance.h" #include "../object/LargeSceneryEntry.h" #include "../object/ObjectEntryManager.h" diff --git a/src/openrct2/actions/MazePlaceTrackAction.cpp b/src/openrct2/actions/MazePlaceTrackAction.cpp index 3d15fb1eda9c..cbe10d5cec6d 100644 --- a/src/openrct2/actions/MazePlaceTrackAction.cpp +++ b/src/openrct2/actions/MazePlaceTrackAction.cpp @@ -10,6 +10,7 @@ #include "../Diagnostic.h" #include "../GameState.h" +#include "../core/Guard.hpp" #include "../management/Finance.h" #include "../ride/MazeCost.h" #include "../ride/RideData.h" diff --git a/src/openrct2/actions/MazeSetTrackAction.cpp b/src/openrct2/actions/MazeSetTrackAction.cpp index 423d63f948c6..0ad14ab426f8 100644 --- a/src/openrct2/actions/MazeSetTrackAction.cpp +++ b/src/openrct2/actions/MazeSetTrackAction.cpp @@ -12,6 +12,7 @@ #include "../Cheats.h" #include "../Diagnostic.h" #include "../GameState.h" +#include "../core/Guard.hpp" #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index f28dc013bf3e..0e240726639e 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -12,6 +12,7 @@ #include "../Cheats.h" #include "../GameState.h" #include "../OpenRCT2.h" +#include "../core/Guard.hpp" #include "../core/MemoryStream.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 66ed9aa0b21c..c30a2bfa5736 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -12,6 +12,7 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../actions/RideEntranceExitRemoveAction.h" +#include "../core/Guard.hpp" #include "../management/Finance.h" #include "../ride/Ride.h" #include "../ride/Station.h" diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index e11e2debfce6..604dc99c2a34 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -13,6 +13,7 @@ #include "../Diagnostic.h" #include "../GameState.h" #include "../drawing/Drawing.h" +#include "../object/MusicObject.h" #include "../object/ObjectManager.h" #include "../ride/Ride.h" #include "../ride/RideData.h" diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index a0c8ca3c6073..a25f33f4a932 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -19,6 +19,7 @@ #include "../ui/WindowManager.h" #include "../world/Map.h" #include "../world/Park.h" +#include "ResultWithMessage.h" namespace OpenRCT2::GameActions { diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 1f8a285a63df..73fb179346ea 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -28,6 +28,7 @@ #include "../world/tile_element/Slope.h" #include "../world/tile_element/SurfaceElement.h" #include "../world/tile_element/TrackElement.h" +#include "ResultWithMessage.h" #include "RideSetSettingAction.h" namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index caa5df46ec46..424c0ca5b81f 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -20,6 +20,7 @@ #include "../world/Map.h" #include "../world/tile_element/SurfaceElement.h" #include "../world/tile_element/TrackElement.h" +#include "ResultWithMessage.h" #include "RideSetSettingAction.h" namespace OpenRCT2::GameActions diff --git a/src/openrct2/entity/EntityBase.cpp b/src/openrct2/entity/EntityBase.cpp index 9e6aacb0beb5..c477fedd1aab 100644 --- a/src/openrct2/entity/EntityBase.cpp +++ b/src/openrct2/entity/EntityBase.cpp @@ -10,6 +10,7 @@ #include "EntityBase.h" #include "../core/DataSerialiser.h" +#include "../core/Guard.hpp" #include "../interface/Viewport.h" using namespace OpenRCT2; diff --git a/src/openrct2/management/Award.cpp b/src/openrct2/management/Award.cpp index 9f898691c387..650f31354d2a 100644 --- a/src/openrct2/management/Award.cpp +++ b/src/openrct2/management/Award.cpp @@ -13,6 +13,7 @@ #include "../config/Config.h" #include "../entity/EntityList.h" #include "../entity/Guest.h" +#include "../localisation/Formatter.h" #include "../profiling/Profiling.h" #include "../ride/Ride.h" #include "../ride/RideData.h" diff --git a/src/openrct2/network/NetworkConnection.cpp b/src/openrct2/network/NetworkConnection.cpp index 1f7cec090c36..e2ee68d17ce6 100644 --- a/src/openrct2/network/NetworkConnection.cpp +++ b/src/openrct2/network/NetworkConnection.cpp @@ -13,6 +13,7 @@ #include "../Diagnostic.h" #include "../core/Diagnostics.hpp" + #include "../core/Guard.hpp" #include "../core/String.hpp" #include "../localisation/Formatting.h" #include "../platform/Platform.h" diff --git a/src/openrct2/network/NetworkGroup.cpp b/src/openrct2/network/NetworkGroup.cpp index f9a171d15eaf..14d78675285a 100644 --- a/src/openrct2/network/NetworkGroup.cpp +++ b/src/openrct2/network/NetworkGroup.cpp @@ -11,7 +11,8 @@ #include "NetworkGroup.h" - #include "../openrct2/core/Json.hpp" + #include "../core/Guard.hpp" + #include "../core/Json.hpp" #include "NetworkAction.h" #include "NetworkTypes.h" diff --git a/src/openrct2/object/MusicObject.cpp b/src/openrct2/object/MusicObject.cpp index 9f2e254f33c5..33867b439182 100644 --- a/src/openrct2/object/MusicObject.cpp +++ b/src/openrct2/object/MusicObject.cpp @@ -20,6 +20,7 @@ #include "../core/Path.hpp" #include "../drawing/Drawing.h" #include "../drawing/Image.h" +#include "../localisation/Formatter.h" #include "../localisation/StringIds.h" #include "../ride/Ride.h" #include "RideObject.h" diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index 29df463840eb..d679ac7b232b 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -18,6 +18,7 @@ #include "../../core/UTF8.h" #include "../../drawing/Drawing.h" #include "../../interface/Viewport.h" +#include "../../localisation/Formatter.h" #include "../../localisation/Formatting.h" #include "../../localisation/StringIds.h" #include "../../object/LargeSceneryEntry.h" diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index 99702fdd8808..0f92c3205942 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -15,6 +15,7 @@ #include "../../drawing/Drawing.h" #include "../../interface/Colour.h" #include "../../interface/Viewport.h" +#include "../../localisation/Formatter.h" #include "../../localisation/Formatting.h" #include "../../localisation/StringIds.h" #include "../../object/WallSceneryEntry.h" diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 9ecefbf0f616..85372152e0bf 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -37,6 +37,7 @@ #include "../entity/PatrolArea.h" #include "../entity/Staff.h" #include "../interface/Viewport.h" +#include "../localisation/Formatter.h" #include "../management/Award.h" #include "../management/Finance.h" #include "../management/NewsItem.h" diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/rct2/RCT2.cpp index ffe99d129d22..647ea6cb9d04 100644 --- a/src/openrct2/rct2/RCT2.cpp +++ b/src/openrct2/rct2/RCT2.cpp @@ -18,6 +18,7 @@ #include "../ride/Track.h" #include +#include namespace OpenRCT2::RCT2 { diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 29bb11ff6271..0f3fbf633b69 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -10,13 +10,9 @@ #pragma once #include "../Limits.h" -#include "../actions/ResultWithMessage.h" #include "../core/BitSet.hpp" #include "../core/FixedPoint.hpp" #include "../core/FlagHolder.hpp" -#include "../localisation/Formatter.h" -#include "../object/MusicObject.h" -#include "../rct2/DATLimits.h" #include "../rct2/Limits.h" #include "RideColour.h" #include "RideEntry.h" @@ -35,6 +31,7 @@ struct IObjectManager; struct Ride; struct RideTypeDescriptor; struct Guest; +struct OpenRCT2String; struct Staff; struct Vehicle; struct RideObjectEntry; @@ -43,6 +40,7 @@ struct ResultWithMessage; namespace OpenRCT2 { class Formatter; + class MusicObject; class StationObject; struct TileElement; diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index cc6e902ae62f..4e1938f0444b 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -12,6 +12,7 @@ #include "../Context.h" #include "../GameState.h" #include "../Input.h" +#include "../actions/ResultWithMessage.h" #include "../actions/RideEntranceExitRemoveAction.h" #include "../actions/RideSetSettingAction.h" #include "../actions/RideSetStatusAction.h" diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index b2b8918ed8de..a5a957599837 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -13,6 +13,7 @@ #include "../Context.h" #include "../GameState.h" #include "../OpenRCT2.h" +#include "../core/Guard.hpp" #include "../core/Money.hpp" #include "../core/UnitConversion.h" #include "../profiling/Profiling.h" diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index f99ac7984d9d..f0539ee29d1f 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -13,6 +13,7 @@ #include "../Diagnostic.h" #include "../Game.h" #include "../GameState.h" +#include "../actions/ResultWithMessage.h" #include "../audio/Audio.h" #include "../config/Config.h" #include "../interface/Viewport.h" diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index d45c13ffbdbc..acc7999e69e8 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -21,6 +21,7 @@ #include "../actions/LargeSceneryPlaceAction.h" #include "../actions/LargeSceneryRemoveAction.h" #include "../actions/MazePlaceTrackAction.h" +#include "../actions/ResultWithMessage.h" #include "../actions/RideCreateAction.h" #include "../actions/RideDemolishAction.h" #include "../actions/RideEntranceExitPlaceAction.h" diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index df9c305a769c..1d946ecbd712 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -13,6 +13,7 @@ #include "../audio/Audio.h" #include "../drawing/Drawing.h" #include "../interface/Viewport.h" +#include "../localisation/Formatter.h" #include "../localisation/StringIds.h" #include "../object/FootpathObject.h" #include "../object/FootpathRailingsObject.h" diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index eb97b59ddbfc..27ba9ad74bdb 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -18,6 +18,7 @@ #include "../OpenRCT2.h" #include "../ParkImporter.h" #include "../PlatformEnvironment.h" +#include "../actions/ResultWithMessage.h" #include "../audio/Audio.h" #include "../config/Config.h" #include "../core/BitSet.hpp" @@ -31,6 +32,7 @@ #include "../entity/Guest.h" #include "../entity/Staff.h" #include "../interface/Viewport.h" +#include "../localisation/Formatter.h" #include "../management/Award.h" #include "../management/Finance.h" #include "../management/Marketing.h" diff --git a/src/openrct2/scenario/ScenarioObjective.cpp b/src/openrct2/scenario/ScenarioObjective.cpp index 856d6e4da1d2..effe18255089 100644 --- a/src/openrct2/scenario/ScenarioObjective.cpp +++ b/src/openrct2/scenario/ScenarioObjective.cpp @@ -12,6 +12,7 @@ #include "../GameState.h" #include "../config/Config.h" #include "../core/UnitConversion.h" +#include "../localisation/Formatter.h" #include "../object/ObjectLimits.h" #include "../ride/RideManager.hpp" #include "Scenario.h" diff --git a/src/openrct2/scripting/bindings/entity/ScGuest.cpp b/src/openrct2/scripting/bindings/entity/ScGuest.cpp index 36d0f2702aa9..9eb551832dbc 100644 --- a/src/openrct2/scripting/bindings/entity/ScGuest.cpp +++ b/src/openrct2/scripting/bindings/entity/ScGuest.cpp @@ -13,6 +13,7 @@ #include "../../../GameState.h" #include "../../../entity/Guest.h" + #include "../../../localisation/Formatter.h" #include "../../../localisation/Formatting.h" #include "../../../object/ObjectManager.h" #include "../../../object/PeepAnimationsObject.h" diff --git a/src/openrct2/scripting/bindings/world/ScAward.cpp b/src/openrct2/scripting/bindings/world/ScAward.cpp index 875365d6334b..5bb814b2388a 100644 --- a/src/openrct2/scripting/bindings/world/ScAward.cpp +++ b/src/openrct2/scripting/bindings/world/ScAward.cpp @@ -12,6 +12,7 @@ #include "ScAward.hpp" #include "../../../GameState.h" + #include "../../../localisation/Formatter.h" #include "../../../localisation/Formatting.h" #include "../../../management/Award.h" #include "../../../windows/Intent.h" diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index 6ef5d97e4404..6875c5f6a7de 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -11,6 +11,7 @@ #include "../Diagnostic.h" #include "../actions/GameAction.h" +#include "../core/Guard.hpp" #include "../object/LargeSceneryEntry.h" #include "../ride/Station.h" #include "../ride/Track.h" From 046107db93868b25eb56ea7dea56d66e262df810 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 26 Dec 2025 09:34:46 -0300 Subject: [PATCH 183/222] Remove unused includes from /openrct2-win folder --- src/openrct2-win/openrct2-win.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/openrct2-win/openrct2-win.cpp b/src/openrct2-win/openrct2-win.cpp index d6c6bc801c52..79836474683b 100644 --- a/src/openrct2-win/openrct2-win.cpp +++ b/src/openrct2-win/openrct2-win.cpp @@ -23,8 +23,6 @@ #include #include #include -#include -#include #include #include From c668066fabf58227f93f647304cd55e3b83475d2 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Mon, 5 Jan 2026 09:55:57 -0300 Subject: [PATCH 184/222] Convert TerrainSurfaceFlags into a FlagHolder Co-Authored-By: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> --- src/openrct2/object/TerrainSurfaceObject.cpp | 10 +++++----- src/openrct2/object/TerrainSurfaceObject.h | 9 +++++---- src/openrct2/paint/tile_element/Paint.Surface.cpp | 4 ++-- src/openrct2/world/tile_element/SurfaceElement.cpp | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/openrct2/object/TerrainSurfaceObject.cpp b/src/openrct2/object/TerrainSurfaceObject.cpp index a8a5f161b370..3573c084217e 100644 --- a/src/openrct2/object/TerrainSurfaceObject.cpp +++ b/src/openrct2/object/TerrainSurfaceObject.cpp @@ -25,7 +25,7 @@ namespace OpenRCT2 GetStringTable().Sort(); NameStringId = LanguageAllocateObjectString(GetName()); IconImageId = LoadImages(); - if ((Flags & TerrainSurfaceFlags::smoothWithSelf) || (Flags & TerrainSurfaceFlags::smoothWithOther)) + if (Flags.hasAny(TerrainSurfaceFlag::smoothWithSelf, TerrainSurfaceFlag::smoothWithOther)) { PatternBaseImageId = IconImageId + 1; EntryBaseImageId = PatternBaseImageId + 6; @@ -87,11 +87,11 @@ namespace OpenRCT2 Colour = Colour::FromString(Json::GetString(properties["colour"]), kNoValue); Rotations = Json::GetNumber(properties["rotations"], 1); Price = Json::GetNumber(properties["price"]); - Flags = Json::GetFlags( + Flags = Json::GetFlagHolder( properties, - { { "smoothWithSelf", TerrainSurfaceFlags::smoothWithSelf }, - { "smoothWithOther", TerrainSurfaceFlags::smoothWithOther }, - { "canGrow", TerrainSurfaceFlags::canGrow } }); + { { "smoothWithSelf", TerrainSurfaceFlag::smoothWithSelf }, + { "smoothWithOther", TerrainSurfaceFlag::smoothWithOther }, + { "canGrow", TerrainSurfaceFlag::canGrow } }); const auto mapColours = properties["mapColours"]; const bool mapColoursAreValid = mapColours.is_array() && mapColours.size() == std::size(MapColours); diff --git a/src/openrct2/object/TerrainSurfaceObject.h b/src/openrct2/object/TerrainSurfaceObject.h index 60400bb0dfd2..b9bf9be46308 100644 --- a/src/openrct2/object/TerrainSurfaceObject.h +++ b/src/openrct2/object/TerrainSurfaceObject.h @@ -17,12 +17,13 @@ struct CoordsXY; namespace OpenRCT2 { - enum TerrainSurfaceFlags + enum class TerrainSurfaceFlag : uint8_t { - smoothWithSelf = 1 << 0, - smoothWithOther = 1 << 1, - canGrow = 1 << 2, + smoothWithSelf, + smoothWithOther, + canGrow, }; + using TerrainSurfaceFlags = FlagHolder; class TerrainSurfaceObject final : public Object { diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index bff92c9d418c..e52ca4ea5da2 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -256,7 +256,7 @@ static bool SurfaceShouldSmoothSelf(const TerrainSurfaceObject* surfaceObject) if (surfaceObject == nullptr) return false; - return surfaceObject->Flags & TerrainSurfaceFlags::smoothWithSelf; + return surfaceObject->Flags.has(TerrainSurfaceFlag::smoothWithSelf); } static bool SurfaceShouldSmooth(const TerrainSurfaceObject* surfaceObject) @@ -264,7 +264,7 @@ static bool SurfaceShouldSmooth(const TerrainSurfaceObject* surfaceObject) if (surfaceObject == nullptr) return false; - return surfaceObject->Flags & TerrainSurfaceFlags::smoothWithOther; + return surfaceObject->Flags.has(TerrainSurfaceFlag::smoothWithOther); } static ImageId GetEdgeImageWithOffset(const TerrainEdgeObject* edgeObject, uint32_t offset) diff --git a/src/openrct2/world/tile_element/SurfaceElement.cpp b/src/openrct2/world/tile_element/SurfaceElement.cpp index 5bb5c9ca4494..1e4c2707e77a 100644 --- a/src/openrct2/world/tile_element/SurfaceElement.cpp +++ b/src/openrct2/world/tile_element/SurfaceElement.cpp @@ -69,7 +69,7 @@ namespace OpenRCT2 const auto* surfaceObject = objMgr.GetLoadedObject(surfaceStyle); if (surfaceObject != nullptr) { - if (surfaceObject->Flags & TerrainSurfaceFlags::canGrow) + if (surfaceObject->Flags.has(TerrainSurfaceFlag::canGrow)) { return true; } From 214b5f7203a8aa23e89b0f257a15e11004aee854 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Mon, 5 Jan 2026 10:03:24 -0300 Subject: [PATCH 185/222] Make CarSpriteFlag a strong enum --- src/openrct2/object/RideObject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index c87dd3f2b176..a1385ea6cf61 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -132,7 +132,7 @@ namespace OpenRCT2 } } - enum CarSpriteFlag : uint8_t + enum class CarSpriteFlag : uint8_t { flat, gentleSlopes, From 92df47423b920f6291743ca4808df5569985fc66 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Mon, 5 Jan 2026 11:40:43 -0300 Subject: [PATCH 186/222] Make InputFlag a strong enum --- src/openrct2/Input.h | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/openrct2/Input.h b/src/openrct2/Input.h index 8cfc09d7cee3..d5898444db99 100644 --- a/src/openrct2/Input.h +++ b/src/openrct2/Input.h @@ -15,26 +15,18 @@ namespace OpenRCT2 { - enum InputFlag + enum class InputFlag : uint8_t { widgetPressed, - // The dropdown can stay open if the mouse is released, set on flag Dropdown::Flag::StayOpen. dropdownStayOpen, - - // The mouse has been released and the dropdown is still open. - // InputFlag::dropdownStayOpen is already set if this happens. + // The mouse has been released and the dropdown is still open. dropdownStayOpen is already set if this happens. dropdownMouseUp, - toolActive, - // Left click on a viewport leftMousePressed, - rightMousePressed, - allowRightMouseRemoval, - viewportScrolling, }; using InputFlags = FlagHolder; From 659b3abc72e01786d819e2a089b22e7d69c082e3 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 6 Jan 2026 21:45:04 +0100 Subject: [PATCH 187/222] Pass FilterPaletteID to GetPaletteG1Index() and GetPaletteMapForColour() --- src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp | 5 +++-- src/openrct2/drawing/Drawing.Sprite.cpp | 8 ++++---- src/openrct2/drawing/Drawing.cpp | 8 ++++---- src/openrct2/drawing/Drawing.h | 7 ++++--- src/openrct2/drawing/X8DrawingEngine.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 2 +- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index e3039b11142f..ab5872141b91 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -218,9 +218,10 @@ void TextureCache::GeneratePaletteTexture() for (int i = 0; i < kPaletteTotalOffsets; ++i) { - GLint y = PaletteToY(static_cast(i)); + auto filterPaletteId = static_cast(i); + GLint y = PaletteToY(filterPaletteId); - auto g1Index = GetPaletteG1Index(i); + auto g1Index = GetPaletteG1Index(filterPaletteId); if (g1Index.has_value()) { const auto* element = GfxGetG1Element(g1Index.value()); diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index d393e503f313..5d31d9915f56 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -702,14 +702,14 @@ static std::optional FASTCALL GfxDrawSpriteGetPalette(ImageId imageI { paletteId &= 0x7F; } - return GetPaletteMapForColour(paletteId); + return GetPaletteMapForColour(static_cast(paletteId)); } auto paletteMap = PaletteMap(secondaryRemapPalette); if (imageId.HasTertiary()) { paletteMap = PaletteMap(tertiaryRemapPalette); - auto tertiaryPaletteMap = GetPaletteMapForColour(imageId.GetTertiary()); + auto tertiaryPaletteMap = GetPaletteMapForColour(static_cast(imageId.GetTertiary())); if (tertiaryPaletteMap.has_value()) { paletteMap.Copy( @@ -717,13 +717,13 @@ static std::optional FASTCALL GfxDrawSpriteGetPalette(ImageId imageI } } - auto primaryPaletteMap = GetPaletteMapForColour(imageId.GetPrimary()); + auto primaryPaletteMap = GetPaletteMapForColour(static_cast(imageId.GetPrimary())); if (primaryPaletteMap.has_value()) { paletteMap.Copy(kPaletteOffsetRemapPrimary, primaryPaletteMap.value(), kPaletteOffsetRemapPrimary, kPaletteLengthRemap); } - auto secondaryPaletteMap = GetPaletteMapForColour(imageId.GetSecondary()); + auto secondaryPaletteMap = GetPaletteMapForColour(static_cast(imageId.GetSecondary())); if (secondaryPaletteMap.has_value()) { paletteMap.Copy( diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 5604f0d4df4e..53bd61e32a0b 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -851,16 +851,16 @@ void GfxDrawPickedUpPeep(RenderTarget& rt) } } -std::optional GetPaletteG1Index(colour_t paletteId) +std::optional GetPaletteG1Index(FilterPaletteID paletteId) { - if (paletteId < kPaletteTotalOffsets) + if (EnumValue(paletteId) < kPaletteTotalOffsets) { - return kPaletteToG1Offset[paletteId]; + return kPaletteToG1Offset[EnumValue(paletteId)]; } return std::nullopt; } -std::optional GetPaletteMapForColour(colour_t paletteId) +std::optional GetPaletteMapForColour(FilterPaletteID paletteId) { auto g1Index = GetPaletteG1Index(paletteId); if (g1Index.has_value()) diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index f60e588c67f3..32ef7cee148c 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -44,7 +44,8 @@ namespace OpenRCT2 namespace OpenRCT2::Drawing { struct IDrawingEngine; -} + enum class FilterPaletteID : int32_t; +} // namespace OpenRCT2::Drawing using DrawBlendOp = uint8_t; @@ -326,8 +327,8 @@ void MaskFn( int32_t width, int32_t height, const uint8_t* RESTRICT maskSrc, const uint8_t* RESTRICT colourSrc, uint8_t* RESTRICT dst, int32_t maskWrap, int32_t colourWrap, int32_t dstWrap); -std::optional GetPaletteG1Index(colour_t paletteId); -std::optional GetPaletteMapForColour(colour_t paletteId); +std::optional GetPaletteG1Index(OpenRCT2::Drawing::FilterPaletteID paletteId); +std::optional GetPaletteMapForColour(OpenRCT2::Drawing::FilterPaletteID paletteId); void UpdatePalette(std::span palette, int32_t start_index, int32_t num_colours); void UpdatePaletteEffects(); diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index 93ec5cc6d3b6..a249b2d13865 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -606,7 +606,7 @@ void X8DrawingContext::FilterRect( uint8_t* dst = rt.bits + (startY * rt.LineStride() + startX); // Find colour in colour table? - auto paletteMap = GetPaletteMapForColour(EnumValue(palette)); + auto paletteMap = GetPaletteMapForColour(palette); if (paletteMap.has_value()) { const auto& paletteEntries = paletteMap.value(); diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 8f66e92fb333..ac994129c817 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1627,7 +1627,7 @@ namespace OpenRCT2 { paletteIndex = imageId.GetRemap(); } - if (auto pm = GetPaletteMapForColour(paletteIndex); pm.has_value()) + if (auto pm = GetPaletteMapForColour(static_cast(paletteIndex)); pm.has_value()) { paletteMap = pm.value(); } From 8861833292a133b18e679cbcde6b6356e984f09a Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 6 Jan 2026 22:36:23 +0100 Subject: [PATCH 188/222] Pass PaletteIndex to Rectangle::fill() and IDrawingContext::FillRect() --- .../engines/opengl/OpenGLDrawingEngine.cpp | 20 ++-- src/openrct2-ui/interface/InGameConsole.cpp | 6 +- src/openrct2-ui/interface/Widget.cpp | 6 +- src/openrct2-ui/scripting/CustomListView.cpp | 2 +- .../scripting/ScGraphicsContext.hpp | 8 +- .../windows/EditorInventionsList.cpp | 2 +- .../windows/EditorObjectSelection.cpp | 2 +- .../windows/EditorScenarioOptions.cpp | 2 +- src/openrct2-ui/windows/Finances.cpp | 4 +- src/openrct2-ui/windows/InstallTrack.cpp | 2 +- src/openrct2-ui/windows/Map.cpp | 25 ++--- src/openrct2-ui/windows/Ride.cpp | 8 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 2 +- src/openrct2-ui/windows/ServerList.cpp | 2 +- src/openrct2-ui/windows/TextInput.cpp | 3 +- src/openrct2-ui/windows/Themes.cpp | 8 +- src/openrct2-ui/windows/TileInspector.cpp | 4 +- src/openrct2-ui/windows/TrackList.cpp | 4 +- src/openrct2/drawing/Drawing.h | 2 +- src/openrct2/drawing/IDrawingContext.h | 7 +- src/openrct2/drawing/NewDrawing.cpp | 2 +- src/openrct2/drawing/Rectangle.cpp | 6 +- src/openrct2/drawing/Rectangle.h | 3 +- src/openrct2/drawing/X8DrawingEngine.cpp | 99 ++----------------- src/openrct2/drawing/X8DrawingEngine.h | 6 +- src/openrct2/interface/Viewport.cpp | 4 +- 26 files changed, 80 insertions(+), 159 deletions(-) diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index ae1a5f2b6d5e..70ee5b725ec8 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -115,8 +115,10 @@ class OpenGLDrawingContext final : public IDrawingContext void StartNewDraw(); void FinishDraw(); - void Clear(RenderTarget& rt, uint8_t paletteIndex) override; - void FillRect(RenderTarget& rt, uint32_t colour, int32_t x, int32_t y, int32_t w, int32_t h) override; + void Clear(RenderTarget& rt, PaletteIndex paletteIndex) override; + void FillRect( + RenderTarget& rt, PaletteIndex paletteIndex, int32_t x, int32_t y, int32_t w, int32_t h, + bool crossHatch = false) override; void FilterRect( RenderTarget& rt, FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) override; void DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) override; @@ -682,14 +684,15 @@ void OpenGLDrawingContext::FinishDraw() _inDraw = false; } -void OpenGLDrawingContext::Clear(RenderTarget& rt, uint8_t paletteIndex) +void OpenGLDrawingContext::Clear(RenderTarget& rt, PaletteIndex paletteIndex) { Guard::Assert(_inDraw == true); FillRect(rt, paletteIndex, rt.x, rt.y, rt.x + rt.width, rt.y + rt.height); } -void OpenGLDrawingContext::FillRect(RenderTarget& rt, uint32_t colour, int32_t left, int32_t top, int32_t right, int32_t bottom) +void OpenGLDrawingContext::FillRect( + RenderTarget& rt, PaletteIndex paletteIndex, int32_t left, int32_t top, int32_t right, int32_t bottom, bool crossHatch) { Guard::Assert(_inDraw == true); @@ -708,22 +711,17 @@ void OpenGLDrawingContext::FillRect(RenderTarget& rt, uint32_t colour, int32_t l command.texMaskAtlas = 0; command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; - command.colour = colour & 0xFF; + command.colour = EnumValue(paletteIndex); command.bounds = { left, top, right + 1, bottom + 1 }; command.flags = DrawRectCommand::FLAG_NO_TEXTURE; command.depth = _drawCount++; command.zoom = 1.0f; - if (colour & 0x1000000) + if (crossHatch) { // cross-pattern command.flags |= DrawRectCommand::FLAG_CROSS_HATCH; } - else if (colour & 0x2000000) - { - assert(false); - // Should be FilterRect - } } void OpenGLDrawingContext::FilterRect( diff --git a/src/openrct2-ui/interface/InGameConsole.cpp b/src/openrct2-ui/interface/InGameConsole.cpp index c707b906fd9b..f63931a85b8b 100644 --- a/src/openrct2-ui/interface/InGameConsole.cpp +++ b/src/openrct2-ui/interface/InGameConsole.cpp @@ -377,13 +377,13 @@ void InGameConsole::Draw(RenderTarget& rt) const if (_consoleCaretTicks < kConsoleCaretFlashThreshold) { auto caret = screenCoords + ScreenCoordsXY{ _caretScreenPosX, lineHeight }; - uint8_t caretColour = ColourMapA[textColour.colour].lightest; + auto caretColour = ColourMapA[textColour.colour].lightest; Rectangle::fill(rt, { caret, caret + ScreenCoordsXY{ kConsoleCaretWidth, 1 } }, caretColour); } // What about border colours? - uint8_t borderColour1 = ColourMapA[backgroundColour.colour].light; - uint8_t borderColour2 = ColourMapA[backgroundColour.colour].mid_dark; + auto borderColour1 = ColourMapA[backgroundColour.colour].light; + auto borderColour2 = ColourMapA[backgroundColour.colour].mid_dark; // Input area top border Rectangle::fill( diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 643a9abde133..68599f6e2ab1 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -770,7 +770,7 @@ namespace OpenRCT2::Ui // Trough Rectangle::fill(rt, { { l + kScrollBarWidth, t }, { r - kScrollBarWidth, b } }, ColourMapA[colour.colour].lighter); Rectangle::fill( - rt, { { l + kScrollBarWidth, t }, { r - kScrollBarWidth, b } }, 0x1000000 | ColourMapA[colour.colour].mid_dark); + rt, { { l + kScrollBarWidth, t }, { r - kScrollBarWidth, b } }, ColourMapA[colour.colour].mid_dark, true); Rectangle::fill( rt, { { l + kScrollBarWidth, t + 2 }, { r - kScrollBarWidth, t + 2 } }, ColourMapA[colour.colour].mid_dark); Rectangle::fill( @@ -817,7 +817,7 @@ namespace OpenRCT2::Ui // Trough Rectangle::fill(rt, { { l, t + kScrollBarWidth }, { r, b - kScrollBarWidth } }, ColourMapA[colour.colour].lighter); Rectangle::fill( - rt, { { l, t + kScrollBarWidth }, { r, b - kScrollBarWidth } }, 0x1000000 | ColourMapA[colour.colour].mid_dark); + rt, { { l, t + kScrollBarWidth }, { r, b - kScrollBarWidth } }, ColourMapA[colour.colour].mid_dark, true); Rectangle::fill( rt, { { l + 2, t + kScrollBarWidth }, { l + 2, b - kScrollBarWidth } }, ColourMapA[colour.colour].mid_dark); Rectangle::fill( @@ -1211,7 +1211,7 @@ namespace OpenRCT2::Ui { auto colour = ColourMapA[w.colours[1].colour].mid_light; auto y = topLeft.y + 1 + widget.height() - 5; - Rectangle::fill(rt, { { curX, y }, { curX + width, y } }, colour + 5); + Rectangle::fill(rt, { { curX, y }, { curX + width, y } }, static_cast(colour + 5)); } } diff --git a/src/openrct2-ui/scripting/CustomListView.cpp b/src/openrct2-ui/scripting/CustomListView.cpp index 7e42d301d105..00926d92105d 100644 --- a/src/openrct2-ui/scripting/CustomListView.cpp +++ b/src/openrct2-ui/scripting/CustomListView.cpp @@ -610,7 +610,7 @@ void CustomListView::Paint(WindowBase* w, RenderTarget& rt, const ScrollArea* sc { Rectangle::fill( rt, { { rt.x, y }, { rt.x + rt.width, y + (kListRowHeight - 1) } }, - ColourMapA[w->colours[1].colour].lighter | 0x1000000); + ColourMapA[w->colours[1].colour].lighter, true); } // Columns diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index 13f71112806a..44cb3289c77d 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -32,7 +32,7 @@ namespace OpenRCT2::Scripting std::optional _tertiaryColour{}; std::optional _paletteId{}; uint8_t _stroke{}; - uint8_t _fill{}; + PaletteIndex _fill{}; public: ScGraphicsContext(duk_context* ctx, const RenderTarget& rt) @@ -124,12 +124,12 @@ namespace OpenRCT2::Scripting uint8_t fill_get() const { - return _fill; + return EnumValue(_fill); } void fill_set(uint8_t value) { - _fill = value; + _fill = static_cast(value); } uint8_t stroke_get() const @@ -230,7 +230,7 @@ namespace OpenRCT2::Scripting width -= 2; height -= 2; } - if (_fill != 0) + if (_fill != PaletteIndex::pi0) { Rectangle::fill(_rt, { x, y, x + width - 1, y + height - 1 }, _fill); } diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 4ef1a8ddc924..543fba75d88a 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -275,7 +275,7 @@ namespace OpenRCT2::Ui::Windows const auto& gameState = getGameState(); // Draw background - uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; + auto paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); int16_t boxWidth = widgets[WIDX_RESEARCH_ORDER_SCROLL].width() - 1; diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index c23c3e40d4d4..a09f124ea07f 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -732,7 +732,7 @@ namespace OpenRCT2::Ui::Windows ScreenCoordsXY screenCoords; bool ridePage = (GetSelectedObjectType() == ObjectType::ride); - uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; + auto paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); screenCoords.y = 0; diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index d1a4540341f7..668a33d6303d 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -2339,7 +2339,7 @@ namespace OpenRCT2::Ui::Windows */ void RidesOnScrollDraw(Drawing::RenderTarget& rt, int32_t scrollIndex) { - int32_t colour = ColourMapA[colours[1].colour].mid_light; + auto colour = ColourMapA[colours[1].colour].mid_light; Rectangle::fill(rt, { { rt.x, rt.y }, { rt.x + rt.width - 1, rt.y + rt.height - 1 } }, colour); for (int32_t i = 0; i < static_cast(_rideableRides.size()); i++) diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 3b3754e4cb23..3565a710c2a4 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -415,7 +415,7 @@ namespace OpenRCT2::Ui::Windows rt, { screenCoords - ScreenCoordsXY{ 0, 1 }, screenCoords + ScreenCoordsXY{ row_width, (kTableCellHeight - 2) } }, - ColourMapA[colours[1].colour].lighter | 0x1000000); + ColourMapA[colours[1].colour].lighter, true); screenCoords.y += kTableCellHeight; } @@ -609,7 +609,7 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill( rt, { screenCoords - ScreenCoordsXY{ 0, 1 }, screenCoords + ScreenCoordsXY{ 121, (kTableCellHeight - 2) } }, - ColourMapA[colours[1].colour].lighter | 0x1000000); + ColourMapA[colours[1].colour].lighter, true); DrawTextBasic(rt, screenCoords - ScreenCoordsXY{ 0, 1 }, _windowFinancesSummaryRowLabels[i]); screenCoords.y += kTableCellHeight; diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index 72d13fad3c95..206c69e7d94f 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -157,7 +157,7 @@ namespace OpenRCT2::Ui::Windows // Track preview Widget* widget = &widgets[WIDX_TRACK_PREVIEW]; auto screenPos = windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 }; - int32_t colour = ColourMapA[colours[0].colour].darkest; + auto colour = ColourMapA[colours[0].colour].darkest; Rectangle::fill(rt, { screenPos, screenPos + ScreenCoordsXY{ 369, 216 } }, colour); G1Element g1temp = {}; diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 8d7fbe9be7a5..360169961b31 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -178,11 +178,11 @@ namespace OpenRCT2::Ui::Windows MapColour(PaletteIndex::pi161), // COLOUR_KEY_TOILETS }; - static constexpr uint8_t DefaultPeepMapColour = PaletteIndex::pi20; - static constexpr uint8_t GuestMapColour = PaletteIndex::pi172; - static constexpr uint8_t GuestMapColourAlternate = PaletteIndex::pi21; - static constexpr uint8_t StaffMapColour = PaletteIndex::pi138; - static constexpr uint8_t StaffMapColourAlternate = PaletteIndex::pi10; + static constexpr PaletteIndex DefaultPeepMapColour = PaletteIndex::pi20; + static constexpr PaletteIndex GuestMapColour = PaletteIndex::pi172; + static constexpr PaletteIndex GuestMapColourAlternate = PaletteIndex::pi21; + static constexpr PaletteIndex StaffMapColour = PaletteIndex::pi138; + static constexpr PaletteIndex StaffMapColourAlternate = PaletteIndex::pi10; static constexpr uint16_t WaterColour = MapColour(PaletteIndex::pi195); @@ -680,7 +680,7 @@ namespace OpenRCT2::Ui::Windows { Rectangle::fill( rt, { screenCoords + ScreenCoordsXY{ 0, 2 }, screenCoords + ScreenCoordsXY{ 6, 8 } }, - RideKeyColours[i]); + static_cast(RideKeyColours[i] & 0xFF)); DrawTextBasic(rt, screenCoords + ScreenCoordsXY{ kListRowHeight, 0 }, MapLabels[i], {}); screenCoords.y += kListRowHeight; if (i == 3) @@ -962,7 +962,8 @@ namespace OpenRCT2::Ui::Windows } } - void DrawMapPeepPixel(Peep* peep, const uint8_t flashColour, Drawing::RenderTarget& rt, const ScreenCoordsXY& offset) + void DrawMapPeepPixel( + Peep* peep, const PaletteIndex flashColour, Drawing::RenderTarget& rt, const ScreenCoordsXY& offset) { if (peep->x == kLocationNull) return; @@ -970,7 +971,7 @@ namespace OpenRCT2::Ui::Windows MapCoordsXY c = TransformToMapCoords({ peep->x, peep->y }); auto leftTop = ScreenCoordsXY{ c.x, c.y } + offset; auto rightBottom = leftTop; - uint8_t colour = DefaultPeepMapColour; + auto colour = DefaultPeepMapColour; if (getGameState().entities.EntityGetFlashing(peep)) { colour = flashColour; @@ -984,9 +985,9 @@ namespace OpenRCT2::Ui::Windows Rectangle::fill(rt, { leftTop, rightBottom }, colour); } - uint8_t GetGuestFlashColour() const + PaletteIndex GetGuestFlashColour() const { - uint8_t colour = DefaultPeepMapColour; + auto colour = DefaultPeepMapColour; if ((_flashingFlags & MapFlashingFlags::FlashGuests) != 0) { colour = GuestMapColour; @@ -996,9 +997,9 @@ namespace OpenRCT2::Ui::Windows return colour; } - uint8_t GetStaffFlashColour() const + PaletteIndex GetStaffFlashColour() const { - uint8_t colour = DefaultPeepMapColour; + auto colour = DefaultPeepMapColour; if ((_flashingFlags & MapFlashingFlags::FlashStaff) != 0) { colour = StaffMapColour; diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index a160ce345fb6..17d3404d64e9 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -5262,7 +5262,7 @@ namespace OpenRCT2::Ui::Windows if (!isMusicActivated) return; - uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; + auto paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); auto* musicObj = ride->getMusicObject(); @@ -6066,8 +6066,8 @@ namespace OpenRCT2::Ui::Windows } // Vertical grid lines - const uint8_t lightColour = ColourMapA[COLOUR_SATURATED_GREEN].mid_light; - const uint8_t darkColour = ColourMapA[COLOUR_SATURATED_GREEN].mid_dark; + const auto lightColour = ColourMapA[COLOUR_SATURATED_GREEN].mid_light; + const auto darkColour = ColourMapA[COLOUR_SATURATED_GREEN].mid_dark; int32_t time = 0; for (int32_t x = 0; x < rt.x + rt.width; x += 80) @@ -6101,7 +6101,7 @@ namespace OpenRCT2::Ui::Windows for (int32_t y = widget->height() - 14; y >= 8; y -= yInterval, yUnit += yUnitInterval) { // Minor / major line - int32_t colour = yUnit == 0 ? lightColour : darkColour; + auto colour = yUnit == 0 ? lightColour : darkColour; Rectangle::fill(rt, { { rt.x, y }, { rt.x + rt.width - 1, y } }, colour); int16_t scaled_yUnit = yUnit; diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 32ab2155281a..b8dad4fc715d 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -542,7 +542,7 @@ namespace OpenRCT2::Ui::Windows void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { - uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; + auto paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); StringId highlighted_format = STR_WINDOW_COLOUR_2_STRINGID; diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 4b07e22daad7..48e79e2d0979 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -328,7 +328,7 @@ namespace OpenRCT2::Ui::Windows void onScrollDraw(int32_t scrollIndex, Drawing::RenderTarget& rt) override { - uint8_t paletteIndex = ColourMapA[colours[1].colour].mid_light; + auto paletteIndex = ColourMapA[colours[1].colour].mid_light; GfxClear(rt, paletteIndex); auto& listWidget = widgets[WIDX_LIST]; diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index f53956411eca..8d5fee39dfc7 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -272,7 +272,8 @@ namespace OpenRCT2::Ui::Windows uint8_t colour = ColourMapA[colours[1].colour].mid_light; // TODO: palette index addition Rectangle::fill( - rt, { { cursorX, screenCoords.y + 9 }, { cursorX + textWidth, screenCoords.y + 9 } }, colour + 5); + rt, { { cursorX, screenCoords.y + 9 }, { cursorX + textWidth, screenCoords.y + 9 } }, + static_cast(colour + 5)); } cur_drawn++; diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 85cbc7eb38bd..9da632871525 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -769,11 +769,11 @@ namespace OpenRCT2::Ui::Windows } else { - colour = ColourMapA[colours[1].colour].mid_dark; - Rectangle::fill(rt, { leftTop, rightBottom }, colour.colour); + auto fillColour = ColourMapA[colours[1].colour].mid_dark; + Rectangle::fill(rt, { leftTop, rightBottom }, fillColour); - colour = ColourMapA[colours[1].colour].lightest; - Rectangle::fill(rt, { leftTop + yPixelOffset, rightBottom + yPixelOffset }, colour.colour); + fillColour = ColourMapA[colours[1].colour].lightest; + Rectangle::fill(rt, { leftTop + yPixelOffset, rightBottom + yPixelOffset }, fillColour); } } diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index ac4a491cce7c..ea00f53a04d3 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1623,10 +1623,10 @@ static uint64_t PageDisabledWidgets[] = { if (selectedRow) Rectangle::fill(rt, fillRectangle, ColourMapA[colours[1].colour].mid_dark); else if (hoveredRow) - Rectangle::fill(rt, fillRectangle, ColourMapA[colours[1].colour].mid_dark | 0x1000000); + Rectangle::fill(rt, fillRectangle, ColourMapA[colours[1].colour].mid_dark, true); // Zebra stripes else if (((windowTileInspectorElementCount - i) & 1) == 0) - Rectangle::fill(rt, fillRectangle, ColourMapA[colours[1].colour].light | 0x1000000); + Rectangle::fill(rt, fillRectangle, ColourMapA[colours[1].colour].light, true); StringId stringFormat = STR_WINDOW_COLOUR_2_STRINGID; if (selectedRow || hoveredRow) diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index b9bc36b34675..dd2fdff9ddaf 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -471,7 +471,7 @@ namespace OpenRCT2::Ui::Windows // Track preview auto& tdWidget = widgets[WIDX_TRACK_PREVIEW]; - int32_t colour = ColourMapA[colours[0].colour].darkest; + auto colour = ColourMapA[colours[0].colour].darkest; u8string path = _trackDesigns[trackIndex].path; // Show track file path (in debug mode) @@ -676,7 +676,7 @@ namespace OpenRCT2::Ui::Windows void onScrollDraw(const int32_t scrollIndex, Drawing::RenderTarget& rt) override { - uint8_t paletteIndex = ColourMapA[colours[0].colour].mid_light; + auto paletteIndex = ColourMapA[colours[0].colour].mid_light; GfxClear(rt, paletteIndex); auto screenCoords = ScreenCoordsXY{ 0, 0 }; diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 32ef7cee148c..ff1117c47da0 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -246,7 +246,7 @@ void GfxTransposePalette(int32_t pal, uint8_t product); void LoadPalette(); // other -void GfxClear(OpenRCT2::Drawing::RenderTarget& rt, uint8_t paletteIndex); +void GfxClear(OpenRCT2::Drawing::RenderTarget& rt, PaletteIndex paletteIndex); void GfxFilterPixel( OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, OpenRCT2::Drawing::FilterPaletteID palette); void GfxInvalidatePickedUpPeep(); diff --git a/src/openrct2/drawing/IDrawingContext.h b/src/openrct2/drawing/IDrawingContext.h index 0266a5fc666c..0dceae6493e4 100644 --- a/src/openrct2/drawing/IDrawingContext.h +++ b/src/openrct2/drawing/IDrawingContext.h @@ -22,8 +22,11 @@ namespace OpenRCT2::Drawing { virtual ~IDrawingContext() = default; - virtual void Clear(RenderTarget& rt, uint8_t paletteIndex) = 0; - virtual void FillRect(RenderTarget& rt, uint32_t colour, int32_t left, int32_t top, int32_t right, int32_t bottom) = 0; + virtual void Clear(RenderTarget& rt, PaletteIndex paletteIndex) = 0; + virtual void FillRect( + RenderTarget& rt, PaletteIndex paletteIndex, int32_t left, int32_t top, int32_t right, int32_t bottom, + bool crossHatch = false) + = 0; virtual void FilterRect( RenderTarget& rt, FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) = 0; diff --git a/src/openrct2/drawing/NewDrawing.cpp b/src/openrct2/drawing/NewDrawing.cpp index b41fe978171f..d7c3aef446b7 100644 --- a/src/openrct2/drawing/NewDrawing.cpp +++ b/src/openrct2/drawing/NewDrawing.cpp @@ -154,7 +154,7 @@ void GfxSetDirtyBlocks(const ScreenRect& rect) } } -void GfxClear(RenderTarget& rt, uint8_t paletteIndex) +void GfxClear(RenderTarget& rt, PaletteIndex paletteIndex) { auto drawingEngine = rt.DrawingEngine; if (drawingEngine != nullptr) diff --git a/src/openrct2/drawing/Rectangle.cpp b/src/openrct2/drawing/Rectangle.cpp index 23da364d5bcf..ef7f107f4f9b 100644 --- a/src/openrct2/drawing/Rectangle.cpp +++ b/src/openrct2/drawing/Rectangle.cpp @@ -20,13 +20,13 @@ using OpenRCT2::Drawing::IDrawingContext; namespace OpenRCT2::Drawing::Rectangle { - void fill(RenderTarget& rt, const ScreenRect& rect, int32_t colour) + void fill(RenderTarget& rt, const ScreenRect& rect, PaletteIndex paletteIndex, bool crossHatch) { auto drawingEngine = rt.DrawingEngine; if (drawingEngine != nullptr) { IDrawingContext* dc = drawingEngine->GetDrawingContext(); - dc->FillRect(rt, colour, rect.GetLeft(), rect.GetTop(), rect.GetRight(), rect.GetBottom()); + dc->FillRect(rt, paletteIndex, rect.GetLeft(), rect.GetTop(), rect.GetRight(), rect.GetBottom(), crossHatch); } } @@ -91,7 +91,7 @@ namespace OpenRCT2::Drawing::Rectangle } else { - uint8_t shadow, fill, hilight; + PaletteIndex shadow, fill, hilight; if (brightness == FillBrightness::dark) { shadow = ColourMapA[colour.colour].dark; diff --git a/src/openrct2/drawing/Rectangle.h b/src/openrct2/drawing/Rectangle.h index 3b53df38c013..f9a8882589a4 100644 --- a/src/openrct2/drawing/Rectangle.h +++ b/src/openrct2/drawing/Rectangle.h @@ -12,6 +12,7 @@ #include struct ScreenRect; +enum PaletteIndex : uint8_t; namespace OpenRCT2 { @@ -44,7 +45,7 @@ namespace OpenRCT2::Drawing::Rectangle dontLightenWhenInset, }; - void fill(RenderTarget& rt, const ScreenRect& rect, int32_t colour); + void fill(RenderTarget& rt, const ScreenRect& rect, PaletteIndex paletteIndex, bool crossHatch = false); void fillInset( RenderTarget& rt, const ScreenRect& rect, ColourWithFlags colour, BorderStyle borderStyle = BorderStyle::outset, FillBrightness brightness = FillBrightness::light, FillMode fillMode = FillMode::standard); diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index a249b2d13865..8f5c4f3653c1 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -373,7 +373,7 @@ X8DrawingContext::X8DrawingContext(X8DrawingEngine* engine) _engine = engine; } -void X8DrawingContext::Clear(RenderTarget& rt, uint8_t paletteIndex) +void X8DrawingContext::Clear(RenderTarget& rt, PaletteIndex paletteIndex) { Guard::Assert(_isDrawing == true); @@ -383,60 +383,13 @@ void X8DrawingContext::Clear(RenderTarget& rt, uint8_t paletteIndex) for (int32_t y = 0; y < h; y++) { - std::fill_n(ptr, w, paletteIndex); + std::fill_n(ptr, w, EnumValue(paletteIndex)); ptr += w + rt.pitch; } } -/** rct2: 0x0097FF04 */ -// clang-format off -static constexpr uint16_t kPattern[] = { - 0b0111111110000000, - 0b0011111111000000, - 0b0001111111100000, - 0b0000111111110000, - 0b0000011111111000, - 0b0000001111111100, - 0b0000000111111110, - 0b0000000011111111, - 0b1000000001111111, - 0b1100000000111111, - 0b1110000000011111, - 0b1111000000001111, - 0b1111100000000111, - 0b1111110000000011, - 0b1111111000000001, - 0b1111111100000000, -}; - -/** rct2: 0x0097FF14 */ -static constexpr uint16_t kPatternInverse[] = { - 0b1000000001111111, - 0b1100000000111111, - 0b1110000000011111, - 0b1111000000001111, - 0b1111100000000111, - 0b1111110000000011, - 0b1111111000000001, - 0b1111111100000000, - 0b0111111110000000, - 0b0011111111000000, - 0b0001111111100000, - 0b0000111111110000, - 0b0000011111111000, - 0b0000001111111100, - 0b0000000111111110, - 0b0000000011111111, -}; - -/** rct2: 0x0097FEFC */ -static constexpr const uint16_t* kPatterns[] = { - kPattern, - kPatternInverse, -}; -// clang-format on - -void X8DrawingContext::FillRect(RenderTarget& rt, uint32_t colour, int32_t left, int32_t top, int32_t right, int32_t bottom) +void X8DrawingContext::FillRect( + RenderTarget& rt, PaletteIndex paletteIndex, int32_t left, int32_t top, int32_t right, int32_t bottom, bool crossHatch) { Guard::Assert(_isDrawing == true); @@ -485,7 +438,7 @@ void X8DrawingContext::FillRect(RenderTarget& rt, uint32_t colour, int32_t left, int32_t width = endX - startX; int32_t height = endY - startY; - if (colour & 0x1000000) + if (crossHatch) { // Cross hatching uint8_t* dst = startY * rt.LineStride() + startX + rt.bits; @@ -501,7 +454,7 @@ void X8DrawingContext::FillRect(RenderTarget& rt, uint32_t colour, int32_t left, p = p ^ 0x80000000; if (p & 0x80000000) { - *dst = colour & 0xFF; + *dst = EnumValue(paletteIndex); } dst++; } @@ -509,50 +462,12 @@ void X8DrawingContext::FillRect(RenderTarget& rt, uint32_t colour, int32_t left, dst = nextdst; } } - else if (colour & 0x2000000) - { - assert(false); - } - else if (colour & 0x4000000) - { - uint8_t* dst = startY * rt.LineStride() + startX + rt.bits; - - // The pattern loops every 15 lines this is which - // part the pattern is on. - int32_t patternY = (startY + rt.y) % 16; - - // The pattern loops every 15 pixels this is which - // part the pattern is on. - int32_t startkPatternX = (startX + rt.x) % 16; - int32_t patternX = startkPatternX; - - const uint16_t* patternsrc = kPatterns[colour >> 28]; // or possibly uint8_t)[esi*4] ? - - for (int32_t numLines = height; numLines > 0; numLines--) - { - uint8_t* nextdst = dst + rt.LineStride(); - uint16_t pattern = patternsrc[patternY]; - - for (int32_t numPixels = width; numPixels > 0; numPixels--) - { - if (pattern & (1 << patternX)) - { - *dst = colour & 0xFF; - } - patternX = (patternX + 1) % 16; - dst++; - } - patternX = startkPatternX; - patternY = (patternY + 1) % 16; - dst = nextdst; - } - } else { uint8_t* dst = startY * rt.LineStride() + startX + rt.bits; for (int32_t i = 0; i < height; i++) { - std::fill_n(dst, width, colour & 0xFF); + std::fill_n(dst, width, EnumValue(paletteIndex)); dst += rt.LineStride(); } } diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index dd3c79b3ad67..688093d462c7 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -136,8 +136,10 @@ namespace OpenRCT2 void BeginDraw(); void EndDraw(); - void Clear(RenderTarget& rt, uint8_t paletteIndex) override; - void FillRect(RenderTarget& rt, uint32_t colour, int32_t x, int32_t y, int32_t w, int32_t h) override; + void Clear(RenderTarget& rt, PaletteIndex paletteIndex) override; + void FillRect( + RenderTarget& rt, PaletteIndex paletteIndex, int32_t x, int32_t y, int32_t w, int32_t h, + bool crossHatch) override; void FilterRect( RenderTarget& rt, FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) override; void DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) override; diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index ac994129c817..40f7e7a577df 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -852,10 +852,10 @@ namespace OpenRCT2 | VIEWPORT_FLAG_CLIP_VIEW) && (~session.ViewFlags & VIEWPORT_FLAG_TRANSPARENT_BACKGROUND)) { - uint8_t colour = COLOUR_AQUAMARINE; + PaletteIndex colour = PaletteIndex::pi10; if (session.ViewFlags & VIEWPORT_FLAG_HIDE_ENTITIES) { - colour = COLOUR_BLACK; + colour = PaletteIndex::pi0; } GfxClear(session.DPI, colour); } From e209a3d733a0451a873f3b759b8ee0108ca351e6 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 7 Jan 2026 10:47:52 -0300 Subject: [PATCH 189/222] Remove superfluous includes from /test/tests folder (#25766) --- test/tests/CryptTests.cpp | 1 - test/tests/FormattingTests.cpp | 1 - test/tests/LanguagePackTest.cpp | 1 - test/tests/MultiLaunch.cpp | 5 ----- test/tests/Pathfinding.cpp | 4 ---- test/tests/PlayTests.cpp | 2 -- test/tests/ReplayTests.cpp | 5 ----- test/tests/RideRatings.cpp | 2 -- test/tests/S6ImportExportTests.cpp | 6 ------ test/tests/TileElements.cpp | 1 - test/tests/TileElementsView.cpp | 1 - 11 files changed, 29 deletions(-) diff --git a/test/tests/CryptTests.cpp b/test/tests/CryptTests.cpp index 5dc16917ae9f..48d0373d6870 100644 --- a/test/tests/CryptTests.cpp +++ b/test/tests/CryptTests.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include using namespace OpenRCT2; diff --git a/test/tests/FormattingTests.cpp b/test/tests/FormattingTests.cpp index 107b2a25b7c1..1c2f88b61d4b 100644 --- a/test/tests/FormattingTests.cpp +++ b/test/tests/FormattingTests.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include using namespace OpenRCT2; diff --git a/test/tests/LanguagePackTest.cpp b/test/tests/LanguagePackTest.cpp index e5910e9d45fe..e0bdebd2ed97 100644 --- a/test/tests/LanguagePackTest.cpp +++ b/test/tests/LanguagePackTest.cpp @@ -10,7 +10,6 @@ #include "openrct2/localisation/LanguagePack.h" #include "openrct2/localisation/Language.h" -#include "openrct2/localisation/StringIds.h" #include diff --git a/test/tests/MultiLaunch.cpp b/test/tests/MultiLaunch.cpp index 3df8473a0d19..b871812eb200 100644 --- a/test/tests/MultiLaunch.cpp +++ b/test/tests/MultiLaunch.cpp @@ -14,12 +14,7 @@ #include #include #include -#include -#include -#include -#include #include -#include #include #include diff --git a/test/tests/Pathfinding.cpp b/test/tests/Pathfinding.cpp index ace8fcb08067..12c2ea368d74 100644 --- a/test/tests/Pathfinding.cpp +++ b/test/tests/Pathfinding.cpp @@ -6,19 +6,15 @@ #include #include #include -#include #include -#include #include #include #include #include -#include #include #include #include #include -#include #include using namespace OpenRCT2; diff --git a/test/tests/PlayTests.cpp b/test/tests/PlayTests.cpp index 941edf561397..330d2e2f23ca 100644 --- a/test/tests/PlayTests.cpp +++ b/test/tests/PlayTests.cpp @@ -25,12 +25,10 @@ #include #include #include -#include #include #include #include #include -#include #include using namespace OpenRCT2; diff --git a/test/tests/ReplayTests.cpp b/test/tests/ReplayTests.cpp index e60c0f7c2363..0ed0d68d2f3f 100644 --- a/test/tests/ReplayTests.cpp +++ b/test/tests/ReplayTests.cpp @@ -13,18 +13,13 @@ #include #include #include -#include #include #include #include -#include -#include #include #include #include #include -#include -#include #include using namespace OpenRCT2; diff --git a/test/tests/RideRatings.cpp b/test/tests/RideRatings.cpp index fae206b7bb54..181c1995e452 100644 --- a/test/tests/RideRatings.cpp +++ b/test/tests/RideRatings.cpp @@ -14,11 +14,9 @@ #include #include #include -#include #include #include #include -#include #include #include #include diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp index 0d9de738c9e0..43699de121f0 100644 --- a/test/tests/S6ImportExportTests.cpp +++ b/test/tests/S6ImportExportTests.cpp @@ -10,7 +10,6 @@ #include "TestData.h" #include -#include #include #include #include @@ -20,22 +19,17 @@ #include #include #include -#include #include -#include #include #include #include #include -#include #include #include -#include #include #include #include #include -#include #include #include diff --git a/test/tests/TileElements.cpp b/test/tests/TileElements.cpp index e43c12743d79..9d2757b15829 100644 --- a/test/tests/TileElements.cpp +++ b/test/tests/TileElements.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/test/tests/TileElementsView.cpp b/test/tests/TileElementsView.cpp index 79f868bdefad..fb213ba9ec9d 100644 --- a/test/tests/TileElementsView.cpp +++ b/test/tests/TileElementsView.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include From 29ebe61e60b63dd35cc945edb63b4abe25e8e288 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Wed, 7 Jan 2026 15:49:00 +0100 Subject: [PATCH 190/222] Add "StayOpen" flag to special track parts dropdown (#25765) --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/RideConstruction.cpp | 4 ++-- src/openrct2-ui/windows/TopToolbar.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 4c1b5e6bfd1c..a345f2c9b43f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.31 (in development) ------------------------------------------------------------------------ +- Improved: [#25765] The ‘View options’ and ‘Special track elements’ dropdowns no longer need click-and-hold. - Fix: [#25739] Game freezes when a tab in the New Ride window contains more than 384 items. 0.4.30 (2026-01-04) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 41039bd2ba84..c32d9bdfe923 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2633,8 +2633,8 @@ namespace OpenRCT2::Ui::Windows ddWidth -= 30; WindowDropdownShowTextCustomWidth( - { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, 0, elements.size(), - ddWidth, targetColumnSize); + { windowPos.x + widget->left, windowPos.y + widget->top }, widget->height(), colours[1], 0, + Dropdown::Flag::StayOpen, elements.size(), ddWidth, targetColumnSize); for (size_t j = 0; j < elements.size(); j++) { diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 40f0aedf8f88..a630461d3a5b 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -315,7 +315,7 @@ namespace OpenRCT2::Ui::Windows WindowDropdownShowText( { windowPos.x + widget.left, windowPos.y + widget.top }, widget.height(), - colours[1].withFlag(ColourFlag::translucent, true), 0, TOP_TOOLBAR_VIEW_MENU_COUNT); + colours[1].withFlag(ColourFlag::translucent, true), Dropdown::Flag::StayOpen, TOP_TOOLBAR_VIEW_MENU_COUNT); auto mvpFlags = WindowGetMain()->viewport->flags; gDropdown.items[DDIDX_UNDERGROUND_INSIDE].setChecked(mvpFlags & VIEWPORT_FLAG_UNDERGROUND_INSIDE); From 9c5e670358220009984273db95e6b8a5a557d594 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 7 Jan 2026 15:02:00 -0300 Subject: [PATCH 191/222] Remove redundant qualifiers from paint code (#25769) --- .../coaster/AirPoweredVerticalCoaster.cpp | 2 +- .../paint/track/coaster/AlpineCoaster.cpp | 2 +- .../paint/track/coaster/BobsleighCoaster.cpp | 2 +- .../coaster/ClassicStandUpRollerCoaster.cpp | 2 +- .../coaster/ClassicWoodenRollerCoaster.cpp | 2 +- .../ClassicWoodenTwisterRollerCoaster.cpp | 2 +- .../track/coaster/CompactInvertedCoaster.cpp | 2 +- .../track/coaster/CorkscrewRollerCoaster.cpp | 2 +- .../track/coaster/FlyingRollerCoaster.cpp | 2 +- .../coaster/FlyingRollerCoasterInverted.cpp | 2 +- .../track/coaster/HeartlineTwisterCoaster.cpp | 2 +- .../paint/track/coaster/HybridCoaster.cpp | 2 +- .../track/coaster/InvertedHairpinCoaster.cpp | 2 +- .../track/coaster/InvertedImpulseCoaster.cpp | 2 +- .../track/coaster/InvertedRollerCoaster.cpp | 2 +- .../track/coaster/JuniorRollerCoaster.cpp | 6 ++--- .../track/coaster/LatticeTriangleTrack.cpp | 2 +- .../coaster/LayDownRollerCoasterInverted.cpp | 2 +- .../coaster/LimLaunchedRollerCoaster.cpp | 2 +- .../track/coaster/LoopingRollerCoaster.cpp | 2 +- src/openrct2/paint/track/coaster/MineRide.cpp | 2 +- .../paint/track/coaster/MineTrainCoaster.cpp | 2 +- .../paint/track/coaster/MiniRollerCoaster.cpp | 2 +- .../track/coaster/MiniSuspendedCoaster.cpp | 2 +- .../coaster/MultiDimensionRollerCoaster.cpp | 2 +- .../track/coaster/ReverseFreefallCoaster.cpp | 2 +- .../track/coaster/ReverserRollerCoaster.cpp | 2 +- .../coaster/SideFrictionRollerCoaster.cpp | 2 +- .../track/coaster/SingleRailRollerCoaster.cpp | 2 +- .../track/coaster/StandUpRollerCoaster.cpp | 2 +- .../paint/track/coaster/Steeplechase.cpp | 2 +- .../coaster/SuspendedSwingingCoaster.cpp | 2 +- .../track/coaster/TwisterRollerCoaster.cpp | 2 +- .../paint/track/coaster/VirginiaReel.cpp | 2 +- .../paint/track/coaster/WildMouse.cpp | 2 +- .../track/coaster/WoodenRollerCoaster.cpp | 6 ++--- .../track/coaster/WoodenRollerCoaster.hpp | 18 ++++++------- .../paint/track/coaster/WoodenWildMouse.cpp | 2 +- src/openrct2/paint/track/gentle/CarRide.cpp | 2 +- src/openrct2/paint/track/gentle/Circus.cpp | 2 +- .../paint/track/gentle/CrookedHouse.cpp | 2 +- src/openrct2/paint/track/gentle/Dodgems.cpp | 2 +- .../paint/track/gentle/FerrisWheel.cpp | 2 +- .../paint/track/gentle/FlyingSaucers.cpp | 2 +- .../paint/track/gentle/GhostTrain.cpp | 2 +- .../paint/track/gentle/HauntedHouse.cpp | 2 +- src/openrct2/paint/track/gentle/Maze.cpp | 2 +- .../paint/track/gentle/MerryGoRound.cpp | 2 +- src/openrct2/paint/track/gentle/MiniGolf.cpp | 2 +- .../paint/track/gentle/MiniHelicopters.cpp | 2 +- .../paint/track/gentle/MonorailCycles.cpp | 2 +- .../paint/track/gentle/ObservationTower.cpp | 2 +- .../paint/track/gentle/SpaceRings.cpp | 2 +- .../paint/track/gentle/SpiralSlide.cpp | 2 +- src/openrct2/paint/track/shops/Facility.cpp | 2 +- src/openrct2/paint/track/shops/Shop.cpp | 2 +- src/openrct2/paint/track/thrill/3dCinema.cpp | 2 +- .../paint/track/thrill/Enterprise.cpp | 2 +- src/openrct2/paint/track/thrill/GoKarts.cpp | 26 +++++++++---------- .../paint/track/thrill/LaunchedFreefall.cpp | 2 +- .../paint/track/thrill/MagicCarpet.cpp | 2 +- .../paint/track/thrill/MotionSimulator.cpp | 2 +- src/openrct2/paint/track/thrill/RotoDrop.cpp | 2 +- .../track/thrill/SwingingInverterShip.cpp | 2 +- .../paint/track/thrill/SwingingShip.cpp | 2 +- src/openrct2/paint/track/thrill/TopSpin.cpp | 2 +- src/openrct2/paint/track/thrill/Twist.cpp | 2 +- src/openrct2/paint/track/transport/Lift.cpp | 2 +- .../track/transport/MiniatureRailway.cpp | 2 +- .../paint/track/transport/Monorail.cpp | 2 +- .../track/transport/SuspendedMonorail.cpp | 2 +- src/openrct2/paint/track/water/BoatHire.cpp | 2 +- .../paint/track/water/DinghySlide.cpp | 2 +- .../paint/track/water/DinghySlideCovered.cpp | 2 +- src/openrct2/paint/track/water/LogFlume.cpp | 2 +- .../paint/track/water/RiverRapids.cpp | 2 +- .../paint/track/water/SplashBoats.cpp | 2 +- .../paint/track/water/SubmarineRide.cpp | 2 +- 78 files changed, 102 insertions(+), 102 deletions(-) diff --git a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp index fab237d388eb..6ff53caa71bb 100644 --- a/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AirPoweredVerticalCoaster.cpp @@ -1007,7 +1007,7 @@ static void AirPoweredVerticalRCTrackOnridePhoto( TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); } -TrackPaintFunction GetTrackPaintFunctionAirPoweredVerticalRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionAirPoweredVerticalRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp index 353162b9dc54..bb9c4889a0de 100644 --- a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp @@ -7180,7 +7180,7 @@ namespace OpenRCT2::AlpineRC } } - TrackPaintFunction GetTrackPaintFunction(OpenRCT2::TrackElemType trackType) + TrackPaintFunction GetTrackPaintFunction(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp index a0bb1eb8ab14..3fa220fdbc6d 100644 --- a/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp +++ b/src/openrct2/paint/track/coaster/BobsleighCoaster.cpp @@ -4079,7 +4079,7 @@ static void BobsleighRCTrackOnRidePhoto( TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); } -TrackPaintFunction GetTrackPaintFunctionBobsleighRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionBobsleighRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp index ddba85292346..3a5d21d3a3f1 100644 --- a/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicStandUpRollerCoaster.cpp @@ -1364,7 +1364,7 @@ static void classicStandUpRCTrackDiagRightBankTo25DegDown( classicStandUpRCTrackDiag25DegUpToLeftBank(session, ride, trackSequence, direction, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionClassicStandUpRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionClassicStandUpRC(TrackElemType trackType) { if (!IsCsgLoaded()) { diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp index 3a11e5998229..1f32b3576d13 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenRollerCoaster.cpp @@ -1178,7 +1178,7 @@ static void ClassicWoodenRCTrackDiagRightBank( // Stylistically, this coaster is _very_ similar to the regular Wooden Roller Coaster. // The only difference is to which parts the colours are applied, and the degree of the banking. // As such, all non-banked pieces are simply drawn as regular wooden roller coaster pieces with a different paint scheme. -TrackPaintFunction GetTrackPaintFunctionClassicWoodenRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionClassicWoodenRC(TrackElemType trackType) { if (!IsCsgLoaded()) { diff --git a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp index 19677c6bf35d..a5e29bca8f02 100644 --- a/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ClassicWoodenTwisterRollerCoaster.cpp @@ -2086,7 +2086,7 @@ static void ClassicWoodenTwisterRCTrackRightEighthBankToOrthogonal( // Stylistically, this coaster is _very_ similar to the regular Wooden Roller Coaster. // The only difference is the degree of the banking. // As such, all non-banked pieces are simply drawn as regular wooden roller coaster pieces. -TrackPaintFunction GetTrackPaintFunctionClassicWoodenTwisterRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionClassicWoodenTwisterRC(TrackElemType trackType) { if (!IsCsgLoaded()) { diff --git a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp index 72ddfa66e820..081d152b3f39 100644 --- a/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CompactInvertedCoaster.cpp @@ -9611,7 +9611,7 @@ static void CompactInvertedRCTrackBlockBrakes( PaintUtilSetGeneralSupportHeight(session, height + 48); } -TrackPaintFunction GetTrackPaintFunctionCompactInvertedRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionCompactInvertedRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp index debb26c41e6d..cf772ea9191d 100644 --- a/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/CorkscrewRollerCoaster.cpp @@ -20416,7 +20416,7 @@ static void CorkscrewRCTrackRightEighthDiveLoopToDownOrthogonal( session, ride, 5 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionCorkscrewRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionCorkscrewRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp index 938824f5cb3a..4b7922cbced5 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoaster.cpp @@ -847,7 +847,7 @@ static void FlyingRCTrackRightFlyingLargeHalfLoopUninvertedDown( session, ride, 6 - trackSequence, direction, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionFlyingRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionFlyingRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp index a89984fd118a..1638346b482c 100644 --- a/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/FlyingRollerCoasterInverted.cpp @@ -8912,7 +8912,7 @@ static void FlyingRCTrackFlyerHalfLoopDown( } } -TrackPaintFunction GetTrackPaintFunctionFlyingRCInverted(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionFlyingRCInverted(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp index 4b50560b6cc9..bfac48f811ec 100644 --- a/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HeartlineTwisterCoaster.cpp @@ -1678,7 +1678,7 @@ static void HeartlineTwisterRCTrackRightHeartlineRoll( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionHeartlineTwisterRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionHeartlineTwisterRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/HybridCoaster.cpp b/src/openrct2/paint/track/coaster/HybridCoaster.cpp index 8d98eacc500e..6c277a80be30 100644 --- a/src/openrct2/paint/track/coaster/HybridCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HybridCoaster.cpp @@ -14545,7 +14545,7 @@ namespace OpenRCT2::HybridRC } } - TrackPaintFunction GetTrackPaintFunction(OpenRCT2::TrackElemType trackType) + TrackPaintFunction GetTrackPaintFunction(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp index d1f2980063d7..ad1fcb769993 100644 --- a/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedHairpinCoaster.cpp @@ -1382,7 +1382,7 @@ static void InvertedHairpinRCTrackBlockBrakes( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionInvertedHairpinRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionInvertedHairpinRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp index 64e56924b311..b77faf26097e 100644 --- a/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedImpulseCoaster.cpp @@ -758,7 +758,7 @@ static void InvertedImpulseRCTrackRightQuarterTurn190DegDown( session, ride, trackSequence, (direction - 1) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionInvertedImpulseRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionInvertedImpulseRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp index b5fa9d3fef14..dedd4a78ff7d 100644 --- a/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/InvertedRollerCoaster.cpp @@ -11330,7 +11330,7 @@ static void InvertedRCTrackBooster( PaintUtilSetGeneralSupportHeight(session, height + 48); } -TrackPaintFunction GetTrackPaintFunctionInvertedRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionInvertedRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp index 97fa1a8c08cd..c12865c87a1b 100644 --- a/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/JuniorRollerCoaster.cpp @@ -5767,7 +5767,7 @@ static void JuniorRCTrackOnRidePhoto( /* 0x008AAA0C */ template -TrackPaintFunction GetTrackPaintFunctionJuniorRCTemplate(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionJuniorRCTemplate(TrackElemType trackType) { switch (trackType) { @@ -5996,12 +5996,12 @@ TrackPaintFunction GetTrackPaintFunctionJuniorRCTemplate(OpenRCT2::TrackElemType } } -TrackPaintFunction GetTrackPaintFunctionJuniorRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionJuniorRC(TrackElemType trackType) { return GetTrackPaintFunctionJuniorRCTemplate(trackType); } -TrackPaintFunction GetTrackPaintFunctionWaterRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionWaterRC(TrackElemType trackType) { return GetTrackPaintFunctionJuniorRCTemplate(trackType); } diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp index a16ed8bc6a89..c68385f1bf22 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrack.cpp @@ -19556,7 +19556,7 @@ static void LatticeTriangleTrackRightEighthDiveLoopToDownOrthogonal( session, ride, 5 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionLatticeTriangleTrack(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLatticeTriangleTrack(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp index f194277fd0d5..27a778b646dd 100644 --- a/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp +++ b/src/openrct2/paint/track/coaster/LayDownRollerCoasterInverted.cpp @@ -8165,7 +8165,7 @@ static void LayDownRCTrackHalfLoopInvertedUp( } } -TrackPaintFunction GetTrackPaintFunctionLayDownRCInverted(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLayDownRCInverted(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp index cb7380dd1365..03792a6de675 100644 --- a/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LimLaunchedRollerCoaster.cpp @@ -5772,7 +5772,7 @@ static void LimLaunchedRCTrackBooster( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionLimLaunchedRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLimLaunchedRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp index 78192eb8224b..37ea9ae90a59 100644 --- a/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/LoopingRollerCoaster.cpp @@ -10307,7 +10307,7 @@ static void LoopingRCTrackBooster( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionLoopingRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLoopingRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/MineRide.cpp b/src/openrct2/paint/track/coaster/MineRide.cpp index 79730be2c13e..1186af06a1ca 100644 --- a/src/openrct2/paint/track/coaster/MineRide.cpp +++ b/src/openrct2/paint/track/coaster/MineRide.cpp @@ -5423,7 +5423,7 @@ static void MineRideTrackDiagRightBank( } } -TrackPaintFunction GetTrackPaintFunctionMineRide(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMineRide(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp index 20bc7c358cd3..abfed0a2ca6c 100644 --- a/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MineTrainCoaster.cpp @@ -7224,7 +7224,7 @@ static void MineTrainRCTrack60DegDownToFlatLongBase( session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionMineTrainRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMineTrainRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp index d3ac46033f47..a7b4c921f85b 100644 --- a/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniRollerCoaster.cpp @@ -8985,7 +8985,7 @@ static void MiniRCTrackBooster( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionMiniRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMiniRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp index 6c344c2443a4..4b8cb55fa7e5 100644 --- a/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MiniSuspendedCoaster.cpp @@ -2189,7 +2189,7 @@ static void MiniSuspendedRCTrackDiag25DegDownToFlat( } } -TrackPaintFunction GetTrackPaintFunctionMiniSuspendedRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMiniSuspendedRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp index f32120049df9..e15bc91fd16f 100644 --- a/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/MultiDimensionRollerCoaster.cpp @@ -14516,7 +14516,7 @@ static void MultiDimensionRCTrackMultidimInverted90DegUpToFlatQuarterLoop( } } -TrackPaintFunction GetTrackPaintFunctionMultiDimensionRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMultiDimensionRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp index d5bb048d11d9..781c22712300 100644 --- a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp @@ -401,7 +401,7 @@ static void PaintReverseFreefallRCOnridePhoto( TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); } -TrackPaintFunction GetTrackPaintFunctionReverseFreefallRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionReverseFreefallRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp index 089b04b000ad..d2975c26bddc 100644 --- a/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverserRollerCoaster.cpp @@ -1370,7 +1370,7 @@ static void ReverserRCTrackRightReverser( } } -TrackPaintFunction GetTrackPaintFunctionReverserRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionReverserRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp index 23a0c8b376bf..1ed4dc91476f 100644 --- a/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SideFrictionRollerCoaster.cpp @@ -2909,7 +2909,7 @@ static void SideFrictionRCTrackDiag60DegDownTo25DegDown( session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); }; -TrackPaintFunction GetTrackPaintFunctionSideFrictionRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSideFrictionRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp index e072d9daf8e7..61c5ad429e0d 100644 --- a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp @@ -19883,7 +19883,7 @@ namespace OpenRCT2::SingleRailRC } } - TrackPaintFunction GetTrackPaintFunction(OpenRCT2::TrackElemType trackType) + TrackPaintFunction GetTrackPaintFunction(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp index a6672b4809d5..ce3d0db91dbc 100644 --- a/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/StandUpRollerCoaster.cpp @@ -18361,7 +18361,7 @@ static void StandUpRCTrackRightLargeZeroGRollDown( session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionStandUpRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionStandUpRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/Steeplechase.cpp b/src/openrct2/paint/track/coaster/Steeplechase.cpp index b50cbbb0f1d2..402b7f16c944 100644 --- a/src/openrct2/paint/track/coaster/Steeplechase.cpp +++ b/src/openrct2/paint/track/coaster/Steeplechase.cpp @@ -2181,7 +2181,7 @@ static void SteeplechaseTrackBlockBrakes( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionSteeplechase(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSteeplechase(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp index b1bb2620ebb6..9ed1521a6dc1 100644 --- a/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SuspendedSwingingCoaster.cpp @@ -4689,7 +4689,7 @@ static void SuspendedSwingingRCTrackBlockBrakes( PaintUtilSetGeneralSupportHeight(session, height + 48); } -TrackPaintFunction GetTrackPaintFunctionSuspendedSwingingRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSuspendedSwingingRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp index a58ddeefead7..812e177f4648 100644 --- a/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/TwisterRollerCoaster.cpp @@ -20051,7 +20051,7 @@ static void TwisterRCTrackRightEighthDiveLoopToDownOrthogonal( session, ride, 5 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionTwisterRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionTwisterRC(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/VirginiaReel.cpp b/src/openrct2/paint/track/coaster/VirginiaReel.cpp index 8f78d05a16cf..7c4844645808 100644 --- a/src/openrct2/paint/track/coaster/VirginiaReel.cpp +++ b/src/openrct2/paint/track/coaster/VirginiaReel.cpp @@ -472,7 +472,7 @@ static void PaintVirginiaReelTrackRightQuarterTurn1Tile( /** * rct2: 0x00811184 */ -TrackPaintFunction GetTrackPaintFunctionVirginiaReel(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionVirginiaReel(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/WildMouse.cpp b/src/openrct2/paint/track/coaster/WildMouse.cpp index f8b944c00747..eef8e980fece 100644 --- a/src/openrct2/paint/track/coaster/WildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WildMouse.cpp @@ -941,7 +941,7 @@ static void WildMouseTrackBlockBrakes( PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionWildMouse(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionWildMouse(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp index f97f7b40505f..05e26697bc20 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.cpp @@ -13359,7 +13359,7 @@ static void WoodenRCTrackRightLargeHalfLoopDown( } template -TrackPaintFunction GetTrackPaintFunctionWoodenAndClassicWoodenRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionWoodenAndClassicWoodenRC(TrackElemType trackType) { switch (trackType) { @@ -13678,12 +13678,12 @@ TrackPaintFunction GetTrackPaintFunctionWoodenAndClassicWoodenRC(OpenRCT2::Track } } -TrackPaintFunction GetTrackPaintFunctionWoodenRC(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionWoodenRC(TrackElemType trackType) { return GetTrackPaintFunctionWoodenAndClassicWoodenRC(trackType); } -TrackPaintFunction GetTrackPaintFunctionClassicWoodenRCFallback(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionClassicWoodenRCFallback(TrackElemType trackType) { return GetTrackPaintFunctionWoodenAndClassicWoodenRC(trackType); } diff --git a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp index 6d941745485d..715b4ffc2fc5 100644 --- a/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp +++ b/src/openrct2/paint/track/coaster/WoodenRollerCoaster.hpp @@ -303,7 +303,7 @@ static void WoodenRCTrackLeftQuarterTurn3Bank( kSegmentsAll, }; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -521,7 +521,7 @@ static void WoodenRCTrackBankedRightQuarterTurn5( kSegmentsAll, }; - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -2964,7 +2964,7 @@ static void WoodenRCTrackDiagFlatToBank( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -3032,7 +3032,7 @@ static void WoodenRCTrackDiagBankTo25DegUp( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -3100,7 +3100,7 @@ static void WoodenRCTrackDiagUp25ToBank( break; } - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -3168,7 +3168,7 @@ static void WoodenRCTrackDiagLeftBank( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -3336,7 +3336,7 @@ static void WoodenRCTrackLeftEighthBankToDiag( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -3504,10 +3504,10 @@ static void WoodenRCTrackRightEighthBankToDiag( break; } - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } -TrackPaintFunction GetTrackPaintFunctionClassicWoodenRCFallback(OpenRCT2::TrackElemType trackType); +TrackPaintFunction GetTrackPaintFunctionClassicWoodenRCFallback(TrackElemType trackType); diff --git a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp index 4911ec264682..c20904906b95 100644 --- a/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp +++ b/src/openrct2/paint/track/coaster/WoodenWildMouse.cpp @@ -716,7 +716,7 @@ static void WoodenWildMouseTrack60DegDownToFlat( WoodenWildMouseTrackFlatTo60DegUp(session, ride, trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionWoodenWildMouse(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionWoodenWildMouse(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/CarRide.cpp b/src/openrct2/paint/track/gentle/CarRide.cpp index 8824850ccdac..e0c5d6bc2696 100644 --- a/src/openrct2/paint/track/gentle/CarRide.cpp +++ b/src/openrct2/paint/track/gentle/CarRide.cpp @@ -723,7 +723,7 @@ static void PaintCarRideTrackLogBumps( /** * rct2: 0x006F7000 */ -TrackPaintFunction GetTrackPaintFunctionCarRide(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionCarRide(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/Circus.cpp b/src/openrct2/paint/track/gentle/Circus.cpp index 2b8aca2b834b..ed016d2422e8 100644 --- a/src/openrct2/paint/track/gentle/Circus.cpp +++ b/src/openrct2/paint/track/gentle/Circus.cpp @@ -121,7 +121,7 @@ static void PaintCircus( PaintUtilSetGeneralSupportHeight(session, height + 128); } -TrackPaintFunction GetTrackPaintFunctionCircus(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionCircus(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/gentle/CrookedHouse.cpp b/src/openrct2/paint/track/gentle/CrookedHouse.cpp index c2fa6b84cb92..81a159cfe0d4 100644 --- a/src/openrct2/paint/track/gentle/CrookedHouse.cpp +++ b/src/openrct2/paint/track/gentle/CrookedHouse.cpp @@ -147,7 +147,7 @@ static void PaintCrookedHouse( PaintUtilSetGeneralSupportHeight(session, height + 128); } -TrackPaintFunction GetTrackPaintFunctionCrookedHouse(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionCrookedHouse(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/gentle/Dodgems.cpp b/src/openrct2/paint/track/gentle/Dodgems.cpp index e2f5b5da4975..b0cf9c03cd6f 100644 --- a/src/openrct2/paint/track/gentle/Dodgems.cpp +++ b/src/openrct2/paint/track/gentle/Dodgems.cpp @@ -109,7 +109,7 @@ static void PaintDodgems( /** * rct2: */ -TrackPaintFunction GetTrackPaintFunctionDodgems(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionDodgems(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack4x4) { diff --git a/src/openrct2/paint/track/gentle/FerrisWheel.cpp b/src/openrct2/paint/track/gentle/FerrisWheel.cpp index 10bea380ac50..f35e504be988 100644 --- a/src/openrct2/paint/track/gentle/FerrisWheel.cpp +++ b/src/openrct2/paint/track/gentle/FerrisWheel.cpp @@ -174,7 +174,7 @@ static void PaintFerrisWheel( PaintUtilSetGeneralSupportHeight(session, height + 176); } -TrackPaintFunction GetTrackPaintFunctionFerrisWheel(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionFerrisWheel(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack1x4C) { diff --git a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp index 6401ff6c2a66..9e0e936a0a52 100644 --- a/src/openrct2/paint/track/gentle/FlyingSaucers.cpp +++ b/src/openrct2/paint/track/gentle/FlyingSaucers.cpp @@ -69,7 +69,7 @@ static void PaintFlyingSaucers( /** * rct2: 0x00887208 */ -TrackPaintFunction GetTrackPaintFunctionFlyingSaucers(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionFlyingSaucers(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack4x4) { diff --git a/src/openrct2/paint/track/gentle/GhostTrain.cpp b/src/openrct2/paint/track/gentle/GhostTrain.cpp index 3e619b4863c9..151440324907 100644 --- a/src/openrct2/paint/track/gentle/GhostTrain.cpp +++ b/src/openrct2/paint/track/gentle/GhostTrain.cpp @@ -559,7 +559,7 @@ static void PaintGhostTrainTrackBrakes( /** * rct2: 0x00770924 */ -TrackPaintFunction GetTrackPaintFunctionGhostTrain(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionGhostTrain(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/HauntedHouse.cpp b/src/openrct2/paint/track/gentle/HauntedHouse.cpp index 3d679058e9e3..bf2b3ffd2d0d 100644 --- a/src/openrct2/paint/track/gentle/HauntedHouse.cpp +++ b/src/openrct2/paint/track/gentle/HauntedHouse.cpp @@ -125,7 +125,7 @@ static void PaintHauntedHouse( PaintUtilSetGeneralSupportHeight(session, height + 128); } -TrackPaintFunction GetTrackPaintFunctionHauntedHouse(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionHauntedHouse(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/gentle/Maze.cpp b/src/openrct2/paint/track/gentle/Maze.cpp index eeb4d176dde4..6cc8386b140b 100644 --- a/src/openrct2/paint/track/gentle/Maze.cpp +++ b/src/openrct2/paint/track/gentle/Maze.cpp @@ -187,7 +187,7 @@ static void MazePaintSetup( /** * rct2: 0x008A81E8 */ -TrackPaintFunction GetTrackPaintFunctionMaze(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMaze(TrackElemType trackType) { if (trackType != TrackElemType::maze) { diff --git a/src/openrct2/paint/track/gentle/MerryGoRound.cpp b/src/openrct2/paint/track/gentle/MerryGoRound.cpp index 24bb4e2ce437..8ce75ab21f85 100644 --- a/src/openrct2/paint/track/gentle/MerryGoRound.cpp +++ b/src/openrct2/paint/track/gentle/MerryGoRound.cpp @@ -175,7 +175,7 @@ static void PaintMerryGoRound( PaintUtilSetGeneralSupportHeight(session, height + 64); } -TrackPaintFunction GetTrackPaintFunctionMerryGoRound(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMerryGoRound(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/gentle/MiniGolf.cpp b/src/openrct2/paint/track/gentle/MiniGolf.cpp index 97a9f6b97552..f37f3ef33513 100644 --- a/src/openrct2/paint/track/gentle/MiniGolf.cpp +++ b/src/openrct2/paint/track/gentle/MiniGolf.cpp @@ -1086,7 +1086,7 @@ static void PaintMiniGolfHoleE( /** * rct2: 0x0087EDC4 */ -TrackPaintFunction GetTrackPaintFunctionMiniGolf(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMiniGolf(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp index dc261df7f9ff..5ec5fdba7fd9 100644 --- a/src/openrct2/paint/track/gentle/MiniHelicopters.cpp +++ b/src/openrct2/paint/track/gentle/MiniHelicopters.cpp @@ -365,7 +365,7 @@ static void PaintMiniHelicoptersTrackSpinningTunnel( /** * rct2: 0x0081F268 */ -TrackPaintFunction GetTrackPaintFunctionMiniHelicopters(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMiniHelicopters(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/MonorailCycles.cpp b/src/openrct2/paint/track/gentle/MonorailCycles.cpp index c8343abf7fbf..44751a34c40c 100644 --- a/src/openrct2/paint/track/gentle/MonorailCycles.cpp +++ b/src/openrct2/paint/track/gentle/MonorailCycles.cpp @@ -591,7 +591,7 @@ static void PaintMonorailCyclesTrackSBendRight( /** * rct2: 0x0088ac88 */ -TrackPaintFunction GetTrackPaintFunctionMonorailCycles(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMonorailCycles(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/ObservationTower.cpp b/src/openrct2/paint/track/gentle/ObservationTower.cpp index a15e5e232c4c..f4ebf2bf5f8c 100644 --- a/src/openrct2/paint/track/gentle/ObservationTower.cpp +++ b/src/openrct2/paint/track/gentle/ObservationTower.cpp @@ -140,7 +140,7 @@ static void PaintObservationTowerSection( /** * rct2: 0x0070DC5C */ -TrackPaintFunction GetTrackPaintFunctionObservationTower(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionObservationTower(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/gentle/SpaceRings.cpp b/src/openrct2/paint/track/gentle/SpaceRings.cpp index 2f95bd1e1c4e..6fae6af96c0f 100644 --- a/src/openrct2/paint/track/gentle/SpaceRings.cpp +++ b/src/openrct2/paint/track/gentle/SpaceRings.cpp @@ -190,7 +190,7 @@ static void PaintSpaceRings( /** * rct2: 0x0x00767A40 */ -TrackPaintFunction GetTrackPaintFunctionSpaceRings(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSpaceRings(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/gentle/SpiralSlide.cpp b/src/openrct2/paint/track/gentle/SpiralSlide.cpp index 0b0df1fa3ef0..453935287f2d 100644 --- a/src/openrct2/paint/track/gentle/SpiralSlide.cpp +++ b/src/openrct2/paint/track/gentle/SpiralSlide.cpp @@ -253,7 +253,7 @@ static void PaintSpiralSlide( /** * rct2: 0x0074840C */ -TrackPaintFunction GetTrackPaintFunctionSpiralSlide(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSpiralSlide(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack2x2) { diff --git a/src/openrct2/paint/track/shops/Facility.cpp b/src/openrct2/paint/track/shops/Facility.cpp index 293f38086f2c..71117055adf2 100644 --- a/src/openrct2/paint/track/shops/Facility.cpp +++ b/src/openrct2/paint/track/shops/Facility.cpp @@ -80,7 +80,7 @@ static void PaintFacility( } /* 0x00762D44 */ -TrackPaintFunction GetTrackPaintFunctionFacility(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionFacility(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/shops/Shop.cpp b/src/openrct2/paint/track/shops/Shop.cpp index 8bf4aa4088f2..584e34ea1be1 100644 --- a/src/openrct2/paint/track/shops/Shop.cpp +++ b/src/openrct2/paint/track/shops/Shop.cpp @@ -65,7 +65,7 @@ static void PaintShop( PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); } -TrackPaintFunction GetTrackPaintFunctionShop(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionShop(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/thrill/3dCinema.cpp b/src/openrct2/paint/track/thrill/3dCinema.cpp index 47e5de72f33c..a1363f4ada17 100644 --- a/src/openrct2/paint/track/thrill/3dCinema.cpp +++ b/src/openrct2/paint/track/thrill/3dCinema.cpp @@ -121,7 +121,7 @@ static void Paint3dCinema( PaintUtilSetGeneralSupportHeight(session, height + 128); } -TrackPaintFunction GetTrackPaintFunction3dCinema(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunction3dCinema(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/thrill/Enterprise.cpp b/src/openrct2/paint/track/thrill/Enterprise.cpp index f661853435bf..bdfafc438a3a 100644 --- a/src/openrct2/paint/track/thrill/Enterprise.cpp +++ b/src/openrct2/paint/track/thrill/Enterprise.cpp @@ -175,7 +175,7 @@ static void PaintEnterprise( PaintUtilSetGeneralSupportHeight(session, height + 160); } -TrackPaintFunction GetTrackPaintFunctionEnterprise(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionEnterprise(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack4x4) { diff --git a/src/openrct2/paint/track/thrill/GoKarts.cpp b/src/openrct2/paint/track/thrill/GoKarts.cpp index 8ca98969c8f9..7f85aaf5997a 100644 --- a/src/openrct2/paint/track/thrill/GoKarts.cpp +++ b/src/openrct2/paint/track/thrill/GoKarts.cpp @@ -1971,7 +1971,7 @@ static void TrackLeftQuarterTurn5Tiles( session, session.TrackColours.WithIndex(kGoKartsLeftQuarterTurn5TilesSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsLeftQuarterTurn5TilesBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -2023,7 +2023,7 @@ static void TrackLeftEighthToDiag( session, session.TrackColours.WithIndex(kGoKartsLeftEighthToDiagSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsLeftEighthToDiagBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -2047,7 +2047,7 @@ static void TrackRightEighthToDiag( session, session.TrackColours.WithIndex(kGoKartsRightEighthToDiagSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsRightEighthToDiagBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if (trackSequence == 0 && (direction == 0 || direction == 3)) { @@ -2086,7 +2086,7 @@ static void TrackDiagFlat( session, session.TrackColours.WithIndex(kGoKartsDiagFlatSprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagFlatBoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -2103,7 +2103,7 @@ static void TrackDiagFlatToUp25( session, session.TrackColours.WithIndex(kGoKartsDiagFlatToUp25Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagFlatToUp25BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); @@ -2120,7 +2120,7 @@ static void TrackDiagUp25ToFlat( session, session.TrackColours.WithIndex(kGoKartsDiagUp25ToFlatSprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp25ToFlatBoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2137,7 +2137,7 @@ static void TrackDiagUp25( session, session.TrackColours.WithIndex(kGoKartsDiagUp25Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp25BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 56); @@ -2181,7 +2181,7 @@ static void TrackDiagUp25ToUp60( session, session.TrackColours.WithIndex(kGoKartsDiagUp25ToUp60Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp25ToUp60BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 72); @@ -2198,7 +2198,7 @@ static void TrackDiagUp60ToUp25( session, session.TrackColours.WithIndex(kGoKartsDiagUp60ToUp25Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp60ToUp25BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 72); @@ -2215,7 +2215,7 @@ static void TrackDiagUp60( session, session.TrackColours.WithIndex(kGoKartsDiagUp60Sprites[direction][trackSequence][1]), height, { 0, 0, 0 }, kGoKartsDiagUp60BoundBoxes[direction][trackSequence][1]); - DrawSupportForSequenceB( + DrawSupportForSequenceB( session, supportType.wooden, trackSequence, direction, height + 16, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 104); @@ -2708,7 +2708,7 @@ static void TrackSBendLeft( session, session.TrackColours.WithIndex(kGoKartsSBendLeftSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsSBendLeftBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if ((trackSequence == 0 && (direction == 0 || direction == 3)) || (trackSequence == 3 && (direction == 1 || direction == 2))) @@ -2743,7 +2743,7 @@ static void TrackSBendRight( session, session.TrackColours.WithIndex(kGoKartsSBendRightSprites[direction][trackSequence][2]), height, { 0, 0, 0 }, kGoKartsSBendRightBoundBoxes[direction][trackSequence][2]); - DrawSupportForSequenceA( + DrawSupportForSequenceA( session, supportType.wooden, trackSequence, direction, height, session.SupportColours); if ((trackSequence == 0 && (direction == 0 || direction == 3)) || (trackSequence == 3 && (direction == 1 || direction == 2))) @@ -2767,7 +2767,7 @@ static void TrackSBendRight( /** * rct2: 0x0074A668 */ -TrackPaintFunction GetTrackPaintFunctionGoKarts(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionGoKarts(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp index 035c7698b6e8..5a652379578c 100644 --- a/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp +++ b/src/openrct2/paint/track/thrill/LaunchedFreefall.cpp @@ -141,7 +141,7 @@ static void PaintLaunchedFreefallTowerSection( /** * rct2: 0x006FD0E8 */ -TrackPaintFunction GetTrackPaintFunctionLaunchedFreefall(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLaunchedFreefall(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/thrill/MagicCarpet.cpp b/src/openrct2/paint/track/thrill/MagicCarpet.cpp index 0c5f8547e3e2..2da27d89474c 100644 --- a/src/openrct2/paint/track/thrill/MagicCarpet.cpp +++ b/src/openrct2/paint/track/thrill/MagicCarpet.cpp @@ -256,7 +256,7 @@ static void PaintMagicCarpet( PaintUtilSetGeneralSupportHeight(session, height + 176); } -TrackPaintFunction GetTrackPaintFunctionMagicCarpet(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMagicCarpet(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/thrill/MotionSimulator.cpp b/src/openrct2/paint/track/thrill/MotionSimulator.cpp index bb8ca83eac51..7540306dcfdd 100644 --- a/src/openrct2/paint/track/thrill/MotionSimulator.cpp +++ b/src/openrct2/paint/track/thrill/MotionSimulator.cpp @@ -146,7 +146,7 @@ static void PaintMotionSimulator( * * rct2: 0x00763520 */ -TrackPaintFunction GetTrackPaintFunctionMotionsimulator(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMotionsimulator(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/thrill/RotoDrop.cpp b/src/openrct2/paint/track/thrill/RotoDrop.cpp index 16b94b64aef6..a23f4f3e28c3 100644 --- a/src/openrct2/paint/track/thrill/RotoDrop.cpp +++ b/src/openrct2/paint/track/thrill/RotoDrop.cpp @@ -154,7 +154,7 @@ static void PaintRotoDropTowerSection( /** * rct2: 0x00886074 */ -TrackPaintFunction GetTrackPaintFunctionRotoDrop(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionRotoDrop(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp index ab3a08a334b0..6ef40fb6632a 100644 --- a/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingInverterShip.cpp @@ -189,7 +189,7 @@ static void PaintSwingingInverterShip( PaintUtilSetGeneralSupportHeight(session, height + 176); } -TrackPaintFunction GetTrackPaintFunctionSwingingInverterShip(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSwingingInverterShip(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack1x4B) { diff --git a/src/openrct2/paint/track/thrill/SwingingShip.cpp b/src/openrct2/paint/track/thrill/SwingingShip.cpp index 93011408ae66..f821cb35d3c6 100644 --- a/src/openrct2/paint/track/thrill/SwingingShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingShip.cpp @@ -299,7 +299,7 @@ static void PaintSwingingShip( PaintUtilSetGeneralSupportHeight(session, height + 112); } -TrackPaintFunction GetTrackPaintFunctionSwingingShip(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSwingingShip(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack1x5) { diff --git a/src/openrct2/paint/track/thrill/TopSpin.cpp b/src/openrct2/paint/track/thrill/TopSpin.cpp index 5496b80149c1..50139c437a84 100644 --- a/src/openrct2/paint/track/thrill/TopSpin.cpp +++ b/src/openrct2/paint/track/thrill/TopSpin.cpp @@ -249,7 +249,7 @@ static void PaintTopSpin( PaintUtilSetGeneralSupportHeight(session, height + 112); } -TrackPaintFunction GetTrackPaintFunctionTopspin(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionTopspin(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/thrill/Twist.cpp b/src/openrct2/paint/track/thrill/Twist.cpp index ddfbd45b337d..109bf4fd4bad 100644 --- a/src/openrct2/paint/track/thrill/Twist.cpp +++ b/src/openrct2/paint/track/thrill/Twist.cpp @@ -170,7 +170,7 @@ static void PaintTwist( /** * rct2: 0x0076D658 */ -TrackPaintFunction GetTrackPaintFunctionTwist(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionTwist(TrackElemType trackType) { if (trackType != TrackElemType::flatTrack3x3) { diff --git a/src/openrct2/paint/track/transport/Lift.cpp b/src/openrct2/paint/track/transport/Lift.cpp index 01758783a13c..92fe5bb74eb9 100644 --- a/src/openrct2/paint/track/transport/Lift.cpp +++ b/src/openrct2/paint/track/transport/Lift.cpp @@ -141,7 +141,7 @@ static void PaintLiftTowerSection( /** * rct2: 0x0076C5BC */ -TrackPaintFunction GetTrackPaintFunctionLift(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLift(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/transport/MiniatureRailway.cpp b/src/openrct2/paint/track/transport/MiniatureRailway.cpp index c19c824116ed..e9d860ba349b 100644 --- a/src/openrct2/paint/track/transport/MiniatureRailway.cpp +++ b/src/openrct2/paint/track/transport/MiniatureRailway.cpp @@ -2306,7 +2306,7 @@ static void MiniatureRailwayTrackDiag25DegDownToFlat( /** * rct2: 0x008ACE48 */ -TrackPaintFunction GetTrackPaintFunctionMiniatureRailway(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMiniatureRailway(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/transport/Monorail.cpp b/src/openrct2/paint/track/transport/Monorail.cpp index 708f3f37d5fc..268c523141f2 100644 --- a/src/openrct2/paint/track/transport/Monorail.cpp +++ b/src/openrct2/paint/track/transport/Monorail.cpp @@ -1212,7 +1212,7 @@ static void PaintMonorailTrackDiag25DegDownToFlat( /** * rct2: 0x008ADF34 */ -TrackPaintFunction GetTrackPaintFunctionMonorail(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionMonorail(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp index a172afcd5781..2b05126abe5a 100644 --- a/src/openrct2/paint/track/transport/SuspendedMonorail.cpp +++ b/src/openrct2/paint/track/transport/SuspendedMonorail.cpp @@ -1971,7 +1971,7 @@ static void SuspendedMonorailTrackDiag25DegDownToFlat( } } -TrackPaintFunction GetTrackPaintFunctionSuspendedMonorail(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSuspendedMonorail(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/BoatHire.cpp b/src/openrct2/paint/track/water/BoatHire.cpp index 9e5d8dcc976a..1b323dfae4d3 100644 --- a/src/openrct2/paint/track/water/BoatHire.cpp +++ b/src/openrct2/paint/track/water/BoatHire.cpp @@ -1231,7 +1231,7 @@ static void PaintBoatHireTrackSBendRight( /** * rct2: 0x008B0D60 */ -TrackPaintFunction GetTrackPaintFunctionBoatHire(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionBoatHire(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/DinghySlide.cpp b/src/openrct2/paint/track/water/DinghySlide.cpp index 14ccded32d3f..a476457c1336 100644 --- a/src/openrct2/paint/track/water/DinghySlide.cpp +++ b/src/openrct2/paint/track/water/DinghySlide.cpp @@ -1058,7 +1058,7 @@ static void DinghySlideTrackLeftQuarterTurn3( DinghySlideTrackRightQuarterTurn3(session, ride, trackSequence, (direction + 1) % 4, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionDinghySlide(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionDinghySlide(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/DinghySlideCovered.cpp b/src/openrct2/paint/track/water/DinghySlideCovered.cpp index af160a9d8d47..79fc8f398e1b 100644 --- a/src/openrct2/paint/track/water/DinghySlideCovered.cpp +++ b/src/openrct2/paint/track/water/DinghySlideCovered.cpp @@ -951,7 +951,7 @@ static void DinghySlideTrackCovered60DegDownTo25DegDown( session, ride, trackSequence, (direction + 2) & 3, height, trackElement, supportType); } -TrackPaintFunction GetTrackPaintFunctionDinghySlideCovered(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionDinghySlideCovered(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/LogFlume.cpp b/src/openrct2/paint/track/water/LogFlume.cpp index a1710eb460e5..6aa612d3e244 100644 --- a/src/openrct2/paint/track/water/LogFlume.cpp +++ b/src/openrct2/paint/track/water/LogFlume.cpp @@ -985,7 +985,7 @@ static void LogFlumeTrack60Down25( PaintUtilSetGeneralSupportHeight(session, height + 72); } -TrackPaintFunction GetTrackPaintFunctionLogFlume(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionLogFlume(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/RiverRapids.cpp b/src/openrct2/paint/track/water/RiverRapids.cpp index 8d766027d21f..9552464d6053 100644 --- a/src/openrct2/paint/track/water/RiverRapids.cpp +++ b/src/openrct2/paint/track/water/RiverRapids.cpp @@ -705,7 +705,7 @@ static void PaintRiverRapidsTrackWhirlpool( /** * rct2: 0x0075745C **/ -TrackPaintFunction GetTrackPaintFunctionRiverRapids(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionRiverRapids(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/SplashBoats.cpp b/src/openrct2/paint/track/water/SplashBoats.cpp index 03c0b53eb012..18fcde3b491a 100644 --- a/src/openrct2/paint/track/water/SplashBoats.cpp +++ b/src/openrct2/paint/track/water/SplashBoats.cpp @@ -1188,7 +1188,7 @@ static void PaintSplashBoatsTrackOnRidePhoto( TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); } -TrackPaintFunction GetTrackPaintFunctionSplashBoats(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSplashBoats(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/track/water/SubmarineRide.cpp b/src/openrct2/paint/track/water/SubmarineRide.cpp index 8a31fc3026c4..1f81bfdfb7f2 100644 --- a/src/openrct2/paint/track/water/SubmarineRide.cpp +++ b/src/openrct2/paint/track/water/SubmarineRide.cpp @@ -172,7 +172,7 @@ static void SubmarineRidePaintTrackRightQuarterTurn1Tile( /** * rct2: 0x008995D4 */ -TrackPaintFunction GetTrackPaintFunctionSubmarineRide(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionSubmarineRide(TrackElemType trackType) { switch (trackType) { From 78a654fcbd2934d6e0af45f39b70e8295622a263 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Wed, 7 Jan 2026 20:58:49 +0100 Subject: [PATCH 192/222] Rename missed occurrences of DrawPixelInfo/DPI to RenderTarget/RT (#25768) --- .../engines/opengl/OpenGLDrawingEngine.cpp | 9 ++---- .../drawing/engines/opengl/TextureCache.cpp | 24 ++++++++-------- .../drawing/engines/opengl/TextureCache.h | 8 +++--- src/openrct2-ui/interface/Widget.cpp | 2 +- src/openrct2-ui/interface/Window.cpp | 2 +- src/openrct2-ui/scripting/CustomWindow.cpp | 8 +++--- .../scripting/ScGraphicsContext.hpp | 6 ++-- .../windows/EditorInventionsList.cpp | 6 ++-- .../windows/EditorObjectSelection.cpp | 6 ++-- .../windows/EditorParkEntrance.cpp | 9 +++--- src/openrct2-ui/windows/GameBottomToolbar.cpp | 2 +- src/openrct2-ui/windows/Guest.cpp | 14 +++++----- src/openrct2-ui/windows/LoadSave.cpp | 4 +-- src/openrct2-ui/windows/Multiplayer.cpp | 14 +++++----- src/openrct2-ui/windows/News.cpp | 2 +- src/openrct2-ui/windows/ProgressWindow.cpp | 14 +++++----- src/openrct2-ui/windows/Ride.cpp | 28 +++++++++---------- src/openrct2-ui/windows/RideConstruction.cpp | 2 +- src/openrct2-ui/windows/RideList.cpp | 4 +-- src/openrct2-ui/windows/Scenery.cpp | 2 +- src/openrct2-ui/windows/ShortcutKeys.cpp | 2 +- src/openrct2-ui/windows/Staff.cpp | 2 +- src/openrct2-ui/windows/StaffList.cpp | 8 +++--- src/openrct2-ui/windows/Themes.cpp | 2 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 2 +- src/openrct2-ui/windows/Windows.h | 2 +- src/openrct2/drawing/Drawing.Sprite.cpp | 2 +- src/openrct2/drawing/Drawing.String.cpp | 4 +-- src/openrct2/drawing/Drawing.cpp | 4 +-- src/openrct2/drawing/Drawing.h | 4 +-- src/openrct2/drawing/IDrawingEngine.h | 2 +- src/openrct2/drawing/Line.cpp | 4 +-- src/openrct2/drawing/NewDrawing.cpp | 4 +-- src/openrct2/drawing/NewDrawing.h | 2 +- src/openrct2/drawing/Rectangle.cpp | 2 +- src/openrct2/drawing/ScrollingText.cpp | 2 +- src/openrct2/drawing/X8DrawingEngine.cpp | 7 +---- src/openrct2/drawing/X8DrawingEngine.h | 4 +-- src/openrct2/entity/Duck.cpp | 2 +- src/openrct2/entity/Fountain.cpp | 2 +- src/openrct2/entity/Litter.cpp | 2 +- src/openrct2/entity/MoneyEffect.cpp | 2 +- src/openrct2/entity/Particle.cpp | 2 +- src/openrct2/entity/Peep.cpp | 2 +- src/openrct2/interface/Screenshot.cpp | 26 ++++++++--------- src/openrct2/interface/Viewport.cpp | 18 ++++++------ src/openrct2/paint/Paint.Entity.cpp | 12 ++++---- src/openrct2/paint/Paint.cpp | 20 ++++++------- src/openrct2/paint/Paint.h | 2 +- src/openrct2/paint/Painter.cpp | 4 +-- .../paint/tile_element/Paint.Banner.cpp | 2 +- .../paint/tile_element/Paint.LargeScenery.cpp | 4 +-- .../paint/tile_element/Paint.Path.cpp | 2 +- .../paint/tile_element/Paint.PathAddition.cpp | 2 +- .../paint/tile_element/Paint.SmallScenery.cpp | 2 +- .../paint/tile_element/Paint.Surface.cpp | 2 +- .../paint/tile_element/Paint.TileElement.cpp | 12 ++++---- .../paint/track/gentle/HauntedHouse.cpp | 2 +- .../paint/track/gentle/MerryGoRound.cpp | 2 +- .../paint/track/gentle/SpiralSlide.cpp | 2 +- .../paint/track/thrill/Enterprise.cpp | 2 +- .../paint/track/thrill/MagicCarpet.cpp | 2 +- .../paint/track/thrill/SwingingShip.cpp | 2 +- src/openrct2/paint/track/thrill/TopSpin.cpp | 2 +- src/openrct2/paint/track/thrill/Twist.cpp | 2 +- .../vehicle/Vehicle.LaunchedFreefall.cpp | 2 +- .../paint/vehicle/Vehicle.MiniGolf.cpp | 4 +-- .../paint/vehicle/Vehicle.RiverRapids.cpp | 2 +- .../paint/vehicle/Vehicle.VirginaReel.cpp | 2 +- src/openrct2/paint/vehicle/VehiclePaint.cpp | 2 +- 70 files changed, 180 insertions(+), 193 deletions(-) diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index 70ee5b725ec8..a03912d7087d 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -520,7 +520,7 @@ class OpenGLDrawingEngine final : public IDrawingEngine return _drawingContext.get(); } - RenderTarget* GetDrawingPixelInfo() override + RenderTarget* getRT() override { return &_mainRT; } @@ -535,11 +535,6 @@ class OpenGLDrawingEngine final : public IDrawingEngine _drawingContext->GetTextureCache()->InvalidateImage(image); } - RenderTarget* GetDPI() - { - return &_mainRT; - } - private: static OpenGLVersion GetOpenGLVersion() { @@ -1347,7 +1342,7 @@ ScreenRect OpenGLDrawingContext::CalculateClipping(const RenderTarget& rt) const { // mber: Calculating the screen coordinates by dividing the difference between pointers like this is a dirty hack. // It's also quite slow. In future the drawing code needs to be refactored to avoid this somehow. - const RenderTarget* mainRT = _engine.GetDPI(); + const RenderTarget* mainRT = _engine.getRT(); const int32_t bytesPerRow = mainRT->LineStride(); const int32_t bitsOffset = static_cast(rt.bits - mainRT->bits); #ifndef NDEBUG diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index ab5872141b91..b66dc295fcfb 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -208,7 +208,7 @@ void TextureCache::GeneratePaletteTexture() static_assert(kPaletteTotalOffsets + 5 < 256, "Height of palette too large!"); constexpr int32_t height = 256; constexpr int32_t width = height; - RenderTarget rt = CreateDPI(width, height); + RenderTarget rt = CreateRT(width, height); // Init no-op palette for (int i = 0; i < width; ++i) @@ -234,7 +234,7 @@ void TextureCache::GeneratePaletteTexture() glCall(glBindTexture, GL_TEXTURE_2D, _paletteTexture); glCall(glTexImage2D, GL_TEXTURE_2D, 0, GL_R8UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, rt.bits); - DeleteDPI(rt); + DeleteRT(rt); } void TextureCache::EnlargeAtlasesTexture(GLuint newEntries) @@ -276,7 +276,7 @@ void TextureCache::EnlargeAtlasesTexture(GLuint newEntries) AtlasTextureInfo TextureCache::LoadImageTexture(const ImageId imageId) { - RenderTarget rt = GetImageAsDPI(ImageId(imageId.GetIndex())); + RenderTarget rt = GetImageAsRT(ImageId(imageId.GetIndex())); auto cacheInfo = AllocateImage(rt.width, rt.height); cacheInfo.image = imageId.GetIndex(); @@ -286,14 +286,14 @@ AtlasTextureInfo TextureCache::LoadImageTexture(const ImageId imageId) glTexSubImage3D, GL_TEXTURE_2D_ARRAY, 0, cacheInfo.bounds.x, cacheInfo.bounds.y, cacheInfo.index, rt.width, rt.height, 1, GL_RED_INTEGER, GL_UNSIGNED_BYTE, rt.bits); - DeleteDPI(rt); + DeleteRT(rt); return cacheInfo; } AtlasTextureInfo TextureCache::LoadGlyphTexture(const ImageId imageId, const PaletteMap& paletteMap) { - RenderTarget rt = GetGlyphAsDPI(imageId, paletteMap); + RenderTarget rt = GetGlyphAsRT(imageId, paletteMap); auto cacheInfo = AllocateImage(rt.width, rt.height); cacheInfo.image = imageId.GetIndex(); @@ -303,7 +303,7 @@ AtlasTextureInfo TextureCache::LoadGlyphTexture(const ImageId imageId, const Pal glTexSubImage3D, GL_TEXTURE_2D_ARRAY, 0, cacheInfo.bounds.x, cacheInfo.bounds.y, cacheInfo.index, rt.width, rt.height, 1, GL_RED_INTEGER, GL_UNSIGNED_BYTE, rt.bits); - DeleteDPI(rt); + DeleteRT(rt); return cacheInfo; } @@ -355,24 +355,24 @@ AtlasTextureInfo TextureCache::AllocateImage(int32_t imageWidth, int32_t imageHe return _atlases.back().Allocate(imageWidth, imageHeight); } -RenderTarget TextureCache::GetImageAsDPI(const ImageId imageId) +RenderTarget TextureCache::GetImageAsRT(const ImageId imageId) { auto g1Element = GfxGetG1Element(imageId); int32_t width = g1Element->width; int32_t height = g1Element->height; - RenderTarget rt = CreateDPI(width, height); + RenderTarget rt = CreateRT(width, height); GfxDrawSpriteSoftware(rt, imageId, { -g1Element->xOffset, -g1Element->yOffset }); return rt; } -RenderTarget TextureCache::GetGlyphAsDPI(const ImageId imageId, const PaletteMap& palette) +RenderTarget TextureCache::GetGlyphAsRT(const ImageId imageId, const PaletteMap& palette) { auto g1Element = GfxGetG1Element(imageId); int32_t width = g1Element->width; int32_t height = g1Element->height; - RenderTarget rt = CreateDPI(width, height); + RenderTarget rt = CreateRT(width, height); const auto glyphCoords = ScreenCoordsXY{ -g1Element->xOffset, -g1Element->yOffset }; GfxDrawSpritePaletteSetSoftware(rt, imageId, glyphCoords, palette); @@ -387,7 +387,7 @@ void TextureCache::FreeTextures() std::fill(_indexMap.begin(), _indexMap.end(), kUnusedIndex); } -RenderTarget TextureCache::CreateDPI(int32_t width, int32_t height) +RenderTarget TextureCache::CreateRT(int32_t width, int32_t height) { size_t numPixels = width * height; auto pixels8 = new uint8_t[numPixels]; @@ -404,7 +404,7 @@ RenderTarget TextureCache::CreateDPI(int32_t width, int32_t height) return rt; } -void TextureCache::DeleteDPI(RenderTarget rt) +void TextureCache::DeleteRT(RenderTarget rt) { delete[] rt.bits; } diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h index 433b67f5d945..8329853632b8 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.h +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.h @@ -224,11 +224,11 @@ namespace OpenRCT2::Ui AtlasTextureInfo LoadGlyphTexture(const ImageId image, const PaletteMap& paletteMap); AtlasTextureInfo AllocateImage(int32_t imageWidth, int32_t imageHeight); AtlasTextureInfo LoadBitmapTexture(ImageIndex image, const void* pixels, size_t width, size_t height); - static Drawing::RenderTarget GetImageAsDPI(const ImageId imageId); - static Drawing::RenderTarget GetGlyphAsDPI(const ImageId imageId, const PaletteMap& paletteMap); + static Drawing::RenderTarget GetImageAsRT(const ImageId imageId); + static Drawing::RenderTarget GetGlyphAsRT(const ImageId imageId, const PaletteMap& paletteMap); void FreeTextures(); - static Drawing::RenderTarget CreateDPI(int32_t width, int32_t height); - static void DeleteDPI(Drawing::RenderTarget rt); + static Drawing::RenderTarget CreateRT(int32_t width, int32_t height); + static void DeleteRT(Drawing::RenderTarget rt); }; } // namespace OpenRCT2::Ui diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 68599f6e2ab1..58faa04085b4 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -742,7 +742,7 @@ namespace OpenRCT2::Ui // Create a new inner scroll render target RenderTarget scrollRT = rt; - // Clip the scroll dpi against the outer dpi + // Clip the scroll RT against the outer RT int32_t cl = std::max(rt.x, topLeft.x); int32_t ct = std::max(rt.y, topLeft.y); int32_t cr = std::min(rt.x + rt.width, bottomRight.x); diff --git a/src/openrct2-ui/interface/Window.cpp b/src/openrct2-ui/interface/Window.cpp index 1230df707d52..916478839de8 100644 --- a/src/openrct2-ui/interface/Window.cpp +++ b/src/openrct2-ui/interface/Window.cpp @@ -1010,7 +1010,7 @@ namespace OpenRCT2::Ui::Windows * * rct2: 0x00685BE1 * - * @param dpi (edi) + * @param rt (edi) * @param w (esi) */ void WindowDrawViewport(RenderTarget& rt, WindowBase& w) diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index ecc3a5910f68..d611b4bb0515 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -559,14 +559,14 @@ namespace OpenRCT2::Ui::Windows auto& onDraw = widgetDesc->OnDraw; if (onDraw.is_function()) { - RenderTarget widgetDpi; - if (ClipDrawPixelInfo( - widgetDpi, rt, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width() - 1, + RenderTarget widgetRT; + if (ClipRenderTarget( + widgetRT, rt, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width() - 1, widget.height() - 1)) { auto ctx = onDraw.context(); auto dukWidget = ScWidget::ToDukValue(ctx, this, widgetIndex); - auto dukG = GetObjectAsDukValue(ctx, std::make_shared(ctx, widgetDpi)); + auto dukG = GetObjectAsDukValue(ctx, std::make_shared(ctx, widgetRT)); auto& scriptEngine = GetContext()->GetScriptEngine(); scriptEngine.ExecutePluginCall(_info.Owner, widgetDesc->OnDraw, dukWidget, { dukG }, false); } diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index 44cb3289c77d..9f347263cc26 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -183,9 +183,9 @@ namespace OpenRCT2::Scripting void clip(int32_t x, int32_t y, int32_t width, int32_t height) { - RenderTarget newDpi; - ClipDrawPixelInfo(newDpi, _rt, { x, y }, width, height); - _rt = newDpi; + RenderTarget newRT; + ClipRenderTarget(newRT, _rt, { x, y }, width, height); + _rt = newRT; } void image(uint32_t id, int32_t x, int32_t y) diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 543fba75d88a..2e913f209919 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -401,13 +401,13 @@ namespace OpenRCT2::Ui::Windows const auto* object = ObjectEntryGetObject(objectEntryType, researchItem->entryIndex); if (object != nullptr) { - RenderTarget clipDPI; + RenderTarget clipRT; screenPos = windowPos + ScreenCoordsXY{ bkWidget.left + 1, bkWidget.top + 1 }; const auto clipWidth = bkWidget.width() - 2; const auto clipHeight = bkWidget.height() - 2; - if (ClipDrawPixelInfo(clipDPI, rt, screenPos, clipWidth, clipHeight)) + if (ClipRenderTarget(clipRT, rt, screenPos, clipWidth, clipHeight)) { - object->DrawPreview(clipDPI, clipWidth, clipHeight); + object->DrawPreview(clipRT, clipWidth, clipHeight); } } diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index a09f124ea07f..5307524b8889 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1110,13 +1110,13 @@ namespace OpenRCT2::Ui::Windows // Draw preview { - RenderTarget clipDPI; + RenderTarget clipRT; auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 }; int32_t previewWidth = previewWidget.width() - 2; int32_t previewHeight = previewWidget.height() - 2; - if (ClipDrawPixelInfo(clipDPI, rt, screenPos, previewWidth, previewHeight)) + if (ClipRenderTarget(clipRT, rt, screenPos, previewWidth, previewHeight)) { - _loadedObject->DrawPreview(clipDPI, previewWidth, previewHeight); + _loadedObject->DrawPreview(clipRT, previewWidth, previewHeight); } } diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index 5b34a7323b7b..e97a976418df 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -342,14 +342,13 @@ namespace OpenRCT2::Ui::Windows rt, { coords, coords + ScreenCoordsXY{ kImageSize - 1, kImageSize - 1 } }, colours[1], borderStyle, fillBrightness); - RenderTarget clipDPI; + RenderTarget clipRT; auto screenPos = coords + ScreenCoordsXY{ kScrollPadding, kScrollPadding }; - if (ClipDrawPixelInfo( - clipDPI, rt, screenPos, kImageSize - (2 * kScrollPadding), kImageSize - (2 * kScrollPadding))) + if (ClipRenderTarget( + clipRT, rt, screenPos, kImageSize - (2 * kScrollPadding), kImageSize - (2 * kScrollPadding))) { PaintPreview( - clipDPI, entranceType.imageId, ScreenCoordsXY{ kImageSize / 2, kImageSize / 2 }, - gWindowSceneryRotation); + clipRT, entranceType.imageId, ScreenCoordsXY{ kImageSize / 2, kImageSize / 2 }, gWindowSceneryRotation); } // Next position diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 09a71c57388b..c47da0432f29 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -272,7 +272,7 @@ namespace OpenRCT2::Ui::Windows break; RenderTarget clippedRT; - if (!ClipDrawPixelInfo(clippedRT, rt, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22)) + if (!ClipRenderTarget(clippedRT, rt, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22)) { break; } diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 796fb6782ca0..c88f77f0056e 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -556,8 +556,8 @@ namespace OpenRCT2::Ui::Windows if (page == WINDOW_GUEST_OVERVIEW) widgHeight++; - RenderTarget clipDpi; - if (!ClipDrawPixelInfo(clipDpi, rt, screenCoords, widgWidth, widgHeight)) + RenderTarget clipRT; + if (!ClipRenderTarget(clipRT, rt, screenCoords, widgWidth, widgHeight)) { return; } @@ -584,7 +584,7 @@ namespace OpenRCT2::Ui::Windows animationFrame += animationFrameOffset; auto spriteId = ImageId(animationFrame, peep->TshirtColour, peep->TrousersColour); - GfxDrawSprite(clipDpi, spriteId, screenCoords); + GfxDrawSprite(clipRT, spriteId, screenCoords); auto* guest = peep->As(); if (guest == nullptr) @@ -597,21 +597,21 @@ namespace OpenRCT2::Ui::Windows { auto itemOffset = kPeepSpriteHatItemStart + 1; auto imageId = ImageId(itemOffset + itemFrame * 4, guest->HatColour); - GfxDrawSprite(clipDpi, imageId, screenCoords); + GfxDrawSprite(clipRT, imageId, screenCoords); } if (guest->AnimationGroup == PeepAnimationGroup::balloon) { auto itemOffset = kPeepSpriteBalloonItemStart + 1; auto imageId = ImageId(itemOffset + itemFrame * 4, guest->BalloonColour); - GfxDrawSprite(clipDpi, imageId, screenCoords); + GfxDrawSprite(clipRT, imageId, screenCoords); } if (guest->AnimationGroup == PeepAnimationGroup::umbrella) { auto itemOffset = kPeepSpriteUmbrellaItemStart + 1; auto imageId = ImageId(itemOffset + itemFrame * 4, guest->UmbrellaColour); - GfxDrawSprite(clipDpi, imageId, screenCoords); + GfxDrawSprite(clipRT, imageId, screenCoords); } } @@ -826,7 +826,7 @@ namespace OpenRCT2::Ui::Windows int32_t top = marqueeWidget.top + windowPos.y; int32_t marqHeight = marqueeWidget.height() - 1; RenderTarget rtMarquee; - if (!ClipDrawPixelInfo(rtMarquee, rt, { left, top }, marqWidth, marqHeight)) + if (!ClipRenderTarget(rtMarquee, rt, { left, top }, marqWidth, marqHeight)) { return; } diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 7529e075a69f..4dbad2392e2e 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -770,9 +770,9 @@ namespace OpenRCT2::Ui::Windows auto ft = Formatter(); ft.Add(indicatorId); - auto cdpi = const_cast(rt); + auto cRT = const_cast(rt); DrawTextEllipsised( - cdpi, windowPos + ScreenCoordsXY{ widget.left + 5, widget.top + 1 }, widget.width() - 1, strId, ft, + cRT, windowPos + ScreenCoordsXY{ widget.left + 5, widget.top + 1 }, widget.width() - 1, strId, ft, { COLOUR_GREY }); }; diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index e32fa3288118..ba1e51becf2b 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -185,8 +185,8 @@ namespace OpenRCT2::Ui::Windows void informationPaint(Drawing::RenderTarget& rt) { - RenderTarget clippedDPI; - if (ClipDrawPixelInfo(clippedDPI, rt, windowPos, width, height)) + RenderTarget clippedRT; + if (ClipRenderTarget(clippedRT, rt, windowPos, width, height)) { auto screenCoords = ScreenCoordsXY{ 3, widgets[WIDX_CONTENT_PANEL].top + 7 }; int32_t newWidth = width - 6; @@ -195,7 +195,7 @@ namespace OpenRCT2::Ui::Windows { auto ft = Formatter(); ft.Add(name.c_str()); - screenCoords.y += DrawTextWrapped(clippedDPI, screenCoords, newWidth, STR_STRING, ft, { colours[1] }); + screenCoords.y += DrawTextWrapped(clippedRT, screenCoords, newWidth, STR_STRING, ft, { colours[1] }); screenCoords.y += kListRowHeight / 2; } @@ -204,7 +204,7 @@ namespace OpenRCT2::Ui::Windows { auto ft = Formatter(); ft.Add(description.c_str()); - screenCoords.y += DrawTextWrapped(clippedDPI, screenCoords, newWidth, STR_STRING, ft, { colours[1] }); + screenCoords.y += DrawTextWrapped(clippedRT, screenCoords, newWidth, STR_STRING, ft, { colours[1] }); screenCoords.y += kListRowHeight / 2; } @@ -213,7 +213,7 @@ namespace OpenRCT2::Ui::Windows { auto ft = Formatter(); ft.Add(providerName.c_str()); - DrawTextBasic(clippedDPI, screenCoords, STR_PROVIDER_NAME, ft); + DrawTextBasic(clippedRT, screenCoords, STR_PROVIDER_NAME, ft); screenCoords.y += kListRowHeight; } @@ -222,7 +222,7 @@ namespace OpenRCT2::Ui::Windows { auto ft = Formatter(); ft.Add(providerEmail.c_str()); - DrawTextBasic(clippedDPI, screenCoords, STR_PROVIDER_EMAIL, ft); + DrawTextBasic(clippedRT, screenCoords, STR_PROVIDER_EMAIL, ft); screenCoords.y += kListRowHeight; } @@ -231,7 +231,7 @@ namespace OpenRCT2::Ui::Windows { auto ft = Formatter(); ft.Add(providerWebsite.c_str()); - DrawTextBasic(clippedDPI, screenCoords, STR_PROVIDER_WEBSITE, ft); + DrawTextBasic(clippedRT, screenCoords, STR_PROVIDER_WEBSITE, ft); } } } diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 5798e4017d75..4fc758199791 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -512,7 +512,7 @@ namespace OpenRCT2::Ui::Windows case News::ItemType::peepOnRide: { RenderTarget clippedRT; - if (!ClipDrawPixelInfo(clippedRT, rt, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22)) + if (!ClipRenderTarget(clippedRT, rt, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22)) { break; } diff --git a/src/openrct2-ui/windows/ProgressWindow.cpp b/src/openrct2-ui/windows/ProgressWindow.cpp index 696a0493a0a3..87711ccd3cca 100644 --- a/src/openrct2-ui/windows/ProgressWindow.cpp +++ b/src/openrct2-ui/windows/ProgressWindow.cpp @@ -178,20 +178,20 @@ namespace OpenRCT2::Ui::Windows auto& widget = widgets[WIDX_TITLE]; auto screenCoords = windowPos + ScreenCoordsXY{ widget.left, widget.bottom + 1 }; - Drawing::RenderTarget clipDPI; - if (!ClipDrawPixelInfo(clipDPI, rt, screenCoords, width - 3, height - widget.bottom - 3)) + Drawing::RenderTarget clipRT; + if (!ClipRenderTarget(clipRT, rt, screenCoords, width - 3, height - widget.bottom - 3)) return; auto& variant = kVehicleStyles[style]; // Draw supports sprite -- twice, to fill the window auto trackCoords = ScreenCoordsXY{ widget.left, widget.bottom + 1 }; - GfxDrawSprite(clipDPI, variant.supports, trackCoords); - GfxDrawSprite(clipDPI, variant.supports, trackCoords + ScreenCoordsXY(256, 0)); + GfxDrawSprite(clipRT, variant.supports, trackCoords); + GfxDrawSprite(clipRT, variant.supports, trackCoords + ScreenCoordsXY(256, 0)); // Draw track sprite -- twice, to fill the window - GfxDrawSprite(clipDPI, variant.track, trackCoords); - GfxDrawSprite(clipDPI, variant.track, trackCoords + ScreenCoordsXY(256, 0)); + GfxDrawSprite(clipRT, variant.track, trackCoords); + GfxDrawSprite(clipRT, variant.track, trackCoords + ScreenCoordsXY(256, 0)); // Figure out where to position the vehicle to indicate progress auto* vehicle = GfxGetG1Element(variant.vehicle); @@ -207,7 +207,7 @@ namespace OpenRCT2::Ui::Windows position = (vehicleWidth + width) / 2; } - GfxDrawSprite(clipDPI, variant.vehicle, ScreenCoordsXY(position, widget.bottom + 1)); + GfxDrawSprite(clipRT, variant.vehicle, ScreenCoordsXY(position, widget.bottom + 1)); } void setCaption(const std::string& text) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 17d3404d64e9..2c2908c4481c 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1281,8 +1281,8 @@ namespace OpenRCT2::Ui::Windows screenCoords += windowPos; - RenderTarget clipDPI; - if (!ClipDrawPixelInfo(clipDPI, rt, screenCoords, clipWidth, clipHeight)) + RenderTarget clipRT; + if (!ClipRenderTarget(clipRT, rt, screenCoords, clipWidth, clipHeight)) { return; } @@ -1291,7 +1291,7 @@ namespace OpenRCT2::Ui::Windows if (isHalfScale) { - clipDPI.zoom_level = ZoomLevel{ 1 }; + clipRT.zoom_level = ZoomLevel{ 1 }; spriteCoords.x *= 2; spriteCoords.y *= 2; } @@ -1313,7 +1313,7 @@ namespace OpenRCT2::Ui::Windows imageIndex *= carEntry.base_num_frames; imageIndex += carEntry.base_image_id; auto imageId = ImageId(imageIndex, vehicleColour.Body, vehicleColour.Trim, vehicleColour.Tertiary); - GfxDrawSprite(clipDPI, imageId, spriteCoords); + GfxDrawSprite(clipRT, imageId, spriteCoords); } } @@ -4801,7 +4801,7 @@ namespace OpenRCT2::Ui::Windows void ColourOnDraw(Drawing::RenderTarget& rt) { // TODO: This should use lists and identified sprites - RenderTarget clippedDpi; + RenderTarget clippedRT; auto ride = GetRide(rideId); if (ride == nullptr) @@ -4875,12 +4875,12 @@ namespace OpenRCT2::Ui::Windows const auto& entrancePreviewWidget = widgets[WIDX_ENTRANCE_PREVIEW]; if (entrancePreviewWidget.type != WidgetType::empty) { - if (ClipDrawPixelInfo( - clippedDpi, rt, + if (ClipRenderTarget( + clippedRT, rt, windowPos + ScreenCoordsXY{ entrancePreviewWidget.left + 1, entrancePreviewWidget.top + 1 }, entrancePreviewWidget.width() - 1, entrancePreviewWidget.height() - 1)) { - GfxClear(clippedDpi, PaletteIndex::pi12); + GfxClear(clippedRT, PaletteIndex::pi12); auto stationObj = ride->getStationObject(); if (stationObj != nullptr && stationObj->BaseImageId != kImageIndexUndefined) @@ -4888,16 +4888,16 @@ namespace OpenRCT2::Ui::Windows auto imageId = ImageId(stationObj->BaseImageId, trackColour.main, trackColour.additional); // Back - GfxDrawSprite(clippedDpi, imageId, { 34, 20 }); + GfxDrawSprite(clippedRT, imageId, { 34, 20 }); // Front - GfxDrawSprite(clippedDpi, imageId.WithIndexOffset(4), { 34, 20 }); + GfxDrawSprite(clippedRT, imageId.WithIndexOffset(4), { 34, 20 }); // Glass if (stationObj->Flags & StationObjectFlags::isTransparent) { auto glassImageId = ImageId(stationObj->BaseImageId + 20).WithTransparency(trackColour.main); - GfxDrawSprite(clippedDpi, glassImageId, { 34, 20 }); + GfxDrawSprite(clippedRT, glassImageId, { 34, 20 }); } } } @@ -5243,11 +5243,11 @@ namespace OpenRCT2::Ui::Windows int32_t clipHeight = previewWidget.height() - 2; // Draw the preview image - RenderTarget clipDPI; + RenderTarget clipRT; auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 }; - if (ClipDrawPixelInfo(clipDPI, rt, screenPos, clipWidth, clipHeight)) + if (ClipRenderTarget(clipRT, rt, screenPos, clipWidth, clipHeight)) { - musicObj->DrawPreview(clipDPI, clipWidth, clipHeight); + musicObj->DrawPreview(clipRT, clipWidth, clipHeight); } } diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index c32d9bdfe923..5361fd558c48 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1710,7 +1710,7 @@ namespace OpenRCT2::Ui::Windows auto screenCoords = ScreenCoordsXY{ windowPos.x + widget->left + 1, windowPos.y + widget->top + 1 }; widgetWidth = widget->width() - 2; widgetHeight = widget->height() - 2; - if (ClipDrawPixelInfo(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) + if (ClipRenderTarget(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) { DrawTrackPiece( clippedRT, rideIndex, trackType, trackDirection, liftHillAndInvertedState, widgetWidth, widgetHeight); diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index 5ef34114fd65..12be822d2cf7 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -601,9 +601,9 @@ namespace OpenRCT2::Ui::Windows ft.Add(strId); ft.Add(indicatorId); - auto cdpi = const_cast(rt); + auto cRT = const_cast(rt); DrawTextEllipsised( - cdpi, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, widget.width() - 1, + cRT, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, widget.width() - 1, STR_RIDE_LIST_HEADER_FORMAT, ft, { colours[1] }); }; diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 789337fcbe9e..5f72c80f5fe3 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1750,7 +1750,7 @@ namespace OpenRCT2::Ui::Windows } RenderTarget clippedRT; - if (ClipDrawPixelInfo( + if (ClipRenderTarget( clippedRT, rt, topLeft + ScreenCoordsXY{ 1, 1 }, kSceneryButtonWidth - 2, kSceneryButtonHeight - 2)) { DrawSceneryItem(clippedRT, currentSceneryGlobal); diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index e64e9c9822b3..426bf946a194 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -304,7 +304,7 @@ namespace OpenRCT2::Ui::Windows rt, { rtCoords, rtCoords + ScreenCoordsXY{ rt.width - 1, rt.height - 1 } }, ColourMapA[colours[1].colour].mid_light); - // TODO: the line below is a workaround for what is presumably a bug with dpi->width + // TODO: the line below is a workaround for what is presumably a bug with rt->width // see https://github.com/OpenRCT2/OpenRCT2/issues/11238 for details const auto scrollWidth = width - kScrollBarWidth - 10; diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index e4950a47d980..e5c0c517a13c 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -581,7 +581,7 @@ namespace OpenRCT2::Ui::Windows widgetHeight++; Drawing::RenderTarget clippedRT; - if (!ClipDrawPixelInfo(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) + if (!ClipRenderTarget(clippedRT, rt, screenCoords, widgetWidth, widgetHeight)) { return; } diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index 160439eb0763..d6c03cc88bf3 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -631,16 +631,16 @@ namespace OpenRCT2::Ui::Windows auto widgetIndex = WIDX_STAFF_LIST_HANDYMEN_TAB + tabIndex; const auto& widget = widgets[widgetIndex]; - RenderTarget clippedDpi; - if (ClipDrawPixelInfo( - clippedDpi, rt, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, + RenderTarget clippedRT; + if (ClipRenderTarget( + clippedRT, rt, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, widget.right - widget.left - 1, widget.bottom - widget.top - 1)) { auto frame = _selectedTab == tabIndex ? _tabAnimationIndex / 4 : 0; auto& anim = animObj->GetPeepAnimation(PeepAnimationGroup::normal); auto imageId = anim.baseImage + 1 + anim.frameOffsets[frame] * 4; - GfxDrawSprite(clippedDpi, ImageId(imageId), { 15, 23 }); + GfxDrawSprite(clippedRT, ImageId(imageId), { 15, 23 }); } } diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 9da632871525..b8379e640735 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -723,7 +723,7 @@ namespace OpenRCT2::Ui::Windows return; if (!colours[1].flags.has(ColourFlag::translucent)) - // Rectangle::fill(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, + // Rectangle::fill(rt, rt->x, rt->y, rt->x + rt->width - 1, rt->y + rt->height - 1, // ColourMapA[colours[1].colour].mid_light); GfxClear(rt, ColourMapA[colours[1].colour].mid_light); screenCoords.y = 0; diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index f174639fd29f..9d2c197b574c 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -366,7 +366,7 @@ namespace OpenRCT2::Ui::Windows Drawing::RenderTarget clippedRT; const auto& previewWidget = widgets[WIDX_PREVIEW]; const auto previewCoords = windowPos + ScreenCoordsXY{ previewWidget.left, previewWidget.top }; - if (ClipDrawPixelInfo(clippedRT, rt, previewCoords, previewWidget.width(), previewWidget.height())) + if (ClipRenderTarget(clippedRT, rt, previewCoords, previewWidget.width(), previewWidget.height())) { G1Element g1temp = {}; g1temp.offset = _miniPreview.data(); diff --git a/src/openrct2-ui/windows/Windows.h b/src/openrct2-ui/windows/Windows.h index f049fb79ff06..fb430fe208fd 100644 --- a/src/openrct2-ui/windows/Windows.h +++ b/src/openrct2-ui/windows/Windows.h @@ -224,7 +224,7 @@ namespace OpenRCT2::Ui::Windows void WindowResearchFundingMouseUp(WidgetIndex widgetIndex, WidgetIndex baseWidgetIndex); void WindowResearchFundingDropdown(WidgetIndex widgetIndex, int32_t selectedIndex, WidgetIndex baseWidgetIndex); void WindowResearchFundingPrepareDraw(WindowBase* w, WidgetIndex baseWidgetIndex); - void WindowResearchFundingDraw(WindowBase* w, Drawing::RenderTarget& dpi); + void WindowResearchFundingDraw(WindowBase* w, Drawing::RenderTarget& rt); // Ride WindowBase* RideMainOpen(const Ride& ride); diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 5d31d9915f56..5765ffa25c7a 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -751,7 +751,7 @@ void FASTCALL GfxDrawSpriteSoftware(RenderTarget& rt, const ImageId imageId, con * image_id (ebx) and also (0x00EDF81C) * palette_pointer (0x9ABDA4) * unknown_pointer (0x9E3CDC) - * dpi (edi) + * rt (edi) * x (cx) * y (dx) */ diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 6231cd7582d7..37abe90be696 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -317,7 +317,7 @@ static void ColourCharacterWindow(colour_t colour, bool withOutline, Drawing::Te * top : dx * numLines : bp * text : esi - * dpi : edi + * rt : edi */ void DrawStringCentredRaw( RenderTarget& rt, const ScreenCoordsXY& coords, int32_t numLines, const utf8* text, FontStyle fontStyle) @@ -410,7 +410,7 @@ int32_t StringGetHeightRaw(std::string_view text, FontStyle fontStyle) * x : cx * y : dx * text : esi - * dpi : edi + * rt : edi * width : bp * ticks : ebp >> 16 */ diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 53bd61e32a0b..6cb435bc30f1 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -776,7 +776,7 @@ void GfxInvalidateScreen() * height (dx) * drawpixelinfo (edi) */ -bool ClipDrawPixelInfo(RenderTarget& dst, RenderTarget& src, const ScreenCoordsXY& coords, int32_t width, int32_t height) +bool ClipRenderTarget(RenderTarget& dst, RenderTarget& src, const ScreenCoordsXY& coords, int32_t width, int32_t height) { assert(src.zoom_level == ZoomLevel{ 0 }); int32_t right = coords.x + width; @@ -1106,7 +1106,7 @@ void ToggleWindowedMode() Config::Save(); } -void DebugDPI(RenderTarget& rt) +void DebugRT(RenderTarget& rt) { ScreenCoordsXY topLeft = { rt.x, rt.y }; ScreenCoordsXY bottomRight = { rt.x + rt.width - 1, rt.y + rt.height - 1 }; diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index ff1117c47da0..81f9ecd87675 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -235,7 +235,7 @@ extern int32_t gPickupPeepX; extern int32_t gPickupPeepY; extern bool gPaintForceRedraw; -bool ClipDrawPixelInfo( +bool ClipRenderTarget( OpenRCT2::Drawing::RenderTarget& dst, OpenRCT2::Drawing::RenderTarget& src, const ScreenCoordsXY& coords, int32_t width, int32_t height); void GfxSetDirtyBlocks(const ScreenRect& rect); @@ -335,6 +335,6 @@ void UpdatePaletteEffects(); void RefreshVideo(); void ToggleWindowedMode(); -void DebugDPI(OpenRCT2::Drawing::RenderTarget& rt); +void DebugRT(OpenRCT2::Drawing::RenderTarget& rt); #include "NewDrawing.h" diff --git a/src/openrct2/drawing/IDrawingEngine.h b/src/openrct2/drawing/IDrawingEngine.h index f704b2ebc7f4..8786adccff76 100644 --- a/src/openrct2/drawing/IDrawingEngine.h +++ b/src/openrct2/drawing/IDrawingEngine.h @@ -69,7 +69,7 @@ namespace OpenRCT2::Drawing virtual std::string Screenshot() = 0; virtual IDrawingContext* GetDrawingContext() = 0; - virtual RenderTarget* GetDrawingPixelInfo() = 0; + virtual RenderTarget* getRT() = 0; virtual DrawingEngineFlags GetFlags() = 0; diff --git a/src/openrct2/drawing/Line.cpp b/src/openrct2/drawing/Line.cpp index a098709ec43a..e7bb5292952b 100644 --- a/src/openrct2/drawing/Line.cpp +++ b/src/openrct2/drawing/Line.cpp @@ -66,9 +66,9 @@ static void GfxDrawLineOnBuffer(RenderTarget& rt, char colour, const ScreenCoord } /** - * Draws a line on dpi if within dpi boundaries + * Draws a line on rt if within rt boundaries * rct2: 0x00684466 - * dpi (edi) + * rt (edi) * x1 (ax) * y1 (bx) * x2 (cx) diff --git a/src/openrct2/drawing/NewDrawing.cpp b/src/openrct2/drawing/NewDrawing.cpp index d7c3aef446b7..1f8d29d7c586 100644 --- a/src/openrct2/drawing/NewDrawing.cpp +++ b/src/openrct2/drawing/NewDrawing.cpp @@ -109,11 +109,11 @@ void DrawingEngineDispose() } } -RenderTarget& DrawingEngineGetDpi() +RenderTarget& DrawingEngineGetRT() { auto context = GetContext(); auto drawingEngine = context->GetDrawingEngine(); - return *(drawingEngine->GetDrawingPixelInfo()); + return *(drawingEngine->getRT()); } bool DrawingEngineHasDirtyOptimisations() diff --git a/src/openrct2/drawing/NewDrawing.h b/src/openrct2/drawing/NewDrawing.h index 27150ee2abc3..dc08368c183f 100644 --- a/src/openrct2/drawing/NewDrawing.h +++ b/src/openrct2/drawing/NewDrawing.h @@ -27,7 +27,7 @@ void DrawingEngineSetPalette(const OpenRCT2::Drawing::GamePalette& colours); void DrawingEngineCopyRect(int32_t x, int32_t y, int32_t width, int32_t height, int32_t dx, int32_t dy); void DrawingEngineDispose(); -OpenRCT2::Drawing::RenderTarget& DrawingEngineGetDpi(); +OpenRCT2::Drawing::RenderTarget& DrawingEngineGetRT(); bool DrawingEngineHasDirtyOptimisations(); void DrawingEngineInvalidateImage(uint32_t image); void DrawingEngineSetVSync(bool vsync); diff --git a/src/openrct2/drawing/Rectangle.cpp b/src/openrct2/drawing/Rectangle.cpp index ef7f107f4f9b..dbc2d18b4fd1 100644 --- a/src/openrct2/drawing/Rectangle.cpp +++ b/src/openrct2/drawing/Rectangle.cpp @@ -34,7 +34,7 @@ namespace OpenRCT2::Drawing::Rectangle * Draw a rectangle, with optional border or fill * * rct2: 0x006E6F81 - * dpi (edi) + * rt (edi) * left (ax) * top (cx) * right (bx) diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index be710945570f..cc6c5d771d23 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -1440,7 +1440,7 @@ static constexpr const int16_t* kScrollPositions[kMaxModes] = { assert(scrollingMode < kMaxModes); - if (session.DPI.zoom_level > ZoomLevel{ 0 }) + if (session.rt.zoom_level > ZoomLevel{ 0 }) return ImageId(SPR_SCROLLING_TEXT_DEFAULT); _drawSCrollNextIndex++; diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index 8f5c4f3653c1..5ebee056c6e2 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -260,11 +260,6 @@ IDrawingContext* X8DrawingEngine::GetDrawingContext() return _drawingContext; } -RenderTarget* X8DrawingEngine::GetDrawingPixelInfo() -{ - return &_mainRT; -} - DrawingEngineFlags X8DrawingEngine::GetFlags() { return { DrawingEngineFlag::dirtyOptimisations, DrawingEngineFlag::parallelDrawing }; @@ -275,7 +270,7 @@ void X8DrawingEngine::InvalidateImage([[maybe_unused]] uint32_t image) // Not applicable for this engine } -RenderTarget* X8DrawingEngine::GetDPI() +RenderTarget* X8DrawingEngine::getRT() { return &_mainRT; } diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index 688093d462c7..5adaf6297b34 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -106,12 +106,10 @@ namespace OpenRCT2 void CopyRect(int32_t x, int32_t y, int32_t width, int32_t height, int32_t dx, int32_t dy) override; std::string Screenshot() override; IDrawingContext* GetDrawingContext() override; - RenderTarget* GetDrawingPixelInfo() override; + RenderTarget* getRT() override; DrawingEngineFlags GetFlags() override; void InvalidateImage(uint32_t image) override; - RenderTarget* GetDPI(); - protected: void ConfigureBits(uint32_t width, uint32_t height, uint32_t pitch); virtual void OnDrawDirtyBlock(int32_t left, int32_t top, int32_t right, int32_t bottom); diff --git a/src/openrct2/entity/Duck.cpp b/src/openrct2/entity/Duck.cpp index 312acde67aaa..9eaf11245d8d 100644 --- a/src/openrct2/entity/Duck.cpp +++ b/src/openrct2/entity/Duck.cpp @@ -377,7 +377,7 @@ void Duck::Paint(PaintSession& session, int32_t imageDirection) const { PROFILED_FUNCTION(); - auto& rt = session.DPI; + auto& rt = session.rt; if (rt.zoom_level > ZoomLevel{ 1 }) return; diff --git a/src/openrct2/entity/Fountain.cpp b/src/openrct2/entity/Fountain.cpp index c091300a4302..51552e825e99 100644 --- a/src/openrct2/entity/Fountain.cpp +++ b/src/openrct2/entity/Fountain.cpp @@ -411,7 +411,7 @@ void JumpingFountain::Paint(PaintSession& session, int32_t imageDirection) const constexpr uint32_t kJumpingFountainSnowBaseImage = 23037; constexpr uint32_t kJumpingFountainWaterBaseImage = 22973; - auto& rt = session.DPI; + auto& rt = session.rt; if (rt.zoom_level > ZoomLevel{ 0 }) { return; diff --git a/src/openrct2/entity/Litter.cpp b/src/openrct2/entity/Litter.cpp index 66e31cfb0365..b0001a08b902 100644 --- a/src/openrct2/entity/Litter.cpp +++ b/src/openrct2/entity/Litter.cpp @@ -184,7 +184,7 @@ void Litter::Paint(PaintSession& session, int32_t imageDirection) const { PROFILED_FUNCTION(); - auto& rt = session.DPI; + auto& rt = session.rt; if (rt.zoom_level > ZoomLevel{ 0 }) return; // If zoomed at all no litter drawn diff --git a/src/openrct2/entity/MoneyEffect.cpp b/src/openrct2/entity/MoneyEffect.cpp index 937553d70275..401177986f29 100644 --- a/src/openrct2/entity/MoneyEffect.cpp +++ b/src/openrct2/entity/MoneyEffect.cpp @@ -198,7 +198,7 @@ void MoneyEffect::Paint(PaintSession& session, int32_t imageDirection) const return; } - auto& rt = session.DPI; + auto& rt = session.rt; if (rt.zoom_level > ZoomLevel{ 0 }) { return; diff --git a/src/openrct2/entity/Particle.cpp b/src/openrct2/entity/Particle.cpp index 36b88391b2d3..2e71c9e20eb8 100644 --- a/src/openrct2/entity/Particle.cpp +++ b/src/openrct2/entity/Particle.cpp @@ -176,7 +176,7 @@ void VehicleCrashParticle::Paint(PaintSession& session, int32_t imageDirection) { PROFILED_FUNCTION(); - auto& rt = session.DPI; + auto& rt = session.rt; if (rt.zoom_level > ZoomLevel{ 0 }) { return; diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 1036b34c83d4..b2161a6a9f3e 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -2778,7 +2778,7 @@ void Peep::Paint(PaintSession& session, int32_t imageDirection) const } } - if (session.DPI.zoom_level > ZoomLevel{ 2 }) + if (session.rt.zoom_level > ZoomLevel{ 2 }) { return; } diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index 2507983d4928..a3187e62175d 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -53,7 +53,7 @@ extern uint8_t gClipHeight; uint8_t gScreenshotCountdown = 0; -static bool WriteDpiToFile(std::string_view path, const RenderTarget& rt, const GamePalette& palette) +static bool WriteRTToFile(std::string_view path, const RenderTarget& rt, const GamePalette& palette) { auto const pixels8 = rt.bits; auto const pixelsLen = rt.LineStride() * rt.height; @@ -183,7 +183,7 @@ std::string ScreenshotDumpPNG(RenderTarget& rt) return {}; } - if (WriteDpiToFile(path.value(), rt, gPalette)) + if (WriteRTToFile(path.value(), rt, gPalette)) { return path.value(); } @@ -228,7 +228,7 @@ static int32_t GetTallestVisibleTileTop( return minViewY - 64; } -static RenderTarget CreateDPI(const Viewport& viewport) +static RenderTarget CreateRT(const Viewport& viewport) { RenderTarget rt; rt.width = viewport.width; @@ -247,7 +247,7 @@ static RenderTarget CreateDPI(const Viewport& viewport) return rt; } -static void ReleaseDPI(RenderTarget& rt) +static void ReleaseRT(RenderTarget& rt) { if (rt.bits != nullptr) delete[] rt.bits; @@ -356,10 +356,10 @@ void ScreenshotGiant() viewport.flags |= VIEWPORT_FLAG_TRANSPARENT_BACKGROUND; } - rt = CreateDPI(viewport); + rt = CreateRT(viewport); RenderViewport(nullptr, viewport, rt); - WriteDpiToFile(path.value(), rt, gPalette); + WriteRTToFile(path.value(), rt, gPalette); // Show user that screenshot saved successfully const auto filename = Path::GetFileName(path.value()); @@ -374,7 +374,7 @@ void ScreenshotGiant() ContextShowError(STR_SCREENSHOT_FAILED, kStringIdNone, {}, true); } - ReleaseDPI(rt); + ReleaseRT(rt); } static void ApplyOptions(const ScreenshotOptions* options, Viewport& viewport) @@ -560,17 +560,17 @@ int32_t CommandLineForScreenshot(const char** argv, int32_t argc, ScreenshotOpti ApplyOptions(options, viewport); - rt = CreateDPI(viewport); + rt = CreateRT(viewport); RenderViewport(nullptr, viewport, rt); - WriteDpiToFile(outputPath, rt, gPalette); + WriteRTToFile(outputPath, rt, gPalette); } catch (const std::exception& e) { std::printf("%s\n", e.what()); exitCode = -1; } - ReleaseDPI(rt); + ReleaseRT(rt); DrawingEngineDispose(); @@ -653,8 +653,8 @@ void CaptureImage(const CaptureOptions& options) } auto outputPath = ResolveFilenameForCapture(options.Filename); - auto rt = CreateDPI(viewport); + auto rt = CreateRT(viewport); RenderViewport(nullptr, viewport, rt); - WriteDpiToFile(outputPath, rt, gPalette); - ReleaseDPI(rt); + WriteRTToFile(outputPath, rt, gPalette); + ReleaseRT(rt); } diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 40f7e7a577df..ecbfda223aaa 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -468,7 +468,7 @@ namespace OpenRCT2 if (DrawingEngineHasDirtyOptimisations()) { - RenderTarget& rt = DrawingEngineGetDpi(); + RenderTarget& rt = DrawingEngineGetRT(); ViewportShiftPixels(rt, w, { left, top, right, bottom }, { x_diff, y_diff }); } else @@ -815,7 +815,7 @@ namespace OpenRCT2 * bx: top * dx: right * esi: viewport - * edi: dpi + * edi: rt * ebp: bottom */ void ViewportRender(RenderTarget& rt, const Viewport* viewport) @@ -857,7 +857,7 @@ namespace OpenRCT2 { colour = PaletteIndex::pi0; } - GfxClear(session.DPI, colour); + GfxClear(session.rt, colour); } PaintDrawStructs(session); @@ -865,12 +865,12 @@ namespace OpenRCT2 if (Config::Get().general.renderWeatherGloom && !gTrackDesignSaveMode && !(session.ViewFlags & VIEWPORT_FLAG_HIDE_ENTITIES) && !(session.ViewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES)) { - ViewportPaintWeatherGloom(session.DPI); + ViewportPaintWeatherGloom(session.rt); } if (session.PSStringHead != nullptr) { - PaintDrawMoneyStructs(session.DPI, session.PSStringHead); + PaintDrawMoneyStructs(session.rt, session.PSStringHead); } } @@ -881,7 +881,7 @@ namespace OpenRCT2 * ebx: top * edx: right * esi: viewport - * edi: dpi + * edi: rt * ebp: bottom */ static void ViewportPaint(const Viewport* viewport, RenderTarget& rt) @@ -933,7 +933,7 @@ namespace OpenRCT2 PaintSession* session = PaintSessionAlloc(worldRT, viewport->flags, viewport->rotation); _paintColumns.push_back(session); - RenderTarget& columnRT = session->DPI; + RenderTarget& columnRT = session->rt; if (x >= columnRT.x) { const int32_t leftPitch = x - columnRT.x; @@ -1662,7 +1662,7 @@ namespace OpenRCT2 while (next_ps != nullptr) { ps = next_ps; - if (IsSpriteInteractedWith(session->DPI, ps->image_id, ps->ScreenPos)) + if (IsSpriteInteractedWith(session->rt, ps->image_id, ps->ScreenPos)) { if (PSInteractionTypeIsInFilter(ps, filter) && GetPaintStructVisibility(ps, viewFlags) == VisibilityKind::visible) @@ -1677,7 +1677,7 @@ namespace OpenRCT2 #pragma GCC diagnostic ignored "-Wnull-dereference" for (AttachedPaintStruct* attached_ps = ps->Attached; attached_ps != nullptr; attached_ps = attached_ps->NextEntry) { - if (IsSpriteInteractedWith(session->DPI, attached_ps->image_id, ps->ScreenPos + attached_ps->RelativePos)) + if (IsSpriteInteractedWith(session->rt, attached_ps->image_id, ps->ScreenPos + attached_ps->RelativePos)) { if (PSInteractionTypeIsInFilter(ps, filter) && GetPaintStructVisibility(ps, viewFlags) == VisibilityKind::visible) diff --git a/src/openrct2/paint/Paint.Entity.cpp b/src/openrct2/paint/Paint.Entity.cpp index 31b9e45af937..74443ab21f32 100644 --- a/src/openrct2/paint/Paint.Entity.cpp +++ b/src/openrct2/paint/Paint.Entity.cpp @@ -52,7 +52,7 @@ void EntityPaintSetup(PaintSession& session, const CoordsXY& pos) return; } - if (session.DPI.zoom_level > ZoomLevel{ 2 }) + if (session.rt.zoom_level > ZoomLevel{ 2 }) { return; } @@ -109,11 +109,11 @@ void EntityPaintSetup(PaintSession& session, const CoordsXY& pos) screenCoords - ScreenCoordsXY{ entity->SpriteData.Width, entity->SpriteData.HeightMin }, screenCoords + ScreenCoordsXY{ entity->SpriteData.Width, entity->SpriteData.HeightMax }); - const ZoomLevel zoom = session.DPI.zoom_level; - if (session.DPI.y + session.DPI.height <= zoom.ApplyInversedTo(spriteRect.GetTop()) - || zoom.ApplyInversedTo(spriteRect.GetBottom()) <= session.DPI.y - || session.DPI.x + session.DPI.width <= zoom.ApplyInversedTo(spriteRect.GetLeft()) - || zoom.ApplyInversedTo(spriteRect.GetRight()) <= session.DPI.x) + const ZoomLevel zoom = session.rt.zoom_level; + if (session.rt.y + session.rt.height <= zoom.ApplyInversedTo(spriteRect.GetTop()) + || zoom.ApplyInversedTo(spriteRect.GetBottom()) <= session.rt.y + || session.rt.x + session.rt.width <= zoom.ApplyInversedTo(spriteRect.GetLeft()) + || zoom.ApplyInversedTo(spriteRect.GetRight()) <= session.rt.x) { continue; } diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index 91c650475798..4a1b053b5f2a 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -105,7 +105,7 @@ static void PaintSessionAddPSToQuadrant(PaintSession& session, PaintStruct* ps) session.QuadrantFrontIndex = std::max(session.QuadrantFrontIndex, paintQuadrantIndex); } -static constexpr bool imageWithinDPI(const ScreenCoordsXY& imagePos, const G1Element& g1, const RenderTarget& rt) +static constexpr bool imageWithinRT(const ScreenCoordsXY& imagePos, const G1Element& g1, const RenderTarget& rt) { const int32_t left = imagePos.x + g1.xOffset; const int32_t bottom = imagePos.y + g1.yOffset; @@ -188,7 +188,7 @@ static PaintStruct* CreateNormalPaintStruct( const auto imagePos = Translate3DTo2DWithZ(session.CurrentRotation, swappedRotCoord); - if (!imageWithinDPI(imagePos, *g1, session.DPI)) + if (!imageWithinRT(imagePos, *g1, session.rt)) { return nullptr; } @@ -236,7 +236,7 @@ static PaintStruct* CreateNormalPaintStructHeight( const auto imagePos = Translate3DTo2DWithZ(session.CurrentRotation, swappedRotCoord); - if (!imageWithinDPI(imagePos, *g1, session.DPI)) + if (!imageWithinRT(imagePos, *g1, session.rt)) { return nullptr; } @@ -273,7 +273,7 @@ template void PaintSessionGenerateRotate(PaintSession& session) { // Optimised modified version of ViewportPosToMapPos - ScreenCoordsXY screenCoord = { floor2(session.DPI.WorldX(), 32), floor2((session.DPI.WorldY() - 16), 32) }; + ScreenCoordsXY screenCoord = { floor2(session.rt.WorldX(), 32), floor2((session.rt.WorldY() - 16), 32) }; CoordsXY mapTile = { screenCoord.y - screenCoord.x / 2, screenCoord.y + screenCoord.x / 2 }; mapTile = mapTile.Rotate(direction); @@ -283,7 +283,7 @@ void PaintSessionGenerateRotate(PaintSession& session) } mapTile = mapTile.ToTileStart(); - uint16_t numVerticalTiles = (session.DPI.WorldHeight() + 2128) >> 5; + uint16_t numVerticalTiles = (session.rt.WorldHeight() + 2128) >> 5; // Adjacent tiles to also check due to overlapping of sprites constexpr CoordsXY adjacentTiles[] = { @@ -709,11 +709,11 @@ static inline void PaintDrawStruct(PaintSession& session, PaintStruct* ps) auto screenPos = ps->ScreenPos; if (ps->InteractionItem == ViewportInteractionItem::entity) { - if (session.DPI.zoom_level >= ZoomLevel{ 1 }) + if (session.rt.zoom_level >= ZoomLevel{ 1 }) { screenPos.x = floor2(screenPos.x, 2); screenPos.y = floor2(screenPos.y, 2); - if (session.DPI.zoom_level >= ZoomLevel{ 2 }) + if (session.rt.zoom_level >= ZoomLevel{ 2 }) { screenPos.x = floor2(screenPos.x, 4); screenPos.y = floor2(screenPos.y, 4); @@ -727,7 +727,7 @@ static inline void PaintDrawStruct(PaintSession& session, PaintStruct* ps) } else { - GfxDrawSprite(session.DPI, imageId, screenPos); + GfxDrawSprite(session.rt, imageId, screenPos); } if (ps->Children != nullptr) @@ -736,7 +736,7 @@ static inline void PaintDrawStruct(PaintSession& session, PaintStruct* ps) } else { - PaintAttachedPS(session.DPI, ps, session.ViewFlags); + PaintAttachedPS(session.rt, ps, session.ViewFlags); } } @@ -756,7 +756,7 @@ void PaintDrawStructs(PaintSession& session) static void PaintPSImageWithBoundingBoxes(PaintSession& session, PaintStruct* ps, ImageId imageId, int32_t x, int32_t y) { - auto& rt = session.DPI; + auto& rt = session.rt; const uint8_t colour = BoundBoxDebugColours[EnumValue(ps->InteractionItem)]; const uint8_t rotation = session.CurrentRotation; diff --git a/src/openrct2/paint/Paint.h b/src/openrct2/paint/Paint.h index e457879ae641..5f6141d90c63 100644 --- a/src/openrct2/paint/Paint.h +++ b/src/openrct2/paint/Paint.h @@ -197,7 +197,7 @@ struct PaintNodeStorage struct PaintSession : public PaintSessionCore { - OpenRCT2::Drawing::RenderTarget DPI; + OpenRCT2::Drawing::RenderTarget rt; PaintNodeStorage paintEntries; PaintStruct* AllocateNormalPaintEntry() noexcept diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index fc19aace0345..aefed4921996 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -42,7 +42,7 @@ void Painter::Paint(IDrawingEngine& de) { PROFILED_FUNCTION(); - auto rt = de.GetDrawingPixelInfo(); + auto rt = de.getRT(); if (IntroIsPlaying()) { @@ -171,7 +171,7 @@ PaintSession* Painter::CreateSession(RenderTarget& rt, uint32_t viewFlags, uint8 session = &_paintSessionPool.emplace_back(); } - session->DPI = rt; + session->rt = rt; session->ViewFlags = viewFlags; session->QuadrantBackIndex = std::numeric_limits::max(); session->QuadrantFrontIndex = 0; diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index 9ee850c88678..ad2c05f1fa0f 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -79,7 +79,7 @@ void PaintBanner(PaintSession& session, uint8_t direction, int32_t height, const { PROFILED_FUNCTION(); - if (session.DPI.zoom_level > ZoomLevel{ 1 } || gTrackDesignSaveMode + if (session.rt.zoom_level > ZoomLevel{ 1 } || gTrackDesignSaveMode || (session.ViewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES)) return; diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index d679ac7b232b..1b58c7d57e91 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -204,7 +204,7 @@ static void PaintLargeScenery3DText( } } - if (session.DPI.zoom_level > ZoomLevel{ 1 }) + if (session.rt.zoom_level > ZoomLevel{ 1 }) return; auto banner = tileElement.GetBanner(); @@ -413,7 +413,7 @@ void PaintLargeScenery(PaintSession& session, uint8_t direction, uint16_t height { PaintLargeScenery3DText(session, *sceneryEntry, tile, tileElement, direction, height, isGhost); } - else if (session.DPI.zoom_level <= ZoomLevel{ 0 }) + else if (session.rt.zoom_level <= ZoomLevel{ 0 }) { auto sequenceDirection2 = (tileElement.GetSequenceIndex() - 1) & 3; if (sequenceDirection2 == direction) diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 498e5afa5d5c..676b93d14326 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -617,7 +617,7 @@ static void PathPaintFencesAdditionsTunnels( // Probably drawing benches etc. PROFILED_FUNCTION(); - if (session.DPI.zoom_level <= ZoomLevel{ 1 }) + if (session.rt.zoom_level <= ZoomLevel{ 1 }) { if (!gTrackDesignSaveMode) { diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp index 862491475f9f..e5031eb454ab 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp @@ -255,7 +255,7 @@ void Sub6A3F61PathAddition(PaintSession& session, const PathElement& pathElement PathAdditionBenchesPaint(session, *pathAddEntry, pathElement, height, rotatedEdges, sceneryImageTemplate); break; case PathAdditionDrawType::jumpingFountain: - PathAdditionJumpingFountainsPaint(session, *pathAddEntry, height, sceneryImageTemplate, session.DPI); + PathAdditionJumpingFountainsPaint(session, *pathAddEntry, height, sceneryImageTemplate, session.rt); break; } diff --git a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp index 6465bad85a57..b335d02feb97 100644 --- a/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.SmallScenery.cpp @@ -220,7 +220,7 @@ static void PaintSmallSceneryBody( { const auto currentTicks = getGameState().currentTicks; - if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_VISIBLE_WHEN_ZOOMED) || (session.DPI.zoom_level <= ZoomLevel{ 1 })) + if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_VISIBLE_WHEN_ZOOMED) || (session.rt.zoom_level <= ZoomLevel{ 1 })) { if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_FOUNTAIN_SPRAY_1)) { diff --git a/src/openrct2/paint/tile_element/Paint.Surface.cpp b/src/openrct2/paint/tile_element/Paint.Surface.cpp index e52ca4ea5da2..8633e3693e52 100644 --- a/src/openrct2/paint/tile_element/Paint.Surface.cpp +++ b/src/openrct2/paint/tile_element/Paint.Surface.cpp @@ -935,7 +935,7 @@ void PaintSurface(PaintSession& session, uint8_t direction, uint16_t height, con session.Flags |= PaintSessionFlags::PassedSurface; session.Surface = &tileElement; - const auto zoomLevel = session.DPI.zoom_level; + const auto zoomLevel = session.rt.zoom_level; const uint8_t rotation = session.CurrentRotation; const uint8_t surfaceShape = ViewportSurfacePaintSetupGetRelativeSlope(tileElement, rotation); const CoordsXY& base = session.SpritePosition; diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index cfd243c58ab3..cdab2934e984 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -93,11 +93,11 @@ static void BlankTilesPaint(PaintSession& session, int32_t x, int32_t y) dx -= 16; int32_t bx = dx + 32; - if (bx <= session.DPI.WorldY()) + if (bx <= session.rt.WorldY()) return; dx -= 20; - dx -= session.DPI.WorldHeight(); - if (dx >= session.DPI.WorldY()) + dx -= session.rt.WorldHeight(); + if (dx >= session.rt.WorldY()) return; session.SpritePosition.x = x; @@ -179,7 +179,7 @@ static void PaintTileElementBase(PaintSession& session, const CoordsXY& origCoor PaintAddImageAsParent(session, imageId, { 0, 0, arrowZ }, { { 0, 0, arrowZ + 18 }, { 32, 32, -1 } }); } - if (screenMinY + 52 <= session.DPI.WorldY()) + if (screenMinY + 52 <= session.rt.WorldY()) return; const TileElement* element = tile_element; // push tile_element @@ -203,7 +203,7 @@ static void PaintTileElementBase(PaintSession& session, const CoordsXY& origCoor maxHeight = std::max(maxHeight, VirtualFloorGetHeight()); } - if (screenMinY - (maxHeight + 32) >= session.DPI.WorldY() + session.DPI.WorldHeight()) + if (screenMinY - (maxHeight + 32) >= session.rt.WorldY() + session.rt.WorldHeight()) return; session.SpritePosition.x = coords.x; @@ -391,6 +391,6 @@ uint16_t PaintUtilRotateSegments(uint16_t segments, uint8_t rotation) bool PaintShouldShowHeightMarkers(const PaintSession& session, const uint32_t viewportFlag) { - auto rt = &session.DPI; + auto rt = &session.rt; return (session.ViewFlags & viewportFlag) && (rt->zoom_level <= ZoomLevel{ 0 }); } diff --git a/src/openrct2/paint/track/gentle/HauntedHouse.cpp b/src/openrct2/paint/track/gentle/HauntedHouse.cpp index bf2b3ffd2d0d..5e9b2abdff6f 100644 --- a/src/openrct2/paint/track/gentle/HauntedHouse.cpp +++ b/src/openrct2/paint/track/gentle/HauntedHouse.cpp @@ -54,7 +54,7 @@ static void PaintHauntedHouseStructure( auto bb = BoundBoxXYZ{ { boundBox.offset, height }, { boundBox.length, 127 } }; PaintAddImageAsParent(session, stationColour.WithIndex(imageIndex), { xOffset, yOffset, height }, bb); - if (session.DPI.zoom_level <= ZoomLevel{ 0 } && frameNum != 0) + if (session.rt.zoom_level <= ZoomLevel{ 0 } && frameNum != 0) { imageIndex = baseImageIndex + 3 + ((direction & 3) * 18) + frameNum; PaintAddImageAsChild( diff --git a/src/openrct2/paint/track/gentle/MerryGoRound.cpp b/src/openrct2/paint/track/gentle/MerryGoRound.cpp index 8ce75ab21f85..e8c8de8c366d 100644 --- a/src/openrct2/paint/track/gentle/MerryGoRound.cpp +++ b/src/openrct2/paint/track/gentle/MerryGoRound.cpp @@ -34,7 +34,7 @@ static void PaintRiders( PaintSession& session, const Ride& ride, const RideObjectEntry& rideEntry, const Vehicle& vehicle, int32_t rotationOffset, const CoordsXYZ& offset, const BoundBoxXYZ& bb) { - if (session.DPI.zoom_level > ZoomLevel{ 0 }) + if (session.rt.zoom_level > ZoomLevel{ 0 }) return; if (!(ride.lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK)) return; diff --git a/src/openrct2/paint/track/gentle/SpiralSlide.cpp b/src/openrct2/paint/track/gentle/SpiralSlide.cpp index 453935287f2d..a86359d9746f 100644 --- a/src/openrct2/paint/track/gentle/SpiralSlide.cpp +++ b/src/openrct2/paint/track/gentle/SpiralSlide.cpp @@ -138,7 +138,7 @@ static void SpiralSlidePaintTileFront( PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 8, 0, height + 3 }, { 8, 16, 108 } }); } - if (session.DPI.zoom_level <= ZoomLevel{ 0 } && ride.slideInUse) + if (session.rt.zoom_level <= ZoomLevel{ 0 } && ride.slideInUse) { uint8_t slide_progress = ride.spiralSlideProgress; if (slide_progress != 0) diff --git a/src/openrct2/paint/track/thrill/Enterprise.cpp b/src/openrct2/paint/track/thrill/Enterprise.cpp index bdfafc438a3a..191e8574b2fe 100644 --- a/src/openrct2/paint/track/thrill/Enterprise.cpp +++ b/src/openrct2/paint/track/thrill/Enterprise.cpp @@ -29,7 +29,7 @@ static void PaintEnterpriseRiders( PaintSession& session, const RideObjectEntry& rideEntry, Vehicle& vehicle, uint32_t imageOffset, const CoordsXYZ& offset, const BoundBoxXYZ& bb) { - if (session.DPI.zoom_level > ZoomLevel{ 0 }) + if (session.rt.zoom_level > ZoomLevel{ 0 }) return; if (imageOffset >= 12) return; diff --git a/src/openrct2/paint/track/thrill/MagicCarpet.cpp b/src/openrct2/paint/track/thrill/MagicCarpet.cpp index 2da27d89474c..c937e8383697 100644 --- a/src/openrct2/paint/track/thrill/MagicCarpet.cpp +++ b/src/openrct2/paint/track/thrill/MagicCarpet.cpp @@ -105,7 +105,7 @@ static void PaintMagicCarpetRiders( PaintSession& session, const RideObjectEntry& rideEntry, const Vehicle& vehicle, Direction direction, const CoordsXYZ& offset, const BoundBoxXYZ& bb) { - if (session.DPI.zoom_level > ZoomLevel{ 1 }) + if (session.rt.zoom_level > ZoomLevel{ 1 }) return; auto baseImageIndex = rideEntry.Cars[0].base_image_id + 4 + direction; diff --git a/src/openrct2/paint/track/thrill/SwingingShip.cpp b/src/openrct2/paint/track/thrill/SwingingShip.cpp index f821cb35d3c6..0df2182fddd3 100644 --- a/src/openrct2/paint/track/thrill/SwingingShip.cpp +++ b/src/openrct2/paint/track/thrill/SwingingShip.cpp @@ -64,7 +64,7 @@ static void PaintSwingingShipRiders( PaintSession& session, const Ride& ride, const Vehicle& vehicle, ImageIndex baseImageIndex, Direction direction, const CoordsXYZ& offset, const BoundBoxXYZ& bb) { - if (session.DPI.zoom_level > ZoomLevel{ 1 }) + if (session.rt.zoom_level > ZoomLevel{ 1 }) return; if (!(ride.lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK)) diff --git a/src/openrct2/paint/track/thrill/TopSpin.cpp b/src/openrct2/paint/track/thrill/TopSpin.cpp index 50139c437a84..948f837b703e 100644 --- a/src/openrct2/paint/track/thrill/TopSpin.cpp +++ b/src/openrct2/paint/track/thrill/TopSpin.cpp @@ -41,7 +41,7 @@ static void PaintTopSpinRiders( PaintSession& session, const Vehicle& vehicle, ImageIndex seatImageIndex, const CoordsXYZ& seatCoords, const BoundBoxXYZ& bb) { - if (session.DPI.zoom_level >= ZoomLevel{ 2 }) + if (session.rt.zoom_level >= ZoomLevel{ 2 }) return; for (int i = 0; i < 4; i++) diff --git a/src/openrct2/paint/track/thrill/Twist.cpp b/src/openrct2/paint/track/thrill/Twist.cpp index 109bf4fd4bad..78f2f9c50aa2 100644 --- a/src/openrct2/paint/track/thrill/Twist.cpp +++ b/src/openrct2/paint/track/thrill/Twist.cpp @@ -69,7 +69,7 @@ static void PaintTwistStructure( }; PaintAddImageAsParent(session, imageId, { xOffset, yOffset, height }, bb); - if (session.DPI.zoom_level < ZoomLevel{ 1 } && ride.lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK && vehicle != nullptr) + if (session.rt.zoom_level < ZoomLevel{ 1 } && ride.lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK && vehicle != nullptr) { for (int32_t i = 0; i < vehicle->num_peeps; i += 2) { diff --git a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp index 39c48e06d7dd..377f71120b3d 100644 --- a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp @@ -41,7 +41,7 @@ namespace OpenRCT2 PaintAddImageAsParent(session, image_id, { 0, 0, z }, { { -5, -5, z + 1 }, { 16, 16, 41 } }); // Draw peeps: - if (session.DPI.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && !vehicle->IsGhost()) + if (session.rt.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && !vehicle->IsGhost()) { baseImage_id = carEntry->base_image_id + 9; if ((vehicle->restraints_position / 64) == 3) diff --git a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp index 9a9bab0755d2..633f61dc84f8 100644 --- a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp @@ -105,7 +105,7 @@ namespace OpenRCT2 return; } - if (session.DPI.zoom_level >= ZoomLevel{ 2 }) + if (session.rt.zoom_level >= ZoomLevel{ 2 }) { return; } @@ -141,7 +141,7 @@ namespace OpenRCT2 return; } - if (session.DPI.zoom_level >= ZoomLevel{ 1 }) + if (session.rt.zoom_level >= ZoomLevel{ 1 }) { return; } diff --git a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp index b3ef99285761..1a77ec668598 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp @@ -84,7 +84,7 @@ namespace OpenRCT2 } PaintAddImageAsParent(session, image_id, { 0, 0, z }, bb); - if (session.DPI.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && !vehicle->IsGhost()) + if (session.rt.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && !vehicle->IsGhost()) { // Draw peeps: (this particular vehicle doesn't sort them back to front like others so the back ones sometimes clip, // but that's how the original does it...) diff --git a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp b/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp index 1fb889fbb436..683d2d0585fe 100644 --- a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp @@ -63,7 +63,7 @@ namespace OpenRCT2 } PaintAddImageAsParent(session, image_id, { 0, 0, z }, bb); - if (session.DPI.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && !vehicle->IsGhost()) + if (session.rt.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && !vehicle->IsGhost()) { uint8_t riding_peep_sprites[4] = { 0xFF, 0xFF, 0xFF, 0xFF }; for (int32_t i = 0; i < vehicle->num_peeps; i++) diff --git a/src/openrct2/paint/vehicle/VehiclePaint.cpp b/src/openrct2/paint/vehicle/VehiclePaint.cpp index 36841e85dfd5..e7d3e1f5bb18 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.cpp +++ b/src/openrct2/paint/vehicle/VehiclePaint.cpp @@ -1132,7 +1132,7 @@ static void vehicle_sprite_paint( session, imageId, { 0, 0, z }, { { bb.offset_x, bb.offset_y, bb.offset_z + z }, { bb.length_x, bb.length_y, bb.length_z } }); - auto& rt = session.DPI; + auto& rt = session.rt; if (rt.zoom_level < ZoomLevel{ 2 } && vehicle->num_peeps > 0 && carEntry->no_seating_rows > 0) { PaintVehicleRiders(session, vehicle, carEntry, baseImageId, z, bb); From 96a0c1f48ea033912863f5f5c7707f3c959ae474 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 6 Jan 2026 23:31:31 +0100 Subject: [PATCH 193/222] Refactor Map window palette index handling --- src/openrct2-ui/windows/Map.cpp | 141 +++++++++++++++++--------------- 1 file changed, 77 insertions(+), 64 deletions(-) diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 360169961b31..9094bb8abaf6 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -48,17 +48,34 @@ using namespace OpenRCT2::Drawing; namespace OpenRCT2::Ui::Windows { - static constexpr uint16_t MapColour2(uint8_t colourA, uint8_t colourB) + struct ColourPair { - return (colourA << 8) | colourB; - } - static constexpr uint16_t MapColour(uint8_t colour) - { - return MapColour2(colour, colour); - } - static constexpr uint16_t MapColourUnowned(uint16_t colour) + PaletteIndex a = PaletteIndex::pi0; + PaletteIndex b = PaletteIndex::pi0; + + constexpr ColourPair() = default; + + constexpr ColourPair(PaletteIndex _a) + : a(_a) + , b(_a) + { + } + + constexpr ColourPair(PaletteIndex _a, PaletteIndex _b) + : a(_a) + , b(_b) + { + } + + constexpr bool operator==(const ColourPair& rhs) const + { + return a == rhs.a && b == rhs.b; + } + }; + + static constexpr ColourPair MapColourUnowned(ColourPair colour) { - return MapColour2((colour & 0xFF00) >> 8, PaletteIndex::pi10); + return ColourPair(colour.a, PaletteIndex::pi10); } static int32_t getPracticalMapSize() { @@ -167,15 +184,15 @@ namespace OpenRCT2::Ui::Windows STR_MAP_INFO_KIOSK, STR_MAP_FIRST_AID, STR_MAP_CASH_MACHINE, STR_MAP_TOILET, }; - static constexpr uint16_t RideKeyColours[] = { - MapColour(PaletteIndex::pi61), // COLOUR_KEY_RIDE - MapColour(PaletteIndex::pi42), // COLOUR_KEY_FOOD - MapColour(PaletteIndex::pi20), // COLOUR_KEY_DRINK - MapColour(PaletteIndex::pi209), // COLOUR_KEY_SOUVENIR - MapColour(PaletteIndex::pi136), // COLOUR_KEY_KIOSK - MapColour(PaletteIndex::pi102), // COLOUR_KEY_FIRST_AID - MapColour(PaletteIndex::pi55), // COLOUR_KEY_CASH_MACHINE - MapColour(PaletteIndex::pi161), // COLOUR_KEY_TOILETS + static constexpr ColourPair kRideKeyColours[] = { + ColourPair(PaletteIndex::pi61), // COLOUR_KEY_RIDE + ColourPair(PaletteIndex::pi42), // COLOUR_KEY_FOOD + ColourPair(PaletteIndex::pi20), // COLOUR_KEY_DRINK + ColourPair(PaletteIndex::pi209), // COLOUR_KEY_SOUVENIR + ColourPair(PaletteIndex::pi136), // COLOUR_KEY_KIOSK + ColourPair(PaletteIndex::pi102), // COLOUR_KEY_FIRST_AID + ColourPair(PaletteIndex::pi55), // COLOUR_KEY_CASH_MACHINE + ColourPair(PaletteIndex::pi161), // COLOUR_KEY_TOILETS }; static constexpr PaletteIndex DefaultPeepMapColour = PaletteIndex::pi20; @@ -184,28 +201,17 @@ namespace OpenRCT2::Ui::Windows static constexpr PaletteIndex StaffMapColour = PaletteIndex::pi138; static constexpr PaletteIndex StaffMapColourAlternate = PaletteIndex::pi10; - static constexpr uint16_t WaterColour = MapColour(PaletteIndex::pi195); - - static constexpr uint16_t ElementTypeMaskColour[] = { - 0xFFFF, // TILE_ELEMENT_TYPE_SURFACE - 0x0000, // TILE_ELEMENT_TYPE_PATH - 0x00FF, // TILE_ELEMENT_TYPE_TRACK - 0xFF00, // TILE_ELEMENT_TYPE_SMALL_SCENERY - 0x0000, // TILE_ELEMENT_TYPE_ENTRANCE - 0xFFFF, // TILE_ELEMENT_TYPE_WALL - 0x0000, // TILE_ELEMENT_TYPE_LARGE_SCENERY - 0xFFFF, // TILE_ELEMENT_TYPE_BANNER - }; - - static constexpr uint16_t ElementTypeAddColour[] = { - MapColour(PaletteIndex::pi0), // TILE_ELEMENT_TYPE_SURFACE - MapColour(PaletteIndex::pi17), // TILE_ELEMENT_TYPE_PATH - MapColour2(PaletteIndex::pi183, PaletteIndex::pi0), // TILE_ELEMENT_TYPE_TRACK - MapColour2(PaletteIndex::pi0, PaletteIndex::pi99), // TILE_ELEMENT_TYPE_SMALL_SCENERY - MapColour(PaletteIndex::pi186), // TILE_ELEMENT_TYPE_ENTRANCE - MapColour(PaletteIndex::pi0), // TILE_ELEMENT_TYPE_WALL - MapColour(PaletteIndex::pi99), // TILE_ELEMENT_TYPE_LARGE_SCENERY - MapColour(PaletteIndex::pi0), // TILE_ELEMENT_TYPE_BANNER + static constexpr auto kWaterColour = ColourPair(PaletteIndex::pi195); + + static constexpr ColourPair kElementTypeOverwriteColour[] = { + ColourPair(PaletteIndex::pi0), // TILE_ELEMENT_TYPE_SURFACE + ColourPair(PaletteIndex::pi17), // TILE_ELEMENT_TYPE_PATH + ColourPair(PaletteIndex::pi183, PaletteIndex::pi0), // TILE_ELEMENT_TYPE_TRACK + ColourPair(PaletteIndex::pi0, PaletteIndex::pi99), // TILE_ELEMENT_TYPE_SMALL_SCENERY + ColourPair(PaletteIndex::pi186), // TILE_ELEMENT_TYPE_ENTRANCE + ColourPair(PaletteIndex::pi0), // TILE_ELEMENT_TYPE_WALL + ColourPair(PaletteIndex::pi99), // TILE_ELEMENT_TYPE_LARGE_SCENERY + ColourPair(PaletteIndex::pi0), // TILE_ELEMENT_TYPE_BANNER }; namespace MapFlashingFlags @@ -674,13 +680,13 @@ namespace OpenRCT2::Ui::Windows { auto screenCoords = windowPos + ScreenCoordsXY{ 4, widgets[WIDX_MAP].bottom + 2 }; - static_assert(std::size(RideKeyColours) == std::size(MapLabels)); + static_assert(std::size(kRideKeyColours) == std::size(MapLabels)); - for (uint32_t i = 0; i < std::size(RideKeyColours); i++) + for (uint32_t i = 0; i < std::size(kRideKeyColours); i++) { Rectangle::fill( rt, { screenCoords + ScreenCoordsXY{ 0, 2 }, screenCoords + ScreenCoordsXY{ 6, 8 } }, - static_cast(RideKeyColours[i] & 0xFF)); + kRideKeyColours[i].b); DrawTextBasic(rt, screenCoords + ScreenCoordsXY{ kListRowHeight, 0 }, MapLabels[i], {}); screenCoords.y += kListRowHeight; if (i == 3) @@ -820,7 +826,7 @@ namespace OpenRCT2::Ui::Windows { if (!MapIsEdge({ x, y })) { - uint16_t colour = 0; + ColourPair colour{}; switch (selectedTab) { case PAGE_PEEPS: @@ -830,8 +836,8 @@ namespace OpenRCT2::Ui::Windows colour = GetPixelColourRide({ x, y }); break; } - destination[0] = (colour >> 8) & 0xFF; - destination[1] = colour; + destination[0] = colour.a; + destination[1] = colour.b; } x += dx; y += dy; @@ -845,30 +851,30 @@ namespace OpenRCT2::Ui::Windows _currentLine = 0; } - uint16_t GetPixelColourPeep(const CoordsXY& c) + ColourPair GetPixelColourPeep(const CoordsXY& c) { auto* surfaceElement = MapGetSurfaceElementAt(c); if (surfaceElement == nullptr) - return 0; + return { PaletteIndex::pi0, PaletteIndex::pi0 }; - uint16_t colour = MapColour(PaletteIndex::pi0); + auto colour = ColourPair(PaletteIndex::pi0); const auto* surfaceObject = surfaceElement->GetSurfaceObject(); if (surfaceObject != nullptr) - colour = MapColour2(surfaceObject->MapColours[0], surfaceObject->MapColours[1]); + colour = ColourPair(surfaceObject->MapColours[0], surfaceObject->MapColours[1]); if (surfaceElement->GetWaterHeight() > 0) - colour = WaterColour; + colour = kWaterColour; if (!(surfaceElement->GetOwnership() & OWNERSHIP_OWNED)) colour = MapColourUnowned(colour); - const int32_t maxSupportedTileElementType = static_cast(std::size(ElementTypeAddColour)); + const int32_t maxSupportedTileElementType = static_cast(std::size(kElementTypeOverwriteColour)); auto tileElement = reinterpret_cast(surfaceElement); while (!(tileElement++)->IsLastForTile()) { if (tileElement->IsGhost()) { - colour = MapColour(PaletteIndex::pi21); + colour = ColourPair(PaletteIndex::pi21); break; } @@ -877,17 +883,24 @@ namespace OpenRCT2::Ui::Windows { tileElementType = TileElementType::Surface; } - colour &= ElementTypeMaskColour[EnumValue(tileElementType)]; - colour |= ElementTypeAddColour[EnumValue(tileElementType)]; + const auto overwriteColours = kElementTypeOverwriteColour[EnumValue(tileElementType)]; + if (overwriteColours.a != PaletteIndex::pi0) + { + colour.a = overwriteColours.a; + } + if (overwriteColours.b != PaletteIndex::pi0) + { + colour.b = overwriteColours.b; + } } return colour; } - uint16_t GetPixelColourRide(const CoordsXY& c) + ColourPair GetPixelColourRide(const CoordsXY& c) { - uint16_t colourA = 0; // highlight colour - uint16_t colourB = MapColour(PaletteIndex::pi13); // surface colour (dark grey) + ColourPair colourA{}; // highlight colour + ColourPair colourB = ColourPair(PaletteIndex::pi13); // surface colour (dark grey) // as an improvement we could use first_element to show underground stuff? TileElement* tileElement = reinterpret_cast(MapGetSurfaceElementAt(c)); @@ -898,7 +911,7 @@ namespace OpenRCT2::Ui::Windows if (tileElement->IsGhost()) { - colourA = MapColour(PaletteIndex::pi21); + colourA = ColourPair(PaletteIndex::pi21); break; } @@ -907,12 +920,12 @@ namespace OpenRCT2::Ui::Windows case TileElementType::Surface: if (tileElement->AsSurface()->GetWaterHeight() > 0) // Why is this a different water colour as above (195)? - colourB = MapColour(PaletteIndex::pi194); + colourB = ColourPair(PaletteIndex::pi194); if (!(tileElement->AsSurface()->GetOwnership() & OWNERSHIP_OWNED)) colourB = MapColourUnowned(colourB); break; case TileElementType::Path: - colourA = MapColour(PaletteIndex::pi14); // lighter grey + colourA = ColourPair(PaletteIndex::pi14); // lighter grey break; case TileElementType::Entrance: { @@ -922,7 +935,7 @@ namespace OpenRCT2::Ui::Windows if (targetRide != nullptr) { const auto& colourKey = targetRide->getRideTypeDescriptor().ColourKey; - colourA = RideKeyColours[EnumValue(colourKey)]; + colourA = kRideKeyColours[EnumValue(colourKey)]; } break; } @@ -932,7 +945,7 @@ namespace OpenRCT2::Ui::Windows if (targetRide != nullptr) { const auto& colourKey = targetRide->getRideTypeDescriptor().ColourKey; - colourA = RideKeyColours[EnumValue(colourKey)]; + colourA = kRideKeyColours[EnumValue(colourKey)]; } break; @@ -942,7 +955,7 @@ namespace OpenRCT2::Ui::Windows } } while (!(tileElement++)->IsLastForTile()); - if (colourA != 0) + if (colourA != ColourPair(PaletteIndex::pi0, PaletteIndex::pi0)) return colourA; return colourB; From a13b1c4e115de75a1d5edad56c4da5a538f82629 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 7 Jan 2026 14:34:55 +0100 Subject: [PATCH 194/222] Make PaletteIndex into a strong enum and move into namespace --- .../engines/opengl/OpenGLDrawingEngine.cpp | 20 +-- .../drawing/engines/opengl/TextureCache.cpp | 4 +- src/openrct2-ui/interface/Widget.cpp | 2 +- .../scripting/ScGraphicsContext.hpp | 8 +- src/openrct2-ui/windows/Map.cpp | 4 +- src/openrct2-ui/windows/MapGen.cpp | 8 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 4 +- src/openrct2-ui/windows/TextInput.cpp | 4 +- src/openrct2-ui/windows/TrackDesignPlace.cpp | 29 ++-- src/openrct2/drawing/Drawing.Sprite.BMP.cpp | 9 +- src/openrct2/drawing/Drawing.Sprite.RLE.cpp | 10 +- src/openrct2/drawing/Drawing.Sprite.cpp | 8 +- src/openrct2/drawing/Drawing.String.cpp | 2 +- src/openrct2/drawing/Drawing.cpp | 39 +++-- src/openrct2/drawing/Drawing.h | 47 +++--- src/openrct2/drawing/IDrawingContext.h | 4 +- src/openrct2/drawing/Line.cpp | 6 +- src/openrct2/drawing/NewDrawing.cpp | 8 +- src/openrct2/drawing/PaletteIndex.h | 122 +++++++++++++++ src/openrct2/drawing/Rectangle.h | 2 +- src/openrct2/drawing/ScrollingText.cpp | 16 +- src/openrct2/drawing/ScrollingText.h | 6 +- src/openrct2/drawing/Text.cpp | 2 +- src/openrct2/drawing/X8DrawingEngine.cpp | 22 +-- src/openrct2/drawing/X8DrawingEngine.h | 4 +- src/openrct2/interface/Colour.cpp | 17 +- src/openrct2/interface/Colour.h | 145 +++--------------- src/openrct2/interface/Screenshot.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 2 +- src/openrct2/libopenrct2.vcxproj | 1 + src/openrct2/object/ScenarioMetaObject.cpp | 4 +- src/openrct2/object/TerrainSurfaceObject.cpp | 2 +- src/openrct2/object/TerrainSurfaceObject.h | 2 +- src/openrct2/paint/Paint.cpp | 30 ++-- src/openrct2/park/ParkFile.cpp | 4 +- src/openrct2/park/ParkPreview.cpp | 6 +- src/openrct2/park/ParkPreview.h | 5 +- src/openrct2/scenario/Scenario.cpp | 2 +- 38 files changed, 329 insertions(+), 283 deletions(-) create mode 100644 src/openrct2/drawing/PaletteIndex.h diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index a03912d7087d..ba7e1172cb5d 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -121,11 +121,11 @@ class OpenGLDrawingContext final : public IDrawingContext bool crossHatch = false) override; void FilterRect( RenderTarget& rt, FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) override; - void DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) override; + void DrawLine(RenderTarget& rt, PaletteIndex colour, const ScreenLine& line) override; void DrawSprite(RenderTarget& rt, const ImageId imageId, int32_t x, int32_t y) override; void DrawSpriteRawMasked( RenderTarget& rt, int32_t x, int32_t y, const ImageId maskImage, const ImageId colourImage) override; - void DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, uint8_t colour) override; + void DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, PaletteIndex colour) override; void DrawGlyph(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, const PaletteMap& palette) override; void DrawTTFBitmap( RenderTarget& rt, TextDrawInfo* info, TTFSurface* surface, int32_t x, int32_t y, uint8_t hintingThreshold) override; @@ -177,7 +177,7 @@ class OpenGLWeatherDrawer final : public IWeatherDrawer uint32_t xPixelOffset = pixelOffset; xPixelOffset += (static_cast(patternX - patternStartXOffset)) % patternXSpace; - auto patternPixel = pattern[patternYPos * 2 + 1]; + auto patternPixel = static_cast(pattern[patternYPos * 2 + 1]); for (; xPixelOffset < finalPixelOffset; xPixelOffset += patternXSpace) { int32_t pixelX = xPixelOffset % rt.width; @@ -830,7 +830,7 @@ bool OpenGLDrawingContext::CohenSutherlandLineClip(ScreenLine& line, const Rende } } -void OpenGLDrawingContext::DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) +void OpenGLDrawingContext::DrawLine(RenderTarget& rt, PaletteIndex colour, const ScreenLine& line) { Guard::Assert(_inDraw == true); @@ -849,7 +849,7 @@ void OpenGLDrawingContext::DrawLine(RenderTarget& rt, uint32_t colour, const Scr const int32_t y2 = trimmedLine.GetY2() - rt.y + clip.GetTop(); command.bounds = { x1, y1, x2, y2 }; - command.colour = colour & 0xFF; + command.colour = static_cast(colour); command.depth = _drawCount++; } @@ -1056,7 +1056,7 @@ void OpenGLDrawingContext::DrawSpriteRawMasked( command.zoom = zoom; } -void OpenGLDrawingContext::DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, uint8_t colour) +void OpenGLDrawingContext::DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, PaletteIndex colour) { Guard::Assert(_inDraw == true); @@ -1102,7 +1102,7 @@ void OpenGLDrawingContext::DrawSpriteSolid(RenderTarget& rt, const ImageId image command.texMaskBounds = texture.coords; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_NO_TEXTURE | DrawRectCommand::FLAG_MASK; - command.colour = colour & 0xFF; + command.colour = static_cast(colour); command.bounds = { left, top, right, bottom }; command.depth = _drawCount++; command.zoom = 1.0f; @@ -1222,7 +1222,7 @@ void OpenGLDrawingContext::DrawTTFBitmap( command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_TTF_TEXT; - command.colour = info->palette.shadowOutline; + command.colour = static_cast(info->palette.shadowOutline); command.bounds = b; command.depth = _drawCount++; command.zoom = 1.0f; @@ -1238,7 +1238,7 @@ void OpenGLDrawingContext::DrawTTFBitmap( command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_TTF_TEXT; - command.colour = info->palette.shadowOutline; + command.colour = static_cast(info->palette.shadowOutline); command.bounds = { left + 1, top + 1, right + 1, bottom + 1 }; command.depth = _drawCount++; command.zoom = 1.0f; @@ -1252,7 +1252,7 @@ void OpenGLDrawingContext::DrawTTFBitmap( command.texMaskBounds = { 0.0f, 0.0f, 0.0f, 0.0f }; command.palettes = { 0, 0, 0 }; command.flags = DrawRectCommand::FLAG_TTF_TEXT | (hintingThreshold << 8); - command.colour = info->palette.fill; + command.colour = static_cast(info->palette.fill); command.bounds = { left, top, right, bottom }; command.depth = _drawCount++; command.zoom = 1.0f; diff --git a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp index b66dc295fcfb..d572b45d51d7 100644 --- a/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/TextureCache.cpp @@ -102,12 +102,12 @@ BasicTextureInfo TextureCache::GetOrLoadGlyphTexture(const ImageId imageId, cons // Try to read cached texture first. { - uint8_t glyphMap[8]; + PaletteIndex glyphMap[8]; for (uint8_t i = 0; i < 8; i++) { glyphMap[i] = paletteMap[i]; } - std::copy_n(glyphMap, sizeof(glyphId.Palette), reinterpret_cast(&glyphId.Palette)); + std::copy_n(glyphMap, sizeof(glyphId.Palette), reinterpret_cast(&glyphId.Palette)); auto kvp = _glyphTextureMap.find(glyphId); if (kvp != _glyphTextureMap.end()) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 58faa04085b4..3e40efc1913d 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -1211,7 +1211,7 @@ namespace OpenRCT2::Ui { auto colour = ColourMapA[w.colours[1].colour].mid_light; auto y = topLeft.y + 1 + widget.height() - 5; - Rectangle::fill(rt, { { curX, y }, { curX + width, y } }, static_cast(colour + 5)); + Rectangle::fill(rt, { { curX, y }, { curX + width, y } }, static_cast(EnumValue(colour) + 5)); } } diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index 9f347263cc26..b57164c2b23f 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -31,7 +31,7 @@ namespace OpenRCT2::Scripting std::optional _secondaryColour{}; std::optional _tertiaryColour{}; std::optional _paletteId{}; - uint8_t _stroke{}; + PaletteIndex _stroke{}; PaletteIndex _fill{}; public: @@ -134,12 +134,12 @@ namespace OpenRCT2::Scripting uint8_t stroke_get() const { - return _stroke; + return EnumValue(_stroke); } void stroke_set(uint8_t value) { - _stroke = value; + _stroke = static_cast(value); } int32_t width_get() const @@ -218,7 +218,7 @@ namespace OpenRCT2::Scripting void rect(int32_t x, int32_t y, int32_t width, int32_t height) { - if (_stroke != 0) + if (_stroke != PaletteIndex::pi0) { line(x, y, x + width, y); line(x + width - 1, y + 1, x + width - 1, y + height - 1); diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 9094bb8abaf6..1af51ece00c6 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -227,7 +227,7 @@ namespace OpenRCT2::Ui::Windows uint32_t _currentLine; uint16_t _landRightsToolSize; int32_t _firstColumnWidth; - std::vector _mapImageData; + std::vector _mapImageData; bool _mapWidthAndHeightLinked = true; bool _recalculateScrollbars = false; @@ -584,7 +584,7 @@ namespace OpenRCT2::Ui::Windows screenOffset += ScreenCoordsXY(mapOffset, mapOffset - kScrollBarWidth); G1Element g1temp = {}; - g1temp.offset = _mapImageData.data(); + g1temp.offset = reinterpret_cast(_mapImageData.data()); g1temp.width = getMiniMapWidth(); g1temp.height = getMiniMapWidth(); GfxSetG1Element(SPR_TEMP, &g1temp); diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 5a250ea704c1..1a062044bc86 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -1167,13 +1167,13 @@ namespace OpenRCT2::Ui::Windows { // Draw greyed out (light border bottom right shadow) auto colour = colours[widget.colour].colour; - colour = ColourMapA[colour].lighter; - GfxDrawSpriteSolid(rt, image, pos + ScreenCoordsXY{ 1, 1 }, colour); + auto paletteIndex = ColourMapA[colour].lighter; + GfxDrawSpriteSolid(rt, image, pos + ScreenCoordsXY{ 1, 1 }, paletteIndex); // Draw greyed out (dark) colour = colours[widget.colour].colour; - colour = ColourMapA[colour].mid_light; - GfxDrawSpriteSolid(rt, image, pos, colour); + paletteIndex = ColourMapA[colour].mid_light; + GfxDrawSpriteSolid(rt, image, pos, paletteIndex); } else { diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index b8dad4fc715d..f4ef1ed356df 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -639,8 +639,8 @@ namespace OpenRCT2::Ui::Windows void DrawCategoryHeading(Drawing::RenderTarget& rt, int32_t left, int32_t right, int32_t y, StringId stringId) const { auto baseColour = colours[1]; - colour_t lightColour = ColourMapA[baseColour.colour].lighter; - colour_t darkColour = ColourMapA[baseColour.colour].mid_dark; + auto lightColour = ColourMapA[baseColour.colour].lighter; + auto darkColour = ColourMapA[baseColour.colour].mid_dark; // Draw string int32_t centreX = (left + right) / 2; diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index 8d5fee39dfc7..aceb69b82a48 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -269,11 +269,11 @@ namespace OpenRCT2::Ui::Windows if (_cursorBlink > 15) { - uint8_t colour = ColourMapA[colours[1].colour].mid_light; + auto colour = ColourMapA[colours[1].colour].mid_light; // TODO: palette index addition Rectangle::fill( rt, { { cursorX, screenCoords.y + 9 }, { cursorX + textWidth, screenCoords.y + 9 } }, - static_cast(colour + 5)); + static_cast(EnumValue(colour) + 5)); } cur_drawn++; diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 9d2c197b574c..f6c7fc1eb064 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -42,6 +42,7 @@ using namespace OpenRCT2::Numerics; using namespace OpenRCT2::TrackMetaData; +using OpenRCT2::Drawing::PaletteIndex; using OpenRCT2::GameActions::CommandFlag; using OpenRCT2::GameActions::CommandFlags; @@ -51,10 +52,10 @@ namespace OpenRCT2::Ui::Windows static constexpr ScreenSize kWindowSize = { 200, 124 }; static constexpr ScreenSize kTrackMiniPreviewSize = { 168, 78 }; - static constexpr uint8_t kPaletteIndexColourEntrance = PaletteIndex::pi20; // White - static constexpr uint8_t kPaletteIndexColourExit = PaletteIndex::pi10; // Black - static constexpr uint8_t kPaletteIndexColourTrack = PaletteIndex::pi248; // Grey (dark) - static constexpr uint8_t kPaletteIndexColourStation = PaletteIndex::pi252; // Grey (light) + static constexpr auto kPaletteIndexColourEntrance = PaletteIndex::pi20; // White + static constexpr auto kPaletteIndexColourExit = PaletteIndex::pi10; // Black + static constexpr auto kPaletteIndexColourTrack = PaletteIndex::pi248; // Grey (dark) + static constexpr auto kPaletteIndexColourStation = PaletteIndex::pi252; // Grey (light) enum { @@ -94,7 +95,7 @@ namespace OpenRCT2::Ui::Windows money64 _placementCost; CoordsXYZD _placementGhostLoc; - std::vector _miniPreview; + std::vector _miniPreview; bool _trackPlaceCtrlState = false; int32_t _trackPlaceCtrlZ; @@ -369,7 +370,7 @@ namespace OpenRCT2::Ui::Windows if (ClipRenderTarget(clippedRT, rt, previewCoords, previewWidget.width(), previewWidget.height())) { G1Element g1temp = {}; - g1temp.offset = _miniPreview.data(); + g1temp.offset = reinterpret_cast(_miniPreview.data()); g1temp.width = kTrackMiniPreviewSize.width; g1temp.height = kTrackMiniPreviewSize.height; GfxSetG1Element(SPR_TEMP, &g1temp); @@ -609,8 +610,8 @@ namespace OpenRCT2::Ui::Windows auto pixelPosition = DrawMiniPreviewGetPixelPosition(rotatedAndOffsetEntrance); if (DrawMiniPreviewIsPixelInBounds(pixelPosition)) { - uint8_t* pixel = DrawMiniPreviewGetPixelPtr(pixelPosition); - uint8_t colour = entrance.isExit ? kPaletteIndexColourExit : kPaletteIndexColourEntrance; + PaletteIndex* pixel = DrawMiniPreviewGetPixelPtr(pixelPosition); + auto colour = entrance.isExit ? kPaletteIndexColourExit : kPaletteIndexColourEntrance; for (int32_t i = 0; i < 4; i++) { pixel[338 + i] = colour; // x + 2, y + 2 @@ -651,13 +652,13 @@ namespace OpenRCT2::Ui::Windows auto pixelPosition = DrawMiniPreviewGetPixelPosition(rotatedAndOffsetTrackBlock); if (DrawMiniPreviewIsPixelInBounds(pixelPosition)) { - uint8_t* pixel = DrawMiniPreviewGetPixelPtr(pixelPosition); + PaletteIndex* pixel = DrawMiniPreviewGetPixelPtr(pixelPosition); auto bits = trackBlock.quarterTile.Rotate(curTrackRotation & 3).GetBaseQuarterOccupied(); // Station track is a lighter colour - uint8_t colour = ted.sequences[0].flags.has(SequenceFlag::trackOrigin) ? kPaletteIndexColourStation - : kPaletteIndexColourTrack; + auto colour = ted.sequences[0].flags.has(SequenceFlag::trackOrigin) ? kPaletteIndexColourStation + : kPaletteIndexColourTrack; for (int32_t i = 0; i < 4; i++) { @@ -714,9 +715,9 @@ namespace OpenRCT2::Ui::Windows auto pixelPosition = DrawMiniPreviewGetPixelPosition(rotatedMazeCoords); if (DrawMiniPreviewIsPixelInBounds(pixelPosition)) { - uint8_t* pixel = DrawMiniPreviewGetPixelPtr(pixelPosition); + auto* pixel = DrawMiniPreviewGetPixelPtr(pixelPosition); - uint8_t colour = kPaletteIndexColourTrack; + auto colour = kPaletteIndexColourTrack; for (int32_t i = 0; i < 4; i++) { pixel[338 + i] = colour; // x + 2, y + 2 @@ -742,7 +743,7 @@ namespace OpenRCT2::Ui::Windows return pixel.x >= 0 && pixel.y >= 0 && pixel.x <= 160 && pixel.y <= 75; } - uint8_t* DrawMiniPreviewGetPixelPtr(const ScreenCoordsXY& pixel) + PaletteIndex* DrawMiniPreviewGetPixelPtr(const ScreenCoordsXY& pixel) { return &_miniPreview[pixel.y * kTrackMiniPreviewSize.width + pixel.x]; } diff --git a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp index 143d81d0e872..7f7fa2a0cf61 100644 --- a/src/openrct2/drawing/Drawing.Sprite.BMP.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.BMP.cpp @@ -17,7 +17,7 @@ static void FASTCALL DrawBMPSpriteMagnify(RenderTarget& rt, const DrawSpriteArgs { auto& paletteMap = args.PalMap; auto src0 = args.SourceImage.offset; - auto dst = args.DestinationBits; + auto dst = reinterpret_cast(args.DestinationBits); auto srcX = args.SrcX; auto srcY = args.SrcY; auto width = args.Width; @@ -31,7 +31,8 @@ static void FASTCALL DrawBMPSpriteMagnify(RenderTarget& rt, const DrawSpriteArgs auto nextDst = dst + dstLineWidth; for (int32_t x = 0; x < width; x++, dst++) { - auto src = src0 + (srcLineWidth * zoom.ApplyTo(srcY + y) + zoom.ApplyTo(srcX + x)); + PaletteIndex* src = reinterpret_cast( + src0 + (srcLineWidth * zoom.ApplyTo(srcY + y) + zoom.ApplyTo(srcX + x))); BlitPixel(src, dst, paletteMap); } dst = nextDst; @@ -42,8 +43,8 @@ template static void FASTCALL DrawBMPSpriteMinify(RenderTarget& rt, const DrawSpriteArgs& args) { auto& g1 = args.SourceImage; - auto src = g1.offset + ((static_cast(g1.width) * args.SrcY) + args.SrcX); - auto dst = args.DestinationBits; + auto* src = reinterpret_cast(g1.offset + ((static_cast(g1.width) * args.SrcY) + args.SrcX)); + auto* dst = reinterpret_cast(args.DestinationBits); auto& paletteMap = args.PalMap; auto width = args.Width; auto height = args.Height; diff --git a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp index cf128415c9f3..7287d26484e7 100644 --- a/src/openrct2/drawing/Drawing.Sprite.RLE.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.RLE.cpp @@ -19,7 +19,7 @@ static void FASTCALL DrawRLESpriteMagnify(RenderTarget& rt, const DrawSpriteArgs { auto& paletteMap = args.PalMap; auto imgData = args.SourceImage.offset; - auto dst = args.DestinationBits; + auto* dst = reinterpret_cast(args.DestinationBits); auto srcX = args.SrcX; auto srcY = args.SrcY; auto width = args.Width; @@ -29,7 +29,7 @@ static void FASTCALL DrawRLESpriteMagnify(RenderTarget& rt, const DrawSpriteArgs for (int32_t y = 0; y < height; y++) { - uint8_t* nextDst = dst + dstLineWidth; + PaletteIndex* nextDst = dst + dstLineWidth; const int32_t rowNum = zoom.ApplyTo(srcY + y); uint16_t lineOffset; std::memcpy(&lineOffset, &imgData[rowNum * sizeof(uint16_t)], sizeof(uint16_t)); @@ -51,7 +51,7 @@ static void FASTCALL DrawRLESpriteMagnify(RenderTarget& rt, const DrawSpriteArgs numPixels &= 0x7F; } if (pixelRunStart <= colNum && colNum < pixelRunStart + numPixels) - BlitPixel(data8 + colNum - pixelRunStart, dst, paletteMap); + BlitPixel(reinterpret_cast(data8 + colNum - pixelRunStart), dst, paletteMap); dst++; } @@ -88,7 +88,7 @@ static void FASTCALL DrawRLESpriteMinify(RenderTarget& rt, const DrawSpriteArgs& // This will move the pointer to the correct source line. uint16_t lineOffset = src0[y * 2] | (src0[y * 2 + 1] << 8); auto nextRun = src0 + lineOffset; - auto dstLineStart = dst0 + dstLineWidth * (i >> TZoom); + auto* dstLineStart = reinterpret_cast(dst0 + dstLineWidth * (i >> TZoom)); // For every data chunk in the line auto isEndOfLine = false; @@ -144,7 +144,7 @@ static void FASTCALL DrawRLESpriteMinify(RenderTarget& rt, const DrawSpriteArgs& auto& paletteMap = args.PalMap; while (numPixels > 0) { - BlitPixel(src, dst, paletteMap); + BlitPixel(reinterpret_cast(src), dst, paletteMap); numPixels -= zoom; src += zoom; dst++; diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 5765ffa25c7a..c4df1000ac52 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -39,7 +39,7 @@ using namespace OpenRCT2::Ui; * rct2: 0x0009ABE0C */ // clang-format off -static thread_local uint8_t secondaryRemapPalette[256] = { +static thread_local uint8_t kSecondaryRemapPalette[256] = { 0x00, 0xF3, 0xF4, 0xF5, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, @@ -59,7 +59,7 @@ static thread_local uint8_t secondaryRemapPalette[256] = { }; /** rct2: 0x009ABF0C */ -static thread_local uint8_t tertiaryRemapPalette[256] = { +static thread_local uint8_t kTertiaryRemapPalette[256] = { 0x00, 0xF3, 0xF4, 0xF5, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, @@ -705,10 +705,10 @@ static std::optional FASTCALL GfxDrawSpriteGetPalette(ImageId imageI return GetPaletteMapForColour(static_cast(paletteId)); } - auto paletteMap = PaletteMap(secondaryRemapPalette); + auto paletteMap = PaletteMap(std::span(reinterpret_cast(kSecondaryRemapPalette), 256)); if (imageId.HasTertiary()) { - paletteMap = PaletteMap(tertiaryRemapPalette); + paletteMap = PaletteMap(std::span(reinterpret_cast(kTertiaryRemapPalette), 256)); auto tertiaryPaletteMap = GetPaletteMapForColour(static_cast(imageId.GetTertiary())); if (tertiaryPaletteMap.has_value()) { diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 37abe90be696..2a47f503f769 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -485,7 +485,7 @@ static void TTFDrawCharacterSprite(RenderTarget& rt, int32_t codepoint, TextDraw screenCoords.y += *info->yOffset++; } - uint8_t palette[8]{}; + PaletteIndex palette[8]{}; palette[1] = info->palette.fill; palette[2] = info->palette.sunnyOutline; palette[3] = info->palette.shadowOutline; diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 6cb435bc30f1..06a565844c99 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -35,8 +35,11 @@ using namespace OpenRCT2; using namespace OpenRCT2::Drawing; static auto _defaultPaletteMapping = []() { - std::array res; - std::iota(res.begin(), res.end(), 0); + std::array res; + for (size_t i = 0; i < std::size(res); i++) + { + res[i] = static_cast(i); + } return res; }(); @@ -45,33 +48,35 @@ PaletteMap PaletteMap::GetDefault() return PaletteMap(_defaultPaletteMapping); } -uint8_t& PaletteMap::operator[](size_t index) +PaletteIndex& PaletteMap::operator[](size_t index) { return _data[index]; } -uint8_t PaletteMap::operator[](size_t index) const +PaletteIndex PaletteMap::operator[](size_t index) const { return _data[index]; } -uint8_t PaletteMap::Blend(uint8_t src, uint8_t dst) const +PaletteIndex PaletteMap::Blend(PaletteIndex src, PaletteIndex dst) const { #ifdef _DEBUG // src = 0 would be transparent so there is no blend palette for that, hence (src - 1) assert(src != 0 && (src - 1) < _numMaps); assert(dst < _mapLength); #endif - auto idx = ((src - 1) * 256) + dst; + auto idx = ((EnumValue(src) - 1) * 256) + EnumValue(dst); return _data[idx]; } -void PaletteMap::Copy(size_t dstIndex, const PaletteMap& src, size_t srcIndex, size_t length) +void PaletteMap::Copy(PaletteIndex dstIndex, const PaletteMap& src, PaletteIndex srcIndex, size_t length) { - auto maxLength = std::min(_data.size() - srcIndex, _data.size() - dstIndex); + auto srcOffset = EnumValue(srcIndex); + auto dstOffset = EnumValue(dstIndex); + auto maxLength = std::min(_data.size() - srcOffset, _data.size() - dstOffset); assert(length <= maxLength); auto copyLength = std::min(length, maxLength); - std::copy(src._data.begin() + srcIndex, src._data.begin() + srcIndex + copyLength, _data.begin() + dstIndex); + std::copy(src._data.begin() + srcOffset, src._data.begin() + srcOffset + copyLength, _data.begin() + dstOffset); } OpenRCT2::Drawing::GamePalette gPalette; @@ -714,7 +719,7 @@ void GfxTransposePalette(int32_t pal, uint8_t product) x++; } - UpdatePalette(gGamePalette, 10, 236); + UpdatePalette(gGamePalette, PaletteIndex::pi10, 236); } } @@ -754,7 +759,7 @@ void LoadPalette() x++; } } - UpdatePalette(gGamePalette, 10, 236); + UpdatePalette(gGamePalette, PaletteIndex::pi10, 236); GfxInvalidateScreen(); } @@ -868,7 +873,7 @@ std::optional GetPaletteMapForColour(FilterPaletteID paletteId) auto g1 = GfxGetG1Element(g1Index.value()); if (g1 != nullptr) { - return PaletteMap(g1->offset, g1->height, g1->width); + return PaletteMap(reinterpret_cast(g1->offset), g1->height, g1->width); } } return std::nullopt; @@ -879,9 +884,9 @@ FilterPaletteID GetGlassPaletteId(colour_t c) return kGlassPaletteIds[c]; } -void UpdatePalette(std::span palette, int32_t start_index, int32_t num_colours) +void UpdatePalette(std::span palette, PaletteIndex startIndex, int32_t numColours) { - for (int32_t i = start_index; i < num_colours + start_index; i++) + for (int32_t i = EnumValue(startIndex); i < numColours + EnumValue(startIndex); i++) { const auto& colour = palette[i]; uint8_t b = colour.Blue; @@ -1024,7 +1029,7 @@ void UpdatePaletteEffects() int32_t n = kPaletteLengthWaterWaves; for (int32_t i = 0; i < n; i++) { - auto& vd = gGamePalette[kPaletteOffsetWaterWaves + i]; + auto& vd = gGamePalette[EnumValue(kPaletteOffsetWaterWaves) + i]; vd.Blue = vs[0]; vd.Green = vs[1]; vd.Red = vs[2]; @@ -1049,7 +1054,7 @@ void UpdatePaletteEffects() int32_t n = kPaletteLengthWaterSparkles; for (int32_t i = 0; i < n; i++) { - auto& vd = gGamePalette[kPaletteOffsetWaterSparkles + i]; + auto& vd = gGamePalette[EnumValue(kPaletteOffsetWaterSparkles) + i]; vd.Blue = vs[0]; vd.Green = vs[1]; vd.Red = vs[2]; @@ -1070,7 +1075,7 @@ void UpdatePaletteEffects() int32_t n = 3; for (int32_t i = 0; i < n; i++) { - auto& vd = gGamePalette[PaletteIndex::pi243 + i]; + auto& vd = gGamePalette[EnumValue(PaletteIndex::pi243) + i]; vd.Blue = vs[0]; vd.Green = vs[1]; vd.Red = vs[2]; diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 81f9ecd87675..41be8730b4e4 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -85,7 +85,7 @@ namespace OpenRCT2::Drawing struct PaletteMap { private: - std::span _data{}; + std::span _data{}; #ifdef _DEBUG // We only require those fields for the asserts in debug builds. size_t _numMaps{}; @@ -97,7 +97,7 @@ struct PaletteMap constexpr PaletteMap() = default; - constexpr PaletteMap(uint8_t* data, size_t numMaps, size_t mapLength) + constexpr PaletteMap(OpenRCT2::Drawing::PaletteIndex* data, size_t numMaps, size_t mapLength) : _data{ data, numMaps * mapLength } #ifdef _DEBUG , _numMaps(numMaps) @@ -106,7 +106,7 @@ struct PaletteMap { } - constexpr PaletteMap(std::span map) + constexpr PaletteMap(std::span map) : _data(map) #ifdef _DEBUG , _numMaps(1) @@ -115,11 +115,13 @@ struct PaletteMap { } - uint8_t& operator[](size_t index); - uint8_t operator[](size_t index) const; + OpenRCT2::Drawing::PaletteIndex& operator[](size_t index); + OpenRCT2::Drawing::PaletteIndex operator[](size_t index) const; - uint8_t Blend(uint8_t src, uint8_t dst) const; - void Copy(size_t dstIndex, const PaletteMap& src, size_t srcIndex, size_t length); + OpenRCT2::Drawing::PaletteIndex Blend(OpenRCT2::Drawing::PaletteIndex src, OpenRCT2::Drawing::PaletteIndex dst) const; + void Copy( + OpenRCT2::Drawing::PaletteIndex dstIndex, const PaletteMap& src, OpenRCT2::Drawing::PaletteIndex srcIndex, + size_t length); }; struct DrawSpriteArgs @@ -149,12 +151,13 @@ struct DrawSpriteArgs }; template -bool FASTCALL BlitPixel(const uint8_t* src, uint8_t* dst, const PaletteMap& paletteMap) +bool FASTCALL + BlitPixel(const OpenRCT2::Drawing::PaletteIndex* src, OpenRCT2::Drawing::PaletteIndex* dst, const PaletteMap& paletteMap) { if constexpr (TBlendOp & kBlendTransparent) { // Ignore transparent pixels - if (*src == 0) + if (*src == OpenRCT2::Drawing::PaletteIndex::pi0) { return false; } @@ -165,7 +168,7 @@ bool FASTCALL BlitPixel(const uint8_t* src, uint8_t* dst, const PaletteMap& pale auto pixel = paletteMap.Blend(*src, *dst); if constexpr (TBlendOp & kBlendTransparent) { - if (pixel == 0) + if (pixel == OpenRCT2::Drawing::PaletteIndex::pi0) { return false; } @@ -175,10 +178,10 @@ bool FASTCALL BlitPixel(const uint8_t* src, uint8_t* dst, const PaletteMap& pale } else if constexpr ((TBlendOp & kBlendSrc) != 0) { - auto pixel = paletteMap[*src]; + auto pixel = paletteMap[EnumValue(*src)]; if constexpr (TBlendOp & kBlendTransparent) { - if (pixel == 0) + if (pixel == OpenRCT2::Drawing::PaletteIndex::pi0) { return false; } @@ -188,10 +191,10 @@ bool FASTCALL BlitPixel(const uint8_t* src, uint8_t* dst, const PaletteMap& pale } else if constexpr ((TBlendOp & kBlendDst) != 0) { - auto pixel = paletteMap[*dst]; + auto pixel = paletteMap[EnumValue(*dst)]; if constexpr (TBlendOp & kBlendTransparent) { - if (pixel == 0) + if (pixel == OpenRCT2::Drawing::PaletteIndex::pi0) { return false; } @@ -246,18 +249,18 @@ void GfxTransposePalette(int32_t pal, uint8_t product); void LoadPalette(); // other -void GfxClear(OpenRCT2::Drawing::RenderTarget& rt, PaletteIndex paletteIndex); +void GfxClear(OpenRCT2::Drawing::RenderTarget& rt, OpenRCT2::Drawing::PaletteIndex paletteIndex); void GfxFilterPixel( OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, OpenRCT2::Drawing::FilterPaletteID palette); void GfxInvalidatePickedUpPeep(); void GfxDrawPickedUpPeep(OpenRCT2::Drawing::RenderTarget& rt); // line -void GfxDrawLine(OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& line, int32_t colour); -void GfxDrawLineSoftware(OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& line, int32_t colour); +void GfxDrawLine(OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& line, OpenRCT2::Drawing::PaletteIndex colour); +void GfxDrawLineSoftware(OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& line, OpenRCT2::Drawing::PaletteIndex colour); void GfxDrawDashedLine( OpenRCT2::Drawing::RenderTarget& rt, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, - const int32_t color); + OpenRCT2::Drawing::PaletteIndex colour); // sprite bool GfxLoadG1(const OpenRCT2::IPlatformEnvironment& env); @@ -277,8 +280,9 @@ void FASTCALL GfxRleSpriteToBuffer(OpenRCT2::Drawing::RenderTarget& rt, const Dr void FASTCALL GfxDrawSprite(OpenRCT2::Drawing::RenderTarget& rt, const ImageId image_id, const ScreenCoordsXY& coords); void FASTCALL GfxDrawGlyph( OpenRCT2::Drawing::RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, const PaletteMap& paletteMap); -void FASTCALL - GfxDrawSpriteSolid(OpenRCT2::Drawing::RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, uint8_t colour); +void FASTCALL GfxDrawSpriteSolid( + OpenRCT2::Drawing::RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, + OpenRCT2::Drawing::PaletteIndex colour); void FASTCALL GfxDrawSpriteRawMasked( OpenRCT2::Drawing::RenderTarget& rt, const ScreenCoordsXY& coords, const ImageId maskImage, const ImageId colourImage); void FASTCALL @@ -329,7 +333,8 @@ void MaskFn( std::optional GetPaletteG1Index(OpenRCT2::Drawing::FilterPaletteID paletteId); std::optional GetPaletteMapForColour(OpenRCT2::Drawing::FilterPaletteID paletteId); -void UpdatePalette(std::span palette, int32_t start_index, int32_t num_colours); +void UpdatePalette( + std::span palette, OpenRCT2::Drawing::PaletteIndex startIndex, int32_t numColours); void UpdatePaletteEffects(); void RefreshVideo(); diff --git a/src/openrct2/drawing/IDrawingContext.h b/src/openrct2/drawing/IDrawingContext.h index 0dceae6493e4..eb1ce7ccba79 100644 --- a/src/openrct2/drawing/IDrawingContext.h +++ b/src/openrct2/drawing/IDrawingContext.h @@ -30,12 +30,12 @@ namespace OpenRCT2::Drawing virtual void FilterRect( RenderTarget& rt, FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) = 0; - virtual void DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) = 0; + virtual void DrawLine(RenderTarget& rt, PaletteIndex colour, const ScreenLine& line) = 0; virtual void DrawSprite(RenderTarget& rt, const ImageId image, int32_t x, int32_t y) = 0; virtual void DrawSpriteRawMasked( RenderTarget& rt, int32_t x, int32_t y, const ImageId maskImage, const ImageId colourImage) = 0; - virtual void DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, uint8_t colour) = 0; + virtual void DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, PaletteIndex colour) = 0; virtual void DrawGlyph(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, const PaletteMap& palette) = 0; virtual void DrawTTFBitmap( RenderTarget& rt, TextDrawInfo* info, TTFSurface* surface, int32_t x, int32_t y, uint8_t hintingThreshold) diff --git a/src/openrct2/drawing/Line.cpp b/src/openrct2/drawing/Line.cpp index e7bb5292952b..e3d9b82f2ffc 100644 --- a/src/openrct2/drawing/Line.cpp +++ b/src/openrct2/drawing/Line.cpp @@ -18,7 +18,7 @@ using namespace OpenRCT2::Drawing; * Draws a horizontal line of specified colour to a buffer. * rct2: 0x0068474C */ -static void GfxDrawLineOnBuffer(RenderTarget& rt, char colour, const ScreenCoordsXY& coords, int32_t no_pixels) +static void GfxDrawLineOnBuffer(RenderTarget& rt, PaletteIndex colour, const ScreenCoordsXY& coords, int32_t no_pixels) { ScreenCoordsXY offset{ coords.x - rt.x, coords.y - rt.y }; @@ -56,7 +56,7 @@ static void GfxDrawLineOnBuffer(RenderTarget& rt, char colour, const ScreenCoord } // Get the buffer we are drawing to and move to the first coordinate. - uint8_t* bits_pointer = rt.bits + offset.y * rt.LineStride() + offset.x; + PaletteIndex* bits_pointer = reinterpret_cast(rt.bits + offset.y * rt.LineStride() + offset.x); // Draw the line to the specified colour for (; no_pixels > 0; --no_pixels, ++bits_pointer) @@ -76,7 +76,7 @@ static void GfxDrawLineOnBuffer(RenderTarget& rt, char colour, const ScreenCoord * colour (ebp) */ -void GfxDrawLineSoftware(RenderTarget& rt, const ScreenLine& line, int32_t colour) +void GfxDrawLineSoftware(RenderTarget& rt, const ScreenLine& line, PaletteIndex colour) { const ZoomLevel zoom = rt.zoom_level; int32_t x1 = zoom.ApplyInversedTo(line.GetX1()); diff --git a/src/openrct2/drawing/NewDrawing.cpp b/src/openrct2/drawing/NewDrawing.cpp index 1f8d29d7c586..b9a0367e8551 100644 --- a/src/openrct2/drawing/NewDrawing.cpp +++ b/src/openrct2/drawing/NewDrawing.cpp @@ -164,7 +164,7 @@ void GfxClear(RenderTarget& rt, PaletteIndex paletteIndex) } } -void GfxDrawLine(RenderTarget& rt, const ScreenLine& line, int32_t colour) +void GfxDrawLine(RenderTarget& rt, const ScreenLine& line, PaletteIndex colour) { auto drawingEngine = rt.DrawingEngine; if (drawingEngine != nullptr) @@ -175,7 +175,7 @@ void GfxDrawLine(RenderTarget& rt, const ScreenLine& line, int32_t colour) } void GfxDrawDashedLine( - RenderTarget& rt, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, const int32_t color) + RenderTarget& rt, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, const PaletteIndex colour) { assert(dashedLineSegmentLength > 0); @@ -202,7 +202,7 @@ void GfxDrawDashedLine( { x = screenLine.GetX1() + dxPrecise * i * 2 / kPrecisionFactor; y = screenLine.GetY1() + dyPrecise * i * 2 / kPrecisionFactor; - dc->DrawLine(rt, color, { { x, y }, { x + dxPrecise / kPrecisionFactor, y + dyPrecise / kPrecisionFactor } }); + dc->DrawLine(rt, colour, { { x, y }, { x + dxPrecise / kPrecisionFactor, y + dyPrecise / kPrecisionFactor } }); } } } @@ -238,7 +238,7 @@ void FASTCALL } } -void FASTCALL GfxDrawSpriteSolid(RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, uint8_t colour) +void FASTCALL GfxDrawSpriteSolid(RenderTarget& rt, const ImageId image, const ScreenCoordsXY& coords, PaletteIndex colour) { auto drawingEngine = rt.DrawingEngine; if (drawingEngine != nullptr) diff --git a/src/openrct2/drawing/PaletteIndex.h b/src/openrct2/drawing/PaletteIndex.h new file mode 100644 index 000000000000..79664e2c9af6 --- /dev/null +++ b/src/openrct2/drawing/PaletteIndex.h @@ -0,0 +1,122 @@ +/***************************************************************************** + * Copyright (c) 2014-2026 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include + +namespace OpenRCT2::Drawing +{ + enum class PaletteIndex : uint8_t + { + pi0 = 0, // Transparent + pi10 = 10, // Black (0-dark), Dark grey (0) + pi11 = 11, // Black (middark) + pi12 = 12, // Black (midlight), Dark grey (1-darkest) + pi14 = 14, // Black (lighter), Dark grey (dark) + pi13 = 13, // + pi16 = 16, // + pi17 = 17, // Black (11), Dark grey (light), White (dark) + pi18 = 18, + pi20 = 20, // Dark grey (10), White (light) + pi21 = 21, // Dark grey (11), White (lighter-11) + pi40 = 40, // + pi42 = 42, // Light Brown (lighter), Saturated brown (11) + pi43 = 43, // + pi44 = 44, // Construction marker + pi46 = 46, // Tertiary remap 0 / Yellow (darkest) + pi47 = 47, // Tertiary remap 1 / Yellow + pi48 = 48, // Tertiary remap 2 / Yellow + pi49 = 49, // Tertiary remap 3 / Yellow + pi50 = 50, // Tertiary remap 4 / Yellow + pi51 = 51, // Tertiary remap 5 / Yellow + pi52 = 52, // Tertiary remap 6 / Yellow + pi53 = 53, // Tertiary remap 7 / Yellow + pi54 = 54, // Tertiary remap 8 / Yellow + pi55 = 55, // Tertiary remap 9 / Yellow + pi56 = 56, // Tertiary remap 10 / Yellow + pi57 = 57, // Tertiary remap 11 / Yellow (lightest) + pi61 = 61, // Bordeaux Red (darker) + pi62 = 62, // + pi68 = 68, // + pi69 = 69, // + pi73 = 73, // + pi99 = 99, // + pi102 = 102, // Bright green (lighter) + pi108 = 108, // + pi111 = 111, // + pi114 = 114, + pi126 = 126, + pi129 = 129, // Light Purple (11) + pi135 = 135, // + pi136 = 136, // Dark Blue (10-11), Light Blue (midlight), Icy Blue (darker) + pi138 = 138, // Light Blue (lighter), Icy Blue (middark) + pi139 = 139, + pi141 = 141, // + pi144 = 144, // Dark Green (1-darkest, + pi150 = 150, + pi152 = 152, + pi161 = 161, // Bright Purple (light) + pi162 = 162, // + pi164 = 164, // + pi171 = 171, // Saturated Red (lightest) Bright Red (middark) + pi172 = 172, // Saturated Red (10-11), Bright Red (midlight) + pi173 = 173, // Used to draw intense lines in the Ride Graphs window + pi174 = 174, + pi183 = 183, // Used to draw rides in the Map window + pi186 = 186, // + pi187 = 187, // + pi194 = 194, // + pi195 = 195, // + pi198 = 198, + pi199 = 199, // + pi202 = 202, // Secondary remap 0 / Pink (darkest) + pi203 = 203, // Secondary remap 1 / Pink + pi204 = 204, // Secondary remap 2 / Pink + pi205 = 205, // Secondary remap 3 / Pink + pi206 = 206, // Secondary remap 4 / Pink + pi207 = 207, // Secondary remap 5 / Pink + pi208 = 208, // Secondary remap 6 / Pink + pi209 = 209, // Secondary remap 7 / Pink + pi210 = 210, // Secondary remap 8 / Pink + pi211 = 211, // Secondary remap 9 / Pink + pi212 = 212, // Secondary remap 10 / Pink + pi213 = 213, // Secondary remap 11 / Pink (lightest) + pi222 = 222, // + pi223 = 223, // + pi229 = 229, + pi230 = 230, // Water (waves) + pi231 = 231, // Water (waves) + pi232 = 232, // Water (waves) + pi233 = 233, // Water (waves) + pi234 = 234, // Water (waves) + pi235 = 235, // Water (sparkles) + pi236 = 236, // Water (sparkles) + pi237 = 237, // Water (sparkles) + pi238 = 238, // Water (sparkles) + pi239 = 239, // Water (sparkles) + pi240 = 240, // Track rails + pi241 = 241, // Track rails + pi242 = 242, // Track rails + pi243 = 243, // Primary remap 0 + pi244 = 244, // Primary remap 1 + pi245 = 245, // Primary remap 2 + pi246 = 246, // Primary remap 3 + pi247 = 247, // Primary remap 4 + pi248 = 248, // Primary remap 5 + pi249 = 249, // Primary remap 6 + pi250 = 250, // Primary remap 7 + pi251 = 251, // Primary remap 8 + pi252 = 252, // Primary remap 9 + pi253 = 253, // Primary remap 10 + pi254 = 254, // Primary remap 11 + pi255 = 255, // White + }; + +} diff --git a/src/openrct2/drawing/Rectangle.h b/src/openrct2/drawing/Rectangle.h index f9a8882589a4..c36dbdfac0e2 100644 --- a/src/openrct2/drawing/Rectangle.h +++ b/src/openrct2/drawing/Rectangle.h @@ -12,7 +12,6 @@ #include struct ScreenRect; -enum PaletteIndex : uint8_t; namespace OpenRCT2 { @@ -22,6 +21,7 @@ namespace OpenRCT2 namespace OpenRCT2::Drawing { enum class FilterPaletteID : int32_t; + enum class PaletteIndex : uint8_t; struct RenderTarget; } // namespace OpenRCT2::Drawing diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index cc6c5d771d23..1cbf6276dbad 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -37,7 +37,7 @@ namespace OpenRCT2::Drawing::ScrollingText uint16_t position; uint16_t mode; uint32_t id; - uint8_t bitmap[64 * 40]; + PaletteIndex bitmap[64 * 40]; }; static DrawScrollText _drawScrollTextList[kMaxEntries]; @@ -46,9 +46,9 @@ namespace OpenRCT2::Drawing::ScrollingText static std::mutex _mutex; static void setBitmapForSprite( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour); + std::string_view text, int32_t scroll, PaletteIndex* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour); static void setBitmapForTTF( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour); + std::string_view text, int32_t scroll, PaletteIndex* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour); static void initialiseCharacterBitmaps(uint32_t glyphStart, uint16_t count) { @@ -88,7 +88,7 @@ namespace OpenRCT2::Drawing::ScrollingText // Initialize the scrolling text sprite. G1Element g1{}; - g1.offset = _drawScrollTextList[i].bitmap; + g1.offset = reinterpret_cast(_drawScrollTextList[i].bitmap); g1.xOffset = -32; g1.yOffset = 0; g1.flags = { G1Flag::hasTransparency }; @@ -1464,7 +1464,7 @@ static constexpr const int16_t* kScrollPositions[kMaxModes] = { const int16_t* scrollingModePositions = kScrollPositions[scrollingMode]; - std::fill_n(scrollText->bitmap, 320 * 8, 0x00); + std::fill_n(scrollText->bitmap, 320 * 8, PaletteIndex::pi0); if (LocalisationService_UseTrueTypeFont()) { setBitmapForTTF(scrollString, scroll, scrollText->bitmap, scrollingModePositions, colour); @@ -1480,7 +1480,7 @@ static constexpr const int16_t* kScrollPositions[kMaxModes] = { } static void setBitmapForSprite( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour) + std::string_view text, int32_t scroll, PaletteIndex* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour) { auto characterColour = colour; auto fmt = FmtString(text); @@ -1536,7 +1536,7 @@ static constexpr const int16_t* kScrollPositions[kMaxModes] = { } static void setBitmapForTTF( - std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour) + std::string_view text, int32_t scroll, PaletteIndex* bitmap, const int16_t* scrollPositionOffsets, PaletteIndex colour) { #ifndef DISABLE_TTF auto fontDesc = TTFGetFontFromSpriteBase(FontStyle::tiny); @@ -1595,7 +1595,7 @@ static constexpr const int16_t* kScrollPositions[kMaxModes] = { if (scrollPosition > -1) { - uint8_t* dst = &bitmap[scrollPosition]; + auto* dst = &bitmap[scrollPosition]; for (int32_t y = min_vpos; y < max_vpos; y++) { diff --git a/src/openrct2/drawing/ScrollingText.h b/src/openrct2/drawing/ScrollingText.h index e095f12725bd..1e8e4049df3e 100644 --- a/src/openrct2/drawing/ScrollingText.h +++ b/src/openrct2/drawing/ScrollingText.h @@ -11,7 +11,6 @@ #include -enum PaletteIndex : uint8_t; struct ImageId; struct PaintSession; using StringId = uint16_t; @@ -21,6 +20,11 @@ namespace OpenRCT2 class Formatter; } +namespace OpenRCT2::Drawing +{ + enum class PaletteIndex : uint8_t; +} + namespace OpenRCT2::Drawing::ScrollingText { static auto constexpr kMaxLegacyEntries = 32; diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index ce8feed1ccbd..0235ebddcf9f 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -103,7 +103,7 @@ void DrawText(RenderTarget& rt, const ScreenCoordsXY& coords, const TextPaint& p Rectangle::fill( rt, { { alignedCoords + ScreenCoordsXY{ 0, 11 } }, { alignedCoords + ScreenCoordsXY{ width, 11 } } }, gTextPalette.fill); - if (gTextPalette.sunnyOutline != 0) + if (gTextPalette.sunnyOutline != PaletteIndex::pi0) { Rectangle::fill( rt, { { alignedCoords + ScreenCoordsXY{ 1, 12 } }, { alignedCoords + ScreenCoordsXY{ width + 1, 12 } } }, diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index 5ebee056c6e2..0eb933704da0 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -513,7 +513,7 @@ void X8DrawingContext::FilterRect( int32_t width = endX - startX; int32_t height = endY - startY; - uint8_t* dst = rt.bits + (startY * rt.LineStride() + startX); + PaletteIndex* dst = reinterpret_cast(rt.bits + (startY * rt.LineStride() + startX)); // Find colour in colour table? auto paletteMap = GetPaletteMapForColour(palette); @@ -527,17 +527,17 @@ void X8DrawingContext::FilterRect( auto c = height; for (int32_t i = 0; i < c; i++) { - uint8_t* nextdst = dst + step * i; + PaletteIndex* nextdst = dst + step * i; for (int32_t j = 0; j < scaled_width; j++) { auto index = *(nextdst + j); - *(nextdst + j) = paletteEntries[index]; + *(nextdst + j) = paletteEntries[EnumValue(index)]; } } } } -void X8DrawingContext::DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) +void X8DrawingContext::DrawLine(RenderTarget& rt, PaletteIndex colour, const ScreenLine& line) { Guard::Assert(_isDrawing == true); @@ -559,13 +559,13 @@ void X8DrawingContext::DrawSpriteRawMasked( GfxDrawSpriteRawMaskedSoftware(rt, { x, y }, maskImage, colourImage); } -void X8DrawingContext::DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, uint8_t colour) +void X8DrawingContext::DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, PaletteIndex colour) { Guard::Assert(_isDrawing == true); - uint8_t palette[256]; + PaletteIndex palette[256]; std::fill_n(palette, sizeof(palette), colour); - palette[0] = 0; + palette[0] = PaletteIndex::pi0; const auto spriteCoords = ScreenCoordsXY{ x, y }; GfxDrawSpritePaletteSetSoftware(rt, ImageId(image.GetIndex(), 0), spriteCoords, PaletteMap(palette)); @@ -581,7 +581,7 @@ void X8DrawingContext::DrawGlyph(RenderTarget& rt, const ImageId image, int32_t #ifndef DISABLE_TTF template static void DrawTTFBitmapInternal( - RenderTarget& rt, uint8_t colour, TTFSurface* surface, int32_t x, int32_t y, uint8_t hintingThreshold) + RenderTarget& rt, PaletteIndex colour, TTFSurface* surface, int32_t x, int32_t y, uint8_t hintingThreshold) { assert(rt.zoom_level == ZoomLevel{ 0 }); const int32_t surfaceWidth = surface->w; @@ -598,7 +598,7 @@ static void DrawTTFBitmapInternal( int32_t skipY = y - rt.y; auto src = static_cast(surface->pixels); - uint8_t* dst = rt.bits; + PaletteIndex* dst = reinterpret_cast(rt.bits); if (skipX < 0) { @@ -654,8 +654,8 @@ void X8DrawingContext::DrawTTFBitmap( RenderTarget& rt, TextDrawInfo* info, TTFSurface* surface, int32_t x, int32_t y, uint8_t hintingThreshold) { #ifndef DISABLE_TTF - const uint8_t fgColor = info->palette.fill; - const uint8_t bgColor = info->palette.shadowOutline; + const auto fgColor = info->palette.fill; + const auto bgColor = info->palette.shadowOutline; if (info->colourFlags.has(ColourFlag::withOutline)) { diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index 5adaf6297b34..49a608293a00 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -140,11 +140,11 @@ namespace OpenRCT2 bool crossHatch) override; void FilterRect( RenderTarget& rt, FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) override; - void DrawLine(RenderTarget& rt, uint32_t colour, const ScreenLine& line) override; + void DrawLine(RenderTarget& rt, PaletteIndex colour, const ScreenLine& line) override; void DrawSprite(RenderTarget& rt, const ImageId imageId, int32_t x, int32_t y) override; void DrawSpriteRawMasked( RenderTarget& rt, int32_t x, int32_t y, const ImageId maskImage, const ImageId colourImage) override; - void DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, uint8_t colour) override; + void DrawSpriteSolid(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, PaletteIndex colour) override; void DrawGlyph(RenderTarget& rt, const ImageId image, int32_t x, int32_t y, const PaletteMap& paletteMap) override; void DrawTTFBitmap( RenderTarget& rt, TextDrawInfo* info, TTFSurface* surface, int32_t x, int32_t y, diff --git a/src/openrct2/interface/Colour.cpp b/src/openrct2/interface/Colour.cpp index f48a591abef9..1c0aa97aa3cd 100644 --- a/src/openrct2/interface/Colour.cpp +++ b/src/openrct2/interface/Colour.cpp @@ -141,19 +141,20 @@ namespace OpenRCT2::Colour } // namespace OpenRCT2::Colour #ifndef DISABLE_TTF -static BlendColourMapType BlendColourMap = { 0 }; +static BlendColourMapType BlendColourMap = {}; static bool BlendColourMapInitialised = false; -static uint8_t FindClosestPaletteIndex(uint8_t red, uint8_t green, uint8_t blue) +static PaletteIndex FindClosestPaletteIndex(uint8_t red, uint8_t green, uint8_t blue) { - int16_t closest = -1; + PaletteIndex closest = PaletteIndex::pi255; int32_t closestDistance = INT32_MAX; - for (int i = PaletteIndex::pi0; i < PaletteIndex::pi230; i++) + for (auto i = PaletteIndex::pi0; i < PaletteIndex::pi230; i = static_cast(EnumValue(i) + 1)) { - const int32_t distance = std::pow(gPalette[i].Red - red, 2) + std::pow(gPalette[i].Green - green, 2) - + std::pow(gPalette[i].Blue - blue, 2); + const auto& paletteEntry = gPalette[EnumValue(i)]; + const int32_t distance = std::pow(paletteEntry.Red - red, 2) + std::pow(paletteEntry.Green - green, 2) + + std::pow(paletteEntry.Blue - blue, 2); if (distance < closestDistance) { @@ -192,13 +193,13 @@ BlendColourMapType* GetBlendColourMap() return &BlendColourMap; } -uint8_t BlendColours(const uint8_t paletteIndex1, const uint8_t paletteIndex2) +PaletteIndex BlendColours(const PaletteIndex paletteIndex1, const PaletteIndex paletteIndex2) { if (!BlendColourMapInitialised) { InitBlendColourMap(); } - return BlendColourMap[paletteIndex1][paletteIndex2]; + return BlendColourMap[EnumValue(paletteIndex1)][EnumValue(paletteIndex2)]; } #else BlendColourMapType* GetBlendColourMap() diff --git a/src/openrct2/interface/Colour.h b/src/openrct2/interface/Colour.h index e710969f639b..47978f167b16 100644 --- a/src/openrct2/interface/Colour.h +++ b/src/openrct2/interface/Colour.h @@ -10,6 +10,7 @@ #pragma once #include "../core/StringTypes.h" +#include "../drawing/PaletteIndex.h" #include #include @@ -96,124 +97,25 @@ enum COLOUR_DEEP_WATER = 50 }; -enum PaletteIndex : uint8_t -{ - pi0 = 0, // Transparent - pi10 = 10, // Black (0-dark), Dark grey (0) - pi11 = 11, // Black (middark) - pi12 = 12, // Black (midlight), Dark grey (1-darkest) - pi14 = 14, // Black (lighter), Dark grey (dark) - pi13 = 13, // - pi16 = 16, // - pi17 = 17, // Black (11), Dark grey (light), White (dark) - pi18 = 18, - pi20 = 20, // Dark grey (10), White (light) - pi21 = 21, // Dark grey (11), White (lighter-11) - pi40 = 40, // - pi42 = 42, // Light Brown (lighter), Saturated brown (11) - pi43 = 43, // - pi44 = 44, // Construction marker - pi46 = 46, // Tertiary remap 0 / Yellow (darkest) - pi47 = 47, // Tertiary remap 1 / Yellow - pi48 = 48, // Tertiary remap 2 / Yellow - pi49 = 49, // Tertiary remap 3 / Yellow - pi50 = 50, // Tertiary remap 4 / Yellow - pi51 = 51, // Tertiary remap 5 / Yellow - pi52 = 52, // Tertiary remap 6 / Yellow - pi53 = 53, // Tertiary remap 7 / Yellow - pi54 = 54, // Tertiary remap 8 / Yellow - pi55 = 55, // Tertiary remap 9 / Yellow - pi56 = 56, // Tertiary remap 10 / Yellow - pi57 = 57, // Tertiary remap 11 / Yellow (lightest) - pi61 = 61, // Bordeaux Red (darker) - pi62 = 62, // - pi68 = 68, // - pi69 = 69, // - pi73 = 73, // - pi99 = 99, // - pi102 = 102, // Bright green (lighter) - pi108 = 108, // - pi111 = 111, // - pi129 = 129, // Light Purple (11) - pi135 = 135, // - pi136 = 136, // Dark Blue (10-11), Light Blue (midlight), Icy Blue (darker) - pi138 = 138, // Light Blue (lighter), Icy Blue (middark) - pi139 = 139, - pi141 = 141, // - pi144 = 144, // Dark Green (1-darkest, - pi152 = 152, - pi161 = 161, // Bright Purple (light) - pi162 = 162, // - pi164 = 164, // - pi171 = 171, // Saturated Red (lightest) Bright Red (middark) - pi172 = 172, // Saturated Red (10-11), Bright Red (midlight) - pi173 = 173, // Used to draw intense lines in the Ride Graphs window - pi183 = 183, // Used to draw rides in the Map window - pi186 = 186, // - pi187 = 187, // - pi194 = 194, // - pi195 = 195, // - pi199 = 199, // - pi202 = 202, // Secondary remap 0 / Pink (darkest) - pi203 = 203, // Secondary remap 1 / Pink - pi204 = 204, // Secondary remap 2 / Pink - pi205 = 205, // Secondary remap 3 / Pink - pi206 = 206, // Secondary remap 4 / Pink - pi207 = 207, // Secondary remap 5 / Pink - pi208 = 208, // Secondary remap 6 / Pink - pi209 = 209, // Secondary remap 7 / Pink - pi210 = 210, // Secondary remap 8 / Pink - pi211 = 211, // Secondary remap 9 / Pink - pi212 = 212, // Secondary remap 10 / Pink - pi213 = 213, // Secondary remap 11 / Pink (lightest) - pi222 = 222, // - pi223 = 223, // - pi230 = 230, // Water (waves) - pi231 = 231, // Water (waves) - pi232 = 232, // Water (waves) - pi233 = 233, // Water (waves) - pi234 = 234, // Water (waves) - pi235 = 235, // Water (sparkles) - pi236 = 236, // Water (sparkles) - pi237 = 237, // Water (sparkles) - pi238 = 238, // Water (sparkles) - pi239 = 239, // Water (sparkles) - pi240 = 240, // Track rails - pi241 = 241, // Track rails - pi242 = 242, // Track rails - pi243 = 243, // Primary remap 0 - pi244 = 244, // Primary remap 1 - pi245 = 245, // Primary remap 2 - pi246 = 246, // Primary remap 3 - pi247 = 247, // Primary remap 4 - pi248 = 248, // Primary remap 5 - pi249 = 249, // Primary remap 6 - pi250 = 250, // Primary remap 7 - pi251 = 251, // Primary remap 8 - pi252 = 252, // Primary remap 9 - pi253 = 253, // Primary remap 10 - pi254 = 254, // Primary remap 11 -}; - constexpr size_t kPaletteCount = 256; -constexpr auto kPaletteOffsetDynamic = PaletteIndex::pi10; +constexpr auto kPaletteOffsetDynamic = OpenRCT2::Drawing::PaletteIndex::pi10; constexpr uint8_t kPaletteLengthDynamic = 236; -constexpr auto kPaletteOffsetWaterWaves = PaletteIndex::pi230; -constexpr auto kPaletteOffsetWaterSparkles = PaletteIndex::pi235; +constexpr auto kPaletteOffsetWaterWaves = OpenRCT2::Drawing::PaletteIndex::pi230; +constexpr auto kPaletteOffsetWaterSparkles = OpenRCT2::Drawing::PaletteIndex::pi235; constexpr uint8_t kPaletteLengthWaterWaves = 5; constexpr uint8_t kPaletteLengthWaterSparkles = 5; -constexpr auto kPaletteOffsetTrackRails = PaletteIndex::pi240; +constexpr auto kPaletteOffsetTrackRails = OpenRCT2::Drawing::PaletteIndex::pi240; constexpr uint8_t kPaletteLengthTrackRails = 3; -constexpr auto kPaletteOffsetRemapPrimary = PaletteIndex::pi243; -constexpr auto kPaletteOffsetRemapSecondary = PaletteIndex::pi202; -constexpr auto kPaletteOffsetRemapTertiary = PaletteIndex::pi46; +constexpr auto kPaletteOffsetRemapPrimary = OpenRCT2::Drawing::PaletteIndex::pi243; +constexpr auto kPaletteOffsetRemapSecondary = OpenRCT2::Drawing::PaletteIndex::pi202; +constexpr auto kPaletteOffsetRemapTertiary = OpenRCT2::Drawing::PaletteIndex::pi46; constexpr uint8_t kPaletteLengthRemap = 12; -constexpr auto kPaletteOffsetAnimated = PaletteIndex::pi230; +constexpr auto kPaletteOffsetAnimated = OpenRCT2::Drawing::PaletteIndex::pi230; constexpr uint8_t kPaletteLengthAnimated = 16; constexpr uint8_t kColourNumOriginal = 32; @@ -224,18 +126,18 @@ constexpr colour_t kTextColour255 = 255; struct ColourShadeMap { - PaletteIndex colour_0; - PaletteIndex colour_1; - PaletteIndex darkest; - PaletteIndex darker; - PaletteIndex dark; - PaletteIndex mid_dark; - PaletteIndex mid_light; - PaletteIndex light; - PaletteIndex lighter; - PaletteIndex lightest; - PaletteIndex colour_10; - PaletteIndex colour_11; + OpenRCT2::Drawing::PaletteIndex colour_0; + OpenRCT2::Drawing::PaletteIndex colour_1; + OpenRCT2::Drawing::PaletteIndex darkest; + OpenRCT2::Drawing::PaletteIndex darker; + OpenRCT2::Drawing::PaletteIndex dark; + OpenRCT2::Drawing::PaletteIndex mid_dark; + OpenRCT2::Drawing::PaletteIndex mid_light; + OpenRCT2::Drawing::PaletteIndex light; + OpenRCT2::Drawing::PaletteIndex lighter; + OpenRCT2::Drawing::PaletteIndex lightest; + OpenRCT2::Drawing::PaletteIndex colour_10; + OpenRCT2::Drawing::PaletteIndex colour_11; }; extern ColourShadeMap ColourMapA[COLOUR_COUNT]; @@ -249,8 +151,9 @@ namespace OpenRCT2::Colour } // namespace OpenRCT2::Colour #ifndef DISABLE_TTF -uint8_t BlendColours(const uint8_t paletteIndex1, const uint8_t paletteIndex2); +OpenRCT2::Drawing::PaletteIndex BlendColours( + const OpenRCT2::Drawing::PaletteIndex paletteIndex1, const OpenRCT2::Drawing::PaletteIndex paletteIndex2); #endif -typedef uint8_t BlendColourMapType[kPaletteCount][kPaletteCount]; +typedef OpenRCT2::Drawing::PaletteIndex BlendColourMapType[kPaletteCount][kPaletteCount]; BlendColourMapType* GetBlendColourMap(); diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index a3187e62175d..c5b7541e3107 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -241,7 +241,7 @@ static RenderTarget CreateRT(const Viewport& viewport) if (viewport.flags & VIEWPORT_FLAG_TRANSPARENT_BACKGROUND) { - std::memset(rt.bits, PaletteIndex::pi0, static_cast(rt.width) * rt.height); + std::memset(rt.bits, EnumValue(PaletteIndex::pi0), static_cast(rt.width) * rt.height); } return rt; diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index ecbfda223aaa..5f2412c05139 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1504,7 +1504,7 @@ namespace OpenRCT2 if (imageType & IMAGE_TYPE_REMAP) { - return paletteMap[*index] != 0; + return paletteMap[*index] != PaletteIndex::pi0; } if (imageType & IMAGE_TYPE_TRANSPARENT) diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 2cdab4bcaaf5..dd0d367c8489 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -256,6 +256,7 @@ + diff --git a/src/openrct2/object/ScenarioMetaObject.cpp b/src/openrct2/object/ScenarioMetaObject.cpp index 55dd8fde751f..428d18bcf07d 100644 --- a/src/openrct2/object/ScenarioMetaObject.cpp +++ b/src/openrct2/object/ScenarioMetaObject.cpp @@ -64,7 +64,7 @@ namespace OpenRCT2 preview.width = g1->width; preview.height = g1->height; - std::copy_n(g1->offset, g1->width * g1->height, preview.pixels); + std::copy_n(g1->offset, g1->width * g1->height, reinterpret_cast(preview.pixels)); return preview; } @@ -81,7 +81,7 @@ namespace OpenRCT2 preview.width = g1->width; preview.height = g1->height; - std::copy_n(g1->offset, g1->width * g1->height, preview.pixels); + std::copy_n(g1->offset, g1->width * g1->height, reinterpret_cast(preview.pixels)); return preview; } diff --git a/src/openrct2/object/TerrainSurfaceObject.cpp b/src/openrct2/object/TerrainSurfaceObject.cpp index 3573c084217e..4942508eed45 100644 --- a/src/openrct2/object/TerrainSurfaceObject.cpp +++ b/src/openrct2/object/TerrainSurfaceObject.cpp @@ -100,7 +100,7 @@ namespace OpenRCT2 if (mapColoursAreValid) MapColours[i] = mapColours[i]; else - MapColours[i] = PaletteIndex::pi0; + MapColours[i] = OpenRCT2::Drawing::PaletteIndex::pi0; } for (auto& el : properties["special"]) diff --git a/src/openrct2/object/TerrainSurfaceObject.h b/src/openrct2/object/TerrainSurfaceObject.h index b9bf9be46308..0aee565050f8 100644 --- a/src/openrct2/object/TerrainSurfaceObject.h +++ b/src/openrct2/object/TerrainSurfaceObject.h @@ -59,7 +59,7 @@ namespace OpenRCT2 uint8_t Rotations{}; money64 Price{}; TerrainSurfaceFlags Flags{}; - PaletteIndex MapColours[2]{}; + OpenRCT2::Drawing::PaletteIndex MapColours[2]{}; void ReadJson(IReadObjectContext* context, json_t& root) override; void Load() override; diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index 4a1b053b5f2a..5e27cb0f8d7a 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -40,20 +40,20 @@ uint8_t gClipHeight = 128; // Default to middle value CoordsXY gClipSelectionA = { 0, 0 }; CoordsXY gClipSelectionB = { kMaximumTileStartXY, kMaximumTileStartXY }; -static constexpr uint8_t BoundBoxDebugColours[] = { - 0, // NONE - 102, // TERRAIN - 114, // SPRITE - 229, // RIDE - 126, // WATER - 138, // SCENERY - 150, // FOOTPATH - 162, // FOOTPATH_ITEM - 174, // PARK - 186, // WALL - 198, // LARGE_SCENERY - 210, // LABEL - 222, // BANNER +static constexpr PaletteIndex kBoundBoxDebugColours[] = { + PaletteIndex::pi0, // NONE + PaletteIndex::pi102, // TERRAIN + PaletteIndex::pi114, // SPRITE + PaletteIndex::pi229, // RIDE + PaletteIndex::pi126, // WATER + PaletteIndex::pi138, // SCENERY + PaletteIndex::pi150, // FOOTPATH + PaletteIndex::pi162, // FOOTPATH_ITEM + PaletteIndex::pi174, // PARK + PaletteIndex::pi186, // WALL + PaletteIndex::pi198, // LARGE_SCENERY + PaletteIndex::pi210, // LABEL + PaletteIndex::pi222, // BANNER }; bool gShowDirtyVisuals; @@ -758,7 +758,7 @@ static void PaintPSImageWithBoundingBoxes(PaintSession& session, PaintStruct* ps { auto& rt = session.rt; - const uint8_t colour = BoundBoxDebugColours[EnumValue(ps->InteractionItem)]; + const PaletteIndex colour = kBoundBoxDebugColours[EnumValue(ps->InteractionItem)]; const uint8_t rotation = session.CurrentRotation; const CoordsXYZ frontTop = { diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 85372152e0bf..e31b0dc4cd47 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -263,7 +263,7 @@ namespace OpenRCT2 cs.readWrite(image.type); cs.readWrite(image.width); cs.readWrite(image.height); - cs.readWriteArray(image.pixels, [&cs](uint8_t& pixel) { + cs.readWriteArray(image.pixels, [&cs](OpenRCT2::Drawing::PaletteIndex& pixel) { cs.readWrite(pixel); return true; }); @@ -547,7 +547,7 @@ namespace OpenRCT2 cs.readWrite(image.type); cs.readWrite(image.width); cs.readWrite(image.height); - cs.readWriteArray(image.pixels, [&cs](uint8_t& pixel) { + cs.readWriteArray(image.pixels, [&cs](OpenRCT2::Drawing::PaletteIndex& pixel) { cs.readWrite(pixel); return true; }); diff --git a/src/openrct2/park/ParkPreview.cpp b/src/openrct2/park/ParkPreview.cpp index 0b7d05438b04..86b403d2da57 100644 --- a/src/openrct2/park/ParkPreview.cpp +++ b/src/openrct2/park/ParkPreview.cpp @@ -30,6 +30,8 @@ namespace OpenRCT2 static std::optional generatePreviewMap(); static std::optional generatePreviewScreenshot(); + using OpenRCT2::Drawing::PaletteIndex; + ParkPreview generatePreviewFromGameState(const GameState_t& gameState) { ParkPreview preview{ @@ -229,7 +231,7 @@ namespace OpenRCT2 drawingEngine->BeginDraw(); Drawing::RenderTarget rt{ - .bits = static_cast(image.pixels), + .bits = reinterpret_cast(image.pixels), .x = 0, .y = 0, .width = image.width, @@ -249,7 +251,7 @@ namespace OpenRCT2 void drawPreviewImage(const PreviewImage& image, Drawing::RenderTarget& rt, ScreenCoordsXY screenPos) { G1Element g1temp = {}; - g1temp.offset = const_cast(image.pixels); + g1temp.offset = reinterpret_cast(const_cast(image.pixels)); g1temp.width = image.width; g1temp.height = image.height; diff --git a/src/openrct2/park/ParkPreview.h b/src/openrct2/park/ParkPreview.h index dfc1f654d909..e6481ea79301 100644 --- a/src/openrct2/park/ParkPreview.h +++ b/src/openrct2/park/ParkPreview.h @@ -18,8 +18,9 @@ namespace OpenRCT2::Drawing { + enum class PaletteIndex : uint8_t; struct RenderTarget; -} +} // namespace OpenRCT2::Drawing namespace OpenRCT2 { @@ -37,7 +38,7 @@ namespace OpenRCT2 PreviewImageType type; uint8_t width; uint8_t height; - uint8_t pixels[kMaxPreviewImageSize * kMaxPreviewImageSize]{}; + OpenRCT2::Drawing::PaletteIndex pixels[kMaxPreviewImageSize * kMaxPreviewImageSize]{}; }; struct ParkPreview diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 27ba9ad74bdb..c5961c1b502e 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -381,7 +381,7 @@ static void ScenarioUpdateDayNightCycle() // Only update palette if day / night cycle has changed if (gDayNightCycle != currentDayNightCycle) { - UpdatePalette(gGamePalette, 10, 236); + UpdatePalette(gGamePalette, OpenRCT2::Drawing::PaletteIndex::pi10, 236); } } From a4a04993f550a8d5a98278e196310b3193bce3f0 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Thu, 8 Jan 2026 00:16:48 +0100 Subject: [PATCH 195/222] Name Sub6E1F34*, remove redundant window checks --- src/openrct2-ui/windows/Scenery.cpp | 89 +++++++---------------------- 1 file changed, 22 insertions(+), 67 deletions(-) diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 5f72c80f5fe3..ed5c7485f3ed 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1771,7 +1771,7 @@ namespace OpenRCT2::Ui::Windows uint8_t quadrant; Direction rotation; - Sub6E1F34SmallScenery(screenPos, selection.EntryIndex, mapTile, &quadrant, &rotation); + updatePlacementSmallScenery(screenPos, selection.EntryIndex, mapTile, &quadrant, &rotation); if (mapTile.IsNull()) { @@ -1848,7 +1848,7 @@ namespace OpenRCT2::Ui::Windows CoordsXY mapTile = {}; int32_t z; - Sub6E1F34PathItem(screenPos, selection.EntryIndex, mapTile, &z); + updatePlacementPathItem(screenPos, selection.EntryIndex, mapTile, &z); if (mapTile.IsNull()) { @@ -1888,7 +1888,7 @@ namespace OpenRCT2::Ui::Windows CoordsXY mapTile = {}; uint8_t edge; - Sub6E1F34Wall(screenPos, selection.EntryIndex, mapTile, &edge); + updatePlacementWall(screenPos, selection.EntryIndex, mapTile, &edge); if (mapTile.IsNull()) { @@ -1938,7 +1938,7 @@ namespace OpenRCT2::Ui::Windows CoordsXY mapTile = {}; Direction direction; - Sub6E1F34LargeScenery(screenPos, selection.EntryIndex, mapTile, &direction); + updatePlacementLargeScenery(screenPos, selection.EntryIndex, mapTile, &direction); if (mapTile.IsNull()) { @@ -1997,7 +1997,7 @@ namespace OpenRCT2::Ui::Windows Direction direction; int32_t z; - Sub6E1F34Banner(screenPos, selection.EntryIndex, mapTile, &z, &direction); + updatePlacementBanner(screenPos, selection.EntryIndex, mapTile, &z, &direction); if (mapTile.IsNull()) { @@ -2378,7 +2378,7 @@ namespace OpenRCT2::Ui::Windows } } - void Sub6E1F34UpdateScreenCoordsAndButtonsPressed(bool canRaiseItem, ScreenCoordsXY& screenPos) + void updatePlacementUpdateScreenCoordsAndButtonsPressed(bool canRaiseItem, ScreenCoordsXY& screenPos) { if (!canRaiseItem && !getGameState().cheats.disableSupportLimits) { @@ -2452,19 +2452,10 @@ namespace OpenRCT2::Ui::Windows } } - void Sub6E1F34SmallScenery( + void updatePlacementSmallScenery( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, uint8_t* outQuadrant, Direction* outRotation) { - auto* windowMgr = GetWindowManager(); - auto* w = windowMgr->FindByClass(WindowClass::scenery); - - if (w == nullptr) - { - gridPos.SetNull(); - return; - } - auto screenPos = sourceScreenPos; uint16_t maxPossibleHeight = ZoomLevel::max().ApplyTo( std::numeric_limits::max() - 32); @@ -2483,7 +2474,7 @@ namespace OpenRCT2::Ui::Windows can_raise_item = true; } - Sub6E1F34UpdateScreenCoordsAndButtonsPressed(can_raise_item, screenPos); + updatePlacementUpdateScreenCoordsAndButtonsPressed(can_raise_item, screenPos); // Small scenery if (!sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_FULL_TILE)) @@ -2651,22 +2642,13 @@ namespace OpenRCT2::Ui::Windows *outRotation = rotation; } - void Sub6E1F34PathItem( + void updatePlacementPathItem( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, int32_t* outZ) { - auto* windowMgr = GetWindowManager(); - auto* w = windowMgr->FindByClass(WindowClass::scenery); - - if (w == nullptr) - { - gridPos.SetNull(); - return; - } - auto screenPos = sourceScreenPos; - Sub6E1F34UpdateScreenCoordsAndButtonsPressed(false, screenPos); + updatePlacementUpdateScreenCoordsAndButtonsPressed(false, screenPos); - // Path bits + // Path additions constexpr auto flag = EnumsToFlags(ViewportInteractionItem::footpath, ViewportInteractionItem::pathAddition); auto info = GetMapCoordinatesFromPos(screenPos, flag); gridPos = info.Loc; @@ -2685,18 +2667,9 @@ namespace OpenRCT2::Ui::Windows *outZ = info.Element->GetBaseZ(); } - void Sub6E1F34Wall( + void updatePlacementWall( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, uint8_t* outEdges) { - auto* windowMgr = GetWindowManager(); - auto* w = windowMgr->FindByClass(WindowClass::scenery); - - if (w == nullptr) - { - gridPos.SetNull(); - return; - } - auto screenPos = sourceScreenPos; uint16_t maxPossibleHeight = ZoomLevel::max().ApplyTo( std::numeric_limits::max() - 32); @@ -2707,7 +2680,7 @@ namespace OpenRCT2::Ui::Windows maxPossibleHeight -= wallEntry->height; } - Sub6E1F34UpdateScreenCoordsAndButtonsPressed(true, screenPos); + updatePlacementUpdateScreenCoordsAndButtonsPressed(true, screenPos); // Walls uint8_t edge; @@ -2778,18 +2751,9 @@ namespace OpenRCT2::Ui::Windows *outEdges = edge; } - void Sub6E1F34LargeScenery( + void updatePlacementLargeScenery( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, Direction* outDirection) { - auto* windowMgr = GetWindowManager(); - auto* w = windowMgr->FindByClass(WindowClass::scenery); - - if (w == nullptr) - { - gridPos.SetNull(); - return; - } - auto screenPos = sourceScreenPos; uint16_t maxPossibleHeight = ZoomLevel::max().ApplyTo( std::numeric_limits::max() - 32); @@ -2805,7 +2769,7 @@ namespace OpenRCT2::Ui::Windows maxPossibleHeight = std::max(0, maxPossibleHeight - maxClearZ); } - Sub6E1F34UpdateScreenCoordsAndButtonsPressed(true, screenPos); + updatePlacementUpdateScreenCoordsAndButtonsPressed(true, screenPos); // Large scenery // If CTRL not pressed @@ -2879,21 +2843,12 @@ namespace OpenRCT2::Ui::Windows *outDirection = rotation; } - void Sub6E1F34Banner( + void updatePlacementBanner( const ScreenCoordsXY& sourceScreenPos, ObjectEntryIndex sceneryIndex, CoordsXY& gridPos, int32_t* outZ, Direction* outDirection) { - auto* windowMgr = GetWindowManager(); - auto* w = windowMgr->FindByClass(WindowClass::scenery); - - if (w == nullptr) - { - gridPos.SetNull(); - return; - } - auto screenPos = sourceScreenPos; - Sub6E1F34UpdateScreenCoordsAndButtonsPressed(false, screenPos); + updatePlacementUpdateScreenCoordsAndButtonsPressed(false, screenPos); // Banner constexpr auto flag = EnumsToFlags(ViewportInteractionItem::footpath, ViewportInteractionItem::pathAddition); @@ -2935,7 +2890,7 @@ namespace OpenRCT2::Ui::Windows uint8_t quadrant; Direction rotation; - Sub6E1F34SmallScenery(screenCoords, selectedScenery, gridPos, &quadrant, &rotation); + updatePlacementSmallScenery(screenCoords, selectedScenery, gridPos, &quadrant, &rotation); if (gridPos.IsNull()) return; @@ -3062,7 +3017,7 @@ namespace OpenRCT2::Ui::Windows CoordsXY gridPos; int32_t z; - Sub6E1F34PathItem(screenCoords, selectedScenery, gridPos, &z); + updatePlacementPathItem(screenCoords, selectedScenery, gridPos, &z); if (gridPos.IsNull()) return; @@ -3109,7 +3064,7 @@ namespace OpenRCT2::Ui::Windows { CoordsXY gridPos; uint8_t edges; - Sub6E1F34Wall(screenCoords, selectedScenery, gridPos, &edges); + updatePlacementWall(screenCoords, selectedScenery, gridPos, &edges); if (gridPos.IsNull()) return; @@ -3310,7 +3265,7 @@ namespace OpenRCT2::Ui::Windows { CoordsXY gridPos; Direction direction; - Sub6E1F34LargeScenery(screenCoords, selectedScenery, gridPos, &direction); + updatePlacementLargeScenery(screenCoords, selectedScenery, gridPos, &direction); if (gridPos.IsNull()) return; @@ -3372,7 +3327,7 @@ namespace OpenRCT2::Ui::Windows CoordsXY gridPos; int32_t z; Direction direction; - Sub6E1F34Banner(screenCoords, selectedScenery, gridPos, &z, &direction); + updatePlacementBanner(screenCoords, selectedScenery, gridPos, &z, &direction); if (gridPos.IsNull()) return; From 7294661d13e8d35a68c9c5ed5d02ea167d95e09a Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Thu, 8 Jan 2026 00:17:33 +0100 Subject: [PATCH 196/222] Rename Sub6A3F61PathAddition() to paintPathAddition() --- src/openrct2/paint/tile_element/Paint.Path.cpp | 2 +- src/openrct2/paint/tile_element/Paint.PathAddition.cpp | 2 +- src/openrct2/paint/tile_element/Paint.PathAddition.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 676b93d14326..0e52e9403c8a 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -623,7 +623,7 @@ static void PathPaintFencesAdditionsTunnels( { if (pathElement.HasAddition()) { - Sub6A3F61PathAddition(session, pathElement, height, sceneryImageTemplate); + paintPathAddition(session, pathElement, height, sceneryImageTemplate); } } diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp index e5031eb454ab..a380d70c6a6b 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.cpp +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.cpp @@ -224,7 +224,7 @@ inline bool PathAdditionIsVisible(uint32_t viewFlags, const PathAdditionEntry& p return false; } -void Sub6A3F61PathAddition(PaintSession& session, const PathElement& pathElement, uint16_t height, ImageId sceneryImageTemplate) +void paintPathAddition(PaintSession& session, const PathElement& pathElement, uint16_t height, ImageId sceneryImageTemplate) { // Path additions get drawn on edges that are not connected, so we need to flip them. const auto edges = pathElement.GetEdges() ^ 0b1111; diff --git a/src/openrct2/paint/tile_element/Paint.PathAddition.h b/src/openrct2/paint/tile_element/Paint.PathAddition.h index e58d235c32b5..5f1f4672ea08 100644 --- a/src/openrct2/paint/tile_element/Paint.PathAddition.h +++ b/src/openrct2/paint/tile_element/Paint.PathAddition.h @@ -20,6 +20,6 @@ namespace OpenRCT2 struct PathElement; } -void Sub6A3F61PathAddition( +void paintPathAddition( PaintSession& session, const OpenRCT2::PathElement& pathElement, uint16_t height, ImageId sceneryImageTemplate); void PaintLampLightEffects(PaintSession& session, const OpenRCT2::PathElement& pathEl, uint16_t height); From 6ce7379d9b717e741f77f3774d5adbaf732e4d7b Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 7 Jan 2026 20:54:04 -0300 Subject: [PATCH 197/222] Remove redundant namespace qualifiers from tests project --- test/tests/IniWriterTest.cpp | 20 ++++++++++---------- test/tests/RideRatings.cpp | 4 ++-- test/tests/S6ImportExportTests.cpp | 2 +- test/tests/SawyerCodingTest.cpp | 29 ++++++++++++++--------------- test/tests/StringTest.cpp | 6 +++--- 5 files changed, 30 insertions(+), 31 deletions(-) diff --git a/test/tests/IniWriterTest.cpp b/test/tests/IniWriterTest.cpp index 8283baf1fd07..e74d548cbae6 100644 --- a/test/tests/IniWriterTest.cpp +++ b/test/tests/IniWriterTest.cpp @@ -28,7 +28,7 @@ static auto Enum_Currency = ConfigEnum({ TEST_F(IniWriterTest, create_empty) { - OpenRCT2::MemoryStream ms(0); + MemoryStream ms(0); ASSERT_EQ(ms.CanRead(), true); ASSERT_EQ(ms.CanWrite(), true); auto iw = CreateIniWriter(&ms); @@ -37,7 +37,7 @@ TEST_F(IniWriterTest, create_empty) TEST_F(IniWriterTest, create_one_section) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteSection("OpenRCT2"); @@ -53,7 +53,7 @@ TEST_F(IniWriterTest, create_one_section) TEST_F(IniWriterTest, create_multiple_sections) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteSection("OpenRCT1"); @@ -75,7 +75,7 @@ TEST_F(IniWriterTest, create_multiple_sections) TEST_F(IniWriterTest, create_loose_bool_entry) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteBoolean("boolval", true); @@ -91,7 +91,7 @@ TEST_F(IniWriterTest, create_loose_bool_entry) TEST_F(IniWriterTest, create_loose_enum_entry) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteEnum("by_string", "stringval"); @@ -108,7 +108,7 @@ TEST_F(IniWriterTest, create_loose_enum_entry) TEST_F(IniWriterTest, create_loose_float_entry) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteFloat("one", 1.); @@ -125,7 +125,7 @@ TEST_F(IniWriterTest, create_loose_float_entry) TEST_F(IniWriterTest, create_loose_int32_t_entry) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteInt32("one", 1); @@ -148,7 +148,7 @@ TEST_F(IniWriterTest, create_loose_int32_t_entry) TEST_F(IniWriterTest, create_loose_string_entry) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteString("path", u8"C:'\\some/dir\\here/神鷹暢遊"); @@ -165,7 +165,7 @@ TEST_F(IniWriterTest, create_loose_string_entry) TEST_F(IniWriterTest, create_multiple_section_with_values) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteSection("bool"); @@ -191,7 +191,7 @@ TEST_F(IniWriterTest, create_multiple_section_with_values) TEST_F(IniWriterTest, create_duplicate_sections) { - OpenRCT2::MemoryStream ms(1000); + MemoryStream ms(1000); auto iw = CreateIniWriter(&ms); ASSERT_NE(iw, nullptr); iw->WriteSection("section"); diff --git a/test/tests/RideRatings.cpp b/test/tests/RideRatings.cpp index 181c1995e452..31224ef7f696 100644 --- a/test/tests/RideRatings.cpp +++ b/test/tests/RideRatings.cpp @@ -32,7 +32,7 @@ class RideRatings : public testing::Test auto& gameState = getGameState(); for (const auto& ride : RideManager(gameState)) { - OpenRCT2::RideRating::UpdateRide(ride); + RideRating::UpdateRide(ride); } } @@ -48,7 +48,7 @@ class RideRatings : public testing::Test std::string FormatRatings(const Ride& ride) { - OpenRCT2::RideRating::Tuple ratings = ride.ratings; + RideRating::Tuple ratings = ride.ratings; auto name = std::string(ride.getRideTypeDescriptor().Name); std::string line = String::stdFormat( "%s: (%d, %d, %d)", name.c_str(), static_cast(ratings.excitement), static_cast(ratings.intensity), diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp index 43699de121f0..774edce68072 100644 --- a/test/tests/S6ImportExportTests.cpp +++ b/test/tests/S6ImportExportTests.cpp @@ -116,7 +116,7 @@ static bool ExportSave(MemoryStream& stream, std::unique_ptr& context) exporter->ExportObjectsList = objManager.GetPackableObjects(); auto& gameState = getGameState(); - exporter->Export(gameState, stream, OpenRCT2::kParkFileSaveCompressionLevel); + exporter->Export(gameState, stream, kParkFileSaveCompressionLevel); return true; } diff --git a/test/tests/SawyerCodingTest.cpp b/test/tests/SawyerCodingTest.cpp index 823459ecb99a..38cdc5d23527 100644 --- a/test/tests/SawyerCodingTest.cpp +++ b/test/tests/SawyerCodingTest.cpp @@ -37,16 +37,15 @@ class SawyerCodingTest : public testing::Test void TestEncodeDecode(ChunkEncoding encoding_type) { // Encode - SawyerCoding::ChunkHeader chdr_in; + ChunkHeader chdr_in; chdr_in.encoding = encoding_type; chdr_in.length = sizeof(randomdata); uint8_t* encodedDataBuffer = new uint8_t[BUFFER_SIZE]; - size_t encodedDataSize = SawyerCoding::WriteChunkBuffer( - encodedDataBuffer, reinterpret_cast(randomdata), chdr_in); + size_t encodedDataSize = WriteChunkBuffer(encodedDataBuffer, reinterpret_cast(randomdata), chdr_in); ASSERT_GT(encodedDataSize, sizeof(SawyerCoding::ChunkHeader)); // Decode - OpenRCT2::MemoryStream ms(encodedDataBuffer, encodedDataSize); + MemoryStream ms(encodedDataBuffer, encodedDataSize); SawyerChunkReader reader(&ms); auto chunk = reader.ReadChunk(); ASSERT_EQ(chunk->GetEncoding(), chdr_in.encoding); @@ -59,11 +58,11 @@ class SawyerCodingTest : public testing::Test void TestDecode(const uint8_t* data, size_t size) { - auto expectedLength = size - sizeof(SawyerCoding::ChunkHeader); - auto chdr_in = reinterpret_cast(data); + auto expectedLength = size - sizeof(ChunkHeader); + auto chdr_in = reinterpret_cast(data); ASSERT_EQ(chdr_in->length, expectedLength); - OpenRCT2::MemoryStream ms(data, size); + MemoryStream ms(data, size); SawyerChunkReader reader(&ms); auto chunk = reader.ReadChunk(); ASSERT_EQ(chunk->GetEncoding(), chdr_in->encoding); @@ -120,7 +119,7 @@ TEST_F(SawyerCodingTest, decode_chunk_rotate) TEST_F(SawyerCodingTest, invalid1) { - OpenRCT2::MemoryStream ms(invalid1, sizeof(invalid1)); + MemoryStream ms(invalid1, sizeof(invalid1)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -128,7 +127,7 @@ TEST_F(SawyerCodingTest, invalid1) TEST_F(SawyerCodingTest, invalid2) { - OpenRCT2::MemoryStream ms(invalid2, sizeof(invalid2)); + MemoryStream ms(invalid2, sizeof(invalid2)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -136,7 +135,7 @@ TEST_F(SawyerCodingTest, invalid2) TEST_F(SawyerCodingTest, invalid3) { - OpenRCT2::MemoryStream ms(invalid3, sizeof(invalid3)); + MemoryStream ms(invalid3, sizeof(invalid3)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -144,7 +143,7 @@ TEST_F(SawyerCodingTest, invalid3) TEST_F(SawyerCodingTest, invalid4) { - OpenRCT2::MemoryStream ms(invalid4, sizeof(invalid4)); + MemoryStream ms(invalid4, sizeof(invalid4)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -152,7 +151,7 @@ TEST_F(SawyerCodingTest, invalid4) TEST_F(SawyerCodingTest, invalid5) { - OpenRCT2::MemoryStream ms(invalid5, sizeof(invalid5)); + MemoryStream ms(invalid5, sizeof(invalid5)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -160,7 +159,7 @@ TEST_F(SawyerCodingTest, invalid5) TEST_F(SawyerCodingTest, invalid6) { - OpenRCT2::MemoryStream ms(invalid6, sizeof(invalid6)); + MemoryStream ms(invalid6, sizeof(invalid6)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -168,7 +167,7 @@ TEST_F(SawyerCodingTest, invalid6) TEST_F(SawyerCodingTest, invalid7) { - OpenRCT2::MemoryStream ms(invalid7, sizeof(invalid7)); + MemoryStream ms(invalid7, sizeof(invalid7)); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), SawyerChunkException); @@ -176,7 +175,7 @@ TEST_F(SawyerCodingTest, invalid7) TEST_F(SawyerCodingTest, empty) { - OpenRCT2::MemoryStream ms(empty, 0); + MemoryStream ms(empty, 0); SawyerChunkReader reader(&ms); std::shared_ptr ptr; EXPECT_THROW(ptr = reader.ReadChunk(), IOException); diff --git a/test/tests/StringTest.cpp b/test/tests/StringTest.cpp index 2fb0e36439cc..7a30610fd90a 100644 --- a/test/tests/StringTest.cpp +++ b/test/tests/StringTest.cpp @@ -91,7 +91,7 @@ TEST_F(StringTest, Convert_950_to_UTF8) { auto input = StringFromHex("a7d6b374aabab4c4a6e2aab0af57"); auto expected = u8"快速的棕色狐狸"; - auto actual = String::convertToUtf8(input, OpenRCT2::CodePage::CP_950); + auto actual = String::convertToUtf8(input, CP_950); ASSERT_EQ(expected, actual); } @@ -99,7 +99,7 @@ TEST_F(StringTest, Convert_UTF8_to_UTF8) { auto input = u8"سريع|brown|ثعلب"; auto expected = input; - auto actual = String::convertToUtf8(input, OpenRCT2::CodePage::UTF8); + auto actual = String::convertToUtf8(input, UTF8); ASSERT_EQ(expected, actual); } @@ -107,7 +107,7 @@ TEST_F(StringTest, Convert_Empty) { auto input = ""; auto expected = input; - auto actual = String::convertToUtf8(input, OpenRCT2::CodePage::CP_1252); + auto actual = String::convertToUtf8(input, CP_1252); ASSERT_EQ(expected, actual); } From 83d7a3ce9bea79228e5faa2bc87154bc49e0c3d1 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 7 Jan 2026 20:59:56 -0300 Subject: [PATCH 198/222] Make namespace qualifier explicit --- src/openrct2-win/openrct2-win.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/openrct2-win/openrct2-win.cpp b/src/openrct2-win/openrct2-win.cpp index 79836474683b..ed4bed2c9236 100644 --- a/src/openrct2-win/openrct2-win.cpp +++ b/src/openrct2-win/openrct2-win.cpp @@ -26,8 +26,6 @@ #include #include -using namespace OpenRCT2; - static std::vector GetCommandLineArgs(int argc, wchar_t** argvW); /** @@ -55,7 +53,7 @@ static std::vector GetCommandLineArgs(int argc, wchar_t** argvW) std::vector argv; for (int i = 0; i < argc; i++) { - argv.push_back(String::toUtf8(argvW[i])); + argv.push_back(OpenRCT2::String::toUtf8(argvW[i])); } return argv; } From 9166f3e83dfb33cc67e6288ba00b6e2262c3113f Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Thu, 8 Jan 2026 09:34:44 -0300 Subject: [PATCH 199/222] Remove redundant static_casts in miscellaneous files (#25772) --- src/openrct2-ui/input/MouseInput.cpp | 2 +- src/openrct2-ui/windows/Cheats.cpp | 12 ++++-------- src/openrct2-ui/windows/Finances.cpp | 2 +- src/openrct2-ui/windows/Options.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 3 +-- src/openrct2-ui/windows/StaffList.cpp | 2 +- src/openrct2/EditorObjectSelectionSession.cpp | 6 +++--- src/openrct2/actions/SurfaceSetStyleAction.cpp | 3 +-- src/openrct2/entity/Guest.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 3 +-- src/openrct2/network/Socket.cpp | 4 +--- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct12/RCT12.h | 4 ++-- src/openrct2/ride/Ride.cpp | 10 ++++------ src/openrct2/ride/TrackDesign.cpp | 4 ++-- src/openrct2/ride/TrackDesignSave.cpp | 10 ++++------ 16 files changed, 29 insertions(+), 42 deletions(-) diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 42b214953715..bf8c830b7e0f 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -515,7 +515,7 @@ namespace OpenRCT2 static void InputWindowResizeContinue(WindowBase& w, const ScreenCoordsXY& screenCoords) { - if (screenCoords.y < static_cast(ContextGetHeight()) - 2) + if (screenCoords.y < (ContextGetHeight() - 2)) { auto differentialCoords = screenCoords - gInputDragLast; int32_t targetWidth = _originalWindowWidth + differentialCoords.x - w.width; diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index 30818497a109..3240732f1296 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -884,29 +884,25 @@ static StringId window_cheats_page_titles[] = { case WIDX_MONTH_UP: _monthSpinnerValue++; _monthSpinnerValue = std::clamp(_monthSpinnerValue, 1, static_cast(MONTH_COUNT)); - _daySpinnerValue = std::clamp( - _daySpinnerValue, 1, static_cast(Date::GetDaysInMonth(_monthSpinnerValue - 1))); + _daySpinnerValue = std::clamp(_daySpinnerValue, 1, Date::GetDaysInMonth(_monthSpinnerValue - 1)); invalidateWidget(WIDX_MONTH_BOX); invalidateWidget(WIDX_DAY_BOX); break; case WIDX_MONTH_DOWN: _monthSpinnerValue--; _monthSpinnerValue = std::clamp(_monthSpinnerValue, 1, static_cast(MONTH_COUNT)); - _daySpinnerValue = std::clamp( - _daySpinnerValue, 1, static_cast(Date::GetDaysInMonth(_monthSpinnerValue - 1))); + _daySpinnerValue = std::clamp(_daySpinnerValue, 1, Date::GetDaysInMonth(_monthSpinnerValue - 1)); invalidateWidget(WIDX_MONTH_BOX); invalidateWidget(WIDX_DAY_BOX); break; case WIDX_DAY_UP: _daySpinnerValue++; - _daySpinnerValue = std::clamp( - _daySpinnerValue, 1, static_cast(Date::GetDaysInMonth(_monthSpinnerValue - 1))); + _daySpinnerValue = std::clamp(_daySpinnerValue, 1, Date::GetDaysInMonth(_monthSpinnerValue - 1)); invalidateWidget(WIDX_DAY_BOX); break; case WIDX_DAY_DOWN: _daySpinnerValue--; - _daySpinnerValue = std::clamp( - _daySpinnerValue, 1, static_cast(Date::GetDaysInMonth(_monthSpinnerValue - 1))); + _daySpinnerValue = std::clamp(_daySpinnerValue, 1, Date::GetDaysInMonth(_monthSpinnerValue - 1)); invalidateWidget(WIDX_DAY_BOX); break; case WIDX_DATE_SET: diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 3565a710c2a4..e0ed2ca1ac49 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -565,7 +565,7 @@ namespace OpenRCT2::Ui::Windows auto newLoan = gameState.park.bankLoan - 1000.00_GBP; if (gameState.park.bankLoan > 0) { - newLoan = std::max(static_cast(0LL), newLoan); + newLoan = std::max(0.00_GBP, newLoan); } auto gameAction = GameActions::ParkSetLoanAction(newLoan); GameActions::Execute(&gameAction, gameState); diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 50553bdcfb94..8ff2845c75da 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -2229,7 +2229,7 @@ namespace OpenRCT2::Ui::Windows void AdvancedDraw(Drawing::RenderTarget& rt) { auto ft = Formatter(); - ft.Add(static_cast(Config::Get().general.autosaveAmount)); + ft.Add(Config::Get().general.autosaveAmount); DrawTextBasic( rt, windowPos + ScreenCoordsXY{ widgets[WIDX_AUTOSAVE_AMOUNT].left + 1, widgets[WIDX_AUTOSAVE_AMOUNT].top + 1 }, STR_WINDOW_COLOUR_2_COMMA32, ft, { colours[1] }); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 2c2908c4481c..f51c0b387f13 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4173,8 +4173,7 @@ namespace OpenRCT2::Ui::Windows auto z = info.Element->GetBaseZ(); auto direction = info.Element->GetDirection(); auto gameAction = GameActions::RideSetColourSchemeAction( - CoordsXYZD{ info.Loc, z, static_cast(direction) }, info.Element->AsTrack()->GetTrackType(), - newColourScheme); + CoordsXYZD{ info.Loc, z, direction }, info.Element->AsTrack()->GetTrackType(), newColourScheme); GameActions::Execute(&gameAction, getGameState()); } diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index d6c03cc88bf3..889465562ec9 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -331,7 +331,7 @@ namespace OpenRCT2::Ui::Windows auto i = static_cast(screenCoords.y / kScrollableRowHeight); if (i != _highlightedIndex) { - _highlightedIndex = static_cast(i); + _highlightedIndex = i; invalidate(); } } diff --git a/src/openrct2/EditorObjectSelectionSession.cpp b/src/openrct2/EditorObjectSelectionSession.cpp index d9be6bc77242..6e3977797e30 100644 --- a/src/openrct2/EditorObjectSelectionSession.cpp +++ b/src/openrct2/EditorObjectSelectionSession.cpp @@ -143,12 +143,12 @@ void SetupInUseSelectionFlags() { for (auto i = 0u; i < getObjectEntryGroupCount(objectType); i++) { - Editor::ClearSelectedObject(static_cast(objectType), i, ObjectSelectionFlags::AllFlags); + Editor::ClearSelectedObject(objectType, i, ObjectSelectionFlags::AllFlags); - auto loadedObj = objectMgr.GetLoadedObject(static_cast(objectType), i); + auto loadedObj = objectMgr.GetLoadedObject(objectType, i); if (loadedObj != nullptr) { - Editor::SetSelectedObject(static_cast(objectType), i, ObjectSelectionFlags::Selected); + Editor::SetSelectedObject(objectType, i, ObjectSelectionFlags::Selected); } } } diff --git a/src/openrct2/actions/SurfaceSetStyleAction.cpp b/src/openrct2/actions/SurfaceSetStyleAction.cpp index 880757cebb63..7f9fed9c5fe8 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.cpp +++ b/src/openrct2/actions/SurfaceSetStyleAction.cpp @@ -55,8 +55,7 @@ namespace OpenRCT2::GameActions auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); if (_surfaceStyle != kObjectEntryIndexNull) { - const auto surfaceObj = static_cast( - objManager.GetLoadedObject(_surfaceStyle)); + const auto surfaceObj = objManager.GetLoadedObject(_surfaceStyle); if (surfaceObj == nullptr) { diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 21cc061fdd84..c5a52e489908 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -2348,7 +2348,7 @@ void Guest::SpendMoney(money64& peep_expend_type, money64 amount, ExpenditureTyp { assert(!(getGameState().park.flags & PARK_FLAGS_NO_MONEY)); - CashInPocket = std::max(0.00_GBP, static_cast(CashInPocket) - amount); + CashInPocket = std::max(0.00_GBP, CashInPocket - amount); CashSpent += amount; peep_expend_type += amount; diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 5f2412c05139..cfc5b076b1be 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1723,8 +1723,7 @@ namespace OpenRCT2 Viewport* viewport = window->viewport; auto viewLoc = screenCoords; viewLoc -= viewport->pos; - if (viewLoc.x >= 0 && viewLoc.x < static_cast(viewport->width) && viewLoc.y >= 0 - && viewLoc.y < static_cast(viewport->height)) + if ((viewLoc.x >= 0) && (viewLoc.x < viewport->width) && (viewLoc.y >= 0) && (viewLoc.y < viewport->height)) { viewLoc.x = viewport->zoom.ApplyTo(viewLoc.x); viewLoc.y = viewport->zoom.ApplyTo(viewLoc.y); diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp index 09d5212f2626..e9e2cd4185e0 100644 --- a/src/openrct2/network/Socket.cpp +++ b/src/openrct2/network/Socket.cpp @@ -777,9 +777,7 @@ namespace OpenRCT2::Network { const char* bufferStart = static_cast(buffer) + totalSent; size_t remainingSize = size - totalSent; - int32_t sentBytes = sendto( - _socket, bufferStart, static_cast(remainingSize), FLAG_NO_PIPE, static_cast(ss), - ss_len); + int32_t sentBytes = sendto(_socket, bufferStart, static_cast(remainingSize), FLAG_NO_PIPE, ss, ss_len); if (sentBytes == SOCKET_ERROR) { return totalSent; diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 16681818e12f..094d85ae0854 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -586,7 +586,7 @@ namespace OpenRCT2::RCT1 RCT12::EntryList* entries = GetEntryList(objectType); // Check if there are spare entries available - size_t maxEntries = static_cast(getObjectEntryGroupCount(objectType)); + size_t maxEntries = getObjectEntryGroupCount(objectType); if (entries != nullptr && entries->GetCount() < maxEntries) { entries->GetOrAddEntry(objectName); diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index 1fa0cb6a29ec..05fc284e6665 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -639,12 +639,12 @@ struct RCT12TileElement : public RCT12TileElementBase template const TType* as() const { - return static_cast(GetType()) == TClass ? reinterpret_cast(this) : nullptr; + return GetType() == TClass ? reinterpret_cast(this) : nullptr; } template TType* as() { - return static_cast(GetType()) == TClass ? reinterpret_cast(this) : nullptr; + return GetType() == TClass ? reinterpret_cast(this) : nullptr; } const RCT12SurfaceElement* AsSurface() const diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 2ef6a1737240..7084c9781eb8 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -5631,7 +5631,7 @@ void DetermineRideEntranceAndExitLocations() } else { - station.Entrance.direction = static_cast(entranceElement->GetDirection()); + station.Entrance.direction = entranceElement->GetDirection(); } } @@ -5646,7 +5646,7 @@ void DetermineRideEntranceAndExitLocations() } else { - station.Exit.direction = static_cast(entranceElement->GetDirection()); + station.Exit.direction = entranceElement->GetDirection(); } } @@ -5697,8 +5697,7 @@ void DetermineRideEntranceAndExitLocations() } // Found our entrance - station.Entrance = { x, y, entranceElement->BaseHeight, - static_cast(entranceElement->GetDirection()) }; + station.Entrance = { x, y, entranceElement->BaseHeight, entranceElement->GetDirection() }; alreadyFoundEntrance = true; LOG_VERBOSE( @@ -5716,8 +5715,7 @@ void DetermineRideEntranceAndExitLocations() } // Found our exit - station.Exit = { x, y, entranceElement->BaseHeight, - static_cast(entranceElement->GetDirection()) }; + station.Exit = { x, y, entranceElement->BaseHeight, entranceElement->GetDirection() }; alreadyFoundExit = true; LOG_VERBOSE( diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index acc7999e69e8..7954411469cd 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1642,8 +1642,8 @@ static GameActions::Result TrackDesignPlaceRide( } auto trackPlaceAction = GameActions::TrackPlaceAction( - ride.id, trackType, ride.type, { newCoords, tempZ, static_cast(rotation) }, - track.brakeBoosterSpeed, track.colourScheme, track.seatRotation, liftHillAndAlternativeState, true); + ride.id, trackType, ride.type, { newCoords, tempZ, rotation }, track.brakeBoosterSpeed, track.colourScheme, + track.seatRotation, liftHillAndAlternativeState, true); trackPlaceAction.SetFlags(flags); auto res = flags.has(CommandFlag::apply) ? GameActions::ExecuteNested(&trackPlaceAction, gameState) diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index 1d946ecbd712..478643f98559 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -285,8 +285,7 @@ static TrackDesignAddStatus TrackDesignSaveAddLargeScenery(const CoordsXY& loc, auto direction = tileElement->GetDirection(); auto sequence = tileElement->GetSequenceIndex(); - auto sceneryOrigin = MapLargeSceneryGetOrigin( - { loc.x, loc.y, z << 3, static_cast(direction) }, sequence, nullptr); + auto sceneryOrigin = MapLargeSceneryGetOrigin({ loc.x, loc.y, z << 3, direction }, sequence, nullptr); if (!sceneryOrigin.has_value()) { return TrackDesignAddStatus::Success(); @@ -300,7 +299,7 @@ static TrackDesignAddStatus TrackDesignSaveAddLargeScenery(const CoordsXY& loc, CoordsXYZ tileLoc = { sceneryOrigin->x + rotatedOffsetPos.x, sceneryOrigin->y + rotatedOffsetPos.y, sceneryOrigin->z + tile.offset.z }; - auto largeElement = MapGetLargeScenerySegment({ tileLoc, static_cast(direction) }, tile.index); + auto largeElement = MapGetLargeScenerySegment({ tileLoc, direction }, tile.index); if (largeElement != nullptr) { if (tile.index == 0) @@ -501,8 +500,7 @@ static void TrackDesignSaveRemoveLargeScenery(const CoordsXY& loc, LargeSceneryE auto direction = tileElement->GetDirection(); auto sequence = tileElement->GetSequenceIndex(); - auto sceneryOrigin = MapLargeSceneryGetOrigin( - { loc.x, loc.y, z << 3, static_cast(direction) }, sequence, nullptr); + auto sceneryOrigin = MapLargeSceneryGetOrigin({ loc.x, loc.y, z << 3, direction }, sequence, nullptr); if (!sceneryOrigin) { return; @@ -516,7 +514,7 @@ static void TrackDesignSaveRemoveLargeScenery(const CoordsXY& loc, LargeSceneryE CoordsXYZ tileLoc = { sceneryOrigin->x + rotatedOffsetPos.x, sceneryOrigin->y + rotatedOffsetPos.y, sceneryOrigin->z + tile.offset.z }; - auto largeElement = MapGetLargeScenerySegment({ tileLoc, static_cast(direction) }, tile.index); + auto largeElement = MapGetLargeScenerySegment({ tileLoc, direction }, tile.index); if (largeElement != nullptr) { if (tile.index == 0) From 429299f672a7c79882d9109691e39a5763389b6a Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Thu, 8 Jan 2026 15:54:58 +0000 Subject: [PATCH 200/222] Include string_view in ObjectManager.h (#25774) --- src/openrct2/object/ObjectManager.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openrct2/object/ObjectManager.h b/src/openrct2/object/ObjectManager.h index cbe939700df4..557c81632f30 100644 --- a/src/openrct2/object/ObjectManager.h +++ b/src/openrct2/object/ObjectManager.h @@ -15,6 +15,7 @@ #include "ObjectTypes.h" #include +#include #include namespace OpenRCT2 From 45873f70e8a41634c57d3c6bf0ef0b23a7ce2fb4 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:21:41 -0300 Subject: [PATCH 201/222] Create RideInvalidateFlag FlagHolder (#25722) --- src/openrct2-ui/windows/Ride.cpp | 32 +++++++++---------- src/openrct2-ui/windows/RideList.cpp | 4 +-- src/openrct2/actions/CheatSetAction.cpp | 2 +- src/openrct2/actions/RideDemolishAction.cpp | 2 +- src/openrct2/actions/RideSetSettingAction.cpp | 2 +- src/openrct2/actions/RideSetStatusAction.cpp | 6 ++-- src/openrct2/actions/TrackPlaceAction.cpp | 2 +- src/openrct2/actions/TrackRemoveAction.cpp | 2 +- src/openrct2/entity/Guest.cpp | 12 +++---- src/openrct2/entity/Peep.cpp | 6 ++-- src/openrct2/entity/Staff.cpp | 12 +++---- src/openrct2/management/Finance.cpp | 2 +- src/openrct2/rct2/RCT2.h | 26 ++++++++------- src/openrct2/ride/Ride.cpp | 27 ++++++++-------- src/openrct2/ride/Ride.h | 31 +++++++++--------- src/openrct2/ride/RideConstruction.cpp | 4 +-- src/openrct2/ride/RideRatings.cpp | 6 ++-- src/openrct2/ride/Station.cpp | 6 ++-- src/openrct2/ride/Vehicle.cpp | 24 +++++++------- 19 files changed, 106 insertions(+), 102 deletions(-) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index f51c0b387f13..ddfe3c6bbabd 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1969,7 +1969,7 @@ namespace OpenRCT2::Ui::Windows auto* ride = GetRide(rideId); if (ride != nullptr) { - if (!(ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_MAIN)) + if (!ride->windowInvalidateFlags.has(RideInvalidateFlag::main)) { if (_viewIndex > 0) { @@ -2252,7 +2252,7 @@ namespace OpenRCT2::Ui::Windows auto ride = GetRide(rideId); if (ride != nullptr) { - if (!(ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_MAIN)) + if (!ride->windowInvalidateFlags.has(RideInvalidateFlag::main)) { if (_viewIndex == 0) return; @@ -2270,7 +2270,7 @@ namespace OpenRCT2::Ui::Windows } } } - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_MAIN; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::main); } invalidateWidget(WIDX_STATUS); } @@ -3386,9 +3386,9 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_TAB_3); auto ride = GetRide(rideId); - if (ride != nullptr && ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_OPERATING) + if (ride != nullptr && ride->windowInvalidateFlags.has(RideInvalidateFlag::operatingSettings)) { - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_OPERATING; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::operatingSettings); invalidate(); } } @@ -3965,9 +3965,9 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_TAB_4); auto ride = GetRide(rideId); - if (ride != nullptr && ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_MAINTENANCE) + if (ride != nullptr && ride->windowInvalidateFlags.has(RideInvalidateFlag::maintenance)) { - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::maintenance); invalidate(); } } @@ -4956,7 +4956,7 @@ namespace OpenRCT2::Ui::Windows { int32_t activateMusic = (ride->lifecycleFlags & RIDE_LIFECYCLE_MUSIC) ? 0 : 1; SetOperatingSetting(rideId, GameActions::RideSetSetting::Music, activateMusic); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MUSIC; + ride->windowInvalidateFlags.set(RideInvalidateFlag::music); } } @@ -5104,9 +5104,9 @@ namespace OpenRCT2::Ui::Windows onPrepareDraw(); invalidateWidget(WIDX_TAB_6); - if (auto ride = GetRide(rideId); ride != nullptr && ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_MUSIC) + if (auto ride = GetRide(rideId); ride != nullptr && ride->windowInvalidateFlags.has(RideInvalidateFlag::music)) { - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_MUSIC; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::music); invalidate(); onResize(); onPrepareDraw(); @@ -5490,10 +5490,10 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_TAB_7); Ride* const ride = GetRide(rideId); - if (ride && ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_RATINGS) + if (ride && ride->windowInvalidateFlags.has(RideInvalidateFlag::ratings)) { invalidate(); - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_RATINGS; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::ratings); } } @@ -6464,9 +6464,9 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_TAB_9); auto ride = GetRide(rideId); - if (ride != nullptr && ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_INCOME) + if (ride != nullptr && ride->windowInvalidateFlags.has(RideInvalidateFlag::income)) { - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_INCOME; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::income); invalidate(); } } @@ -6763,9 +6763,9 @@ namespace OpenRCT2::Ui::Windows invalidateWidget(WIDX_TAB_10); auto ride = GetRide(rideId); - if (ride != nullptr && ride->windowInvalidateFlags & RIDE_INVALIDATE_RIDE_CUSTOMER) + if (ride != nullptr && ride->windowInvalidateFlags.has(RideInvalidateFlag::customers)) { - ride->windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_CUSTOMER; + ride->windowInvalidateFlags.unset(RideInvalidateFlag::customers); invalidate(); } } diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index 12be822d2cf7..8126eb45e1dc 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -977,9 +977,9 @@ namespace OpenRCT2::Ui::Windows // Get the ride name once and use it for both filtering and storage auto rideName = rideRef.getName(); - if (rideRef.windowInvalidateFlags & RIDE_INVALIDATE_RIDE_LIST) + if (rideRef.windowInvalidateFlags.has(RideInvalidateFlag::list)) { - rideRef.windowInvalidateFlags &= ~RIDE_INVALIDATE_RIDE_LIST; + rideRef.windowInvalidateFlags.unset(RideInvalidateFlag::list); } const auto filterApplies = IsFiltered(rideName); diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index 68746c713b93..af9396bf7700 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -537,7 +537,7 @@ namespace OpenRCT2::GameActions } RideFixBreakdown(ride, 0); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride.windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); } } } diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index 58dcdef7fce5..2ec0996c532b 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -280,7 +280,7 @@ namespace OpenRCT2::GameActions ride.lifecycleFlags &= ~RIDE_LIFECYCLE_EVER_BEEN_OPENED; ride.lastCrashType = RIDE_CRASH_TYPE_NONE; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE | RIDE_INVALIDATE_RIDE_CUSTOMER; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance, RideInvalidateFlag::customers); if (!ride.overallView.IsNull()) { diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index 604dc99c2a34..3115b618818d 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -205,7 +205,7 @@ namespace OpenRCT2::GameActions { ride->lifecycleFlags |= RIDE_LIFECYCLE_MUSIC; } - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MUSIC; + ride->windowInvalidateFlags.set(RideInvalidateFlag::music); break; case RideSetSetting::MusicType: if (_value != ride->music) diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index a25f33f4a932..a9de5c80e39d 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -161,7 +161,7 @@ namespace OpenRCT2::GameActions ride->status = RideStatus::closed; ride->lifecycleFlags &= ~RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING; ride->raceWinner = EntityId::GetNull(); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); windowMgr->InvalidateByNumber(WindowClass::ride, _rideIndex.ToUnderlying()); break; case RideStatus::simulating: @@ -184,7 +184,7 @@ namespace OpenRCT2::GameActions ride->currentIssues = 0; ride->lastIssueTime = 0; ride->getMeasurement(); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); windowMgr->InvalidateByNumber(WindowClass::ride, _rideIndex.ToUnderlying()); break; } @@ -237,7 +237,7 @@ namespace OpenRCT2::GameActions ride->currentIssues = 0; ride->lastIssueTime = 0; ride->getMeasurement(); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); windowMgr->InvalidateByNumber(WindowClass::ride, _rideIndex.ToUnderlying()); break; } diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 73fb179346ea..3d599f640840 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -687,7 +687,7 @@ namespace OpenRCT2::GameActions bool canSwitch = rtd.SupportsRideMode(newMode) || getGameState().cheats.showAllOperatingModes; if (canSwitch) { - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_OPERATING; + ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); auto rideSetSetting = GameActions::RideSetSettingAction( ride->id, GameActions::RideSetSetting::Mode, static_cast(newMode)); ExecuteNested(&rideSetSetting, gameState); diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index 424c0ca5b81f..6b492ffada14 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -464,7 +464,7 @@ namespace OpenRCT2::GameActions || getGameState().cheats.showAllOperatingModes; if (canSwitch) { - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_OPERATING; + ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); auto rideSetSetting = GameActions::RideSetSettingAction( ride->id, GameActions::RideSetSetting::Mode, static_cast(newMode)); ExecuteNested(&rideSetSetting, gameState); diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index c5a52e489908..1f99206b2406 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1750,10 +1750,10 @@ static bool GuestDecideAndBuyItem(Guest& guest, Ride& ride, const ShopItem shopI guest.SpendMoney(*expend_type, price, expenditure); } ride.totalProfit = AddClamp(ride.totalProfit, price - shopItemDescriptor.Cost); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + ride.windowInvalidateFlags.set(RideInvalidateFlag::income); ride.curNumCustomers++; ride.totalCustomers = AddClamp(ride.totalCustomers, 1u); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + ride.windowInvalidateFlags.set(RideInvalidateFlag::customers); return true; } @@ -1842,7 +1842,7 @@ void Guest::OnExitRide(Ride& ride) } ride.totalCustomers = AddClamp(ride.totalCustomers, 1u); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + ride.windowInvalidateFlags.set(RideInvalidateFlag::customers); } /** @@ -3374,7 +3374,7 @@ static bool PeepShouldUseCashMachine(Guest& guest, RideId rideIndex) ride->updateSatisfaction(guest.Happiness >> 6); ride->curNumCustomers++; ride->totalCustomers = AddClamp(ride->totalCustomers, 1u); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + ride->windowInvalidateFlags.set(RideInvalidateFlag::customers); } return true; } @@ -3911,7 +3911,7 @@ void Guest::UpdateRideFreeVehicleEnterRide(Ride& ride) else { ride.totalProfit = AddClamp(ride.totalProfit, ridePrice); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + ride.windowInvalidateFlags.set(RideInvalidateFlag::income); SpendMoney(PaidOnRides, ridePrice, ExpenditureType::parkRideTickets); } } @@ -5218,7 +5218,7 @@ void Guest::UpdateRideShopLeave() if (ride != nullptr) { ride->totalCustomers = AddClamp(ride->totalCustomers, 1u); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + ride->windowInvalidateFlags.set(RideInvalidateFlag::customers); ride->updateSatisfaction(Happiness / 64); } } diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index b2161a6a9f3e..ecf342ec6776 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -591,7 +591,7 @@ void PeepDecrementNumRiders(Peep* peep) if (ride != nullptr) { ride->numRiders = std::max(0, ride->numRiders - 1); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); } } } @@ -616,7 +616,7 @@ void PeepWindowStateUpdate(Peep* peep) if (ride != nullptr) { ride->numRiders++; - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); } } @@ -2292,7 +2292,7 @@ static bool PeepInteractWithShop(Peep* peep, const CoordsXYE& coords) if (cost != 0 && !(getGameState().park.flags & PARK_FLAGS_NO_MONEY)) { ride->totalProfit = AddClamp(ride->totalProfit, cost); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + ride->windowInvalidateFlags.set(RideInvalidateFlag::income); guest->SpendMoney(cost, ExpenditureType::shopSales); } diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index 9dea6b21468f..63fa1dbf4b19 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -1375,7 +1375,7 @@ void Staff::UpdateAnswering() if (MechanicTimeSinceCall > 2500) { ride->mechanicStatus = MechanicStatus::calling; - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride->windowInvalidateFlags.set(RideInvalidateFlag::maintenance); SetState(PeepState::falling); return; } @@ -2075,7 +2075,7 @@ void Staff::UpdateFixing(int32_t steps) bool Staff::UpdateFixingEnterStation(Ride& ride) const { ride.mechanicStatus = MechanicStatus::fixing; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); return true; } @@ -2452,7 +2452,7 @@ bool Staff::UpdateFixingFixStationBrakes(bool firstRun, Ride& ride) if (AnimationFrameNum == 0x28) { ride.mechanicStatus = MechanicStatus::hasFixedStationBrakes; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); } if (AnimationFrameNum == 0x13 || AnimationFrameNum == 0x19 || AnimationFrameNum == 0x1F || AnimationFrameNum == 0x25 @@ -2516,13 +2516,13 @@ bool Staff::UpdateFixingFinishFixOrInspect(bool firstRun, int32_t steps, Ride& r UpdateRideInspected(CurrentRide); StaffRidesInspected = AddClamp(StaffRidesInspected, 1u); - WindowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME | RIDE_INVALIDATE_RIDE_LIST; + WindowInvalidateFlags |= PEEP_INVALIDATE_STAFF_STATS; ride.mechanicStatus = MechanicStatus::undefined; return true; } StaffRidesFixed = AddClamp(StaffRidesFixed, 1u); - WindowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME | RIDE_INVALIDATE_RIDE_LIST; + WindowInvalidateFlags |= PEEP_INVALIDATE_STAFF_STATS; Orientation = PeepDirection << 3; Action = PeepActionType::staffAnswerCall2; @@ -2601,7 +2601,7 @@ void Staff::UpdateRideInspected(RideId rideIndex) ride->lifecycleFlags &= ~RIDE_LIFECYCLE_DUE_INSPECTION; ride->reliability += ((100 - ride->reliabilityPercentage) / 4) * (ScenarioRand() & 0xFF); ride->lastInspection = 0; - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE | RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride->windowInvalidateFlags.set(RideInvalidateFlag::maintenance, RideInvalidateFlag::main, RideInvalidateFlag::list); } } diff --git a/src/openrct2/management/Finance.cpp b/src/openrct2/management/Finance.cpp index 5af335e36213..30acf618ff34 100644 --- a/src/openrct2/management/Finance.cpp +++ b/src/openrct2/management/Finance.cpp @@ -185,7 +185,7 @@ void FinancePayRideUpkeep() if (upkeep != kMoney64Undefined) { ride.totalProfit = AddClamp(ride.totalProfit, -upkeep); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + ride.windowInvalidateFlags.set(RideInvalidateFlag::income); FinancePayment(upkeep, ExpenditureType::rideRunningCosts); } } diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index 342706a82243..1be847398afa 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -22,8 +22,13 @@ struct RideObjectEntry; enum class EditorStep : uint8_t; enum class MechanicStatus : uint8_t; +enum class RideInvalidateFlag : uint8_t; enum class VehicleColourSettings : uint8_t; +template +struct FlagHolder; +using RideInvalidateFlags = FlagHolder; + namespace OpenRCT2::Scenario { enum class Category : uint8_t; @@ -212,17 +217,16 @@ namespace OpenRCT2::RCT2 uint8_t satisfaction; // 0x14A uint8_t satisfactionTimeOut; // 0x14B uint8_t satisfactionNext; // 0x14C - // Various flags stating whether a window needs to be refreshed - uint8_t windowInvalidateFlags; // 0x14D - uint8_t pad14E[0x02]; // 0x14E - uint32_t totalCustomers; // 0x150 - money32 totalProfit; // 0x154 - uint8_t popularity; // 0x158 - uint8_t popularityTimeOut; // 0x159 Updated every purchase and ?possibly by time? - uint8_t popularityNext; // 0x15A When timeout reached this will be the next popularity - uint8_t numRiders; // 0x15B - uint8_t musicTuneId; // 0x15C - uint8_t slideInUse; // 0x15D + RideInvalidateFlags windowInvalidateFlags; // 0x14D + uint8_t pad14E[0x02]; // 0x14E + uint32_t totalCustomers; // 0x150 + money32 totalProfit; // 0x154 + uint8_t popularity; // 0x158 + uint8_t popularityTimeOut; // 0x159 Updated every purchase and ?possibly by time? + uint8_t popularityNext; // 0x15A When timeout reached this will be the next popularity + uint8_t numRiders; // 0x15B + uint8_t musicTuneId; // 0x15C + uint8_t slideInUse; // 0x15D union { uint16_t slidePeep; // 0x15E diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 7084c9781eb8..882d31b9e547 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -409,7 +409,7 @@ void RideUpdateFavouritedStat() if (ride != nullptr) { ride->guestsFavourite = AddClamp(ride->guestsFavourite, 1u); - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + ride->windowInvalidateFlags.set(RideInvalidateFlag::customers); } } } @@ -1133,10 +1133,10 @@ void Ride::update() numCustomers[0] = curNumCustomers; curNumCustomers = 0; - windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + windowInvalidateFlags.set(RideInvalidateFlag::customers); incomePerHour = calculateIncomePerHour(); - windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + windowInvalidateFlags.set(RideInvalidateFlag::income); if (upkeepCost != kMoney64Undefined) profit = incomePerHour - (upkeepCost * 16); @@ -1209,7 +1209,7 @@ void Ride::updateSatisfaction(const uint8_t happiness) satisfaction = satisfactionNext >> 2; satisfactionNext = 0; satisfactionTimeout = 0; - windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + windowInvalidateFlags.set(RideInvalidateFlag::customers); } } @@ -1231,7 +1231,7 @@ void Ride::updatePopularity(const uint8_t pop_amount) popularity = popularityNext; popularityNext = 0; popularityTimeout = 0; - windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_CUSTOMER; + windowInvalidateFlags.set(RideInvalidateFlag::customers); } /** rct2: 0x0098DDB8, 0x0098DDBA */ @@ -1333,7 +1333,7 @@ static void RideInspectionUpdate(Ride& ride) return; ride.lastInspection = AddClamp(ride.lastInspection, 1); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); int32_t inspectionIntervalMinutes = RideInspectionInterval[EnumValue(ride.inspectionInterval)]; // An inspection interval of 0 minutes means the ride is set to never be inspected. @@ -1419,7 +1419,7 @@ static void RideBreakdownUpdate(Ride& ride) } ride.downtimeHistory[0] = 0; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); } if (ride.lifecycleFlags & (RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN | RIDE_LIFECYCLE_CRASHED)) @@ -1436,7 +1436,7 @@ static void RideBreakdownUpdate(Ride& ride) // Calculate breakdown probability? int32_t unreliabilityAccumulator = ride.unreliabilityFactor + getAgePenalty(ride); ride.reliability = static_cast(std::max(0, (ride.reliability - unreliabilityAccumulator))); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); // Random probability of a breakdown. Roughly this is 1 in // @@ -1679,8 +1679,7 @@ static void RideMechanicStatusUpdate(Ride& ride, MechanicStatus mechanicStatus) || breakdownReason == BREAKDOWN_CONTROL_FAILURE) { ride.lifecycleFlags |= RIDE_LIFECYCLE_BROKEN_DOWN; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE | RIDE_INVALIDATE_RIDE_LIST - | RIDE_INVALIDATE_RIDE_MAIN; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance, RideInvalidateFlag::list, RideInvalidateFlag::main); ride.breakdownReason = breakdownReason; RideBreakdownAddNewsItem(ride); } @@ -1712,7 +1711,7 @@ static void RideMechanicStatusUpdate(Ride& ride, MechanicStatus mechanicStatus) || mechanic->CurrentRide != ride.id) { ride.mechanicStatus = MechanicStatus::calling; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); RideMechanicStatusUpdate(ride, MechanicStatus::calling); } // if the ride is broken down, but a mechanic was heading for an inspection, update orders to fix @@ -1732,7 +1731,7 @@ static void RideMechanicStatusUpdate(Ride& ride, MechanicStatus mechanicStatus) && mechanic->State != PeepState::inspecting && mechanic->State != PeepState::answering)) { ride.mechanicStatus = MechanicStatus::calling; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); RideMechanicStatusUpdate(ride, MechanicStatus::calling); } break; @@ -1751,7 +1750,7 @@ static void RideCallMechanic(Ride& ride, Peep* mechanic, int32_t forInspection) mechanic->SetState(forInspection ? PeepState::headingToInspection : PeepState::answering); mechanic->SubState = 0; ride.mechanicStatus = MechanicStatus::heading; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::maintenance); ride.mechanic = mechanic->Id; mechanic->CurrentRide = ride.id; mechanic->CurrentRideStation = ride.inspectionStation; @@ -4706,7 +4705,7 @@ void RideFixBreakdown(Ride& ride, int32_t reliabilityIncreaseFactor) ride.lifecycleFlags &= ~RIDE_LIFECYCLE_BREAKDOWN_PENDING; ride.lifecycleFlags &= ~RIDE_LIFECYCLE_BROKEN_DOWN; ride.lifecycleFlags &= ~RIDE_LIFECYCLE_DUE_INSPECTION; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST | RIDE_INVALIDATE_RIDE_MAINTENANCE; + ride.windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list, RideInvalidateFlag::maintenance); if (ride.lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK) { diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 0f3fbf633b69..c404e4c5a643 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -71,6 +71,20 @@ enum class RideInspection : uint8_t never, }; +// Flags used by ride->windowInvalidateFlags +enum class RideInvalidateFlag : uint8_t +{ + customers, + income, + main, + list, + operatingSettings, + maintenance, + music, + ratings, +}; +using RideInvalidateFlags = FlagHolder; + enum class RideTestingFlag : uint8_t { sheltered, @@ -249,8 +263,8 @@ struct Ride uint8_t satisfaction{}; uint8_t satisfactionTimeout{}; uint8_t satisfactionNext{}; - // Various flags stating whether a window needs to be refreshed - uint8_t windowInvalidateFlags{}; + // Various flags stating whether a ride window needs to be refreshed + RideInvalidateFlags windowInvalidateFlags{}; uint32_t totalCustomers{}; money64 totalProfit{}; uint8_t popularity{}; @@ -788,19 +802,6 @@ enum WAIT_FOR_LOAD_COUNT, }; -// Flags used by ride->windowInvalidateFlags -enum -{ - RIDE_INVALIDATE_RIDE_CUSTOMER = 1, - RIDE_INVALIDATE_RIDE_INCOME = 1 << 1, - RIDE_INVALIDATE_RIDE_MAIN = 1 << 2, - RIDE_INVALIDATE_RIDE_LIST = 1 << 3, - RIDE_INVALIDATE_RIDE_OPERATING = 1 << 4, - RIDE_INVALIDATE_RIDE_MAINTENANCE = 1 << 5, - RIDE_INVALIDATE_RIDE_MUSIC = 1 << 6, - RIDE_INVALIDATE_RIDE_RATINGS = 1 << 7, -}; - enum { RIDE_MEASUREMENT_FLAG_RUNNING = 1 << 0, diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 4e1938f0444b..ea94f803a43b 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -225,7 +225,7 @@ void RideClearForConstruction(Ride& ride) ride.measurement = {}; ride.lifecycleFlags &= ~(RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride.windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); // Open circuit rides will go directly into building mode (creating ghosts) where it would normally clear the stats, // however this causes desyncs since it's directly run from the window and other clients would not get it. @@ -345,7 +345,7 @@ void Ride::removePeeps() } numRiders = 0; slideInUse = 0; - windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN; + windowInvalidateFlags.set(RideInvalidateFlag::main); } void RideClearBlockedTiles(const Ride& ride) diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index a5a957599837..158b210de518 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -894,7 +894,7 @@ static void RideRatingsCalculate(RideRating::UpdateState& state, Ride& ride) break; case RatingsCalculationType::Stall: ride.upkeepCost = RideComputeUpkeep(state, ride); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + ride.windowInvalidateFlags.set(RideInvalidateFlag::income); // Exit ratings return; } @@ -1057,11 +1057,11 @@ static void RideRatingsCalculate(RideRating::UpdateState& state, Ride& ride) if (ride.ratings != ratings) { ride.ratings = ratings; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_RATINGS; + ride.windowInvalidateFlags.set(RideInvalidateFlag::ratings); } ride.upkeepCost = RideComputeUpkeep(state, ride); - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_INCOME; + ride.windowInvalidateFlags.set(RideInvalidateFlag::income); #ifdef ORIGINAL_RATINGS if (!ride.ratings.isNull()) diff --git a/src/openrct2/ride/Station.cpp b/src/openrct2/ride/Station.cpp index eec170949d3b..23f3f8861f1b 100644 --- a/src/openrct2/ride/Station.cpp +++ b/src/openrct2/ride/Station.cpp @@ -145,7 +145,7 @@ static void RideUpdateStationDodgems(Ride& ride, StationIndex stationIndex) // Begin the match ride.lifecycleFlags |= RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING; station.Depart |= kStationDepartFlag; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride.windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); } } @@ -221,7 +221,7 @@ static void RideUpdateStationRace(Ride& ride, StationIndex stationIndex) if (peep != nullptr) { ride.raceWinner = peep->Id; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride.windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); } } @@ -267,7 +267,7 @@ static void RideUpdateStationRace(Ride& ride, StationIndex stationIndex) station.Depart |= kStationDepartFlag; RideInvalidateStationStart(ride, stationIndex, true); } - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + ride.windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); } } diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 52808a5ddb3e..5f38c61f9f7a 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -340,8 +340,8 @@ bool Vehicle::CloseRestraints() RideBreakdownAddNewsItem(*curRide); - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST - | RIDE_INVALIDATE_RIDE_MAINTENANCE; + curRide->windowInvalidateFlags.set( + RideInvalidateFlag::main, RideInvalidateFlag::list, RideInvalidateFlag::maintenance); curRide->mechanicStatus = MechanicStatus::calling; @@ -456,8 +456,8 @@ bool Vehicle::OpenRestraints() RideBreakdownAddNewsItem(*curRide); - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST - | RIDE_INVALIDATE_RIDE_MAINTENANCE; + curRide->windowInvalidateFlags.set( + RideInvalidateFlag::main, RideInvalidateFlag::list, RideInvalidateFlag::maintenance); curRide->mechanicStatus = MechanicStatus::calling; @@ -2001,7 +2001,7 @@ static void test_finish(Ride& ride) { ride.lifecycleFlags &= ~RIDE_LIFECYCLE_TEST_IN_PROGRESS; ride.lifecycleFlags |= RIDE_LIFECYCLE_TESTED; - ride.windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_RATINGS; + ride.windowInvalidateFlags.set(RideInvalidateFlag::ratings); auto rideStations = ride.getStations(); for (int32_t i = ride.numStations - 1; i >= 1; i--) @@ -2193,8 +2193,8 @@ void Vehicle::UpdateDeparting() curRide->lifecycleFlags |= RIDE_LIFECYCLE_BROKEN_DOWN; RideBreakdownAddNewsItem(*curRide); - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST - | RIDE_INVALIDATE_RIDE_MAINTENANCE; + curRide->windowInvalidateFlags.set( + RideInvalidateFlag::main, RideInvalidateFlag::list, RideInvalidateFlag::maintenance); curRide->mechanicStatus = MechanicStatus::calling; curRide->inspectionStation = current_station; curRide->breakdownReason = curRide->breakdownReasonPending; @@ -2549,7 +2549,7 @@ void Vehicle::UpdateCollisionSetup() } curRide->lifecycleFlags |= RIDE_LIFECYCLE_CRASHED; - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + curRide->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); KillAllPassengersInTrain(); Vehicle* lastVehicle = this; @@ -3220,8 +3220,8 @@ void Vehicle::UpdateTravellingCableLift() curRide->lifecycleFlags |= RIDE_LIFECYCLE_BROKEN_DOWN; RideBreakdownAddNewsItem(*curRide); - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST - | RIDE_INVALIDATE_RIDE_MAINTENANCE; + curRide->windowInvalidateFlags.set( + RideInvalidateFlag::main, RideInvalidateFlag::list, RideInvalidateFlag::maintenance); curRide->mechanicStatus = MechanicStatus::calling; curRide->inspectionStation = current_station; @@ -4339,7 +4339,7 @@ void Vehicle::CrashOnLand() } } curRide->lifecycleFlags |= RIDE_LIFECYCLE_CRASHED; - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + curRide->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); if (IsHead()) { @@ -4407,7 +4407,7 @@ void Vehicle::CrashOnWater() } } curRide->lifecycleFlags |= RIDE_LIFECYCLE_CRASHED; - curRide->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; + curRide->windowInvalidateFlags.set(RideInvalidateFlag::main, RideInvalidateFlag::list); if (IsHead()) { From 72c21efc696075aa7a203b2ac0094b0c91e113b1 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Thu, 8 Jan 2026 22:04:07 +0100 Subject: [PATCH 202/222] Pass GameState ref down to subfunctions in game actions (#25777) --- src/openrct2/GameState.cpp | 9 ++++--- src/openrct2/actions/CheatSetAction.cpp | 26 +++++++++---------- src/openrct2/actions/CheatSetAction.h | 6 ++--- .../actions/FootpathAdditionPlaceAction.cpp | 2 +- .../actions/FootpathAdditionRemoveAction.cpp | 2 +- .../actions/FootpathLayoutPlaceAction.cpp | 8 +++--- .../actions/FootpathLayoutPlaceAction.h | 2 +- src/openrct2/actions/FootpathPlaceAction.cpp | 19 +++++++------- src/openrct2/actions/FootpathPlaceAction.h | 6 ++--- src/openrct2/actions/FootpathRemoveAction.cpp | 2 +- src/openrct2/actions/GameAction.cpp | 22 ++++++++-------- src/openrct2/actions/GameAction.h | 2 +- src/openrct2/actions/GuestSetNameAction.cpp | 4 +-- src/openrct2/actions/LandBuyRightsAction.cpp | 14 +++++----- src/openrct2/actions/LandBuyRightsAction.h | 4 +-- src/openrct2/actions/LandLowerAction.cpp | 2 +- src/openrct2/actions/LandRaiseAction.cpp | 2 +- src/openrct2/actions/LandSetHeightAction.cpp | 2 +- src/openrct2/actions/LandSetRightsAction.cpp | 13 +++++----- src/openrct2/actions/LandSetRightsAction.h | 4 +-- .../actions/LargeSceneryPlaceAction.cpp | 2 +- .../actions/LargeSceneryRemoveAction.cpp | 6 ++--- .../actions/LargeScenerySetColourAction.cpp | 8 +++--- .../actions/LargeScenerySetColourAction.h | 2 +- .../actions/ParkEntrancePlaceAction.cpp | 4 +-- .../actions/ParkEntranceRemoveAction.cpp | 4 +-- src/openrct2/actions/ParkMarketingAction.cpp | 2 +- .../actions/ParkSetEntranceFeeAction.cpp | 4 +-- src/openrct2/actions/ParkSetLoanAction.cpp | 4 +-- src/openrct2/actions/ParkSetNameAction.cpp | 2 +- .../actions/ParkSetParameterAction.cpp | 2 +- src/openrct2/actions/PeepPickupAction.cpp | 4 +-- src/openrct2/actions/PeepSpawnPlaceAction.cpp | 2 +- src/openrct2/actions/RideDemolishAction.cpp | 2 +- .../actions/RideEntranceExitPlaceAction.cpp | 8 +++--- .../actions/RideEntranceExitPlaceAction.h | 2 +- src/openrct2/actions/RideSetSettingAction.cpp | 21 +++++++-------- src/openrct2/actions/RideSetSettingAction.h | 6 ++--- src/openrct2/actions/RideSetVehicleAction.cpp | 9 +++---- src/openrct2/actions/RideSetVehicleAction.h | 2 +- .../actions/SmallSceneryPlaceAction.cpp | 2 +- .../actions/SmallSceneryRemoveAction.cpp | 5 ++-- .../actions/SmallScenerySetColourAction.cpp | 8 +++--- .../actions/SmallScenerySetColourAction.h | 2 +- src/openrct2/actions/StaffFireAction.cpp | 4 +-- src/openrct2/actions/StaffHireNewAction.cpp | 20 +++++++------- src/openrct2/actions/StaffHireNewAction.h | 4 +-- .../actions/StaffSetCostumeAction.cpp | 4 +-- src/openrct2/actions/StaffSetNameAction.cpp | 4 +-- src/openrct2/actions/StaffSetOrdersAction.cpp | 4 +-- .../actions/StaffSetPatrolAreaAction.cpp | 8 +++--- .../actions/StaffSetPatrolAreaAction.h | 2 +- .../actions/SurfaceSetStyleAction.cpp | 2 +- src/openrct2/actions/TrackPlaceAction.cpp | 2 +- src/openrct2/actions/TrackRemoveAction.cpp | 4 +-- src/openrct2/actions/WallRemoveAction.cpp | 2 +- src/openrct2/actions/WallSetColourAction.cpp | 2 +- src/openrct2/actions/WaterLowerAction.cpp | 4 +-- src/openrct2/actions/WaterRaiseAction.cpp | 4 +-- src/openrct2/actions/WaterSetHeightAction.cpp | 2 +- src/openrct2/ride/TrackDesign.cpp | 2 +- 61 files changed, 167 insertions(+), 171 deletions(-) diff --git a/src/openrct2/GameState.cpp b/src/openrct2/GameState.cpp index a22c0006ecda..2b968193916d 100644 --- a/src/openrct2/GameState.cpp +++ b/src/openrct2/GameState.cpp @@ -171,14 +171,15 @@ namespace OpenRCT2 } // Keep updating the money effect even when paused. - getGameState().entities.UpdateMoneyEffect(); + auto& gameState = getGameState(); + gameState.entities.UpdateMoneyEffect(); // Post-tick network update Network::PostTick(); // Post-tick game actions. - GameActions::ProcessQueue(); - getGameState().entities.UpdateEntitiesSpatialIndex(); + GameActions::ProcessQueue(gameState); + gameState.entities.UpdateEntitiesSpatialIndex(); } } @@ -349,7 +350,7 @@ namespace OpenRCT2 gLastAutoSaveUpdate = Platform::GetTicks(); } - GameActions::ProcessQueue(); + GameActions::ProcessQueue(gameState); Network::PostTick(); Network::Flush(); diff --git a/src/openrct2/actions/CheatSetAction.cpp b/src/openrct2/actions/CheatSetAction.cpp index af9396bf7700..ef294ef70e45 100644 --- a/src/openrct2/actions/CheatSetAction.cpp +++ b/src/openrct2/actions/CheatSetAction.cpp @@ -158,10 +158,10 @@ namespace OpenRCT2::GameActions SetScenarioNoMoney(gameState, _param1 != 0); break; case CheatType::addMoney: - AddMoney(_param1); + AddMoney(gameState, _param1); break; case CheatType::setMoney: - SetMoney(_param1); + SetMoney(gameState, _param1); break; case CheatType::clearLoan: ClearLoan(gameState); @@ -239,7 +239,7 @@ namespace OpenRCT2::GameActions windowMgr->InvalidateByClass(WindowClass::ride); break; case CheatType::ownAllLand: - OwnAllLand(); + OwnAllLand(gameState); break; case CheatType::disableRideValueAging: gameState.cheats.disableRideValueAging = _param1 != 0; @@ -598,18 +598,18 @@ namespace OpenRCT2::GameActions windowMgr->InvalidateByClass(WindowClass::cheats); } - void CheatSetAction::SetMoney(money64 amount) const + void CheatSetAction::SetMoney(GameState_t& gameState, money64 amount) const { - getGameState().park.cash = amount; + gameState.park.cash = amount; auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::finances); windowMgr->InvalidateByClass(WindowClass::bottomToolbar); } - void CheatSetAction::AddMoney(money64 amount) const + void CheatSetAction::AddMoney(GameState_t& gameState, money64 amount) const { - auto& park = getGameState().park; + auto& park = gameState.park; park.cash = AddClamp(park.cash, amount); auto* windowMgr = Ui::GetWindowManager(); @@ -620,7 +620,7 @@ namespace OpenRCT2::GameActions void CheatSetAction::ClearLoan(GameState_t& gameState) const { // First give money - AddMoney(getGameState().park.bankLoan); + AddMoney(gameState, gameState.park.bankLoan); // Then pay the loan auto gameAction = ParkSetLoanAction(0.00_GBP); @@ -726,8 +726,8 @@ namespace OpenRCT2::GameActions for (auto trainIndex : ride.vehicles) { - for (Vehicle* vehicle = getGameState().entities.TryGetEntity(trainIndex); vehicle != nullptr; - vehicle = getGameState().entities.TryGetEntity(vehicle->next_vehicle_on_train)) + for (Vehicle* vehicle = gameState.entities.TryGetEntity(trainIndex); vehicle != nullptr; + vehicle = gameState.entities.TryGetEntity(vehicle->next_vehicle_on_train)) { auto i = 0; for (auto& peepInTrainIndex : vehicle->peep) @@ -735,7 +735,7 @@ namespace OpenRCT2::GameActions if (i >= vehicle->num_peeps) break; - auto peep = getGameState().entities.TryGetEntity(peepInTrainIndex); + auto peep = gameState.entities.TryGetEntity(peepInTrainIndex); if (peep != nullptr && peep->CurrentRide == ride.id) { if ((peep->State == PeepState::onRide && peep->RideSubState == PeepRideSubState::onRide) @@ -781,7 +781,7 @@ namespace OpenRCT2::GameActions } } - void CheatSetAction::OwnAllLand() const + void CheatSetAction::OwnAllLand(GameState_t& gameState) const { const auto min = CoordsXY{ kCoordsXYStep, kCoordsXYStep }; const auto max = GetMapSizeUnits() - CoordsXY{ kCoordsXYStep, kCoordsXYStep }; @@ -812,7 +812,7 @@ namespace OpenRCT2::GameActions } // Completely unown peep spawn points - for (const auto& spawn : getGameState().peepSpawns) + for (const auto& spawn : gameState.peepSpawns) { auto* surfaceElement = MapGetSurfaceElementAt(spawn); if (surfaceElement != nullptr) diff --git a/src/openrct2/actions/CheatSetAction.h b/src/openrct2/actions/CheatSetAction.h index ce8e7e304dd9..934ce956ba08 100644 --- a/src/openrct2/actions/CheatSetAction.h +++ b/src/openrct2/actions/CheatSetAction.h @@ -45,15 +45,15 @@ namespace OpenRCT2::GameActions void ResetRideCrashStatus(GameState_t& gameState) const; void Set10MinuteInspection(GameState_t& gameState) const; void SetScenarioNoMoney(GameState_t& gameState, bool enabled) const; - void SetMoney(money64 amount) const; - void AddMoney(money64 amount) const; + void SetMoney(GameState_t& gameState, money64 amount) const; + void AddMoney(GameState_t& gameState, money64 amount) const; void ClearLoan(GameState_t& gameState) const; void GenerateGuests(int32_t count) const; void SetGuestParameter(int32_t parameter, int32_t value) const; void GiveObjectToGuests(int32_t object) const; void RemoveAllGuests(GameState_t& gameState) const; void SetStaffSpeed(uint8_t value) const; - void OwnAllLand() const; + void OwnAllLand(GameState_t& gameState) const; void ParkSetOpen(bool isOpen, GameState_t& gameState) const; void CreateDucks(int count) const; void RemoveParkFences() const; diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index c99121b1b3a7..531c0cb95cd0 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -61,7 +61,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_OFF_EDGE_OF_MAP); } - if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) + if (!(gLegacyScene == LegacyScene::scenarioEditor || gameState.cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { return Result(Status::disallowed, STR_CANT_POSITION_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } diff --git a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp index eb4e0682decc..e96b996943b3 100644 --- a/src/openrct2/actions/FootpathAdditionRemoveAction.cpp +++ b/src/openrct2/actions/FootpathAdditionRemoveAction.cpp @@ -53,7 +53,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } - if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) + if (!(gLegacyScene == LegacyScene::scenarioEditor || gameState.cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { return Result(Status::disallowed, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); } diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp index 393ba2877a94..ce53879f5b81 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.cpp +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.cpp @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } - if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) + if (!(gLegacyScene == LegacyScene::scenarioEditor || gameState.cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } @@ -96,7 +96,7 @@ namespace OpenRCT2::GameActions return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } - return ElementInsertQuery(std::move(res)); + return ElementInsertQuery(gameState, std::move(res)); } Result FootpathLayoutPlaceAction::Execute(GameState_t& gameState) const @@ -119,7 +119,7 @@ namespace OpenRCT2::GameActions return ElementInsertExecute(std::move(res)); } - Result FootpathLayoutPlaceAction::ElementInsertQuery(Result res) const + Result FootpathLayoutPlaceAction::ElementInsertQuery(GameState_t& gameState, Result res) const { bool entrancePath = false, entranceIsSamePath = false; @@ -168,7 +168,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); gFootpathGroundFlags = clearanceData.GroundFlags; - if (!getGameState().cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) + if (!gameState.cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) { return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } diff --git a/src/openrct2/actions/FootpathLayoutPlaceAction.h b/src/openrct2/actions/FootpathLayoutPlaceAction.h index 0868e9ed958f..a90ce529b79a 100644 --- a/src/openrct2/actions/FootpathLayoutPlaceAction.h +++ b/src/openrct2/actions/FootpathLayoutPlaceAction.h @@ -39,7 +39,7 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - Result ElementInsertQuery(Result res) const; + Result ElementInsertQuery(GameState_t& gameState, Result res) const; Result ElementInsertExecute(Result res) const; bool IsSameAsEntranceElement(const EntranceElement& entranceElement) const; }; diff --git a/src/openrct2/actions/FootpathPlaceAction.cpp b/src/openrct2/actions/FootpathPlaceAction.cpp index 00bc6093ee40..3204d94b6eec 100644 --- a/src/openrct2/actions/FootpathPlaceAction.cpp +++ b/src/openrct2/actions/FootpathPlaceAction.cpp @@ -89,7 +89,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_BUILD_FOOTPATH_HERE, STR_OFF_EDGE_OF_MAP); } - if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) + if (!(gLegacyScene == LegacyScene::scenarioEditor || gameState.cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_LAND_NOT_OWNED_BY_PARK); } @@ -121,7 +121,7 @@ namespace OpenRCT2::GameActions auto tileElement = MapGetFootpathElementWithSlope(_loc, _slope); if (tileElement == nullptr) { - return ElementInsertQuery(std::move(res)); + return ElementInsertQuery(gameState, std::move(res)); } return ElementUpdateQuery(tileElement, std::move(res)); } @@ -145,7 +145,7 @@ namespace OpenRCT2::GameActions if (!GetFlags().has(CommandFlag::ghost)) { - if (_direction != kInvalidDirection && !getGameState().cheats.disableClearanceChecks) + if (_direction != kInvalidDirection && !gameState.cheats.disableClearanceChecks) { // It is possible, let's remove walls between the old and new piece of path auto zLow = _loc.z; @@ -162,7 +162,7 @@ namespace OpenRCT2::GameActions auto tileElement = MapGetFootpathElementWithSlope(_loc, _slope); if (tileElement == nullptr) { - return ElementInsertExecute(std::move(res)); + return ElementInsertExecute(gameState, std::move(res)); } return ElementUpdateExecute(tileElement, std::move(res)); } @@ -284,7 +284,7 @@ namespace OpenRCT2::GameActions return res; } - Result FootpathPlaceAction::ElementInsertQuery(Result res) const + Result FootpathPlaceAction::ElementInsertQuery(GameState_t& gameState, Result res) const { bool entrancePath = false, entranceIsSamePath = false; @@ -332,7 +332,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); gFootpathGroundFlags = clearanceData.GroundFlags; - if (!getGameState().cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) + if (!gameState.cheats.disableClearanceChecks && (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER)) { return Result(Status::disallowed, STR_CANT_BUILD_FOOTPATH_HERE, STR_CANT_BUILD_THIS_UNDERWATER); } @@ -352,7 +352,7 @@ namespace OpenRCT2::GameActions return res; } - Result FootpathPlaceAction::ElementInsertExecute(Result res) const + Result FootpathPlaceAction::ElementInsertExecute(GameState_t& gameState, Result res) const { bool entrancePath = false, entranceIsSamePath = false; @@ -456,7 +456,7 @@ namespace OpenRCT2::GameActions } if (gLegacyScene == LegacyScene::scenarioEditor && !GetFlags().has(CommandFlag::ghost)) { - AutomaticallySetPeepSpawn(); + AutomaticallySetPeepSpawn(gameState); } RemoveIntersectingWalls(pathElement); @@ -473,7 +473,7 @@ namespace OpenRCT2::GameActions * * rct2: 0x006A65AD */ - void FootpathPlaceAction::AutomaticallySetPeepSpawn() const + void FootpathPlaceAction::AutomaticallySetPeepSpawn(GameState_t& gameState) const { auto mapSizeUnits = GetMapSizeUnits(); uint8_t direction = 0; @@ -492,7 +492,6 @@ namespace OpenRCT2::GameActions } } - auto& gameState = getGameState(); if (gameState.peepSpawns.empty()) { gameState.peepSpawns.emplace_back(); diff --git a/src/openrct2/actions/FootpathPlaceAction.h b/src/openrct2/actions/FootpathPlaceAction.h index b4edf2d4ef32..ed2fcb2a42e4 100644 --- a/src/openrct2/actions/FootpathPlaceAction.h +++ b/src/openrct2/actions/FootpathPlaceAction.h @@ -40,9 +40,9 @@ namespace OpenRCT2::GameActions private: Result ElementUpdateQuery(PathElement* pathElement, Result res) const; Result ElementUpdateExecute(PathElement* pathElement, Result res) const; - Result ElementInsertQuery(Result res) const; - Result ElementInsertExecute(Result res) const; - void AutomaticallySetPeepSpawn() const; + Result ElementInsertQuery(GameState_t& gameState, Result res) const; + Result ElementInsertExecute(GameState_t& gameState, Result res) const; + void AutomaticallySetPeepSpawn(GameState_t& gameState) const; void RemoveIntersectingWalls(PathElement* pathElement) const; PathElement* MapGetFootpathElementWithSlope(const CoordsXYZ& footpathPos, FootpathSlope slope) const; bool IsSameAsPathElement(const PathElement* pathElement) const; diff --git a/src/openrct2/actions/FootpathRemoveAction.cpp b/src/openrct2/actions/FootpathRemoveAction.cpp index ea5c961fbe8d..a0924ee45532 100644 --- a/src/openrct2/actions/FootpathRemoveAction.cpp +++ b/src/openrct2/actions/FootpathRemoveAction.cpp @@ -60,7 +60,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_OFF_EDGE_OF_MAP); } - if (!(gLegacyScene == LegacyScene::scenarioEditor || getGameState().cheats.sandboxMode) && !MapIsLocationOwned(_loc)) + if (!(gLegacyScene == LegacyScene::scenarioEditor || gameState.cheats.sandboxMode) && !MapIsLocationOwned(_loc)) { return Result(Status::notOwned, STR_CANT_REMOVE_FOOTPATH_FROM_HERE, STR_LAND_NOT_OWNED_BY_PARK); } diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index 8d2c7a3d25bb..a5ef98cd8e12 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -91,7 +91,7 @@ namespace OpenRCT2::GameActions _actionQueue.emplace(tick, std::move(ga), _nextUniqueId++); } - void ProcessQueue() + void ProcessQueue(GameState_t& gameState) { if (_suspended) { @@ -99,7 +99,7 @@ namespace OpenRCT2::GameActions return; } - const uint32_t currentTick = getGameState().currentTicks; + const uint32_t currentTick = gameState.currentTicks; while (_actionQueue.begin() != _actionQueue.end()) { @@ -142,7 +142,7 @@ namespace OpenRCT2::GameActions Guard::Assert(action != nullptr); - Result result = Execute(action, getGameState()); + Result result = Execute(action, gameState); if (result.error == Status::ok && Network::GetMode() == Network::Mode::server) { // Relay this action to all other clients. @@ -177,11 +177,11 @@ namespace OpenRCT2::GameActions return ga; } - static bool CheckActionInPausedMode(uint32_t actionFlags) + static bool CheckActionInPausedMode(const GameState_t& gameState, uint32_t actionFlags) { if (gGamePaused == 0) return true; - if (getGameState().cheats.buildInPauseMode) + if (gameState.cheats.buildInPauseMode) return true; if (actionFlags & Flags::AllowWhilePaused) return true; @@ -193,7 +193,7 @@ namespace OpenRCT2::GameActions Guard::ArgumentNotNull(action); uint16_t actionFlags = action->GetActionFlags(); - if (topLevel && !CheckActionInPausedMode(actionFlags)) + if (topLevel && !CheckActionInPausedMode(gameState, actionFlags)) { Result result = Result(); @@ -243,13 +243,13 @@ namespace OpenRCT2::GameActions MemoryStream output; }; - static void LogActionBegin(ActionLogContext& ctx, const GameAction* action) + static void LogActionBegin(const GameState_t& gameState, ActionLogContext& ctx, const GameAction* action) { MemoryStream& output = ctx.output; char temp[128] = {}; snprintf( - temp, sizeof(temp), "[%s] Tick: %u, GA: %s (%08X) (", GetRealm(), getGameState().currentTicks, action->GetName(), + temp, sizeof(temp), "[%s] Tick: %u, GA: %s (%08X) (", GetRealm(), gameState.currentTicks, action->GetName(), EnumValue(action->GetType())); output.Write(temp, strlen(temp)); @@ -342,7 +342,7 @@ namespace OpenRCT2::GameActions if (!(actionFlags & Flags::ClientOnly) && !flags.has(CommandFlag::networked)) { LOG_VERBOSE("[%s] GameAction::Execute %s (Queue)", GetRealm(), action->GetName()); - Enqueue(action, getGameState().currentTicks); + Enqueue(action, gameState.currentTicks); return result; } @@ -352,7 +352,7 @@ namespace OpenRCT2::GameActions ActionLogContext logContext; if (topLevel && !flags.has(CommandFlag::ghost)) { - LogActionBegin(logContext, action); + LogActionBegin(gameState, logContext, action); } // Execute the action, changing the game state @@ -417,7 +417,7 @@ namespace OpenRCT2::GameActions } if (recordAction) { - replayManager->AddGameAction(getGameState().currentTicks, action); + replayManager->AddGameAction(gameState.currentTicks, action); } } } diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index 0f59341d08b1..aa83e7d2a06b 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -277,7 +277,7 @@ namespace OpenRCT2::GameActions void Enqueue(const GameAction* ga, uint32_t tick); void Enqueue(GameAction::Ptr&& ga, uint32_t tick); - void ProcessQueue(); + void ProcessQueue(GameState_t& gameState); void ClearQueue(); GameAction::Ptr Create(GameCommand id); diff --git a/src/openrct2/actions/GuestSetNameAction.cpp b/src/openrct2/actions/GuestSetNameAction.cpp index 8b6c098bd9a8..a104edcf4d4e 100644 --- a/src/openrct2/actions/GuestSetNameAction.cpp +++ b/src/openrct2/actions/GuestSetNameAction.cpp @@ -63,7 +63,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_NAME_GUEST, STR_ERR_VALUE_OUT_OF_RANGE); } - auto guest = getGameState().entities.TryGetEntity(_spriteIndex); + auto guest = gameState.entities.TryGetEntity(_spriteIndex); if (guest == nullptr) { LOG_ERROR("Guest entity not found for spriteIndex %u", _spriteIndex); @@ -75,7 +75,7 @@ namespace OpenRCT2::GameActions Result GuestSetNameAction::Execute(GameState_t& gameState) const { - auto guest = getGameState().entities.TryGetEntity(_spriteIndex); + auto guest = gameState.entities.TryGetEntity(_spriteIndex); if (guest == nullptr) { LOG_ERROR("Guest entity not found for spriteIndex %u", _spriteIndex); diff --git a/src/openrct2/actions/LandBuyRightsAction.cpp b/src/openrct2/actions/LandBuyRightsAction.cpp index a7424c789c45..568a9231d3f9 100644 --- a/src/openrct2/actions/LandBuyRightsAction.cpp +++ b/src/openrct2/actions/LandBuyRightsAction.cpp @@ -59,15 +59,15 @@ namespace OpenRCT2::GameActions Result LandBuyRightsAction::Query(GameState_t& gameState) const { - return QueryExecute(false); + return QueryExecute(gameState, false); } Result LandBuyRightsAction::Execute(GameState_t& gameState) const { - return QueryExecute(true); + return QueryExecute(gameState, true); } - Result LandBuyRightsAction::QueryExecute(bool isExecuting) const + Result LandBuyRightsAction::QueryExecute(GameState_t& gameState, bool isExecuting) const { auto res = Result(); @@ -95,7 +95,7 @@ namespace OpenRCT2::GameActions { if (!LocationValid({ x, y })) continue; - auto result = MapBuyLandRightsForTile({ x, y }, isExecuting); + auto result = MapBuyLandRightsForTile(gameState, { x, y }, isExecuting); if (result.error == Status::ok) { res.cost += result.cost; @@ -109,7 +109,7 @@ namespace OpenRCT2::GameActions return res; } - Result LandBuyRightsAction::MapBuyLandRightsForTile(const CoordsXY& loc, bool isExecuting) const + Result LandBuyRightsAction::MapBuyLandRightsForTile(GameState_t& gameState, const CoordsXY& loc, bool isExecuting) const { if (_setting >= LandBuyRightSetting::Count) { @@ -142,7 +142,7 @@ namespace OpenRCT2::GameActions surfaceElement->SetOwnership(OWNERSHIP_OWNED); Park::UpdateFencesAroundTile(loc); } - res.cost = getGameState().scenarioOptions.landPrice; + res.cost = gameState.scenarioOptions.landPrice; return res; case LandBuyRightSetting::BuyConstructionRights: // 2 @@ -163,7 +163,7 @@ namespace OpenRCT2::GameActions uint16_t baseZ = surfaceElement->GetBaseZ(); MapInvalidateTile({ loc, baseZ, baseZ + 16 }); } - res.cost = getGameState().scenarioOptions.constructionRightsPrice; + res.cost = gameState.scenarioOptions.constructionRightsPrice; return res; default: diff --git a/src/openrct2/actions/LandBuyRightsAction.h b/src/openrct2/actions/LandBuyRightsAction.h index adb2fe994a1c..60c4433bb00a 100644 --- a/src/openrct2/actions/LandBuyRightsAction.h +++ b/src/openrct2/actions/LandBuyRightsAction.h @@ -45,7 +45,7 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - Result QueryExecute(bool isExecuting) const; - Result MapBuyLandRightsForTile(const CoordsXY& loc, bool isExecuting) const; + Result QueryExecute(GameState_t& gameState, bool isExecuting) const; + Result MapBuyLandRightsForTile(GameState_t& gameState, const CoordsXY& loc, bool isExecuting) const; }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index 4ae65882d009..1257174d80c1 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -97,7 +97,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) continue; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(CoordsXY{ x, y })) { diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index 36ac04f9af67..40fb44e901fc 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -98,7 +98,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) continue; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(CoordsXY{ x, y })) { diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index b616f80fb65c..24b23b2120b7 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -160,7 +160,7 @@ namespace OpenRCT2::GameActions auto surfaceHeight = TileElementHeight(_coords); FootpathRemoveLitter({ _coords, surfaceHeight }); - if (!getGameState().cheats.disableClearanceChecks) + if (!gameState.cheats.disableClearanceChecks) { WallRemoveAt({ _coords, _height * 8 - 16, _height * 8 + 32 }); cost += GetSmallSceneryRemovalCost(); diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index 5e6dd9dfbb92..464aa10ee2ae 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -66,15 +66,15 @@ namespace OpenRCT2::GameActions Result LandSetRightsAction::Query(GameState_t& gameState) const { - return QueryExecute(false); + return QueryExecute(gameState, false); } Result LandSetRightsAction::Execute(GameState_t& gameState) const { - return QueryExecute(true); + return QueryExecute(gameState, true); } - Result LandSetRightsAction::QueryExecute(bool isExecuting) const + Result LandSetRightsAction::QueryExecute(GameState_t& gameState, bool isExecuting) const { auto res = Result(); @@ -86,7 +86,7 @@ namespace OpenRCT2::GameActions res.position = centre; res.expenditure = ExpenditureType::landPurchase; - if (!isInEditorMode() && !getGameState().cheats.sandboxMode) + if (!isInEditorMode() && !gameState.cheats.sandboxMode) { return Result(Status::notInEditorMode, kStringIdNone, STR_LAND_NOT_FOR_SALE); } @@ -98,7 +98,7 @@ namespace OpenRCT2::GameActions { if (!LocationValid({ x, y })) continue; - auto result = MapBuyLandRightsForTile({ x, y }, isExecuting); + auto result = MapBuyLandRightsForTile(gameState, { x, y }, isExecuting); if (result.error == Status::ok) { res.cost += result.cost; @@ -114,7 +114,7 @@ namespace OpenRCT2::GameActions return res; } - Result LandSetRightsAction::MapBuyLandRightsForTile(const CoordsXY& loc, bool isExecuting) const + Result LandSetRightsAction::MapBuyLandRightsForTile(GameState_t& gameState, const CoordsXY& loc, bool isExecuting) const { SurfaceElement* surfaceElement = MapGetSurfaceElementAt(loc); if (surfaceElement == nullptr) @@ -187,7 +187,6 @@ namespace OpenRCT2::GameActions } } - auto& gameState = getGameState(); const uint8_t currentOwnership = surfaceElement->GetOwnership(); // Are land rights or construction rights currently owned? diff --git a/src/openrct2/actions/LandSetRightsAction.h b/src/openrct2/actions/LandSetRightsAction.h index ccd4d355d5ae..46bbde6f4235 100644 --- a/src/openrct2/actions/LandSetRightsAction.h +++ b/src/openrct2/actions/LandSetRightsAction.h @@ -44,7 +44,7 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - Result QueryExecute(bool isExecuting) const; - Result MapBuyLandRightsForTile(const CoordsXY& loc, bool isExecuting) const; + Result QueryExecute(GameState_t& gameState, bool isExecuting) const; + Result MapBuyLandRightsForTile(GameState_t& gameState, const CoordsXY& loc, bool isExecuting) const; }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index e98e9e797905..22f0514bb5ab 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -291,7 +291,7 @@ namespace OpenRCT2::GameActions if (!GetFlags().has(CommandFlag::ghost)) { FootpathRemoveLitter({ curTile, zLow }); - if (!getGameState().cheats.disableClearanceChecks) + if (!gameState.cheats.disableClearanceChecks) { WallRemoveAt({ curTile, zLow, zHigh }); } diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index 3183339ce954..15e577e66fd3 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -88,9 +88,9 @@ namespace OpenRCT2::GameActions auto currentTile = CoordsXYZ{ firstTile.x, firstTile.y, firstTile.z } + currentTileRotatedOffset; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { - if (getGameState().park.flags & PARK_FLAGS_FORBID_TREE_REMOVAL) + if (gameState.park.flags & PARK_FLAGS_FORBID_TREE_REMOVAL) { if (sceneryEntry->HasFlag(LARGE_SCENERY_FLAG_IS_TREE)) { @@ -167,7 +167,7 @@ namespace OpenRCT2::GameActions auto currentTile = CoordsXYZ{ firstTile.x, firstTile.y, firstTile.z } + rotatedCurrentTile; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationOwned({ currentTile.x, currentTile.y, currentTile.z })) { diff --git a/src/openrct2/actions/LargeScenerySetColourAction.cpp b/src/openrct2/actions/LargeScenerySetColourAction.cpp index 3c8e4b93de2b..0c1ed4fd7c6a 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.cpp +++ b/src/openrct2/actions/LargeScenerySetColourAction.cpp @@ -54,15 +54,15 @@ namespace OpenRCT2::GameActions Result LargeScenerySetColourAction::Query(GameState_t& gameState) const { - return QueryExecute(false); + return QueryExecute(gameState, false); } Result LargeScenerySetColourAction::Execute(GameState_t& gameState) const { - return QueryExecute(true); + return QueryExecute(gameState, true); } - Result LargeScenerySetColourAction::QueryExecute(bool isExecuting) const + Result LargeScenerySetColourAction::QueryExecute(GameState_t& gameState, bool isExecuting) const { auto res = Result(); res.expenditure = ExpenditureType::landscaping; @@ -128,7 +128,7 @@ namespace OpenRCT2::GameActions auto rotatedTileCoords = CoordsXYZ{ CoordsXY{ tile.offset }.Rotate(_loc.direction), tile.offset.z }; auto currentTile = CoordsXYZ{ baseTile.x, baseTile.y, baseTile.z } + rotatedTileCoords; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationOwned(currentTile)) { diff --git a/src/openrct2/actions/LargeScenerySetColourAction.h b/src/openrct2/actions/LargeScenerySetColourAction.h index 8958ac734e08..75b5790ef475 100644 --- a/src/openrct2/actions/LargeScenerySetColourAction.h +++ b/src/openrct2/actions/LargeScenerySetColourAction.h @@ -36,6 +36,6 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - Result QueryExecute(bool isExecuting) const; + Result QueryExecute(GameState_t& gameState, bool isExecuting) const; }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index 0e240726639e..c1f075b50676 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -60,7 +60,7 @@ namespace OpenRCT2::GameActions Result ParkEntrancePlaceAction::Query(GameState_t& gameState) const { - if (!isInEditorMode() && !getGameState().cheats.sandboxMode) + if (!isInEditorMode() && !gameState.cheats.sandboxMode) { return Result(Status::notInEditorMode, STR_CANT_BUILD_THIS_HERE, kStringIdNone); } @@ -126,7 +126,7 @@ namespace OpenRCT2::GameActions auto flags = GetFlags(); - getGameState().park.entrances.push_back(_loc); + gameState.park.entrances.push_back(_loc); auto zLow = _loc.z; auto zHigh = zLow + ParkEntranceHeight; diff --git a/src/openrct2/actions/ParkEntranceRemoveAction.cpp b/src/openrct2/actions/ParkEntranceRemoveAction.cpp index 909009899228..cb77ee87cbdc 100644 --- a/src/openrct2/actions/ParkEntranceRemoveAction.cpp +++ b/src/openrct2/actions/ParkEntranceRemoveAction.cpp @@ -44,7 +44,7 @@ namespace OpenRCT2::GameActions Result ParkEntranceRemoveAction::Query(GameState_t& gameState) const { - if (!isInEditorMode() && !getGameState().cheats.sandboxMode) + if (!isInEditorMode() && !gameState.cheats.sandboxMode) { return Result(Status::notInEditorMode, STR_CANT_REMOVE_THIS, kStringIdNone); } @@ -80,7 +80,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, kStringIdNone); } - auto& park = getGameState().park; + auto& park = gameState.park; auto direction = (park.entrances[entranceIndex].direction - 1) & 3; // Centre (sign) diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index 497ef60d0e42..19f7e0d0d3cb 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -54,7 +54,7 @@ namespace OpenRCT2::GameActions { return Result(Status::invalidParameters, STR_CANT_START_MARKETING_CAMPAIGN, STR_ERR_VALUE_OUT_OF_RANGE); } - if (getGameState().park.flags & PARK_FLAGS_FORBID_MARKETING_CAMPAIGN) + if (gameState.park.flags & PARK_FLAGS_FORBID_MARKETING_CAMPAIGN) { return Result( Status::disallowed, STR_CANT_START_MARKETING_CAMPAIGN, STR_MARKETING_CAMPAIGNS_FORBIDDEN_BY_LOCAL_AUTHORITY); diff --git a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp index 442168be0c17..e15d39f642a1 100644 --- a/src/openrct2/actions/ParkSetEntranceFeeAction.cpp +++ b/src/openrct2/actions/ParkSetEntranceFeeAction.cpp @@ -43,7 +43,7 @@ namespace OpenRCT2::GameActions Result ParkSetEntranceFeeAction::Query(GameState_t& gameState) const { - if ((getGameState().park.flags & PARK_FLAGS_NO_MONEY) != 0) + if ((gameState.park.flags & PARK_FLAGS_NO_MONEY) != 0) { LOG_ERROR("Can't set park entrance fee because the park has no money"); return Result(Status::disallowed, STR_ERR_CANT_CHANGE_PARK_ENTRANCE_FEE, kStringIdNone); @@ -64,7 +64,7 @@ namespace OpenRCT2::GameActions Result ParkSetEntranceFeeAction::Execute(GameState_t& gameState) const { - getGameState().park.entranceFee = _fee; + gameState.park.entranceFee = _fee; auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByClass(WindowClass::parkInformation); diff --git a/src/openrct2/actions/ParkSetLoanAction.cpp b/src/openrct2/actions/ParkSetLoanAction.cpp index 689ced745672..8c7206c7c758 100644 --- a/src/openrct2/actions/ParkSetLoanAction.cpp +++ b/src/openrct2/actions/ParkSetLoanAction.cpp @@ -42,7 +42,7 @@ namespace OpenRCT2::GameActions Result ParkSetLoanAction::Query(GameState_t& gameState) const { - auto& park = getGameState().park; + auto& park = gameState.park; if (_value > park.bankLoan && _value > park.maxBankLoan) { return Result(Status::disallowed, STR_CANT_BORROW_ANY_MORE_MONEY, STR_BANK_REFUSES_TO_INCREASE_LOAN); @@ -63,7 +63,7 @@ namespace OpenRCT2::GameActions Result ParkSetLoanAction::Execute(GameState_t& gameState) const { - auto& park = getGameState().park; + auto& park = gameState.park; park.cash -= (park.bankLoan - _value); park.bankLoan = _value; diff --git a/src/openrct2/actions/ParkSetNameAction.cpp b/src/openrct2/actions/ParkSetNameAction.cpp index 53581f9c79ac..1be9b72981e5 100644 --- a/src/openrct2/actions/ParkSetNameAction.cpp +++ b/src/openrct2/actions/ParkSetNameAction.cpp @@ -56,7 +56,7 @@ namespace OpenRCT2::GameActions Result ParkSetNameAction::Execute(GameState_t& gameState) const { // Do a no-op if new name is the same as the current name is the same - auto& park = getGameState().park; + auto& park = gameState.park; if (_name != park.name) { park.name = _name; diff --git a/src/openrct2/actions/ParkSetParameterAction.cpp b/src/openrct2/actions/ParkSetParameterAction.cpp index efce22509805..3b1c74dec622 100644 --- a/src/openrct2/actions/ParkSetParameterAction.cpp +++ b/src/openrct2/actions/ParkSetParameterAction.cpp @@ -56,7 +56,7 @@ namespace OpenRCT2::GameActions Result ParkSetParameterAction::Execute(GameState_t& gameState) const { - auto& park = getGameState().park; + auto& park = gameState.park; auto* windowMgr = Ui::GetWindowManager(); switch (_parameter) diff --git a/src/openrct2/actions/PeepPickupAction.cpp b/src/openrct2/actions/PeepPickupAction.cpp index ea92b4b2afef..f24e8f12911b 100644 --- a/src/openrct2/actions/PeepPickupAction.cpp +++ b/src/openrct2/actions/PeepPickupAction.cpp @@ -59,7 +59,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_ERR_CANT_PLACE_PERSON_HERE, kStringIdNone); } - auto* const peep = getGameState().entities.TryGetEntity(_entityId); + auto* const peep = gameState.entities.TryGetEntity(_entityId); if (peep == nullptr) { LOG_ERROR("Failed to pick up peep for sprite %d", _entityId); @@ -117,7 +117,7 @@ namespace OpenRCT2::GameActions Result PeepPickupAction::Execute(GameState_t& gameState) const { - Peep* const peep = getGameState().entities.TryGetEntity(_entityId); + Peep* const peep = gameState.entities.TryGetEntity(_entityId); if (peep == nullptr) { LOG_ERROR("Failed to pick up peep for sprite %d", _entityId); diff --git a/src/openrct2/actions/PeepSpawnPlaceAction.cpp b/src/openrct2/actions/PeepSpawnPlaceAction.cpp index 19f4a129bb15..4dad0df46c70 100644 --- a/src/openrct2/actions/PeepSpawnPlaceAction.cpp +++ b/src/openrct2/actions/PeepSpawnPlaceAction.cpp @@ -46,7 +46,7 @@ namespace OpenRCT2::GameActions Result PeepSpawnPlaceAction::Query(GameState_t& gameState) const { - if (!isInEditorMode() && !getGameState().cheats.sandboxMode) + if (!isInEditorMode() && !gameState.cheats.sandboxMode) { return Result(Status::notInEditorMode, STR_ERR_CANT_PLACE_PEEP_SPAWN_HERE, kStringIdNone); } diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index 2ec0996c532b..68a1df124cae 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -67,7 +67,7 @@ namespace OpenRCT2::GameActions if ((ride->lifecycleFlags & (RIDE_LIFECYCLE_INDESTRUCTIBLE | RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _modifyType == RideModifyType::demolish) - && !getGameState().cheats.makeAllDestructible) + && !gameState.cheats.makeAllDestructible) { return Result( Status::noClearance, STR_CANT_DEMOLISH_RIDE, diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index c30a2bfa5736..5821762b412d 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -106,7 +106,7 @@ namespace OpenRCT2::GameActions { return Result(Status::invalidParameters, errorTitle, STR_OFF_EDGE_OF_MAP); } - if (!getGameState().cheats.sandboxMode && !MapIsLocationOwned({ _loc, z })) + if (!gameState.cheats.sandboxMode && !MapIsLocationOwned({ _loc, z })) { return Result(Status::notOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); } @@ -179,7 +179,7 @@ namespace OpenRCT2::GameActions auto z = station.GetBaseZ(); if (!GetFlags().has(CommandFlag::allowDuringPaused) && !GetFlags().has(CommandFlag::ghost) - && !getGameState().cheats.disableClearanceChecks) + && !gameState.cheats.disableClearanceChecks) { FootpathRemoveLitter({ _loc, z }); WallRemoveAtZ({ _loc, z }); @@ -238,12 +238,12 @@ namespace OpenRCT2::GameActions return res; } - Result RideEntranceExitPlaceAction::TrackPlaceQuery(const CoordsXYZ& loc, const bool isExit) + Result RideEntranceExitPlaceAction::TrackPlaceQuery(GameState_t& gameState, const CoordsXYZ& loc, const bool isExit) { const auto errorTitle = isExit ? STR_CANT_BUILD_MOVE_EXIT_FOR_THIS_RIDE_ATTRACTION : STR_CANT_BUILD_MOVE_ENTRANCE_FOR_THIS_RIDE_ATTRACTION; - if (!getGameState().cheats.sandboxMode && !MapIsLocationOwned(loc)) + if (!gameState.cheats.sandboxMode && !MapIsLocationOwned(loc)) { return Result(Status::notOwned, errorTitle, STR_LAND_NOT_OWNED_BY_PARK); } diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.h b/src/openrct2/actions/RideEntranceExitPlaceAction.h index 1dd4f7d4c305..709a0b67b7ae 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.h +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.h @@ -36,6 +36,6 @@ namespace OpenRCT2::GameActions Result Query(GameState_t& gameState) const override; Result Execute(GameState_t& gameState) const override; - static Result TrackPlaceQuery(const CoordsXYZ& loc, const bool isExit); + static Result TrackPlaceQuery(GameState_t& gameState, const CoordsXYZ& loc, const bool isExit); }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/RideSetSettingAction.cpp b/src/openrct2/actions/RideSetSettingAction.cpp index 3115b618818d..6d3b0fdbe6c8 100644 --- a/src/openrct2/actions/RideSetSettingAction.cpp +++ b/src/openrct2/actions/RideSetSettingAction.cpp @@ -70,7 +70,7 @@ namespace OpenRCT2::GameActions return Result(Status::disallowed, STR_CANT_CHANGE_OPERATING_MODE, STR_MUST_BE_CLOSED_FIRST); } - if (!RideIsModeValid(*ride) && !getGameState().cheats.showAllOperatingModes) + if (!RideIsModeValid(*ride) && !gameState.cheats.showAllOperatingModes) { LOG_ERROR("Invalid ride mode: %u", _value); return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); @@ -93,7 +93,7 @@ namespace OpenRCT2::GameActions } break; case RideSetSetting::Operation: - if (!RideIsValidOperationOption(*ride)) + if (!RideIsValidOperationOption(gameState, *ride)) { LOG_ERROR("Invalid operation option value: %u", _value); return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, GetOperationErrorMessage(*ride)); @@ -120,7 +120,7 @@ namespace OpenRCT2::GameActions break; } case RideSetSetting::LiftHillSpeed: - if (!RideIsValidLiftHillSpeed(*ride)) + if (!RideIsValidLiftHillSpeed(gameState, *ride)) { LOG_ERROR("Invalid lift hill speed: %u", _value); return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); @@ -134,14 +134,14 @@ namespace OpenRCT2::GameActions STR_MULTICIRCUIT_NOT_POSSIBLE_WITH_CABLE_LIFT_HILL); } - if (!RideIsValidNumCircuits()) + if (!RideIsValidNumCircuits(gameState)) { LOG_ERROR("Invalid number of circuits: %u", _value); return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); } break; case RideSetSetting::RideType: - if (!getGameState().cheats.allowArbitraryRideTypeChanges) + if (!gameState.cheats.allowArbitraryRideTypeChanges) { LOG_ERROR("Arbitrary ride type changes not allowed."); return Result(Status::disallowed, STR_CANT_CHANGE_OPERATING_MODE, kStringIdNone); @@ -252,27 +252,26 @@ namespace OpenRCT2::GameActions return ride.getRideTypeDescriptor().RideModes & (1uLL << _value); } - bool RideSetSettingAction::RideIsValidLiftHillSpeed(const Ride& ride) const + bool RideSetSettingAction::RideIsValidLiftHillSpeed(GameState_t& gameState, const Ride& ride) const { - auto& gameState = getGameState(); int32_t minSpeed = gameState.cheats.unlockOperatingLimits ? 0 : ride.getRideTypeDescriptor().LiftData.minimum_speed; int32_t maxSpeed = gameState.cheats.unlockOperatingLimits ? 255 : ride.getRideTypeDescriptor().LiftData.maximum_speed; return _value >= minSpeed && _value <= maxSpeed; } - bool RideSetSettingAction::RideIsValidNumCircuits() const + bool RideSetSettingAction::RideIsValidNumCircuits(GameState_t& gameState) const { int32_t minNumCircuits = 1; - int32_t maxNumCircuits = getGameState().cheats.unlockOperatingLimits ? 255 : Limits::kMaxCircuitsPerRide; + int32_t maxNumCircuits = gameState.cheats.unlockOperatingLimits ? 255 : Limits::kMaxCircuitsPerRide; return _value >= minNumCircuits && _value <= maxNumCircuits; } - bool RideSetSettingAction::RideIsValidOperationOption(const Ride& ride) const + bool RideSetSettingAction::RideIsValidOperationOption(GameState_t& gameState, const Ride& ride) const { const auto& operatingSettings = ride.getRideTypeDescriptor().OperatingSettings; uint8_t minValue = operatingSettings.MinValue; uint8_t maxValue = operatingSettings.MaxValue; - if (getGameState().cheats.unlockOperatingLimits) + if (gameState.cheats.unlockOperatingLimits) { minValue = 0; maxValue = 255; diff --git a/src/openrct2/actions/RideSetSettingAction.h b/src/openrct2/actions/RideSetSettingAction.h index 5b5b939bfe8d..d971853fad13 100644 --- a/src/openrct2/actions/RideSetSettingAction.h +++ b/src/openrct2/actions/RideSetSettingAction.h @@ -49,9 +49,9 @@ namespace OpenRCT2::GameActions private: bool RideIsModeValid(const Ride& ride) const; - bool RideIsValidLiftHillSpeed(const Ride& ride) const; - bool RideIsValidNumCircuits() const; - bool RideIsValidOperationOption(const Ride& ride) const; + bool RideIsValidLiftHillSpeed(GameState_t& gameState, const Ride& ride) const; + bool RideIsValidNumCircuits(GameState_t& gameState) const; + bool RideIsValidOperationOption(GameState_t& gameState, const Ride& ride) const; StringId GetOperationErrorMessage(const Ride& ride) const; }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/RideSetVehicleAction.cpp b/src/openrct2/actions/RideSetVehicleAction.cpp index b26619077af9..bba6028979a6 100644 --- a/src/openrct2/actions/RideSetVehicleAction.cpp +++ b/src/openrct2/actions/RideSetVehicleAction.cpp @@ -94,7 +94,7 @@ namespace OpenRCT2::GameActions break; case RideSetVehicleType::RideEntry: { - if (!RideIsVehicleTypeValid(*ride)) + if (!RideIsVehicleTypeValid(gameState, *ride)) { LOG_ERROR("Invalid vehicle type %d", _value); return Result(Status::invalidParameters, errTitle, STR_ERR_VALUE_OUT_OF_RANGE); @@ -158,7 +158,7 @@ namespace OpenRCT2::GameActions } uint8_t clampValue = _value; static_assert(sizeof(clampValue) == sizeof(ride->proposedNumCarsPerTrain)); - if (!getGameState().cheats.disableTrainLengthLimit) + if (!gameState.cheats.disableTrainLengthLimit) { clampValue = std::clamp(clampValue, rideEntry->min_cars_in_train, rideEntry->max_cars_in_train); } @@ -181,7 +181,7 @@ namespace OpenRCT2::GameActions } RideSetVehicleColoursToRandomPreset(*ride, _colour); - if (!getGameState().cheats.disableTrainLengthLimit) + if (!gameState.cheats.disableTrainLengthLimit) { ride->proposedNumCarsPerTrain = std::clamp( ride->proposedNumCarsPerTrain, rideEntry->min_cars_in_train, rideEntry->max_cars_in_train); @@ -221,11 +221,10 @@ namespace OpenRCT2::GameActions return res; } - bool RideSetVehicleAction::RideIsVehicleTypeValid(const Ride& ride) const + bool RideSetVehicleAction::RideIsVehicleTypeValid(GameState_t& gameState, const Ride& ride) const { bool selectionShouldBeExpanded; ride_type_t rideTypeIterator, rideTypeIteratorMax; - auto& gameState = getGameState(); { const auto& rtd = ride.getRideTypeDescriptor(); diff --git a/src/openrct2/actions/RideSetVehicleAction.h b/src/openrct2/actions/RideSetVehicleAction.h index 417c32063f52..be760513fdc4 100644 --- a/src/openrct2/actions/RideSetVehicleAction.h +++ b/src/openrct2/actions/RideSetVehicleAction.h @@ -43,7 +43,7 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - bool RideIsVehicleTypeValid(const Ride& ride) const; + bool RideIsVehicleTypeValid(GameState_t& gameState, const Ride& ride) const; static_assert(sizeof(_value) >= sizeof(ObjectEntryIndex)); }; diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index c9529d3a303e..aa4ca90076a2 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -361,7 +361,7 @@ namespace OpenRCT2::GameActions if (!GetFlags().has(CommandFlag::ghost)) { FootpathRemoveLitter({ _loc, targetHeight }); - if (!getGameState().cheats.disableClearanceChecks && (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_NO_WALLS))) + if (!gameState.cheats.disableClearanceChecks && (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_NO_WALLS))) { WallRemoveAt({ _loc, targetHeight, targetHeight + sceneryEntry->height }); } diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index e545f66bd7d1..a49fac452406 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -74,11 +74,10 @@ namespace OpenRCT2::GameActions res.expenditure = ExpenditureType::landscaping; res.position = _loc; - if (gLegacyScene != LegacyScene::scenarioEditor && !GetFlags().has(CommandFlag::ghost) - && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !GetFlags().has(CommandFlag::ghost) && !gameState.cheats.sandboxMode) { // Check if allowed to remove item - if (getGameState().park.flags & PARK_FLAGS_FORBID_TREE_REMOVAL) + if (gameState.park.flags & PARK_FLAGS_FORBID_TREE_REMOVAL) { if (entry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE)) { diff --git a/src/openrct2/actions/SmallScenerySetColourAction.cpp b/src/openrct2/actions/SmallScenerySetColourAction.cpp index 9e8c45cdcca8..d2fd1d20b62b 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.cpp +++ b/src/openrct2/actions/SmallScenerySetColourAction.cpp @@ -61,15 +61,15 @@ namespace OpenRCT2::GameActions Result SmallScenerySetColourAction::Query(GameState_t& gameState) const { - return QueryExecute(false); + return QueryExecute(gameState, false); } Result SmallScenerySetColourAction::Execute(GameState_t& gameState) const { - return QueryExecute(true); + return QueryExecute(gameState, true); } - Result SmallScenerySetColourAction::QueryExecute(bool isExecuting) const + Result SmallScenerySetColourAction::QueryExecute(GameState_t& gameState, bool isExecuting) const { auto res = Result(); res.expenditure = ExpenditureType::landscaping; @@ -83,7 +83,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); } - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationOwned(_loc)) { diff --git a/src/openrct2/actions/SmallScenerySetColourAction.h b/src/openrct2/actions/SmallScenerySetColourAction.h index d899c2700bb1..80f085565df2 100644 --- a/src/openrct2/actions/SmallScenerySetColourAction.h +++ b/src/openrct2/actions/SmallScenerySetColourAction.h @@ -38,6 +38,6 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - Result QueryExecute(bool isExecuting) const; + Result QueryExecute(GameState_t& gameState, bool isExecuting) const; }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/StaffFireAction.cpp b/src/openrct2/actions/StaffFireAction.cpp index 2897192301ea..0c06e4563da8 100644 --- a/src/openrct2/actions/StaffFireAction.cpp +++ b/src/openrct2/actions/StaffFireAction.cpp @@ -47,7 +47,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } - auto staff = getGameState().entities.TryGetEntity(_spriteId); + auto staff = gameState.entities.TryGetEntity(_spriteId); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteId %u", _spriteId); @@ -68,7 +68,7 @@ namespace OpenRCT2::GameActions Result StaffFireAction::Execute(GameState_t& gameState) const { - auto staff = getGameState().entities.TryGetEntity(_spriteId); + auto staff = gameState.entities.TryGetEntity(_spriteId); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteId %u", _spriteId); diff --git a/src/openrct2/actions/StaffHireNewAction.cpp b/src/openrct2/actions/StaffHireNewAction.cpp index c054c7159f43..e1be2212e9c5 100644 --- a/src/openrct2/actions/StaffHireNewAction.cpp +++ b/src/openrct2/actions/StaffHireNewAction.cpp @@ -64,15 +64,15 @@ namespace OpenRCT2::GameActions Result StaffHireNewAction::Query(GameState_t& gameState) const { - return QueryExecute(false); + return QueryExecute(gameState, false); } Result StaffHireNewAction::Execute(GameState_t& gameState) const { - return QueryExecute(true); + return QueryExecute(gameState, true); } - Result StaffHireNewAction::QueryExecute(bool execute) const + Result StaffHireNewAction::QueryExecute(GameState_t& gameState, bool execute) const { auto res = Result(); res.expenditure = ExpenditureType::wages; @@ -83,7 +83,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_HIRE_NEW_STAFF, STR_ERR_VALUE_OUT_OF_RANGE); } - if (getGameState().entities.GetNumFreeEntities() < 400) + if (gameState.entities.GetNumFreeEntities() < 400) { return Result(Status::noFreeElements, STR_CANT_HIRE_NEW_STAFF, STR_TOO_MANY_PEOPLE_IN_GAME); } @@ -98,7 +98,7 @@ namespace OpenRCT2::GameActions } } - Staff* newPeep = getGameState().entities.CreateEntity(); + Staff* newPeep = gameState.entities.CreateEntity(); if (newPeep == nullptr) { // Too many peeps exist already. @@ -108,7 +108,7 @@ namespace OpenRCT2::GameActions if (execute == false) { // In query we just want to see if we can obtain a sprite slot. - getGameState().entities.EntityRemove(newPeep); + gameState.entities.EntityRemove(newPeep); res.setData(StaffHireNewActionResult{ EntityId::GetNull() }); } @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions if (_autoPosition) { - AutoPositionNewStaff(newPeep); + AutoPositionNewStaff(gameState, newPeep); } else { @@ -194,7 +194,7 @@ namespace OpenRCT2::GameActions newPeep->TrousersColour = colour; // Staff energy determines their walking speed - switch (getGameState().cheats.selectedStaffSpeed) + switch (gameState.cheats.selectedStaffSpeed) { case StaffSpeedCheat::None: newPeep->Energy = kCheatsStaffNormalSpeed; @@ -221,7 +221,7 @@ namespace OpenRCT2::GameActions return res; } - void StaffHireNewAction::AutoPositionNewStaff(Peep* newPeep) const + void StaffHireNewAction::AutoPositionNewStaff(GameState_t& gameState, Peep* newPeep) const { // Find a location to place new staff member newPeep->State = PeepState::falling; @@ -281,7 +281,7 @@ namespace OpenRCT2::GameActions else { // No walking guests; pick random park entrance - const auto& park = getGameState().park; + const auto& park = gameState.park; if (!park.entrances.empty()) { auto rand = ScenarioRandMax(static_cast(park.entrances.size())); diff --git a/src/openrct2/actions/StaffHireNewAction.h b/src/openrct2/actions/StaffHireNewAction.h index 0a6cb1b58608..cd30b6ec185c 100644 --- a/src/openrct2/actions/StaffHireNewAction.h +++ b/src/openrct2/actions/StaffHireNewAction.h @@ -40,7 +40,7 @@ namespace OpenRCT2::GameActions Result Execute(GameState_t& gameState) const override; private: - Result QueryExecute(bool execute) const; - void AutoPositionNewStaff(Peep* newPeep) const; + Result QueryExecute(GameState_t& gameState, bool execute) const; + void AutoPositionNewStaff(GameState_t& gameState, Peep* newPeep) const; }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/StaffSetCostumeAction.cpp b/src/openrct2/actions/StaffSetCostumeAction.cpp index 62cfb245c9c4..a2e622c40698 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.cpp +++ b/src/openrct2/actions/StaffSetCostumeAction.cpp @@ -53,7 +53,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } - auto* staff = getGameState().entities.TryGetEntity(_spriteIndex); + auto* staff = gameState.entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); @@ -74,7 +74,7 @@ namespace OpenRCT2::GameActions Result StaffSetCostumeAction::Execute(GameState_t& gameState) const { - auto* staff = getGameState().entities.TryGetEntity(_spriteIndex); + auto* staff = gameState.entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); diff --git a/src/openrct2/actions/StaffSetNameAction.cpp b/src/openrct2/actions/StaffSetNameAction.cpp index 09dea3e15188..5818a074540d 100644 --- a/src/openrct2/actions/StaffSetNameAction.cpp +++ b/src/openrct2/actions/StaffSetNameAction.cpp @@ -55,7 +55,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_STAFF_ERROR_CANT_NAME_STAFF_MEMBER, STR_ERR_VALUE_OUT_OF_RANGE); } - auto staff = getGameState().entities.TryGetEntity(_spriteIndex); + auto staff = gameState.entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); @@ -67,7 +67,7 @@ namespace OpenRCT2::GameActions Result StaffSetNameAction::Execute(GameState_t& gameState) const { - auto staff = getGameState().entities.TryGetEntity(_spriteIndex); + auto staff = gameState.entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); diff --git a/src/openrct2/actions/StaffSetOrdersAction.cpp b/src/openrct2/actions/StaffSetOrdersAction.cpp index 286841761bb6..c6c67ac034c8 100644 --- a/src/openrct2/actions/StaffSetOrdersAction.cpp +++ b/src/openrct2/actions/StaffSetOrdersAction.cpp @@ -52,7 +52,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } - auto* staff = getGameState().entities.TryGetEntity(_spriteIndex); + auto* staff = gameState.entities.TryGetEntity(_spriteIndex); if (staff == nullptr || (staff->AssignedStaffType != StaffType::handyman && staff->AssignedStaffType != StaffType::mechanic)) { @@ -65,7 +65,7 @@ namespace OpenRCT2::GameActions Result StaffSetOrdersAction::Execute(GameState_t& gameState) const { - auto* staff = getGameState().entities.TryGetEntity(_spriteIndex); + auto* staff = gameState.entities.TryGetEntity(_spriteIndex); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteIndex %u", _spriteIndex); diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp index ba819f7df4b4..6126d636ece0 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.cpp +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.cpp @@ -48,12 +48,12 @@ namespace OpenRCT2::GameActions Result StaffSetPatrolAreaAction::Query(GameState_t& gameState) const { - return QueryExecute(false); + return QueryExecute(gameState, false); } Result StaffSetPatrolAreaAction::Execute(GameState_t& gameState) const { - return QueryExecute(true); + return QueryExecute(gameState, true); } static void InvalidatePatrolTiles(const MapRange& range) @@ -61,9 +61,9 @@ namespace OpenRCT2::GameActions MapInvalidateRegion(range.Point1, range.Point2); } - Result StaffSetPatrolAreaAction::QueryExecute(bool executing) const + Result StaffSetPatrolAreaAction::QueryExecute(GameState_t& gameState, bool executing) const { - auto staff = getGameState().entities.TryGetEntity(_spriteId); + auto staff = gameState.entities.TryGetEntity(_spriteId); if (staff == nullptr) { LOG_ERROR("Staff entity not found for spriteID %u", _spriteId.ToUnderlying()); diff --git a/src/openrct2/actions/StaffSetPatrolAreaAction.h b/src/openrct2/actions/StaffSetPatrolAreaAction.h index b390a96e4ddf..8b4616c285e1 100644 --- a/src/openrct2/actions/StaffSetPatrolAreaAction.h +++ b/src/openrct2/actions/StaffSetPatrolAreaAction.h @@ -27,7 +27,7 @@ namespace OpenRCT2::GameActions MapRange _range; StaffSetPatrolAreaMode _mode; - Result QueryExecute(bool executing) const; + Result QueryExecute(GameState_t& gameState, bool executing) const; public: StaffSetPatrolAreaAction() = default; diff --git a/src/openrct2/actions/SurfaceSetStyleAction.cpp b/src/openrct2/actions/SurfaceSetStyleAction.cpp index 7f9fed9c5fe8..5c253b91e8de 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.cpp +++ b/src/openrct2/actions/SurfaceSetStyleAction.cpp @@ -167,7 +167,7 @@ namespace OpenRCT2::GameActions if (!LocationValid(coords)) continue; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(coords)) continue; diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 3d599f640840..5fe110dc056b 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -684,7 +684,7 @@ namespace OpenRCT2::GameActions auto newMode = RideModeGetBlockSectionedCounterpart(ride->mode); if (ride->mode != newMode) { - bool canSwitch = rtd.SupportsRideMode(newMode) || getGameState().cheats.showAllOperatingModes; + bool canSwitch = rtd.SupportsRideMode(newMode) || gameState.cheats.showAllOperatingModes; if (canSwitch) { ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index 6b492ffada14..dfba549fbb68 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -424,7 +424,7 @@ namespace OpenRCT2::GameActions InvalidateTestResults(*ride); FootpathQueueChainReset(); - if (!getGameState().cheats.disableClearanceChecks || !(tileElement->IsGhost())) + if (!gameState.cheats.disableClearanceChecks || !(tileElement->IsGhost())) { FootpathRemoveEdgesAt(mapLoc, tileElement); } @@ -461,7 +461,7 @@ namespace OpenRCT2::GameActions if (ride->mode != newMode) { bool canSwitch = ride->getRideTypeDescriptor().SupportsRideMode(newMode) - || getGameState().cheats.showAllOperatingModes; + || gameState.cheats.showAllOperatingModes; if (canSwitch) { ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); diff --git a/src/openrct2/actions/WallRemoveAction.cpp b/src/openrct2/actions/WallRemoveAction.cpp index 602e4c653369..3003f0b58038 100644 --- a/src/openrct2/actions/WallRemoveAction.cpp +++ b/src/openrct2/actions/WallRemoveAction.cpp @@ -51,7 +51,7 @@ namespace OpenRCT2::GameActions } const bool isGhost = GetFlags().has(CommandFlag::ghost); - if (!isGhost && gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode + if (!isGhost && gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode && !MapIsLocationOwned(_loc)) { return Result(Status::notOwned, STR_CANT_REMOVE_THIS, STR_LAND_NOT_OWNED_BY_PARK); diff --git a/src/openrct2/actions/WallSetColourAction.cpp b/src/openrct2/actions/WallSetColourAction.cpp index e1216def6f13..2372be514774 100644 --- a/src/openrct2/actions/WallSetColourAction.cpp +++ b/src/openrct2/actions/WallSetColourAction.cpp @@ -67,7 +67,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REPAINT_THIS, STR_OFF_EDGE_OF_MAP); } - if (gLegacyScene != LegacyScene::scenarioEditor && !MapIsLocationInPark(_loc) && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !MapIsLocationInPark(_loc) && !gameState.cheats.sandboxMode) { return Result(Status::notOwned, STR_CANT_REPAINT_THIS, STR_LAND_NOT_OWNED_BY_PARK); } diff --git a/src/openrct2/actions/WaterLowerAction.cpp b/src/openrct2/actions/WaterLowerAction.cpp index 5a455d7118c2..b8beec0a1277 100644 --- a/src/openrct2/actions/WaterLowerAction.cpp +++ b/src/openrct2/actions/WaterLowerAction.cpp @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) continue; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(CoordsXY{ x, y })) { @@ -139,7 +139,7 @@ namespace OpenRCT2::GameActions { for (int32_t x = validRange.GetX1(); x <= validRange.GetX2(); x += kCoordsXYStep) { - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(CoordsXY{ x, y })) { diff --git a/src/openrct2/actions/WaterRaiseAction.cpp b/src/openrct2/actions/WaterRaiseAction.cpp index a35d433e7780..f6c1bc1ceb8d 100644 --- a/src/openrct2/actions/WaterRaiseAction.cpp +++ b/src/openrct2/actions/WaterRaiseAction.cpp @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) continue; - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(CoordsXY{ x, y })) { @@ -152,7 +152,7 @@ namespace OpenRCT2::GameActions { for (int32_t x = validRange.GetX1(); x <= validRange.GetX2(); x += kCoordsXYStep) { - if (gLegacyScene != LegacyScene::scenarioEditor && !getGameState().cheats.sandboxMode) + if (gLegacyScene != LegacyScene::scenarioEditor && !gameState.cheats.sandboxMode) { if (!MapIsLocationInPark(CoordsXY{ x, y })) { diff --git a/src/openrct2/actions/WaterSetHeightAction.cpp b/src/openrct2/actions/WaterSetHeightAction.cpp index b1ee86b8aa6c..ffd0208ce616 100644 --- a/src/openrct2/actions/WaterSetHeightAction.cpp +++ b/src/openrct2/actions/WaterSetHeightAction.cpp @@ -119,7 +119,7 @@ namespace OpenRCT2::GameActions int32_t surfaceHeight = TileElementHeight(_coords); FootpathRemoveLitter({ _coords, surfaceHeight }); - if (!getGameState().cheats.disableClearanceChecks) + if (!gameState.cheats.disableClearanceChecks) WallRemoveAtZ({ _coords, surfaceHeight }); SurfaceElement* surfaceElement = MapGetSurfaceElementAt(_coords); diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 7954411469cd..037e682bef15 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1407,7 +1407,7 @@ static std::optional TrackDesignPlaceEntrances( } else { - auto res = GameActions::RideEntranceExitPlaceAction::TrackPlaceQuery(newCoords, false); + auto res = GameActions::RideEntranceExitPlaceAction::TrackPlaceQuery(gameState, newCoords, false); if (res.error != GameActions::Status::ok) { return res; From 5ed53d36106249cf1e6e3d17f786467da9942788 Mon Sep 17 00:00:00 2001 From: 73 <94884086+733737@users.noreply.github.com> Date: Fri, 9 Jan 2026 03:42:56 -0500 Subject: [PATCH 203/222] Rename Vehicle.VirginaReel.cpp to Vehicle.VirginiaReel.cpp (#25781) Co-authored-by: matheusvb3 --- src/openrct2/libopenrct2.vcxproj | 2 +- .../{Vehicle.VirginaReel.cpp => Vehicle.VirginiaReel.cpp} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/openrct2/paint/vehicle/{Vehicle.VirginaReel.cpp => Vehicle.VirginiaReel.cpp} (100%) diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index dd0d367c8489..34bb1b2990ce 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -1051,7 +1051,7 @@ - + diff --git a/src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp b/src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp similarity index 100% rename from src/openrct2/paint/vehicle/Vehicle.VirginaReel.cpp rename to src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp From fa46857d4716b14820aa78e882b7e9a3090e9e00 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 9 Jan 2026 08:51:31 -0300 Subject: [PATCH 204/222] Remove redundant namespace qualifiers from /actions folder (#25773) --- src/openrct2/actions/BannerPlaceAction.cpp | 4 +-- .../actions/FootpathAdditionPlaceAction.cpp | 2 +- src/openrct2/actions/GameAction.cpp | 6 ++--- src/openrct2/actions/GameAction.h | 8 +++--- src/openrct2/actions/LandLowerAction.cpp | 2 +- src/openrct2/actions/LandRaiseAction.cpp | 2 +- src/openrct2/actions/LandSetRightsAction.cpp | 2 +- src/openrct2/actions/MapChangeSizeAction.cpp | 2 +- .../actions/ParkEntrancePlaceAction.cpp | 2 +- src/openrct2/actions/ParkMarketingAction.cpp | 2 +- src/openrct2/actions/RideCreateAction.cpp | 4 +-- .../actions/RideEntranceExitPlaceAction.cpp | 6 ++--- .../actions/RideSetAppearanceAction.cpp | 25 ++++++++----------- src/openrct2/actions/RideSetStatusAction.cpp | 2 +- .../actions/SmallSceneryRemoveAction.cpp | 4 +-- src/openrct2/actions/StaffSetCostumeAction.h | 4 +-- .../actions/SurfaceSetStyleAction.cpp | 4 +-- src/openrct2/actions/TrackDesignAction.cpp | 11 ++++---- src/openrct2/actions/TrackPlaceAction.cpp | 10 ++++---- src/openrct2/actions/TrackPlaceAction.h | 4 +-- src/openrct2/actions/TrackRemoveAction.cpp | 4 +-- .../actions/TrackSetBrakeSpeedAction.cpp | 3 +-- .../actions/TrackSetBrakeSpeedAction.h | 2 +- src/openrct2/actions/WallPlaceAction.cpp | 4 +-- src/openrct2/actions/WallPlaceAction.h | 2 +- src/openrct2/actions/WaterRaiseAction.cpp | 2 +- 26 files changed, 57 insertions(+), 66 deletions(-) diff --git a/src/openrct2/actions/BannerPlaceAction.cpp b/src/openrct2/actions/BannerPlaceAction.cpp index 0cdf0e1bcffa..e2132addf406 100644 --- a/src/openrct2/actions/BannerPlaceAction.cpp +++ b/src/openrct2/actions/BannerPlaceAction.cpp @@ -97,7 +97,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_POSITION_THIS_HERE, STR_TOO_MANY_BANNERS_IN_GAME); } - auto* bannerEntry = OpenRCT2::ObjectManager::GetObjectEntry(_bannerType); + auto* bannerEntry = ObjectManager::GetObjectEntry(_bannerType); if (bannerEntry == nullptr) { LOG_ERROR("Banner entry not found for bannerType %u", _bannerType); @@ -124,7 +124,7 @@ namespace OpenRCT2::GameActions return Result(Status::noFreeElements, STR_CANT_POSITION_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } - auto* bannerEntry = OpenRCT2::ObjectManager::GetObjectEntry(_bannerType); + auto* bannerEntry = ObjectManager::GetObjectEntry(_bannerType); if (bannerEntry == nullptr) { LOG_ERROR("Banner entry not found for bannerType %u", _bannerType); diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index 531c0cb95cd0..83d600758feb 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -162,7 +162,7 @@ namespace OpenRCT2::GameActions return res; } - auto* pathAdditionEntry = OpenRCT2::ObjectManager::GetObjectEntry(_entryIndex); + auto* pathAdditionEntry = ObjectManager::GetObjectEntry(_entryIndex); if (pathAdditionEntry == nullptr) { LOG_ERROR("Unknown footpath addition entry for entryIndex %d", _entryIndex); diff --git a/src/openrct2/actions/GameAction.cpp b/src/openrct2/actions/GameAction.cpp index a5ef98cd8e12..e8b1fc77b065 100644 --- a/src/openrct2/actions/GameAction.cpp +++ b/src/openrct2/actions/GameAction.cpp @@ -293,7 +293,7 @@ namespace OpenRCT2::GameActions // Some actions are not recorded in the replay. const auto ignoreForReplays = (actionFlags & Flags::IgnoreForReplays) != 0; - auto* replayManager = OpenRCT2::GetContext()->GetReplayManager(); + auto* replayManager = GetContext()->GetReplayManager(); if (replayManager != nullptr && (replayManager->IsReplaying() || replayManager->IsNormalising())) { // We only accept replay commands as long the replay is active. @@ -472,7 +472,7 @@ namespace OpenRCT2::GameActions const char* GameAction::GetName() const { - return OpenRCT2::GameActions::GetName(_type); + return GameActions::GetName(_type); } bool GameAction::LocationValid(const CoordsXY& coords) const @@ -494,7 +494,7 @@ namespace OpenRCT2::GameActions obj.Set("type", EnumValue(_type)); auto flags = GetActionFlags(); - obj.Set("isClientOnly", (flags & GameActions::Flags::ClientOnly) != 0); + obj.Set("isClientOnly", (flags & Flags::ClientOnly) != 0); obj.Set("result", true); // Call the subscriptions diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index aa83e7d2a06b..3eb4f9c62cf6 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -113,7 +113,7 @@ namespace OpenRCT2::GameActions { public: using Ptr = std::unique_ptr; - using Callback_t = std::function; + using Callback_t = std::function; private: GameCommand const _type; @@ -160,14 +160,14 @@ namespace OpenRCT2::GameActions // Make sure we execute some things only on the client. uint16_t flags = 0; - if ((GetFlags().has(CommandFlag::ghost)) != 0 || (GetFlags().has(CommandFlag::noSpend)) != 0) + if (GetFlags().hasAny(CommandFlag::ghost, CommandFlag::noSpend)) { - flags |= OpenRCT2::GameActions::Flags::ClientOnly; + flags |= Flags::ClientOnly; } if (GetFlags().has(CommandFlag::allowDuringPaused)) { - flags |= OpenRCT2::GameActions::Flags::AllowWhilePaused; + flags |= Flags::AllowWhilePaused; } return flags; diff --git a/src/openrct2/actions/LandLowerAction.cpp b/src/openrct2/actions/LandLowerAction.cpp index 1257174d80c1..c2fde776eef0 100644 --- a/src/openrct2/actions/LandLowerAction.cpp +++ b/src/openrct2/actions/LandLowerAction.cpp @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions if (isExecuting) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, { _coords.x, _coords.y, TileElementHeight(_coords) }); + Audio::Play3D(Audio::SoundId::placeItem, { _coords.x, _coords.y, TileElementHeight(_coords) }); } uint8_t maxHeight = MapGetHighestLandHeight(validRange); diff --git a/src/openrct2/actions/LandRaiseAction.cpp b/src/openrct2/actions/LandRaiseAction.cpp index 40fb44e901fc..aa55d8d7ab9c 100644 --- a/src/openrct2/actions/LandRaiseAction.cpp +++ b/src/openrct2/actions/LandRaiseAction.cpp @@ -82,7 +82,7 @@ namespace OpenRCT2::GameActions if (isExecuting) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, { _coords.x, _coords.y, TileElementHeight(_coords) }); + Audio::Play3D(Audio::SoundId::placeItem, { _coords.x, _coords.y, TileElementHeight(_coords) }); } uint8_t minHeight = MapGetLowestLandHeight(validRange); diff --git a/src/openrct2/actions/LandSetRightsAction.cpp b/src/openrct2/actions/LandSetRightsAction.cpp index 464aa10ee2ae..1c197773be6b 100644 --- a/src/openrct2/actions/LandSetRightsAction.cpp +++ b/src/openrct2/actions/LandSetRightsAction.cpp @@ -109,7 +109,7 @@ namespace OpenRCT2::GameActions if (isExecuting) { MapCountRemainingLandRights(); - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::placeItem, centre); + Audio::Play3D(Audio::SoundId::placeItem, centre); } return res; } diff --git a/src/openrct2/actions/MapChangeSizeAction.cpp b/src/openrct2/actions/MapChangeSizeAction.cpp index 714cb7df3b0a..503f83665196 100644 --- a/src/openrct2/actions/MapChangeSizeAction.cpp +++ b/src/openrct2/actions/MapChangeSizeAction.cpp @@ -80,7 +80,7 @@ namespace OpenRCT2::GameActions MapRemoveOutOfRangeElements(); } - auto* ctx = OpenRCT2::GetContext(); + auto* ctx = GetContext(); auto& uiContext = ctx->GetUiContext(); auto* windowManager = uiContext.GetWindowManager(); diff --git a/src/openrct2/actions/ParkEntrancePlaceAction.cpp b/src/openrct2/actions/ParkEntrancePlaceAction.cpp index c1f075b50676..99b2649b31de 100644 --- a/src/openrct2/actions/ParkEntrancePlaceAction.cpp +++ b/src/openrct2/actions/ParkEntrancePlaceAction.cpp @@ -81,7 +81,7 @@ namespace OpenRCT2::GameActions return Result(Status::noFreeElements, STR_CANT_BUILD_THIS_HERE, STR_ERR_LANDSCAPE_DATA_AREA_FULL); } - if (gameState.park.entrances.size() >= OpenRCT2::Limits::kMaxParkEntrances) + if (gameState.park.entrances.size() >= Limits::kMaxParkEntrances) { return Result(Status::invalidParameters, STR_CANT_BUILD_THIS_HERE, STR_ERR_TOO_MANY_PARK_ENTRANCES); } diff --git a/src/openrct2/actions/ParkMarketingAction.cpp b/src/openrct2/actions/ParkMarketingAction.cpp index 19f7e0d0d3cb..c3f5f10f0be7 100644 --- a/src/openrct2/actions/ParkMarketingAction.cpp +++ b/src/openrct2/actions/ParkMarketingAction.cpp @@ -80,7 +80,7 @@ namespace OpenRCT2::GameActions MarketingNewCampaign(campaign); // We are only interested in invalidating the finances (marketing) window - auto windowManager = OpenRCT2::Ui::GetWindowManager(); + auto windowManager = Ui::GetWindowManager(); windowManager->BroadcastIntent(Intent(INTENT_ACTION_UPDATE_CASH)); return CreateResult(); diff --git a/src/openrct2/actions/RideCreateAction.cpp b/src/openrct2/actions/RideCreateAction.cpp index 9a0ac4848e9f..dace05ba1fb0 100644 --- a/src/openrct2/actions/RideCreateAction.cpp +++ b/src/openrct2/actions/RideCreateAction.cpp @@ -178,7 +178,7 @@ namespace OpenRCT2::GameActions { ride->proposedNumTrains = 32; } - ride->maxTrains = OpenRCT2::Limits::kMaxTrainsPerRide; + ride->maxTrains = Limits::kMaxTrainsPerRide; ride->numCarsPerTrain = 1; ride->proposedNumCarsPerTrain = rideEntry->max_cars_in_train; ride->minWaitingTime = 10; @@ -188,7 +188,7 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); if (rtd.HasFlag(RtdFlag::allowMusic)) { - auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); + auto& objManager = GetContext()->GetObjectManager(); ride->music = objManager.GetLoadedObjectEntryIndex(rtd.DefaultMusic); if (ride->music != kObjectEntryIndexNull) { diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp index 5821762b412d..2f9faddcb9be 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.cpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.cpp @@ -89,8 +89,7 @@ namespace OpenRCT2::GameActions if (!location.IsNull()) { - auto rideEntranceExitRemove = GameActions::RideEntranceExitRemoveAction( - location.ToCoordsXY(), _rideIndex, _stationNum, _isExit); + auto rideEntranceExitRemove = RideEntranceExitRemoveAction(location.ToCoordsXY(), _rideIndex, _stationNum, _isExit); rideEntranceExitRemove.SetFlags(GetFlags()); auto result = QueryNested(&rideEntranceExitRemove, gameState); @@ -165,8 +164,7 @@ namespace OpenRCT2::GameActions const auto location = _isExit ? station.Exit : station.Entrance; if (!location.IsNull()) { - auto rideEntranceExitRemove = GameActions::RideEntranceExitRemoveAction( - location.ToCoordsXY(), _rideIndex, _stationNum, _isExit); + auto rideEntranceExitRemove = RideEntranceExitRemoveAction(location.ToCoordsXY(), _rideIndex, _stationNum, _isExit); rideEntranceExitRemove.SetFlags(GetFlags()); auto result = ExecuteNested(&rideEntranceExitRemove, gameState); diff --git a/src/openrct2/actions/RideSetAppearanceAction.cpp b/src/openrct2/actions/RideSetAppearanceAction.cpp index 7b5d7720af93..19e3b9b0685d 100644 --- a/src/openrct2/actions/RideSetAppearanceAction.cpp +++ b/src/openrct2/actions/RideSetAppearanceAction.cpp @@ -41,7 +41,7 @@ namespace OpenRCT2::GameActions uint16_t RideSetAppearanceAction::GetActionFlags() const { - return GameAction::GetActionFlags() | GameActions::Flags::AllowWhilePaused; + return GameAction::GetActionFlags() | Flags::AllowWhilePaused; } void RideSetAppearanceAction::Serialise(DataSerialiser& stream) @@ -50,14 +50,13 @@ namespace OpenRCT2::GameActions stream << DS_TAG(_rideIndex) << DS_TAG(_type) << DS_TAG(_value) << DS_TAG(_index); } - GameActions::Result RideSetAppearanceAction::Query(GameState_t& gameState) const + Result RideSetAppearanceAction::Query(GameState_t& gameState) const { auto ride = GetRide(_rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return GameActions::Result( - GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } switch (_type) @@ -68,8 +67,7 @@ namespace OpenRCT2::GameActions if (_index >= std::size(ride->trackColours)) { LOG_ERROR("Invalid track colour %u", _index); - return GameActions::Result( - GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); } break; case RideSetAppearanceType::VehicleColourBody: @@ -78,8 +76,7 @@ namespace OpenRCT2::GameActions if (_index >= std::size(ride->vehicleColours)) { LOG_ERROR("Invalid vehicle colour %u", _index); - return GameActions::Result( - GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_INVALID_COLOUR); } break; case RideSetAppearanceType::VehicleColourScheme: @@ -88,21 +85,19 @@ namespace OpenRCT2::GameActions break; default: LOG_ERROR("Invalid ride appearance type %u", _type); - return GameActions::Result( - GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_VALUE_OUT_OF_RANGE); } - return GameActions::Result(); + return Result(); } - GameActions::Result RideSetAppearanceAction::Execute(GameState_t& gameState) const + Result RideSetAppearanceAction::Execute(GameState_t& gameState) const { auto ride = GetRide(_rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %u", _rideIndex.ToUnderlying()); - return GameActions::Result( - GameActions::Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_RIDE_NOT_FOUND); } switch (_type) @@ -151,7 +146,7 @@ namespace OpenRCT2::GameActions auto* windowMgr = Ui::GetWindowManager(); windowMgr->InvalidateByNumber(WindowClass::ride, _rideIndex.ToUnderlying()); - auto res = GameActions::Result(); + auto res = Result(); if (!ride->overallView.IsNull()) { auto location = ride->overallView.ToTileCentre(); diff --git a/src/openrct2/actions/RideSetStatusAction.cpp b/src/openrct2/actions/RideSetStatusAction.cpp index a9de5c80e39d..2d37ec141841 100644 --- a/src/openrct2/actions/RideSetStatusAction.cpp +++ b/src/openrct2/actions/RideSetStatusAction.cpp @@ -245,7 +245,7 @@ namespace OpenRCT2::GameActions Guard::Assert(false, "Invalid ride status %u", _status); break; } - auto windowManager = OpenRCT2::Ui::GetWindowManager(); + auto windowManager = Ui::GetWindowManager(); windowManager->BroadcastIntent(Intent(INTENT_ACTION_REFRESH_CAMPAIGN_RIDE_LIST)); return res; diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index a49fac452406..d812907f3691 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -64,7 +64,7 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_OFF_EDGE_OF_MAP); } - auto* entry = OpenRCT2::ObjectManager::GetObjectEntry(_sceneryType); + auto* entry = ObjectManager::GetObjectEntry(_sceneryType); if (entry == nullptr) { return Result(Status::invalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); @@ -111,7 +111,7 @@ namespace OpenRCT2::GameActions { Result res = Result(); - auto* entry = OpenRCT2::ObjectManager::GetObjectEntry(_sceneryType); + auto* entry = ObjectManager::GetObjectEntry(_sceneryType); if (entry == nullptr) { LOG_ERROR("Invalid small scenery type %u", _sceneryType); diff --git a/src/openrct2/actions/StaffSetCostumeAction.h b/src/openrct2/actions/StaffSetCostumeAction.h index 31f2206424ed..e7e868b3b0fd 100644 --- a/src/openrct2/actions/StaffSetCostumeAction.h +++ b/src/openrct2/actions/StaffSetCostumeAction.h @@ -18,11 +18,11 @@ namespace OpenRCT2::GameActions { private: EntityId _spriteIndex{ EntityId::GetNull() }; - ObjectEntryIndex _costume = OpenRCT2::kObjectEntryIndexNull; + ObjectEntryIndex _costume = kObjectEntryIndexNull; public: StaffSetCostumeAction() = default; - StaffSetCostumeAction(EntityId spriteIndex, OpenRCT2::ObjectEntryIndex costume); + StaffSetCostumeAction(EntityId spriteIndex, ObjectEntryIndex costume); void AcceptParameters(GameActionParameterVisitor&) final; diff --git a/src/openrct2/actions/SurfaceSetStyleAction.cpp b/src/openrct2/actions/SurfaceSetStyleAction.cpp index 5c253b91e8de..072175d4a4f3 100644 --- a/src/openrct2/actions/SurfaceSetStyleAction.cpp +++ b/src/openrct2/actions/SurfaceSetStyleAction.cpp @@ -52,7 +52,7 @@ namespace OpenRCT2::GameActions res.expenditure = ExpenditureType::landscaping; auto validRange = ClampRangeWithinMap(_range.Normalise()); - auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); + auto& objManager = GetContext()->GetObjectManager(); if (_surfaceStyle != kObjectEntryIndexNull) { const auto surfaceObj = objManager.GetLoadedObject(_surfaceStyle); @@ -185,7 +185,7 @@ namespace OpenRCT2::GameActions if (_surfaceStyle != curSurfaceStyle) { - auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); + auto& objManager = GetContext()->GetObjectManager(); const auto* surfaceObject = objManager.GetLoadedObject(_surfaceStyle); if (surfaceObject != nullptr) { diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index bb405cb6f5f7..289d0961bcc1 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -224,18 +224,17 @@ namespace OpenRCT2::GameActions if (entryIndex != kObjectEntryIndexNull) { auto colour = RideGetUnusedPresetVehicleColour(entryIndex); - auto rideSetVehicleAction = GameActions::RideSetVehicleAction( - ride->id, GameActions::RideSetVehicleType::RideEntry, entryIndex, colour); + auto rideSetVehicleAction = RideSetVehicleAction(ride->id, RideSetVehicleType::RideEntry, entryIndex, colour); ExecuteNested(&rideSetVehicleAction, gameState); } SetOperatingSettingNested(ride->id, RideSetSetting::Mode, static_cast(_td.operation.rideMode), flags); - auto rideSetVehicleAction2 = GameActions::RideSetVehicleAction( - ride->id, GameActions::RideSetVehicleType::NumTrains, _td.trackAndVehicle.numberOfTrains); + auto rideSetVehicleAction2 = RideSetVehicleAction( + ride->id, RideSetVehicleType::NumTrains, _td.trackAndVehicle.numberOfTrains); ExecuteNested(&rideSetVehicleAction2, gameState); - auto rideSetVehicleAction3 = GameActions::RideSetVehicleAction( - ride->id, GameActions::RideSetVehicleType::NumCarsPerTrain, _td.trackAndVehicle.numberOfCarsPerTrain); + auto rideSetVehicleAction3 = RideSetVehicleAction( + ride->id, RideSetVehicleType::NumCarsPerTrain, _td.trackAndVehicle.numberOfCarsPerTrain); ExecuteNested(&rideSetVehicleAction3, gameState); SetOperatingSettingNested(ride->id, RideSetSetting::Departure, _td.operation.departFlags, flags); diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 5fe110dc056b..2bbaf3596e25 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -499,7 +499,7 @@ namespace OpenRCT2::GameActions // Remove walls in the directions this track intersects uint8_t intersectingDirections = ted.sequences[blockIndex].allowedWallEdges; intersectingDirections ^= 0x0F; - intersectingDirections = Numerics::rol4(intersectingDirections, _origin.direction); + intersectingDirections = rol4(intersectingDirections, _origin.direction); for (int32_t i = 0; i < kNumOrthogonalDirections; i++) { if (intersectingDirections & (1 << i)) @@ -614,8 +614,8 @@ namespace OpenRCT2::GameActions { if (!GetFlags().has(CommandFlag::ghost) && !gameState.cheats.disableClearanceChecks) { - for (int32_t chosenDirection = Numerics::bitScanForward(connectionSides); chosenDirection != -1; - chosenDirection = Numerics::bitScanForward(connectionSides)) + for (int32_t chosenDirection = bitScanForward(connectionSides); chosenDirection != -1; + chosenDirection = bitScanForward(connectionSides)) { connectionSides &= ~(1 << chosenDirection); CoordsXY tempLoc{ mapLoc.x, mapLoc.y }; @@ -688,8 +688,8 @@ namespace OpenRCT2::GameActions if (canSwitch) { ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); - auto rideSetSetting = GameActions::RideSetSettingAction( - ride->id, GameActions::RideSetSetting::Mode, static_cast(newMode)); + auto rideSetSetting = RideSetSettingAction( + ride->id, RideSetSetting::Mode, static_cast(newMode)); ExecuteNested(&rideSetSetting, gameState); } } diff --git a/src/openrct2/actions/TrackPlaceAction.h b/src/openrct2/actions/TrackPlaceAction.h index 0e420b250dca..8604c4d09bae 100644 --- a/src/openrct2/actions/TrackPlaceAction.h +++ b/src/openrct2/actions/TrackPlaceAction.h @@ -43,8 +43,8 @@ namespace OpenRCT2::GameActions uint16_t GetActionFlags() const final; void Serialise(DataSerialiser& stream) override; - GameActions::Result Query(GameState_t& gameState) const override; - GameActions::Result Execute(GameState_t& gameState) const override; + Result Query(GameState_t& gameState) const override; + Result Execute(GameState_t& gameState) const override; private: bool CheckMapCapacity(int16_t numTiles) const; diff --git a/src/openrct2/actions/TrackRemoveAction.cpp b/src/openrct2/actions/TrackRemoveAction.cpp index dfba549fbb68..5a0f9f43bd5c 100644 --- a/src/openrct2/actions/TrackRemoveAction.cpp +++ b/src/openrct2/actions/TrackRemoveAction.cpp @@ -465,8 +465,8 @@ namespace OpenRCT2::GameActions if (canSwitch) { ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); - auto rideSetSetting = GameActions::RideSetSettingAction( - ride->id, GameActions::RideSetSetting::Mode, static_cast(newMode)); + auto rideSetSetting = RideSetSettingAction( + ride->id, RideSetSetting::Mode, static_cast(newMode)); ExecuteNested(&rideSetSetting, gameState); } } diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp index 36a55e1511bb..b971dd1011ce 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp @@ -17,8 +17,7 @@ namespace OpenRCT2::GameActions { - TrackSetBrakeSpeedAction::TrackSetBrakeSpeedAction( - const CoordsXYZ& loc, OpenRCT2::TrackElemType trackType, uint8_t brakeSpeed) + TrackSetBrakeSpeedAction::TrackSetBrakeSpeedAction(const CoordsXYZ& loc, TrackElemType trackType, uint8_t brakeSpeed) : _loc(loc) , _trackType(trackType) , _brakeSpeed(brakeSpeed) diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.h b/src/openrct2/actions/TrackSetBrakeSpeedAction.h index 0489ea673d30..65447a992a8e 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.h +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.h @@ -22,7 +22,7 @@ namespace OpenRCT2::GameActions public: TrackSetBrakeSpeedAction() = default; - TrackSetBrakeSpeedAction(const CoordsXYZ& loc, OpenRCT2::TrackElemType trackType, uint8_t brakeSpeed); + TrackSetBrakeSpeedAction(const CoordsXYZ& loc, TrackElemType trackType, uint8_t brakeSpeed); void AcceptParameters(GameActionParameterVisitor&) final; diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index bf05008586af..781012522fe4 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -402,7 +402,7 @@ namespace OpenRCT2::GameActions bool WallPlaceAction::WallCheckObstructionWithTrack( const WallSceneryEntry* wall, int32_t z0, TrackElement* trackElement, bool* wallAcrossTrack) const { - OpenRCT2::TrackElemType trackType = trackElement->GetTrackType(); + TrackElemType trackType = trackElement->GetTrackType(); using namespace OpenRCT2::TrackMetaData; const auto& ted = GetTrackElementDescriptor(trackType); @@ -588,7 +588,7 @@ namespace OpenRCT2::GameActions } bool WallPlaceAction::TrackIsAllowedWallEdges( - ride_type_t rideType, OpenRCT2::TrackElemType trackType, uint8_t trackSequence, uint8_t direction) + ride_type_t rideType, TrackElemType trackType, uint8_t trackSequence, uint8_t direction) { if (!GetRideTypeDescriptor(rideType).HasFlag(RtdFlag::noWallsAroundTrack)) { diff --git a/src/openrct2/actions/WallPlaceAction.h b/src/openrct2/actions/WallPlaceAction.h index 5f35f0d1e7ed..a33eaef21d18 100644 --- a/src/openrct2/actions/WallPlaceAction.h +++ b/src/openrct2/actions/WallPlaceAction.h @@ -70,6 +70,6 @@ namespace OpenRCT2::GameActions * Some thin tracks for example are allowed to have walls either side of the track, but wider tracks can not. */ static bool TrackIsAllowedWallEdges( - ride_type_t rideType, OpenRCT2::TrackElemType trackType, uint8_t trackSequence, uint8_t direction); + ride_type_t rideType, TrackElemType trackType, uint8_t trackSequence, uint8_t direction); }; } // namespace OpenRCT2::GameActions diff --git a/src/openrct2/actions/WaterRaiseAction.cpp b/src/openrct2/actions/WaterRaiseAction.cpp index f6c1bc1ceb8d..e118e02b94b3 100644 --- a/src/openrct2/actions/WaterRaiseAction.cpp +++ b/src/openrct2/actions/WaterRaiseAction.cpp @@ -136,7 +136,7 @@ namespace OpenRCT2::GameActions if (isExecuting && hasChanged) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::layingOutWater, res.position); + Audio::Play3D(Audio::SoundId::layingOutWater, res.position); } // Force ride construction to recheck area _currentTrackSelectionFlags.set(TrackSelectionFlag::recheck); From ed1e2a84b440f653e026add3b5511edcf99ab796 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Fri, 9 Jan 2026 12:54:44 +0100 Subject: [PATCH 205/222] Remove Drawing.h include from a few more places (#25779) --- src/openrct2-ui/scripting/ScGraphicsContext.hpp | 1 + src/openrct2/Context.cpp | 1 + src/openrct2/drawing/Drawing.String.cpp | 1 + src/openrct2/drawing/IDrawingContext.h | 6 +++++- src/openrct2/drawing/X8DrawingEngine.h | 1 + src/openrct2/scenes/preloader/PreloaderScene.h | 1 - 6 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index b57164c2b23f..97dcc1248a16 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -15,6 +15,7 @@ #include #include + #include #include using namespace OpenRCT2::Drawing; diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index b9d26595222d..6c32660e175a 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -39,6 +39,7 @@ #include "core/Path.hpp" #include "core/String.hpp" #include "core/Timer.hpp" +#include "drawing/Drawing.h" #include "drawing/IDrawingEngine.h" #include "drawing/Image.h" #include "drawing/LightFX.h" diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 2a47f503f769..6575f814fa28 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -16,6 +16,7 @@ #include "../core/String.hpp" #include "../core/UTF8.h" #include "../core/UnicodeChar.h" +#include "../drawing/Drawing.h" #include "../drawing/IDrawingContext.h" #include "../drawing/IDrawingEngine.h" #include "../drawing/Text.h" diff --git a/src/openrct2/drawing/IDrawingContext.h b/src/openrct2/drawing/IDrawingContext.h index eb1ce7ccba79..2677081f7321 100644 --- a/src/openrct2/drawing/IDrawingContext.h +++ b/src/openrct2/drawing/IDrawingContext.h @@ -9,14 +9,18 @@ #pragma once -#include "Drawing.h" +#include "../world/Location.hpp" +#include "FilterPaletteIds.h" +#include "PaletteIndex.h" #include "TTF.h" +struct PaletteMap; struct TextDrawInfo; namespace OpenRCT2::Drawing { struct IDrawingEngine; + struct RenderTarget; struct IDrawingContext { diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index 49a608293a00..d89edc3305d2 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -12,6 +12,7 @@ #include "IDrawingContext.h" #include "IDrawingEngine.h" #include "InvalidationGrid.h" +#include "RenderTarget.h" #include diff --git a/src/openrct2/scenes/preloader/PreloaderScene.h b/src/openrct2/scenes/preloader/PreloaderScene.h index 38a502ec9732..8a1d9b566db6 100644 --- a/src/openrct2/scenes/preloader/PreloaderScene.h +++ b/src/openrct2/scenes/preloader/PreloaderScene.h @@ -10,7 +10,6 @@ #pragma once #include "../../core/JobPool.h" -#include "../../drawing/Drawing.h" #include "../Scene.h" namespace OpenRCT2 From e77f495c65a9642fd5e66827407111c715903e01 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 9 Jan 2026 08:58:41 -0300 Subject: [PATCH 206/222] Remove redundant namespace qualifiers from /paint directory (#25780) --- src/openrct2/paint/Painter.cpp | 4 ++-- src/openrct2/paint/support/WoodenSupports.cpp | 8 ++++---- src/openrct2/paint/tile_element/Paint.Banner.cpp | 6 +++--- src/openrct2/paint/tile_element/Paint.Entrance.cpp | 5 ++--- src/openrct2/paint/tile_element/Paint.LargeScenery.cpp | 9 ++++----- src/openrct2/paint/tile_element/Paint.Path.cpp | 3 +-- src/openrct2/paint/tile_element/Paint.Wall.cpp | 6 +++--- src/openrct2/paint/track/coaster/AlpineCoaster.cpp | 2 -- .../paint/track/coaster/SingleRailRollerCoaster.cpp | 2 -- src/openrct2/paint/track/transport/Chairlift.cpp | 6 +++--- src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp | 3 +-- src/openrct2/paint/vehicle/Vehicle.Submarine.cpp | 2 +- src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp | 2 +- src/openrct2/paint/vehicle/VehiclePaint.cpp | 3 +-- 18 files changed, 30 insertions(+), 39 deletions(-) diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index aefed4921996..fe8ed8a80883 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -106,7 +106,7 @@ static bool ShouldShowFPS() if (gLegacyScene == LegacyScene::titleSequence) return true; - auto* windowMgr = Ui::GetWindowManager(); + auto* windowMgr = GetWindowManager(); return windowMgr->FindByClass(WindowClass::topToolbar); } @@ -188,7 +188,7 @@ PaintSession* Painter::CreateSession(RenderTarget& rt, uint32_t viewFlags, uint8 session->CurrentlyDrawnEntity = nullptr; session->CurrentlyDrawnTileElement = nullptr; session->Surface = nullptr; - session->SelectedElement = OpenRCT2::TileInspector::GetSelectedElement(); + session->SelectedElement = TileInspector::GetSelectedElement(); session->InteractionType = ViewportInteractionItem::none; session->PathElementOnSameHeight = nullptr; session->TrackElementOnSameHeight = nullptr; diff --git a/src/openrct2/paint/support/WoodenSupports.cpp b/src/openrct2/paint/support/WoodenSupports.cpp index 83d9cfcaf0c3..65240cf76a48 100644 --- a/src/openrct2/paint/support/WoodenSupports.cpp +++ b/src/openrct2/paint/support/WoodenSupports.cpp @@ -655,10 +655,10 @@ bool PathBoxSupportsPaintSetup( } bool DrawSupportForSequenceA( - PaintSession& session, const WoodenSupportType supportType, const OpenRCT2::TrackElemType trackType, const uint8_t sequence, + PaintSession& session, const WoodenSupportType supportType, const TrackElemType trackType, const uint8_t sequence, const Direction direction, const int32_t height, const ImageId imageTemplate) { - const auto& ted = OpenRCT2::TrackMetaData::GetTrackElementDescriptor(trackType); + const auto& ted = TrackMetaData::GetTrackElementDescriptor(trackType); const auto& sequenceDesc = ted.sequences[sequence]; const auto& desc = sequenceDesc.woodenSupports; @@ -672,10 +672,10 @@ bool DrawSupportForSequenceA( } bool DrawSupportForSequenceB( - PaintSession& session, const WoodenSupportType supportType, const OpenRCT2::TrackElemType trackType, const uint8_t sequence, + PaintSession& session, const WoodenSupportType supportType, const TrackElemType trackType, const uint8_t sequence, const Direction direction, const int32_t height, const ImageId imageTemplate) { - const auto& ted = OpenRCT2::TrackMetaData::GetTrackElementDescriptor(trackType); + const auto& ted = TrackMetaData::GetTrackElementDescriptor(trackType); const auto& sequenceDesc = ted.sequences[sequence]; const auto& desc = sequenceDesc.woodenSupports; diff --git a/src/openrct2/paint/tile_element/Paint.Banner.cpp b/src/openrct2/paint/tile_element/Paint.Banner.cpp index ad2c05f1fa0f..75aeac615df8 100644 --- a/src/openrct2/paint/tile_element/Paint.Banner.cpp +++ b/src/openrct2/paint/tile_element/Paint.Banner.cpp @@ -51,7 +51,7 @@ static void PaintBannerScrollingText( return; auto scrollingMode = bannerEntry.scrolling_mode + (direction & 3); - if (scrollingMode >= Drawing::ScrollingText::kMaxModes) + if (scrollingMode >= ScrollingText::kMaxModes) { return; } @@ -66,12 +66,12 @@ static void PaintBannerScrollingText( } else { - OpenRCT2::FormatStringLegacy(text, sizeof(text), STR_BANNER_TEXT_FORMAT, ft.Data()); + FormatStringLegacy(text, sizeof(text), STR_BANNER_TEXT_FORMAT, ft.Data()); } auto stringWidth = GfxGetStringWidth(text, FontStyle::tiny); auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; - auto imageId = Drawing::ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, PaletteIndex::pi0); + auto imageId = ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, PaletteIndex::pi0); PaintAddImageAsChild(session, imageId, { 0, 0, height + 22 }, { bbOffset, { 1, 1, 21 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 136ca2375d90..e61a5adee7da 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -80,8 +80,7 @@ static void PaintRideEntranceExitScrollingText( auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; PaintAddImageAsChild( - session, - Drawing::ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, stationObj.ScrollingMode, PaletteIndex::pi0), + session, ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, stationObj.ScrollingMode, PaletteIndex::pi0), { 0, 0, height + stationObj.Height }, { { 2, 2, height + stationObj.Height }, { 28, 28, 51 } }); } @@ -261,7 +260,7 @@ static void PaintParkEntranceScrollingText( auto stringWidth = GfxGetStringWidth(text, FontStyle::tiny); auto scroll = stringWidth > 0 ? (gameState.currentTicks / 2) % stringWidth : 0; - auto imageIndex = Drawing::ScrollingText::setup( + auto imageIndex = ScrollingText::setup( session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode + direction / 2, PaletteIndex::pi0); auto textHeight = height + entrance.GetTextHeight(); PaintAddImageAsChild(session, imageIndex, { 0, 0, textHeight }, { { 2, 2, textHeight }, { 28, 28, 47 } }); diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index 1b58c7d57e91..e4d972f1b8cd 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -36,7 +36,6 @@ using namespace OpenRCT2; using namespace OpenRCT2::Drawing; -using namespace OpenRCT2::Numerics; // clang-format off static constexpr BoundBoxXY LargeSceneryBoundBoxes[] = { @@ -80,7 +79,7 @@ static void PaintLargeScenerySupports( WoodenBSupportsPaintSetupRotated( session, WoodenSupportType::truss, WoodenSupportSubType::neSw, direction, supportHeight, imageTemplate, transitionType); - int32_t clearanceHeight = ceil2(tileElement.GetClearanceZ() + 15, 16); + int32_t clearanceHeight = Numerics::ceil2(tileElement.GetClearanceZ() + 15, 16); if (tile.allowSupportsAbove) { PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, clearanceHeight, 0x20); @@ -221,7 +220,7 @@ static void PaintLargeScenery3DText( char signString[256]; auto ft = Formatter(); banner->formatTextTo(ft); - OpenRCT2::FormatStringLegacy(signString, sizeof(signString), STR_STRINGID, ft.Data()); + FormatStringLegacy(signString, sizeof(signString), STR_STRINGID, ft.Data()); auto offsetY = text->offset[(direction & 1)].y * 2; if (text->flags & LARGE_SCENERY_TEXT_FLAG_VERTICAL) @@ -326,13 +325,13 @@ static void PaintLargeSceneryScrollingText( } else { - OpenRCT2::FormatStringLegacy(text, sizeof(text), STR_SCROLLING_SIGN_TEXT, ft.Data()); + FormatStringLegacy(text, sizeof(text), STR_SCROLLING_SIGN_TEXT, ft.Data()); } auto scrollMode = sceneryEntry.scrolling_mode + ((direction + 1) & 3); auto stringWidth = GfxGetStringWidth(text, FontStyle::tiny); auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; - auto imageId = Drawing::ScrollingText::setup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollMode, textPaletteIndex); + auto imageId = ScrollingText::setup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollMode, textPaletteIndex); PaintAddImageAsChild(session, imageId, { 0, 0, height + 25 }, { bbOffset, { 1, 1, 21 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 676b93d14326..0607752fe037 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -181,8 +181,7 @@ static void PathPaintQueueBanner( uint16_t scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; PaintAddImageAsChild( - session, - Drawing::ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, PaletteIndex::pi0), + session, ScrollingText::setup(session, STR_BANNER_TEXT_FORMAT, ft, scroll, scrollingMode, PaletteIndex::pi0), { 0, 0, height + 7 }, { boundBoxOffsets, { 1, 1, 21 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index 0f92c3205942..29c5fc6508da 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -164,7 +164,7 @@ static void PaintWallScrollingText( return; scrollingMode = wallEntry.scrolling_mode + ((direction + 1) & 3); - if (scrollingMode >= Drawing::ScrollingText::kMaxModes) + if (scrollingMode >= ScrollingText::kMaxModes) return; auto banner = wallElement.GetBanner(); @@ -183,12 +183,12 @@ static void PaintWallScrollingText( } else { - OpenRCT2::FormatStringLegacy(signString, sizeof(signString), STR_SCROLLING_SIGN_TEXT, ft.Data()); + FormatStringLegacy(signString, sizeof(signString), STR_SCROLLING_SIGN_TEXT, ft.Data()); } auto stringWidth = GfxGetStringWidth(signString, FontStyle::tiny); auto scroll = stringWidth > 0 ? (getGameState().currentTicks / 2) % stringWidth : 0; - auto imageId = Drawing::ScrollingText::setup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollingMode, textPaletteIndex); + auto imageId = ScrollingText::setup(session, STR_SCROLLING_SIGN_TEXT, ft, scroll, scrollingMode, textPaletteIndex); PaintAddImageAsChild(session, imageId, { 0, 0, height + 8 }, { boundsOffset, { 1, 1, 13 } }); } diff --git a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp index bb9c4889a0de..6d9effce24e4 100644 --- a/src/openrct2/paint/track/coaster/AlpineCoaster.cpp +++ b/src/openrct2/paint/track/coaster/AlpineCoaster.cpp @@ -20,8 +20,6 @@ #include "../../track/Segment.h" #include "../../track/Support.h" -using namespace OpenRCT2; - static constexpr TunnelGroup kTunnelGroup = TunnelGroup::Standard; namespace OpenRCT2::AlpineRC diff --git a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp index 61c5ad429e0d..8bacc35ce36e 100644 --- a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp @@ -20,8 +20,6 @@ #include "../../track/Segment.h" #include "../../track/Support.h" -using namespace OpenRCT2; - static constexpr TunnelGroup kTunnelGroup = TunnelGroup::Standard; namespace OpenRCT2::SingleRailRC diff --git a/src/openrct2/paint/track/transport/Chairlift.cpp b/src/openrct2/paint/track/transport/Chairlift.cpp index 14a2883365ee..f51c102781e3 100644 --- a/src/openrct2/paint/track/transport/Chairlift.cpp +++ b/src/openrct2/paint/track/transport/Chairlift.cpp @@ -150,7 +150,7 @@ static const TrackElement* ChairliftPaintUtilMapGetTrackElementAtFromRideFuzzy( }; static bool ChairliftPaintUtilIsFirstTrack( - const Ride& ride, const TrackElement& trackElement, const CoordsXY& pos, OpenRCT2::TrackElemType trackType) + const Ride& ride, const TrackElement& trackElement, const CoordsXY& pos, TrackElemType trackType) { if (trackElement.GetTrackType() != TrackElemType::beginStation) { @@ -170,7 +170,7 @@ static bool ChairliftPaintUtilIsFirstTrack( } static bool ChairliftPaintUtilIsLastTrack( - const Ride& ride, const TrackElement& trackElement, const CoordsXY& pos, OpenRCT2::TrackElemType trackType) + const Ride& ride, const TrackElement& trackElement, const CoordsXY& pos, TrackElemType trackType) { if (trackElement.GetTrackType() != TrackElemType::endStation) { @@ -662,7 +662,7 @@ static void ChairliftPaintRightQuarterTurn1Tile( } /* 0x008AAA0C */ -TrackPaintFunction GetTrackPaintFunctionChairlift(OpenRCT2::TrackElemType trackType) +TrackPaintFunction GetTrackPaintFunctionChairlift(TrackElemType trackType) { switch (trackType) { diff --git a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp index 377f71120b3d..c6cdb7d8100a 100644 --- a/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.LaunchedFreefall.cpp @@ -48,7 +48,7 @@ namespace OpenRCT2 { baseImage_id += 2; // Draw peeps sitting without transparent area between them for restraints } - auto directionOffset = OpenRCT2::Entity::Yaw::YawTo4(imageDirection); + auto directionOffset = Entity::Yaw::YawTo4(imageDirection); image_id = ImageId( baseImage_id + (((directionOffset + 0) & 3) * 3), vehicle->peep_tshirt_colours[0], vehicle->peep_tshirt_colours[1]); diff --git a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp index 633f61dc84f8..dc7d79adc9ca 100644 --- a/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.MiniGolf.cpp @@ -123,7 +123,7 @@ namespace OpenRCT2 return; uint8_t frame = MiniGolfPeepAnimationFrames[EnumValue(vehicle->mini_golf_current_animation)][vehicle->animation_frame]; - uint32_t ebx = (frame << 2) + OpenRCT2::Entity::Yaw::YawTo4(imageDirection); + uint32_t ebx = (frame << 2) + Entity::Yaw::YawTo4(imageDirection); ImageIndex index = rideEntry->Cars[0].base_image_id + 1 + ebx; auto image = ImageId(index, peep->TshirtColour, peep->TrousersColour); diff --git a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp index 1a77ec668598..c9af9997d9f8 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RiverRapids.cpp @@ -32,7 +32,7 @@ namespace OpenRCT2 PaintSession& session, int32_t x, int32_t imageDirection, int32_t y, int32_t z, const Vehicle* vehicle, const CarEntry* carEntry) { - imageDirection = OpenRCT2::Entity::Yaw::YawTo32(imageDirection); + imageDirection = Entity::Yaw::YawTo32(imageDirection); ImageId image_id; int32_t baseImage_id = imageDirection; diff --git a/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp b/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp index 10896d4be981..16d1bd313fec 100644 --- a/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.RotoDrop.cpp @@ -25,7 +25,7 @@ namespace OpenRCT2 PaintSession& session, int32_t x, int32_t imageDirection, int32_t y, int32_t z, const Vehicle* vehicle, const CarEntry* carEntry) { - imageDirection = OpenRCT2::Entity::Yaw::YawTo32(imageDirection); + imageDirection = Entity::Yaw::YawTo32(imageDirection); auto imageFlags = ImageId(0, vehicle->colours.Body, vehicle->colours.Trim); if (vehicle->IsGhost()) diff --git a/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp b/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp index 099c7e4e29c6..82056a9bc7ff 100644 --- a/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.SplashBoats.cpp @@ -38,8 +38,7 @@ namespace OpenRCT2 } session.CurrentlyDrawnEntity = vehicleToPaint; - imageDirection = OpenRCT2::Entity::Yaw::Add( - OpenRCT2::Entity::Yaw::YawFrom4(session.CurrentRotation), vehicleToPaint->Orientation); + imageDirection = Entity::Yaw::Add(Entity::Yaw::YawFrom4(session.CurrentRotation), vehicleToPaint->Orientation); session.SpritePosition.x = vehicleToPaint->x; session.SpritePosition.y = vehicleToPaint->y; vehicleToPaint->Paint(session, imageDirection); diff --git a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp index 7d40072bd1e7..59a45726d8cd 100644 --- a/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.Submarine.cpp @@ -55,7 +55,7 @@ namespace OpenRCT2 imageId1 = ImageId(baseImageId + 1).WithRemap(Drawing::FilterPaletteID::paletteGhost); } - const auto& bb = VehicleBoundboxes[carEntry->draw_order][OpenRCT2::Entity::Yaw::YawTo16(imageDirection)]; + const auto& bb = VehicleBoundboxes[carEntry->draw_order][Entity::Yaw::YawTo16(imageDirection)]; PaintAddImageAsParent( session, imageId0, { 0, 0, z }, { { bb.offset_x, bb.offset_y, bb.offset_z + z }, { bb.length_x, bb.length_y, bb.length_z } }); diff --git a/src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp b/src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp index 683d2d0585fe..b31eb822f89b 100644 --- a/src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp +++ b/src/openrct2/paint/vehicle/Vehicle.VirginiaReel.cpp @@ -32,7 +32,7 @@ namespace OpenRCT2 PaintSession& session, int32_t x, int32_t imageDirection, int32_t y, int32_t z, const Vehicle* vehicle, const CarEntry* carEntry) { - imageDirection = OpenRCT2::Entity::Yaw::YawTo32(imageDirection); + imageDirection = Entity::Yaw::YawTo32(imageDirection); const uint8_t rotation = session.CurrentRotation; int32_t ecx = ((vehicle->spin_sprite / 8) + (rotation * 8)) & 31; int32_t baseImage_id = [&] { diff --git a/src/openrct2/paint/vehicle/VehiclePaint.cpp b/src/openrct2/paint/vehicle/VehiclePaint.cpp index e7d3e1f5bb18..30985b7d2b44 100644 --- a/src/openrct2/paint/vehicle/VehiclePaint.cpp +++ b/src/openrct2/paint/vehicle/VehiclePaint.cpp @@ -4700,8 +4700,7 @@ void VehicleVisualDefault( if (vehicle->HasFlag(VehicleFlags::CarIsReversed)) { auto imagePitch = PitchInvertTable[EnumValue(vehicle->pitch)]; - auto imageYaw = (imageDirection + (OpenRCT2::Entity::Yaw::kBaseRotation / 2)) - & (OpenRCT2::Entity::Yaw::kBaseRotation - 1); + auto imageYaw = (imageDirection + (kBaseRotation / 2)) & (kBaseRotation - 1); PaintFunctionsByPitch[EnumValue(imagePitch)](session, vehicle, imageYaw, z, carEntry, kBoundBoxIndexUndefined); } else From 507f1dedcecc9d3606466bcbd0fcaa8469936ec7 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Fri, 9 Jan 2026 10:20:53 -0300 Subject: [PATCH 207/222] Convert ride measurement flags into a FlagHolder (#25782) --- src/openrct2-ui/windows/Ride.cpp | 2 +- src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/ride/Ride.cpp | 18 +++++++++--------- src/openrct2/ride/Ride.h | 17 +++++++++-------- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index ddfe3c6bbabd..1adac93ad832 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -5967,7 +5967,7 @@ namespace OpenRCT2::Ui::Windows if (ride != nullptr) { auto [measurement, message] = ride->getMeasurement(); - if (measurement != nullptr && (measurement->flags & RIDE_MEASUREMENT_FLAG_RUNNING)) + if (measurement != nullptr && measurement->flags.has(RideMeasurementFlag::running)) { auto ft = Formatter(); ft.Increment(2); diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index e31b0dc4cd47..b796d10c0345 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -1737,7 +1737,7 @@ namespace OpenRCT2 static void ReadWriteRideMeasurement(OrcaStream::ChunkStream& cs, RideMeasurement& measurement) { - cs.readWrite(measurement.flags); + cs.readWrite(measurement.flags.holder); cs.readWrite(measurement.last_use_tick); cs.readWrite(measurement.num_items); cs.readWrite(measurement.current_item); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 094d85ae0854..b8efe49ab975 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1222,7 +1222,7 @@ namespace OpenRCT2::RCT1 void ImportRideMeasurement(RideMeasurement& dst, const RCT12RideMeasurement& src) { - dst.flags = src.Flags; + dst.flags.holder = src.Flags; dst.last_use_tick = src.LastUseTick; dst.num_items = src.NumItems; dst.current_item = src.CurrentItem; diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 5050fcf3a3e4..d1570a0dd326 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1091,7 +1091,7 @@ namespace OpenRCT2::RCT2 void ImportRideMeasurement(RideMeasurement& dst, const RCT12RideMeasurement& src) { - dst.flags = src.Flags; + dst.flags.holder = src.Flags; dst.last_use_tick = src.LastUseTick; dst.num_items = src.NumItems; dst.current_item = src.CurrentItem; diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 882d31b9e547..0707beba3dde 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -2018,19 +2018,19 @@ static void RideMeasurementUpdate(Ride& ride, RideMeasurement& measurement) if (vehicle == nullptr) return; - if (measurement.flags & RIDE_MEASUREMENT_FLAG_UNLOADING) + if (measurement.flags.has(RideMeasurementFlag::unloading)) { if (vehicle->status != Vehicle::Status::departing && vehicle->status != Vehicle::Status::travellingCableLift) return; - measurement.flags &= ~RIDE_MEASUREMENT_FLAG_UNLOADING; + measurement.flags.unset(RideMeasurementFlag::unloading); if (measurement.current_station == vehicle->current_station) measurement.current_item = 0; } if (vehicle->status == Vehicle::Status::unloadingPassengers) { - measurement.flags |= RIDE_MEASUREMENT_FLAG_UNLOADING; + measurement.flags.set(RideMeasurementFlag::unloading); return; } @@ -2047,7 +2047,7 @@ static void RideMeasurementUpdate(Ride& ride, RideMeasurement& measurement) const auto currentTicks = getGameState().currentTicks; - if (measurement.flags & RIDE_MEASUREMENT_FLAG_G_FORCES) + if (measurement.flags.has(RideMeasurementFlag::gForces)) { auto gForces = vehicle->GetGForces(); gForces.verticalG = std::clamp(gForces.verticalG / 8, -127, 127); @@ -2101,7 +2101,7 @@ void RideMeasurementsUpdate() auto measurement = ride.measurement.get(); if (measurement != nullptr && (ride.lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK) && ride.status != RideStatus::simulating) { - if (measurement->flags & RIDE_MEASUREMENT_FLAG_RUNNING) + if (measurement->flags.has(RideMeasurementFlag::running)) { RideMeasurementUpdate(ride, *measurement); } @@ -2119,8 +2119,8 @@ void RideMeasurementsUpdate() { measurement->vehicle_index = j; measurement->current_station = vehicle->current_station; - measurement->flags |= RIDE_MEASUREMENT_FLAG_RUNNING; - measurement->flags &= ~RIDE_MEASUREMENT_FLAG_UNLOADING; + measurement->flags.set(RideMeasurementFlag::running); + measurement->flags.unset(RideMeasurementFlag::unloading); RideMeasurementUpdate(ride, *measurement); break; } @@ -2178,14 +2178,14 @@ std::pair Ride::getMeasurement() measurement = std::make_unique(); if (rtd.HasFlag(RtdFlag::hasGForces)) { - measurement->flags |= RIDE_MEASUREMENT_FLAG_G_FORCES; + measurement->flags.set(RideMeasurementFlag::gForces); } RideFreeOldMeasurements(); assert(measurement != nullptr); } measurement->last_use_tick = getGameState().currentTicks; - if (measurement->flags & 1) + if (measurement->flags.has(RideMeasurementFlag::running)) { return { measurement.get(), { kStringIdEmpty, {} } }; } diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index c404e4c5a643..6773e881a9b5 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -85,6 +85,14 @@ enum class RideInvalidateFlag : uint8_t }; using RideInvalidateFlags = FlagHolder; +enum class RideMeasurementFlag : uint8_t +{ + running, + unloading, + gForces +}; +using RideMeasurementFlags = FlagHolder; + enum class RideTestingFlag : uint8_t { sheltered, @@ -124,7 +132,7 @@ struct RideMeasurement { static constexpr size_t kMaxItems = 4800; - uint8_t flags{}; + RideMeasurementFlags flags{}; uint32_t last_use_tick{}; uint16_t num_items{}; uint16_t current_item{}; @@ -802,13 +810,6 @@ enum WAIT_FOR_LOAD_COUNT, }; -enum -{ - RIDE_MEASUREMENT_FLAG_RUNNING = 1 << 0, - RIDE_MEASUREMENT_FLAG_UNLOADING = 1 << 1, - RIDE_MEASUREMENT_FLAG_G_FORCES = 1 << 2 -}; - enum { RIDE_CRASH_TYPE_NONE = 0, From 85117e93193dae5db76a3c928806a881ef9fae58 Mon Sep 17 00:00:00 2001 From: mrmbernardi Date: Sat, 10 Jan 2026 01:53:44 +1100 Subject: [PATCH 208/222] Fix PaletteIndex asserts (#25783) --- src/openrct2/drawing/Drawing.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 06a565844c99..8e6508ef92e9 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -62,8 +62,8 @@ PaletteIndex PaletteMap::Blend(PaletteIndex src, PaletteIndex dst) const { #ifdef _DEBUG // src = 0 would be transparent so there is no blend palette for that, hence (src - 1) - assert(src != 0 && (src - 1) < _numMaps); - assert(dst < _mapLength); + assert(src != PaletteIndex::pi0 && (EnumValue(src) - 1) < _numMaps); + assert(EnumValue(dst) < _mapLength); #endif auto idx = ((EnumValue(src) - 1) * 256) + EnumValue(dst); return _data[idx]; From 85cc79b31adfcf093e9c9e65a1c40169d2a69a30 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 11 Jan 2026 19:18:53 +0100 Subject: [PATCH 209/222] Move kScrollingModeNone to ScrollingText.h (#25797) --- src/openrct2/drawing/ScrollingText.h | 2 ++ src/openrct2/object/LargeSceneryObject.cpp | 2 +- src/openrct2/object/StationObject.cpp | 2 +- src/openrct2/object/WallObject.cpp | 2 +- src/openrct2/paint/tile_element/Paint.Entrance.cpp | 2 +- src/openrct2/paint/tile_element/Paint.LargeScenery.cpp | 2 +- src/openrct2/paint/tile_element/Paint.TileElement.cpp | 1 - src/openrct2/paint/tile_element/Paint.Wall.cpp | 2 +- src/openrct2/rct12/RCT12.cpp | 1 - src/openrct2/ride/RideConstruction.cpp | 1 - src/openrct2/scripting/bindings/world/ScTile.cpp | 1 + src/openrct2/scripting/bindings/world/ScTileElement.cpp | 1 + src/openrct2/world/Banner.h | 2 -- src/openrct2/world/tile_element/TileElement.cpp | 1 + src/openrct2/world/tile_element/TileElement.h | 1 - 15 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/openrct2/drawing/ScrollingText.h b/src/openrct2/drawing/ScrollingText.h index 1e8e4049df3e..0ef4d1d11b84 100644 --- a/src/openrct2/drawing/ScrollingText.h +++ b/src/openrct2/drawing/ScrollingText.h @@ -15,6 +15,8 @@ struct ImageId; struct PaintSession; using StringId = uint16_t; +constexpr uint8_t kScrollingModeNone = 255; + namespace OpenRCT2 { class Formatter; diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp index 63ff25c6cf13..1d9e8cc56ffd 100644 --- a/src/openrct2/object/LargeSceneryObject.cpp +++ b/src/openrct2/object/LargeSceneryObject.cpp @@ -15,9 +15,9 @@ #include "../core/Json.hpp" #include "../core/Memory.hpp" #include "../drawing/Drawing.h" +#include "../drawing/ScrollingText.h" #include "../interface/Cursors.h" #include "../localisation/Language.h" -#include "../world/Banner.h" #include "../world/Location.hpp" #include diff --git a/src/openrct2/object/StationObject.cpp b/src/openrct2/object/StationObject.cpp index 5b804339c0ba..79100a7e9738 100644 --- a/src/openrct2/object/StationObject.cpp +++ b/src/openrct2/object/StationObject.cpp @@ -14,7 +14,7 @@ #include "../core/Json.hpp" #include "../core/String.hpp" #include "../drawing/Drawing.h" -#include "../world/Banner.h" +#include "../drawing/ScrollingText.h" namespace OpenRCT2 { diff --git a/src/openrct2/object/WallObject.cpp b/src/openrct2/object/WallObject.cpp index 68315558e623..c03ce0c84884 100644 --- a/src/openrct2/object/WallObject.cpp +++ b/src/openrct2/object/WallObject.cpp @@ -14,9 +14,9 @@ #include "../core/Json.hpp" #include "../core/String.hpp" #include "../drawing/Drawing.h" +#include "../drawing/ScrollingText.h" #include "../interface/Cursors.h" #include "../localisation/Language.h" -#include "../world/Banner.h" namespace OpenRCT2 { diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index e61a5adee7da..ab1d3108448d 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -16,6 +16,7 @@ #include "../../config/Config.h" #include "../../drawing/Drawing.h" #include "../../drawing/LightFX.h" +#include "../../drawing/ScrollingText.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" #include "../../localisation/Formatting.h" @@ -25,7 +26,6 @@ #include "../../profiling/Profiling.h" #include "../../ride/RideData.h" #include "../../ride/TrackDesign.h" -#include "../../world/Banner.h" #include "../../world/Entrance.h" #include "../../world/Footpath.h" #include "../../world/Park.h" diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index e4d972f1b8cd..79d47d4b72cf 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -17,6 +17,7 @@ #include "../../core/Numerics.hpp" #include "../../core/UTF8.h" #include "../../drawing/Drawing.h" +#include "../../drawing/ScrollingText.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" #include "../../localisation/Formatting.h" @@ -25,7 +26,6 @@ #include "../../profiling/Profiling.h" #include "../../ride/Ride.h" #include "../../ride/TrackDesign.h" -#include "../../world/Banner.h" #include "../../world/Scenery.h" #include "../../world/TileInspector.h" #include "../../world/tile_element/LargeSceneryElement.h" diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index cdab2934e984..761a26db7dfb 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -19,7 +19,6 @@ #include "../../ride/RideData.h" #include "../../ride/TrackData.h" #include "../../ride/TrackPaint.h" -#include "../../world/Banner.h" #include "../../world/Entrance.h" #include "../../world/Footpath.h" #include "../../world/Map.h" diff --git a/src/openrct2/paint/tile_element/Paint.Wall.cpp b/src/openrct2/paint/tile_element/Paint.Wall.cpp index 29c5fc6508da..67391eb5f9e3 100644 --- a/src/openrct2/paint/tile_element/Paint.Wall.cpp +++ b/src/openrct2/paint/tile_element/Paint.Wall.cpp @@ -13,6 +13,7 @@ #include "../../GameState.h" #include "../../config/Config.h" #include "../../drawing/Drawing.h" +#include "../../drawing/ScrollingText.h" #include "../../interface/Colour.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" @@ -22,7 +23,6 @@ #include "../../profiling/Profiling.h" #include "../../ride/Track.h" #include "../../ride/TrackDesign.h" -#include "../../world/Banner.h" #include "../../world/Scenery.h" #include "../../world/TileInspector.h" #include "../../world/tile_element/WallElement.h" diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index fdc9f1845d93..03f18e28ba23 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -18,7 +18,6 @@ #include "../rct2/RCT2.h" #include "../ride/Ride.h" #include "../scenario/Scenario.h" -#include "../world/Banner.h" #include "../world/Footpath.h" #include "../world/Wall.h" #include "../world/tile_element/PathElement.h" diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index ea94f803a43b..ddef55b1feb5 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -25,7 +25,6 @@ #include "../network/Network.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" -#include "../world/Banner.h" #include "../world/Climate.h" #include "../world/Entrance.h" #include "../world/Footpath.h" diff --git a/src/openrct2/scripting/bindings/world/ScTile.cpp b/src/openrct2/scripting/bindings/world/ScTile.cpp index d13b3612c231..27ad134401ee 100644 --- a/src/openrct2/scripting/bindings/world/ScTile.cpp +++ b/src/openrct2/scripting/bindings/world/ScTile.cpp @@ -13,6 +13,7 @@ #include "../../../Context.h" #include "../../../core/Guard.hpp" + #include "../../../drawing/ScrollingText.h" #include "../../../entity/EntityRegistry.h" #include "../../../object/LargeSceneryEntry.h" #include "../../../ride/Track.h" diff --git a/src/openrct2/scripting/bindings/world/ScTileElement.cpp b/src/openrct2/scripting/bindings/world/ScTileElement.cpp index be78b22180f9..68f8eeaadaf3 100644 --- a/src/openrct2/scripting/bindings/world/ScTileElement.cpp +++ b/src/openrct2/scripting/bindings/world/ScTileElement.cpp @@ -13,6 +13,7 @@ #include "../../../Context.h" #include "../../../core/Guard.hpp" + #include "../../../drawing/ScrollingText.h" #include "../../../entity/EntityRegistry.h" #include "../../../object/LargeSceneryEntry.h" #include "../../../object/WallSceneryEntry.h" diff --git a/src/openrct2/world/Banner.h b/src/openrct2/world/Banner.h index 705e6831200d..99b8069626bf 100644 --- a/src/openrct2/world/Banner.h +++ b/src/openrct2/world/Banner.h @@ -28,8 +28,6 @@ namespace OpenRCT2 constexpr OpenRCT2::ObjectEntryIndex kBannerNull = OpenRCT2::kObjectEntryIndexNull; constexpr size_t kMaxBanners = 8192; -constexpr uint8_t kScrollingModeNone = 255; - enum class BannerFlag : uint8_t { noEntry = 0, diff --git a/src/openrct2/world/tile_element/TileElement.cpp b/src/openrct2/world/tile_element/TileElement.cpp index 2b5136b83fb0..978b06a0ae5c 100644 --- a/src/openrct2/world/tile_element/TileElement.cpp +++ b/src/openrct2/world/tile_element/TileElement.cpp @@ -11,6 +11,7 @@ #include "../../Diagnostic.h" #include "../../core/Guard.hpp" +#include "../../drawing/ScrollingText.h" #include "../../interface/WindowClasses.h" #include "../../ui/WindowManager.h" #include "BannerElement.h" diff --git a/src/openrct2/world/tile_element/TileElement.h b/src/openrct2/world/tile_element/TileElement.h index e71f70808cd0..a0e2afc500fa 100644 --- a/src/openrct2/world/tile_element/TileElement.h +++ b/src/openrct2/world/tile_element/TileElement.h @@ -10,7 +10,6 @@ #pragma once #include "../../Identifiers.h" -#include "../Banner.h" #include "TileElementBase.h" namespace OpenRCT2 From 41eb24dbd7d85fdce631210e60c9211a76415069 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 11 Jan 2026 17:10:23 +0100 Subject: [PATCH 210/222] Rename members of RailingEntrySupportType --- src/openrct2/object/FootpathObject.cpp | 2 +- src/openrct2/object/FootpathRailingsObject.cpp | 6 +++--- src/openrct2/paint/tile_element/Paint.Path.cpp | 2 +- src/openrct2/world/Footpath.h | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index 97546c93688a..5b3b45a6bc75 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -29,7 +29,7 @@ namespace OpenRCT2 GetImageTable().Read(context, stream); // Validate properties - if (_legacyType.support_type >= RailingEntrySupportType::Count) + if (_legacyType.support_type >= RailingEntrySupportType::count) { context->LogError(ObjectError::invalidProperty, "RailingEntrySupportType not supported."); } diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index a22fef4a328a..bdc885729443 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -58,7 +58,7 @@ namespace OpenRCT2 if (Colour != COLOUR_NULL) helper = helper.WithPrimary(Colour); - if (SupportType == RailingEntrySupportType::Pole) + if (SupportType == RailingEntrySupportType::pole) { auto img = helper.WithIndex(BridgeImageId + 20 + 15); for (int i = 0; i < 2; i++) @@ -106,8 +106,8 @@ namespace OpenRCT2 RailingEntrySupportType FootpathRailingsObject::ParseSupportType(std::string_view s) { if (s == "pole") - return RailingEntrySupportType::Pole; + return RailingEntrySupportType::pole; else /* if (s == "box") */ - return RailingEntrySupportType::Box; + return RailingEntrySupportType::box; } } // namespace OpenRCT2 diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 4b5a5f2ad49f..daaff76fea1b 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -834,7 +834,7 @@ void PaintPath(PaintSession& session, uint16_t height, const PathElement& tileEl auto hasSupports = ShouldDrawSupports(session, tileElement, height); auto pathPaintInfo = GetFootpathPaintInfo(tileElement); - if (pathPaintInfo.SupportType == RailingEntrySupportType::Pole) + if (pathPaintInfo.SupportType == RailingEntrySupportType::pole) { PathPaintPoleSupport(session, tileElement, height, pathPaintInfo, hasSupports, imageTemplate, sceneryImageTemplate); } diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 63fde1cf827f..d272197be86b 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -36,9 +36,9 @@ constexpr auto kPathClearance = 4 * kCoordsZStep; enum class RailingEntrySupportType : uint8_t { - Box = 0, - Pole = 1, - Count + box = 0, + pole = 1, + count }; struct PathSurfaceDescriptor From fdab1ceacda53a46bb4e46785bb7e010a6d5784d Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 11 Jan 2026 17:11:53 +0100 Subject: [PATCH 211/222] Rename members of PathSurfaceDescriptor --- src/openrct2/object/FootpathObject.cpp | 20 +++++++++---------- src/openrct2/object/FootpathSurfaceObject.cpp | 8 ++++---- .../paint/tile_element/Paint.Entrance.cpp | 2 +- .../paint/tile_element/Paint.Path.cpp | 4 ++-- src/openrct2/world/Footpath.h | 9 +++++---- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index 5b3b45a6bc75..6a317765052e 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -42,15 +42,15 @@ namespace OpenRCT2 _legacyType.image = LoadImages(); _legacyType.bridge_image = _legacyType.image + 109; - _pathSurfaceDescriptor.Name = _legacyType.string_idx; - _pathSurfaceDescriptor.Image = _legacyType.image; - _pathSurfaceDescriptor.PreviewImage = _legacyType.GetPreviewImage(); - _pathSurfaceDescriptor.Flags = _legacyType.flags; + _pathSurfaceDescriptor.name = _legacyType.string_idx; + _pathSurfaceDescriptor.image = _legacyType.image; + _pathSurfaceDescriptor.previewImage = _legacyType.GetPreviewImage(); + _pathSurfaceDescriptor.flags = _legacyType.flags; - _queueSurfaceDescriptor.Name = _legacyType.string_idx; - _queueSurfaceDescriptor.Image = _legacyType.GetQueueImage(); - _queueSurfaceDescriptor.PreviewImage = _legacyType.GetQueuePreviewImage(); - _queueSurfaceDescriptor.Flags = _legacyType.flags | FOOTPATH_ENTRY_FLAG_IS_QUEUE; + _queueSurfaceDescriptor.name = _legacyType.string_idx; + _queueSurfaceDescriptor.image = _legacyType.GetQueueImage(); + _queueSurfaceDescriptor.previewImage = _legacyType.GetQueuePreviewImage(); + _queueSurfaceDescriptor.flags = _legacyType.flags | FOOTPATH_ENTRY_FLAG_IS_QUEUE; _pathRailingsDescriptor.Name = _legacyType.string_idx; _pathRailingsDescriptor.BridgeImage = _legacyType.bridge_image; @@ -73,8 +73,8 @@ namespace OpenRCT2 void FootpathObject::DrawPreview(Drawing::RenderTarget& rt, int32_t width, int32_t height) const { auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 }; - GfxDrawSprite(rt, ImageId(_pathSurfaceDescriptor.PreviewImage), screenCoords - ScreenCoordsXY{ 49, 17 }); - GfxDrawSprite(rt, ImageId(_queueSurfaceDescriptor.PreviewImage), screenCoords + ScreenCoordsXY{ 4, -17 }); + GfxDrawSprite(rt, ImageId(_pathSurfaceDescriptor.previewImage), screenCoords - ScreenCoordsXY{ 49, 17 }); + GfxDrawSprite(rt, ImageId(_queueSurfaceDescriptor.previewImage), screenCoords + ScreenCoordsXY{ 4, -17 }); } void FootpathObject::ReadJson(IReadObjectContext* context, json_t& root) diff --git a/src/openrct2/object/FootpathSurfaceObject.cpp b/src/openrct2/object/FootpathSurfaceObject.cpp index 47ee6db15f6f..e100f67f9ce0 100644 --- a/src/openrct2/object/FootpathSurfaceObject.cpp +++ b/src/openrct2/object/FootpathSurfaceObject.cpp @@ -31,10 +31,10 @@ namespace OpenRCT2 BaseImageId = PreviewImageId + 1; } - _descriptor.Name = NameStringId; - _descriptor.Image = BaseImageId; - _descriptor.PreviewImage = PreviewImageId; - _descriptor.Flags = Flags; + _descriptor.name = NameStringId; + _descriptor.image = BaseImageId; + _descriptor.previewImage = PreviewImageId; + _descriptor.flags = Flags; } void FootpathSurfaceObject::Unload() diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index ab1d3108448d..6615ccf6a39b 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -309,7 +309,7 @@ static void PaintParkEntrance(PaintSession& session, uint8_t direction, int32_t auto surfaceDescriptor = entranceEl.GetPathSurfaceDescriptor(); if (surfaceDescriptor != nullptr) { - auto imageIndex = (surfaceDescriptor->Image + 5 * (1 + (direction & 1))); + auto imageIndex = (surfaceDescriptor->image + 5 * (1 + (direction & 1))); PaintAddImageAsParent( session, imageTemplate.WithIndex(imageIndex), { 0, 0, height }, { { 0, 2, height }, { 32, 28, 0 } }); } diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index daaff76fea1b..37e1d984188f 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -685,8 +685,8 @@ static FootpathPaintInfo GetFootpathPaintInfo(const PathElement& pathEl) const auto* surfaceDescriptor = pathEl.GetSurfaceDescriptor(); if (surfaceDescriptor != nullptr) { - pathPaintInfo.SurfaceImageId = surfaceDescriptor->Image; - pathPaintInfo.SurfaceFlags = surfaceDescriptor->Flags; + pathPaintInfo.SurfaceImageId = surfaceDescriptor->image; + pathPaintInfo.SurfaceFlags = surfaceDescriptor->flags; } const auto* railingsDescriptor = pathEl.GetRailingsDescriptor(); diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index d272197be86b..7550667189c7 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -11,6 +11,7 @@ #include "../Identifiers.h" #include "../actions/CommandFlag.h" +#include "../drawing/ImageIndexType.h" #include "../interface/Colour.h" #include "../localisation/StringIdType.h" #include "../object/ObjectTypes.h" @@ -43,10 +44,10 @@ enum class RailingEntrySupportType : uint8_t struct PathSurfaceDescriptor { - StringId Name; - uint32_t Image; - uint32_t PreviewImage; - uint8_t Flags; + StringId name; + ImageIndex image; + ImageIndex previewImage; + uint8_t flags; }; struct PathRailingsDescriptor From 09999837d1e99e7365b4cfa8cbb1ea29a1e407f2 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 11 Jan 2026 17:20:48 +0100 Subject: [PATCH 212/222] Rename members of PathRailingsDescriptor --- src/openrct2/object/FootpathObject.cpp | 14 +++++++------- src/openrct2/object/FootpathRailingsObject.cpp | 16 ++++++++-------- src/openrct2/paint/tile_element/Paint.Path.cpp | 12 ++++++------ src/openrct2/world/Footpath.h | 16 ++++++++-------- src/openrct2/world/tile_element/PathElement.cpp | 2 +- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/openrct2/object/FootpathObject.cpp b/src/openrct2/object/FootpathObject.cpp index 6a317765052e..f72e0978429f 100644 --- a/src/openrct2/object/FootpathObject.cpp +++ b/src/openrct2/object/FootpathObject.cpp @@ -52,13 +52,13 @@ namespace OpenRCT2 _queueSurfaceDescriptor.previewImage = _legacyType.GetQueuePreviewImage(); _queueSurfaceDescriptor.flags = _legacyType.flags | FOOTPATH_ENTRY_FLAG_IS_QUEUE; - _pathRailingsDescriptor.Name = _legacyType.string_idx; - _pathRailingsDescriptor.BridgeImage = _legacyType.bridge_image; - _pathRailingsDescriptor.PreviewImage = _legacyType.GetPreviewImage(); - _pathRailingsDescriptor.Flags = _legacyType.flags; - _pathRailingsDescriptor.ScrollingMode = _legacyType.scrolling_mode; - _pathRailingsDescriptor.SupportType = _legacyType.support_type; - _pathRailingsDescriptor.RailingsImage = _legacyType.GetRailingsImage(); + _pathRailingsDescriptor.name = _legacyType.string_idx; + _pathRailingsDescriptor.bridgeImage = _legacyType.bridge_image; + _pathRailingsDescriptor.previewImage = _legacyType.GetPreviewImage(); + _pathRailingsDescriptor.flags = _legacyType.flags; + _pathRailingsDescriptor.scrollingMode = _legacyType.scrolling_mode; + _pathRailingsDescriptor.supportType = _legacyType.support_type; + _pathRailingsDescriptor.railingsImage = _legacyType.GetRailingsImage(); } void FootpathObject::Unload() diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index bdc885729443..57975eade96b 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -29,14 +29,14 @@ namespace OpenRCT2 RailingsImageId = PreviewImageId + 1; } - _descriptor.Name = NameStringId; - _descriptor.BridgeImage = BridgeImageId; - _descriptor.PreviewImage = PreviewImageId; - _descriptor.Flags = Flags; - _descriptor.ScrollingMode = ScrollingMode; - _descriptor.SupportType = SupportType; - _descriptor.SupportColour = Colour; - _descriptor.RailingsImage = RailingsImageId; + _descriptor.name = NameStringId; + _descriptor.bridgeImage = BridgeImageId; + _descriptor.previewImage = PreviewImageId; + _descriptor.flags = Flags; + _descriptor.scrollingMode = ScrollingMode; + _descriptor.supportType = SupportType; + _descriptor.supportColour = Colour; + _descriptor.railingsImage = RailingsImageId; } void FootpathRailingsObject::Unload() diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index 37e1d984188f..fcfbf82a12ce 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -692,12 +692,12 @@ static FootpathPaintInfo GetFootpathPaintInfo(const PathElement& pathEl) const auto* railingsDescriptor = pathEl.GetRailingsDescriptor(); if (railingsDescriptor != nullptr) { - pathPaintInfo.BridgeImageId = railingsDescriptor->BridgeImage; - pathPaintInfo.RailingsImageId = railingsDescriptor->RailingsImage; - pathPaintInfo.RailingFlags = railingsDescriptor->Flags; - pathPaintInfo.ScrollingMode = railingsDescriptor->ScrollingMode; - pathPaintInfo.SupportType = railingsDescriptor->SupportType; - pathPaintInfo.SupportColour = railingsDescriptor->SupportColour; + pathPaintInfo.BridgeImageId = railingsDescriptor->bridgeImage; + pathPaintInfo.RailingsImageId = railingsDescriptor->railingsImage; + pathPaintInfo.RailingFlags = railingsDescriptor->flags; + pathPaintInfo.ScrollingMode = railingsDescriptor->scrollingMode; + pathPaintInfo.SupportType = railingsDescriptor->supportType; + pathPaintInfo.SupportColour = railingsDescriptor->supportColour; } return pathPaintInfo; diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 7550667189c7..8847bd534d34 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -52,14 +52,14 @@ struct PathSurfaceDescriptor struct PathRailingsDescriptor { - StringId Name; - uint32_t PreviewImage; - uint32_t BridgeImage; - uint32_t RailingsImage; - RailingEntrySupportType SupportType; - colour_t SupportColour; - uint8_t Flags; - uint8_t ScrollingMode; + StringId name; + ImageIndex previewImage; + ImageIndex bridgeImage; + ImageIndex railingsImage; + RailingEntrySupportType supportType; + colour_t supportColour; + uint8_t flags; + uint8_t scrollingMode; }; using PathConstructFlags = uint8_t; diff --git a/src/openrct2/world/tile_element/PathElement.cpp b/src/openrct2/world/tile_element/PathElement.cpp index e86eae2abcdd..e900908316b5 100644 --- a/src/openrct2/world/tile_element/PathElement.cpp +++ b/src/openrct2/world/tile_element/PathElement.cpp @@ -299,7 +299,7 @@ namespace OpenRCT2 bool PathElement::ShouldDrawPathOverSupports() const { // TODO: make this an actual decision of the tile element. - return (GetRailingsDescriptor()->Flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS); + return (GetRailingsDescriptor()->flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS); } void PathElement::SetShouldDrawPathOverSupports(bool on) From 63354de46b7971a9ceaf95e3cef0f8d028ba7ae6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 11 Jan 2026 17:29:07 +0100 Subject: [PATCH 213/222] Rename members of FootpathSelection --- .../windows/EditorParkEntrance.cpp | 8 +- src/openrct2-ui/windows/Footpath.cpp | 106 +++++++++--------- src/openrct2/world/Footpath.h | 14 +-- 3 files changed, 64 insertions(+), 64 deletions(-) diff --git a/src/openrct2-ui/windows/EditorParkEntrance.cpp b/src/openrct2-ui/windows/EditorParkEntrance.cpp index e97a976418df..b88328ca1fcd 100644 --- a/src/openrct2-ui/windows/EditorParkEntrance.cpp +++ b/src/openrct2-ui/windows/EditorParkEntrance.cpp @@ -203,8 +203,8 @@ namespace OpenRCT2::Ui::Windows ParkEntranceRemoveGhost(); - bool isLegacyPath = (gFootpathSelection.LegacyPath != kObjectEntryIndexNull); - auto pathIndex = isLegacyPath ? gFootpathSelection.LegacyPath : gFootpathSelection.NormalSurface; + bool isLegacyPath = (gFootpathSelection.legacyPath != kObjectEntryIndexNull); + auto pathIndex = isLegacyPath ? gFootpathSelection.legacyPath : gFootpathSelection.normalSurface; auto gameAction = GameActions::ParkEntrancePlaceAction( parkEntrancePosition, pathIndex, _selectedEntranceType, isLegacyPath); gameAction.SetFlags({ CommandFlag::ghost }); @@ -226,8 +226,8 @@ namespace OpenRCT2::Ui::Windows CoordsXYZD parkEntrancePosition = PlaceParkEntranceGetMapPosition(screenCoords); if (!parkEntrancePosition.IsNull()) { - bool isLegacyPath = (gFootpathSelection.LegacyPath != kObjectEntryIndexNull); - auto pathIndex = isLegacyPath ? gFootpathSelection.LegacyPath : gFootpathSelection.NormalSurface; + bool isLegacyPath = (gFootpathSelection.legacyPath != kObjectEntryIndexNull); + auto pathIndex = isLegacyPath ? gFootpathSelection.legacyPath : gFootpathSelection.normalSurface; auto gameAction = GameActions::ParkEntrancePlaceAction( parkEntrancePosition, pathIndex, _selectedEntranceType, isLegacyPath); gameAction.SetCallback( diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 2057d8200a1c..54bc10aaf740 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -413,33 +413,33 @@ namespace OpenRCT2::Ui::Windows auto entryIndex = _dropdownEntries[selectedIndex]; if (widgetIndex == WIDX_FOOTPATH_TYPE) { - gFootpathSelection.IsQueueSelected = false; + gFootpathSelection.isQueueSelected = false; if (entryIndex.first == ObjectType::paths) { - gFootpathSelection.LegacyPath = entryIndex.second; + gFootpathSelection.legacyPath = entryIndex.second; } else { - gFootpathSelection.LegacyPath = kObjectEntryIndexNull; - gFootpathSelection.NormalSurface = entryIndex.second; + gFootpathSelection.legacyPath = kObjectEntryIndexNull; + gFootpathSelection.normalSurface = entryIndex.second; } } else if (widgetIndex == WIDX_QUEUELINE_TYPE) { - gFootpathSelection.IsQueueSelected = true; + gFootpathSelection.isQueueSelected = true; if (entryIndex.first == ObjectType::paths) { - gFootpathSelection.LegacyPath = entryIndex.second; + gFootpathSelection.legacyPath = entryIndex.second; } else { - gFootpathSelection.LegacyPath = kObjectEntryIndexNull; - gFootpathSelection.QueueSurface = entryIndex.second; + gFootpathSelection.legacyPath = kObjectEntryIndexNull; + gFootpathSelection.queueSurface = entryIndex.second; } } else if (widgetIndex == WIDX_RAILINGS_TYPE) { - gFootpathSelection.Railings = entryIndex.second; + gFootpathSelection.railings = entryIndex.second; } else { @@ -527,7 +527,7 @@ namespace OpenRCT2::Ui::Windows // Press / unpress footpath and queue type buttons pressedWidgets &= ~(1uLL << WIDX_FOOTPATH_TYPE); pressedWidgets &= ~(1uLL << WIDX_QUEUELINE_TYPE); - pressedWidgets |= gFootpathSelection.IsQueueSelected ? (1uLL << WIDX_QUEUELINE_TYPE) : (1uLL << WIDX_FOOTPATH_TYPE); + pressedWidgets |= gFootpathSelection.isQueueSelected ? (1uLL << WIDX_QUEUELINE_TYPE) : (1uLL << WIDX_FOOTPATH_TYPE); // Enable / disable construct button widgets[WIDX_CONSTRUCT].type = _footpathConstructionMode == PathConstructionMode::bridgeOrTunnel @@ -546,7 +546,7 @@ namespace OpenRCT2::Ui::Windows disabledWidgets |= (1uLL << WIDX_CONSTRUCT_DRAG_AREA); #endif - if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull) + if (gFootpathSelection.legacyPath == kObjectEntryIndexNull) { widgets[WIDX_RAILINGS_TYPE].type = WidgetType::flatBtn; } @@ -569,9 +569,9 @@ namespace OpenRCT2::Ui::Windows auto slopeOffset = EnumValue(_footpathConstructSlope); std::optional baseImage; - if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull) + if (gFootpathSelection.legacyPath == kObjectEntryIndexNull) { - auto selectedPath = gFootpathSelection.GetSelectedSurface(); + auto selectedPath = gFootpathSelection.getSelectedSurface(); const auto* pathType = GetPathSurfaceEntry(selectedPath); if (pathType != nullptr) { @@ -581,11 +581,11 @@ namespace OpenRCT2::Ui::Windows else { auto& objManager = OpenRCT2::GetContext()->GetObjectManager(); - const auto* pathObj = objManager.GetLoadedObject(gFootpathSelection.LegacyPath); + const auto* pathObj = objManager.GetLoadedObject(gFootpathSelection.legacyPath); if (pathObj != nullptr) { auto pathEntry = reinterpret_cast(pathObj->GetLegacyData()); - if (gFootpathSelection.IsQueueSelected) + if (gFootpathSelection.isQueueSelected) baseImage = pathEntry->GetQueueImage(); else baseImage = pathEntry->image; @@ -647,7 +647,7 @@ namespace OpenRCT2::Ui::Windows if (!_provisionalFootpath.flags.has(ProvisionalPathFlag::placed)) { ObjectEntryIndex type; - ObjectEntryIndex railings = gFootpathSelection.Railings; + ObjectEntryIndex railings = gFootpathSelection.railings; CoordsXYZ footpathLoc; FootpathSlope slope; @@ -686,18 +686,18 @@ namespace OpenRCT2::Ui::Windows void WindowFootpathDrawDropdownButtons(Drawing::RenderTarget& rt) { - if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull) + if (gFootpathSelection.legacyPath == kObjectEntryIndexNull) { // Set footpath and queue type button images auto pathImage = kImageIndexUndefined; auto queueImage = kImageIndexUndefined; - auto pathEntry = GetPathSurfaceEntry(gFootpathSelection.NormalSurface); + auto pathEntry = GetPathSurfaceEntry(gFootpathSelection.normalSurface); if (pathEntry != nullptr) { pathImage = pathEntry->PreviewImageId; } - pathEntry = GetPathSurfaceEntry(gFootpathSelection.QueueSurface); + pathEntry = GetPathSurfaceEntry(gFootpathSelection.queueSurface); if (pathEntry != nullptr) { queueImage = pathEntry->PreviewImageId; @@ -708,7 +708,7 @@ namespace OpenRCT2::Ui::Windows // Set railing auto railingsImage = kImageIndexUndefined; - auto railingsEntry = GetPathRailingsEntry(gFootpathSelection.Railings); + auto railingsEntry = GetPathRailingsEntry(gFootpathSelection.railings); if (railingsEntry != nullptr) { railingsImage = railingsEntry->PreviewImageId; @@ -722,7 +722,7 @@ namespace OpenRCT2::Ui::Windows // Set footpath and queue type button images auto pathImage = kImageIndexUndefined; auto queueImage = kImageIndexUndefined; - const auto* pathObj = objManager.GetLoadedObject(gFootpathSelection.LegacyPath); + const auto* pathObj = objManager.GetLoadedObject(gFootpathSelection.legacyPath); if (pathObj != nullptr) { auto pathEntry = reinterpret_cast(pathObj->GetLegacyData()); @@ -781,8 +781,8 @@ namespace OpenRCT2::Ui::Windows continue; } - if (gFootpathSelection.LegacyPath == kObjectEntryIndexNull - && i == (showQueues ? gFootpathSelection.QueueSurface : gFootpathSelection.NormalSurface)) + if (gFootpathSelection.legacyPath == kObjectEntryIndexNull + && i == (showQueues ? gFootpathSelection.queueSurface : gFootpathSelection.normalSurface)) { defaultIndex = numPathTypes; } @@ -806,7 +806,7 @@ namespace OpenRCT2::Ui::Windows continue; } - if (gFootpathSelection.LegacyPath != kObjectEntryIndexNull && gFootpathSelection.LegacyPath == i) + if (gFootpathSelection.legacyPath != kObjectEntryIndexNull && gFootpathSelection.legacyPath == i) { defaultIndex = numPathTypes; } @@ -842,7 +842,7 @@ namespace OpenRCT2::Ui::Windows { continue; } - if (i == gFootpathSelection.Railings) + if (i == gFootpathSelection.railings) { defaultIndex = numRailingsTypes; } @@ -1081,12 +1081,12 @@ namespace OpenRCT2::Ui::Windows } // Set provisional path - auto pathType = gFootpathSelection.GetSelectedSurface(); + auto pathType = gFootpathSelection.getSelectedSurface(); auto constructFlags = FootpathCreateConstructFlags(pathType); auto footpathLoc = CoordsXYZ(*mapPos, placement.baseZ); auto tiles = std::array({ footpathLoc, placement.slope }); const auto footpathCost = FootpathProvisionalSet( - pathType, gFootpathSelection.Railings, *mapPos, *mapPos, placement.baseZ, tiles, constructFlags); + pathType, gFootpathSelection.railings, *mapPos, *mapPos, placement.baseZ, tiles, constructFlags); if (_windowFootpathCost != footpathCost) { @@ -1133,10 +1133,10 @@ namespace OpenRCT2::Ui::Windows // Set provisional path auto tiles = buildTileVector(range, baseZ); - auto pathType = gFootpathSelection.GetSelectedSurface(); + auto pathType = gFootpathSelection.getSelectedSurface(); auto constructFlags = FootpathCreateConstructFlags(pathType); const auto footpathCost = FootpathProvisionalSet( - pathType, gFootpathSelection.Railings, range.Point1, range.Point2, baseZ, tiles, constructFlags); + pathType, gFootpathSelection.railings, range.Point1, range.Point2, baseZ, tiles, constructFlags); if (_windowFootpathCost != footpathCost) { @@ -1239,7 +1239,7 @@ namespace OpenRCT2::Ui::Windows auto correctedPos = mapPos->ToTileStart(); // For queues, only allow selecting a single line. - if (gFootpathSelection.IsQueueSelected) + if (gFootpathSelection.isQueueSelected) { auto xDiff = correctedPos.x - _dragStartPos.x; auto yDiff = correctedPos.y - _dragStartPos.y; @@ -1278,7 +1278,7 @@ namespace OpenRCT2::Ui::Windows return; // Try and place path - auto selectedType = gFootpathSelection.GetSelectedSurface(); + auto selectedType = gFootpathSelection.getSelectedSurface(); PathConstructFlags constructFlags = FootpathCreateConstructFlags(selectedType); bool anySuccess = false; @@ -1288,7 +1288,7 @@ namespace OpenRCT2::Ui::Windows for (const auto& tile : _provisionalFootpath.tiles) { auto footpathPlaceAction = GameActions::FootpathPlaceAction( - tile.position, tile.slope, selectedType, gFootpathSelection.Railings, kInvalidDirection, constructFlags); + tile.position, tile.slope, selectedType, gFootpathSelection.railings, kInvalidDirection, constructFlags); auto result = GameActions::Execute(&footpathPlaceAction, getGameState()); if (result.error == GameActions::Status::ok) { @@ -1333,11 +1333,11 @@ namespace OpenRCT2::Ui::Windows auto placement = WindowFootpathGetPlacementFromScreenCoords(screenCoords); // Try and place path - auto selectedType = gFootpathSelection.GetSelectedSurface(); + auto selectedType = gFootpathSelection.getSelectedSurface(); PathConstructFlags constructFlags = FootpathCreateConstructFlags(selectedType); auto footpathPlaceAction = GameActions::FootpathPlaceAction( - { *mapPos, placement.baseZ }, placement.slope, selectedType, gFootpathSelection.Railings, kInvalidDirection, + { *mapPos, placement.baseZ }, placement.slope, selectedType, gFootpathSelection.railings, kInvalidDirection, constructFlags); footpathPlaceAction.SetCallback([this](const GameActions::GameAction* ga, const GameActions::Result* result) { if (result->error == GameActions::Status::ok) @@ -1430,7 +1430,7 @@ namespace OpenRCT2::Ui::Windows PathConstructFlags constructFlags = FootpathCreateConstructFlags(type); auto footpathPlaceAction = GameActions::FootpathPlaceAction( - footpathLoc, slope, type, gFootpathSelection.Railings, _footpathConstructDirection, constructFlags); + footpathLoc, slope, type, gFootpathSelection.railings, _footpathConstructDirection, constructFlags); footpathPlaceAction.SetCallback( [footpathLoc](const GameActions::GameAction* ga, const GameActions::Result* result) { @@ -1678,7 +1678,7 @@ namespace OpenRCT2::Ui::Windows footpathLoc.z = _footpathConstructFromPosition.z; if (type != nullptr) { - *type = gFootpathSelection.GetSelectedSurface(); + *type = gFootpathSelection.getSelectedSurface(); } *slope = {}; if (_footpathConstructSlope != SlopePitch::flat) @@ -1695,12 +1695,12 @@ namespace OpenRCT2::Ui::Windows PathConstructFlags FootpathCreateConstructFlags(ObjectEntryIndex& type) { PathConstructFlags pathConstructFlags = 0; - if (gFootpathSelection.IsQueueSelected) + if (gFootpathSelection.isQueueSelected) pathConstructFlags |= PathConstructFlag::IsQueue; - if (gFootpathSelection.LegacyPath != kObjectEntryIndexNull) + if (gFootpathSelection.legacyPath != kObjectEntryIndexNull) { pathConstructFlags |= PathConstructFlag::IsLegacyPathObject; - type = gFootpathSelection.LegacyPath; + type = gFootpathSelection.legacyPath; } return pathConstructFlags; } @@ -2150,39 +2150,39 @@ namespace OpenRCT2::Ui::Windows { // Select default footpath auto surfaceIndex = FootpathGetDefaultSurface(false); - if (FootpathIsSurfaceEntryOkay(gFootpathSelection.NormalSurface, false)) + if (FootpathIsSurfaceEntryOkay(gFootpathSelection.normalSurface, false)) { - surfaceIndex = gFootpathSelection.NormalSurface; + surfaceIndex = gFootpathSelection.normalSurface; } // Select default queue auto queueIndex = FootpathGetDefaultSurface(true); - if (FootpathIsSurfaceEntryOkay(gFootpathSelection.QueueSurface, true)) + if (FootpathIsSurfaceEntryOkay(gFootpathSelection.queueSurface, true)) { - queueIndex = gFootpathSelection.QueueSurface; + queueIndex = gFootpathSelection.queueSurface; } // Select default railing auto railingIndex = FootpathGetDefaultRailings(); - const auto* railingEntry = GetPathRailingsEntry(gFootpathSelection.Railings); + const auto* railingEntry = GetPathRailingsEntry(gFootpathSelection.railings); if (railingEntry != nullptr) { - railingIndex = gFootpathSelection.Railings; + railingIndex = gFootpathSelection.railings; } // Select default legacy path auto legacyPathIndex = FootpathGetDefaultLegacyPath(); - if (gFootpathSelection.LegacyPath != kObjectEntryIndexNull) + if (gFootpathSelection.legacyPath != kObjectEntryIndexNull) { - if (FootpathIsLegacyPathEntryOkay(gFootpathSelection.LegacyPath)) + if (FootpathIsLegacyPathEntryOkay(gFootpathSelection.legacyPath)) { // Keep legacy path selected - legacyPathIndex = gFootpathSelection.LegacyPath; + legacyPathIndex = gFootpathSelection.legacyPath; } else { // Reset legacy path, we default to a surface (if there are any) - gFootpathSelection.LegacyPath = kObjectEntryIndexNull; + gFootpathSelection.legacyPath = kObjectEntryIndexNull; } } @@ -2195,12 +2195,12 @@ namespace OpenRCT2::Ui::Windows } // No surfaces available, so default to legacy path - gFootpathSelection.LegacyPath = legacyPathIndex; + gFootpathSelection.legacyPath = legacyPathIndex; } - gFootpathSelection.NormalSurface = surfaceIndex; - gFootpathSelection.QueueSurface = queueIndex; - gFootpathSelection.Railings = railingIndex; + gFootpathSelection.normalSurface = surfaceIndex; + gFootpathSelection.queueSurface = queueIndex; + gFootpathSelection.railings = railingIndex; return true; } } // namespace OpenRCT2::Ui::Windows diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index 8847bd534d34..e19246545e81 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -71,15 +71,15 @@ namespace OpenRCT2::PathConstructFlag struct FootpathSelection { - OpenRCT2::ObjectEntryIndex LegacyPath = OpenRCT2::kObjectEntryIndexNull; - OpenRCT2::ObjectEntryIndex NormalSurface = OpenRCT2::kObjectEntryIndexNull; - OpenRCT2::ObjectEntryIndex QueueSurface = OpenRCT2::kObjectEntryIndexNull; - OpenRCT2::ObjectEntryIndex Railings = OpenRCT2::kObjectEntryIndexNull; - bool IsQueueSelected{}; + OpenRCT2::ObjectEntryIndex legacyPath = OpenRCT2::kObjectEntryIndexNull; + OpenRCT2::ObjectEntryIndex normalSurface = OpenRCT2::kObjectEntryIndexNull; + OpenRCT2::ObjectEntryIndex queueSurface = OpenRCT2::kObjectEntryIndexNull; + OpenRCT2::ObjectEntryIndex railings = OpenRCT2::kObjectEntryIndexNull; + bool isQueueSelected{}; - OpenRCT2::ObjectEntryIndex GetSelectedSurface() const + OpenRCT2::ObjectEntryIndex getSelectedSurface() const { - return IsQueueSelected ? QueueSurface : NormalSurface; + return isQueueSelected ? queueSurface : normalSurface; } }; From 50c77a074c17005ce29da74cb49cccb7c71f2fd2 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 11 Jan 2026 20:01:05 +0100 Subject: [PATCH 214/222] Refactor reading BGR values from g1 palette entries (#25778) --- src/openrct2/drawing/ColourPalette.h | 6 + src/openrct2/drawing/Drawing.Sprite.cpp | 13 ++- src/openrct2/drawing/Drawing.cpp | 140 ++++++++++++------------ src/openrct2/drawing/Drawing.h | 3 +- src/openrct2/drawing/G1Element.h | 46 +++++--- src/openrct2/object/ImageTable.cpp | 7 ++ src/openrct2/object/ImageTable.h | 1 + src/openrct2/object/WaterObject.cpp | 20 ++-- src/openrct2/object/WaterObject.h | 2 +- 9 files changed, 138 insertions(+), 100 deletions(-) diff --git a/src/openrct2/drawing/ColourPalette.h b/src/openrct2/drawing/ColourPalette.h index ee15a1b63c3f..4425568b9b38 100644 --- a/src/openrct2/drawing/ColourPalette.h +++ b/src/openrct2/drawing/ColourPalette.h @@ -5,6 +5,12 @@ namespace OpenRCT2::Drawing { + struct BGRColour + { + uint8_t blue{}; + uint8_t green{}; + uint8_t red{}; + }; struct PaletteBGRA { diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index c4df1000ac52..63c2266dcc28 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -1105,6 +1105,15 @@ const G1Element* GfxGetG1Element(ImageIndex image_id) return nullptr; } +const G1Palette* GfxGetG1Palette(ImageIndex imageId) +{ + const auto* element = GfxGetG1Element(imageId); + if (element == nullptr) + return nullptr; + + return element->asPalette(); +} + void GfxSetG1Element(ImageIndex imageId, const G1Element* g1) { bool isTemp = imageId == SPR_TEMP; @@ -1161,9 +1170,9 @@ bool IsCsgLoaded() size_t G1CalculateDataSize(const G1Element* g1) { - if (g1->flags.has(G1Flag::isPalette)) + if (const auto* asPalette = g1->asPalette()) { - return g1->numColours * 3; + return asPalette->numColours * 3; } if (g1->flags.has(G1Flag::hasRLECompression)) diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 8e6508ef92e9..2cbea2cee9b7 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -698,29 +698,28 @@ void GfxFilterPixel(RenderTarget& rt, const ScreenCoordsXY& coords, FilterPalett * a1 (ebx) * product (cl) */ -void GfxTransposePalette(int32_t pal, uint8_t product) +void GfxTransposePalette(ImageIndex pal, uint8_t product) { - const G1Element* g1 = GfxGetG1Element(pal); - if (g1 != nullptr) - { - int32_t width = g1->width; - int32_t x = g1->xOffset; - uint8_t* source_pointer = g1->offset; + const auto* g1 = GfxGetG1Palette(pal); + if (g1 == nullptr) + return; - for (; width > 0; width--) - { - auto& dest_pointer = gGamePalette[x]; - // Make sure the image never gets darker than the void colour (not-quite-block), to the background colour jumping - // between void and 100% black. - dest_pointer.Blue = std::max(35, ((source_pointer[0] * product) >> 8)); - dest_pointer.Green = std::max(35, ((source_pointer[1] * product) >> 8)); - dest_pointer.Red = std::max(23, ((source_pointer[2] * product) >> 8)); - source_pointer += 3; - - x++; - } - UpdatePalette(gGamePalette, PaletteIndex::pi10, 236); + auto index = g1->startIndex; + auto* src = g1->palette; + + for (auto numColours = g1->numColours; numColours > 0; numColours--) + { + auto& dst = gGamePalette[index]; + // Make sure the image never gets darker than the void colour (not-quite-black), to avoid the background colour + // jumping between void and 100% black. + dst.Blue = std::max(35, ((src->blue * product) >> 8)); + dst.Green = std::max(35, ((src->green * product) >> 8)); + dst.Red = std::max(23, ((src->red * product) >> 8)); + src++; + + index++; } + UpdatePalette(gGamePalette, PaletteIndex::pi10, 236); } /** @@ -743,20 +742,19 @@ void LoadPalette() palette = water_type->image_id; } - const G1Element* g1 = GfxGetG1Element(palette); + const auto* g1 = GfxGetG1Palette(palette); if (g1 != nullptr) { - int32_t width = g1->width; - int32_t x = g1->xOffset; - uint8_t* src = g1->offset; - for (; width > 0; width--) + auto index = g1->startIndex; + auto* src = g1->palette; + for (auto numColours = g1->numColours; numColours > 0; numColours--) { - auto& dst = gGamePalette[x]; - dst.Blue = src[0]; - dst.Green = src[1]; - dst.Red = src[2]; - src += 3; - x++; + auto& dst = gGamePalette[index]; + dst.Blue = src->blue; + dst.Green = src->green; + dst.Red = src->red; + src++; + index++; } } UpdatePalette(gGamePalette, PaletteIndex::pi10, 236); @@ -957,17 +955,18 @@ void UpdatePaletteEffects() { palette = water_type->image_id; } - const G1Element* g1 = GfxGetG1Element(palette); + const auto* g1 = GfxGetG1Palette(palette); if (g1 != nullptr) { - int32_t xoffset = g1->xOffset; + auto startIndex = g1->startIndex; - for (int32_t i = 0; i < g1->width; i++) + for (int32_t i = 0; i < g1->numColours; i++) { - auto& paletteOffset = gGamePalette[xoffset + i]; - paletteOffset.Blue = -((0xFF - g1->offset[(i * 3) + 0]) / 2) - 1; - paletteOffset.Green = -((0xFF - g1->offset[(i * 3) + 1]) / 2) - 1; - paletteOffset.Red = -((0xFF - g1->offset[(i * 3) + 2]) / 2) - 1; + auto& paletteOffset = gGamePalette[startIndex + i]; + const auto& g1PaletteEntry = g1->palette[i]; + paletteOffset.Blue = -((0xFF - g1PaletteEntry.blue) / 2) - 1; + paletteOffset.Green = -((0xFF - g1PaletteEntry.green) / 2) - 1; + paletteOffset.Red = -((0xFF - g1PaletteEntry.red) / 2) - 1; } UpdatePalette(gGamePalette, kPaletteOffsetDynamic, kPaletteLengthDynamic); @@ -986,17 +985,18 @@ void UpdatePaletteEffects() palette = water_type->image_id; } - const G1Element* g1 = GfxGetG1Element(palette); + const auto* g1 = GfxGetG1Palette(palette); if (g1 != nullptr) { - int32_t xoffset = g1->xOffset; + auto startIndex = g1->startIndex; - for (int32_t i = 0; i < g1->width; i++) + for (int32_t i = 0; i < g1->numColours; i++) { - auto& paletteOffset = gGamePalette[xoffset + i]; - paletteOffset.Blue = g1->offset[(i * 3) + 0]; - paletteOffset.Green = g1->offset[(i * 3) + 1]; - paletteOffset.Red = g1->offset[(i * 3) + 2]; + auto& paletteOffset = gGamePalette[startIndex + i]; + const auto& g1PaletteEntry = g1->palette[i]; + paletteOffset.Blue = g1PaletteEntry.blue; + paletteOffset.Green = g1PaletteEntry.green; + paletteOffset.Red = g1PaletteEntry.red; } } } @@ -1022,21 +1022,21 @@ void UpdatePaletteEffects() { waterId = water_type->palette_index_1; } - const G1Element* g1 = GfxGetG1Element(shade + waterId); + const auto* g1 = GfxGetG1Palette(shade + waterId); if (g1 != nullptr) { - uint8_t* vs = &g1->offset[j * 3]; + const auto* g1PaletteEntry = &g1->palette[j]; int32_t n = kPaletteLengthWaterWaves; for (int32_t i = 0; i < n; i++) { auto& vd = gGamePalette[EnumValue(kPaletteOffsetWaterWaves) + i]; - vd.Blue = vs[0]; - vd.Green = vs[1]; - vd.Red = vs[2]; - vs += 9; - if (vs >= &g1->offset[9 * n]) + vd.Blue = g1PaletteEntry->blue; + vd.Green = g1PaletteEntry->green; + vd.Red = g1PaletteEntry->red; + g1PaletteEntry += 3; + if (g1PaletteEntry >= &g1->palette[3 * n]) { - vs -= 9 * n; + g1PaletteEntry -= 3 * n; } } } @@ -1047,42 +1047,42 @@ void UpdatePaletteEffects() waterId = water_type->palette_index_2; } - g1 = GfxGetG1Element(shade + waterId); + g1 = GfxGetG1Palette(shade + waterId); if (g1 != nullptr) { - uint8_t* vs = &g1->offset[j * 3]; + auto* src = &g1->palette[j]; int32_t n = kPaletteLengthWaterSparkles; for (int32_t i = 0; i < n; i++) { auto& vd = gGamePalette[EnumValue(kPaletteOffsetWaterSparkles) + i]; - vd.Blue = vs[0]; - vd.Green = vs[1]; - vd.Red = vs[2]; - vs += 9; - if (vs >= &g1->offset[9 * n]) + vd.Blue = src->blue; + vd.Green = src->green; + vd.Red = src->red; + src += 3; + if (src >= &g1->palette[3 * n]) { - vs -= 9 * n; + src -= 3 * n; } } } j = (static_cast(gPaletteEffectFrame * -960) * 3) >> 16; waterId = SPR_GAME_PALETTE_4; - g1 = GfxGetG1Element(shade + waterId); + g1 = GfxGetG1Palette(shade + waterId); if (g1 != nullptr) { - uint8_t* vs = &g1->offset[j * 3]; - int32_t n = 3; + auto* src = &g1->palette[j]; + const int32_t n = 3; for (int32_t i = 0; i < n; i++) { auto& vd = gGamePalette[EnumValue(PaletteIndex::pi243) + i]; - vd.Blue = vs[0]; - vd.Green = vs[1]; - vd.Red = vs[2]; - vs += 3; - if (vs >= &g1->offset[3 * n]) + vd.Blue = src->blue; + vd.Green = src->green; + vd.Red = src->red; + src++; + if (src >= &g1->palette[3]) { - vs -= 3 * n; + src -= n; } } } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 41be8730b4e4..0f508aa475fb 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -245,7 +245,7 @@ void GfxSetDirtyBlocks(const ScreenRect& rect); void GfxInvalidateScreen(); // palette -void GfxTransposePalette(int32_t pal, uint8_t product); +void GfxTransposePalette(ImageIndex pal, uint8_t product); void LoadPalette(); // other @@ -271,6 +271,7 @@ void GfxUnloadG2AndFonts(); void GfxUnloadCsg(); const OpenRCT2::G1Element* GfxGetG1Element(const ImageId imageId); const OpenRCT2::G1Element* GfxGetG1Element(ImageIndex image_id); +const OpenRCT2::G1Palette* GfxGetG1Palette(ImageIndex imageId); void GfxSetG1Element(ImageIndex imageId, const OpenRCT2::G1Element* g1); std::optional GfxLoadGx(const std::vector& buffer); bool IsCsgLoaded(); diff --git a/src/openrct2/drawing/G1Element.h b/src/openrct2/drawing/G1Element.h index a7d0790d3ad1..798e5f6b76cd 100644 --- a/src/openrct2/drawing/G1Element.h +++ b/src/openrct2/drawing/G1Element.h @@ -15,6 +15,11 @@ #include #include +namespace OpenRCT2::Drawing +{ + struct BGRColour; +} + namespace OpenRCT2 { enum class G1Flag : uint8_t @@ -28,24 +33,37 @@ namespace OpenRCT2 }; using G1Flags = FlagHolder; + struct G1Palette + { + Drawing::BGRColour* palette = nullptr; + int16_t numColours = 0; + int16_t pad1 = 0; // unused for palettes + int16_t startIndex = 0; + int16_t pad2 = 0; // unused for palettes + G1Flags flags = { G1Flag::isPalette }; + int32_t pad3 = 0; // unused for palettes + }; + struct G1Element { - uint8_t* offset = nullptr; // 0x00 - union - { - int16_t width = 0; // 0x04 - int16_t numColours; // If G1Flag::isPalette is set - }; - int16_t height = 0; // 0x06 - union + uint8_t* offset = nullptr; + int16_t width = 0; + int16_t height = 0; + int16_t xOffset = 0; + int16_t yOffset = 0; + + G1Flags flags = {}; + int32_t zoomedOffset = 0; + + const G1Palette* asPalette() const { - int16_t xOffset = 0; // 0x08 - int16_t startIndex; // If G1Flag::isPalette is set - }; - int16_t yOffset = 0; // 0x0A - G1Flags flags = {}; // 0x0C - int32_t zoomedOffset = 0; // 0x0E + if (!flags.has(G1Flag::isPalette)) + return nullptr; + + return reinterpret_cast(this); + } }; + static_assert(sizeof(G1Palette) == sizeof(G1Element)); #pragma pack(push, 1) struct G1Header diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index d0673a5ad5e2..6e69d73fd817 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -643,4 +643,11 @@ namespace OpenRCT2 } _entries.push_back(std::move(newg1)); } + + void ImageTable::addPalette(const G1Palette& g1) + { + Guard::Assert(g1.flags.has(G1Flag::isPalette)); + const auto base = reinterpret_cast(&g1); + AddImage(base); + } } // namespace OpenRCT2 diff --git a/src/openrct2/object/ImageTable.h b/src/openrct2/object/ImageTable.h index 97189de7bd22..075c35e59b3d 100644 --- a/src/openrct2/object/ImageTable.h +++ b/src/openrct2/object/ImageTable.h @@ -68,5 +68,6 @@ namespace OpenRCT2 return static_cast(_entries.size()); } void AddImage(const G1Element* g1); + void addPalette(const G1Palette& g1); }; } // namespace OpenRCT2 diff --git a/src/openrct2/object/WaterObject.cpp b/src/openrct2/object/WaterObject.cpp index e625132c45fe..bce5be6c327e 100644 --- a/src/openrct2/object/WaterObject.cpp +++ b/src/openrct2/object/WaterObject.cpp @@ -107,32 +107,28 @@ namespace OpenRCT2 auto numColours = jColours.size(); // This pointer gets memcopied in ImageTable::AddImage so it's fine for the unique_ptr to go out of scope - auto data = std::make_unique(numColours * 3); + auto data = std::make_unique(numColours); size_t dataIndex = 0; for (auto& jColour : jColours) { if (jColour.is_string()) { - auto colour = ParseColour(Json::GetString(jColour)); - data[dataIndex + 0] = (colour >> 16) & 0xFF; - data[dataIndex + 1] = (colour >> 8) & 0xFF; - data[dataIndex + 2] = colour & 0xFF; + data[dataIndex] = ParseColour(Json::GetString(jColour)); } - dataIndex += 3; + dataIndex++; } - G1Element g1 = {}; - g1.offset = data.get(); + G1Palette g1 = {}; + g1.palette = data.get(); g1.numColours = static_cast(numColours); g1.startIndex = Json::GetNumber(jPalette["index"]); - g1.flags = { G1Flag::isPalette }; auto& imageTable = GetImageTable(); - imageTable.AddImage(&g1); + imageTable.addPalette(g1); } - uint32_t WaterObject::ParseColour(const std::string& s) const + Drawing::BGRColour WaterObject::ParseColour(const std::string& s) const { uint8_t r = 0; uint8_t g = 0; @@ -144,6 +140,6 @@ namespace OpenRCT2 g = std::stoul(s.substr(3, 2), nullptr, 16) & 0xFF; b = std::stoul(s.substr(5, 2), nullptr, 16) & 0xFF; } - return (b << 16) | (g << 8) | r; + return { b, g, r }; } } // namespace OpenRCT2 diff --git a/src/openrct2/object/WaterObject.h b/src/openrct2/object/WaterObject.h index 043820cbffa9..ae737c1fc7f5 100644 --- a/src/openrct2/object/WaterObject.h +++ b/src/openrct2/object/WaterObject.h @@ -36,6 +36,6 @@ namespace OpenRCT2 private: void ReadJsonPalette(json_t& jPalette); - uint32_t ParseColour(const std::string& s) const; + Drawing::BGRColour ParseColour(const std::string& s) const; }; } // namespace OpenRCT2 From 4e502fde4227303d7190f002766e53996b45fde2 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:15:27 +0100 Subject: [PATCH 215/222] Refactor FootpathPaintInfo, create Paint.Path.h (#25796) --- src/openrct2/libopenrct2.vcxproj | 1 + src/openrct2/paint/Paint.h | 12 --- src/openrct2/paint/support/MetalSupports.cpp | 14 +-- src/openrct2/paint/support/MetalSupports.h | 4 +- src/openrct2/paint/support/WoodenSupports.cpp | 13 +-- src/openrct2/paint/support/WoodenSupports.h | 4 +- .../paint/tile_element/Paint.Path.cpp | 88 ++++++++----------- src/openrct2/paint/tile_element/Paint.Path.h | 21 +++++ .../paint/tile_element/Paint.TileElement.cpp | 1 + .../paint/tile_element/Paint.TileElement.h | 1 - src/openrct2/world/Footpath.h | 27 +++--- .../world/tile_element/PathElement.cpp | 24 ++--- src/openrct2/world/tile_element/PathElement.h | 4 +- 13 files changed, 107 insertions(+), 107 deletions(-) create mode 100644 src/openrct2/paint/tile_element/Paint.Path.h diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 34bb1b2990ce..fa8c26e3d85a 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -392,6 +392,7 @@ + diff --git a/src/openrct2/paint/Paint.h b/src/openrct2/paint/Paint.h index 5f6141d90c63..c24bd8006b3c 100644 --- a/src/openrct2/paint/Paint.h +++ b/src/openrct2/paint/Paint.h @@ -233,18 +233,6 @@ struct PaintSession : public PaintSessionCore } }; -struct FootpathPaintInfo -{ - uint32_t SurfaceImageId{}; - uint32_t BridgeImageId{}; - uint32_t RailingsImageId{}; - uint32_t SurfaceFlags{}; - uint32_t RailingFlags{}; - uint8_t ScrollingMode{}; - RailingEntrySupportType SupportType{}; - colour_t SupportColour = 255; -}; - extern PaintSession gPaintSession; // Globals for paint clipping diff --git a/src/openrct2/paint/support/MetalSupports.cpp b/src/openrct2/paint/support/MetalSupports.cpp index 27046b534aaf..11181f0ad5ad 100644 --- a/src/openrct2/paint/support/MetalSupports.cpp +++ b/src/openrct2/paint/support/MetalSupports.cpp @@ -513,7 +513,7 @@ void DrawSupportsSideBySide( */ bool PathPoleSupportsPaintSetup( PaintSession& session, const MetalSupportPlace supportPlace, const bool isSloped, const int32_t height, - ImageId imageTemplate, const FootpathPaintInfo& pathPaintInfo) + ImageId imageTemplate, const PathRailingsDescriptor& railings) { auto segment = EnumValue(supportPlace); @@ -541,7 +541,7 @@ bool PathPoleSupportsPaintSetup( uint16_t baseHeight; if ((supportSegments[segment].slope & kTileSlopeAboveTrackOrScenery) || (height - supportSegments[segment].height < 6) - || !(pathPaintInfo.RailingFlags & RAILING_ENTRY_FLAG_HAS_SUPPORT_BASE_SPRITE)) + || !(railings.flags & RAILING_ENTRY_FLAG_HAS_SUPPORT_BASE_SPRITE)) { baseHeight = supportSegments[segment].height; } @@ -551,7 +551,7 @@ bool PathPoleSupportsPaintSetup( baseHeight = supportSegments[segment].height; PaintAddImageAsParent( - session, imageTemplate.WithIndex(pathPaintInfo.BridgeImageId + 37 + imageOffset), + session, imageTemplate.WithIndex(railings.bridgeImage + 37 + imageOffset), { kMetalSupportBoundBoxOffsets[segment].x, kMetalSupportBoundBoxOffsets[segment].y, baseHeight }, { 0, 0, 5 }); baseHeight += 6; } @@ -570,7 +570,7 @@ bool PathPoleSupportsPaintSetup( if (heightDiff > 0) { PaintAddImageAsParent( - session, imageTemplate.WithIndex(pathPaintInfo.BridgeImageId + 20 + (heightDiff - 1)), + session, imageTemplate.WithIndex(railings.bridgeImage + 20 + (heightDiff - 1)), { kMetalSupportBoundBoxOffsets[segment], baseHeight }, { 0, 0, heightDiff - 1 }); } @@ -603,7 +603,7 @@ bool PathPoleSupportsPaintSetup( } PaintAddImageAsParent( - session, imageTemplate.WithIndex(pathPaintInfo.BridgeImageId + 20 + (z - 1)), + session, imageTemplate.WithIndex(railings.bridgeImage + 20 + (z - 1)), { kMetalSupportBoundBoxOffsets[segment], baseHeight }, { 0, 0, (z - 1) }); baseHeight += z; @@ -614,7 +614,7 @@ bool PathPoleSupportsPaintSetup( break; } - ImageIndex imageIndex = pathPaintInfo.BridgeImageId + 20 + (z - 1); + ImageIndex imageIndex = railings.bridgeImage + 20 + (z - 1); if (z == kMetalSupportMaxSectionHeight) { imageIndex += 1; @@ -649,7 +649,7 @@ bool PathPoleSupportsPaintSetup( break; } - ImageIndex imageIndex = pathPaintInfo.BridgeImageId + 20 + (z - 1); + ImageIndex imageIndex = railings.bridgeImage + 20 + (z - 1); PaintAddImageAsParent( session, imageTemplate.WithIndex(imageIndex), { kMetalSupportBoundBoxOffsets[segment], baseHeight }, { 0, 0, 0 }); diff --git a/src/openrct2/paint/support/MetalSupports.h b/src/openrct2/paint/support/MetalSupports.h index adf271b9ef0d..8345a1d18523 100644 --- a/src/openrct2/paint/support/MetalSupports.h +++ b/src/openrct2/paint/support/MetalSupports.h @@ -86,8 +86,8 @@ enum class MetalSupportPlace : uint8_t none = 255, }; -struct FootpathPaintInfo; struct PaintSession; +struct PathRailingsDescriptor; /** @deprecated */ bool MetalASupportsPaintSetup( @@ -108,4 +108,4 @@ void DrawSupportsSideBySide( int32_t heightExtra = 0); bool PathPoleSupportsPaintSetup( PaintSession& session, MetalSupportPlace supportPlace, bool isSloped, int32_t height, ImageId imageTemplate, - const FootpathPaintInfo& pathPaintInfo); + const PathRailingsDescriptor& railings); diff --git a/src/openrct2/paint/support/WoodenSupports.cpp b/src/openrct2/paint/support/WoodenSupports.cpp index 65240cf76a48..48fa7aa0025c 100644 --- a/src/openrct2/paint/support/WoodenSupports.cpp +++ b/src/openrct2/paint/support/WoodenSupports.cpp @@ -12,6 +12,7 @@ #include "../../SpriteIds.h" #include "../../interface/Viewport.h" #include "../../ride/TrackData.h" +#include "../../world/Footpath.h" #include "../../world/tile_element/Slope.h" #include "../Boundbox.h" #include "../Paint.SessionFlags.h" @@ -625,17 +626,17 @@ bool WoodenBSupportsPaintSetupRotated( */ bool PathBoxSupportsPaintSetup( PaintSession& session, WoodenSupportSubType supportType, bool isSloped, Direction slopeRotation, int32_t height, - ImageId imageTemplate, const FootpathPaintInfo& pathPaintInfo) + ImageId imageTemplate, const PathRailingsDescriptor& railings) { auto supportOrientationOffset = (supportType == WoodenSupportSubType::nwSe) ? 24 : 0; uint16_t baseHeight = 0; bool hasSupports = false; SupportsIdDescriptor supportIds = { - .Full = pathPaintInfo.BridgeImageId + 22 + supportOrientationOffset, - .Half = pathPaintInfo.BridgeImageId + 23 + supportOrientationOffset, - .Flat = pathPaintInfo.BridgeImageId + 48, - .Slope = pathPaintInfo.BridgeImageId + supportOrientationOffset, + .Full = railings.bridgeImage + 22 + supportOrientationOffset, + .Half = railings.bridgeImage + 23 + supportOrientationOffset, + .Flat = railings.bridgeImage + 48, + .Slope = railings.bridgeImage + supportOrientationOffset, }; if (!WoodenSupportsPaintSetupCommon<11, false>(session, supportIds, height, imageTemplate, hasSupports, baseHeight)) @@ -645,7 +646,7 @@ bool PathBoxSupportsPaintSetup( if (isSloped) { - ImageIndex imageIndex = pathPaintInfo.BridgeImageId + 55 + slopeRotation; + ImageIndex imageIndex = railings.bridgeImage + 55 + slopeRotation; PaintSlopeTransitions(kSlopedPathSupportsDescriptor, imageIndex, session, imageTemplate, baseHeight); hasSupports = true; diff --git a/src/openrct2/paint/support/WoodenSupports.h b/src/openrct2/paint/support/WoodenSupports.h index f619ebfbea21..dee40b48fe2e 100644 --- a/src/openrct2/paint/support/WoodenSupports.h +++ b/src/openrct2/paint/support/WoodenSupports.h @@ -64,8 +64,8 @@ enum class WoodenSupportTransitionType : uint8_t }; constexpr int32_t kWoodenSupportTransitionTypeCount = 21; -struct FootpathPaintInfo; struct PaintSession; +struct PathRailingsDescriptor; bool WoodenASupportsPaintSetup( PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate, @@ -81,7 +81,7 @@ bool WoodenBSupportsPaintSetupRotated( ImageId imageTemplate, WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::none); bool PathBoxSupportsPaintSetup( PaintSession& session, WoodenSupportSubType supportType, bool isSloped, Direction slopeRotation, int32_t height, - ImageId imageTemplate, const FootpathPaintInfo& pathPaintInfo); + ImageId imageTemplate, const PathRailingsDescriptor& pathPaintInfo); bool DrawSupportForSequenceA( PaintSession& session, WoodenSupportType supportType, OpenRCT2::TrackElemType trackType, uint8_t sequence, Direction direction, int32_t height, ImageId imageTemplate); diff --git a/src/openrct2/paint/tile_element/Paint.Path.cpp b/src/openrct2/paint/tile_element/Paint.Path.cpp index fcfbf82a12ce..c58366e2f537 100644 --- a/src/openrct2/paint/tile_element/Paint.Path.cpp +++ b/src/openrct2/paint/tile_element/Paint.Path.cpp @@ -7,15 +7,12 @@ * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ -#include "../Paint.h" +#include "Paint.Path.h" #include "../../Context.h" -#include "../../Game.h" #include "../../GameState.h" #include "../../config/Config.h" -#include "../../core/Numerics.hpp" #include "../../drawing/Drawing.h" -#include "../../entity/PatrolArea.h" #include "../../interface/Viewport.h" #include "../../localisation/Formatter.h" #include "../../localisation/Formatting.h" @@ -28,11 +25,8 @@ #include "../../ride/Ride.h" #include "../../ride/Track.h" #include "../../ride/TrackDesign.h" -#include "../../ride/TrackPaint.h" #include "../../world/Footpath.h" #include "../../world/Map.h" -#include "../../world/Scenery.h" -#include "../../world/TileInspector.h" #include "../../world/tile_element/PathElement.h" #include "../../world/tile_element/Slope.h" #include "../../world/tile_element/SurfaceElement.h" @@ -50,6 +44,12 @@ using namespace OpenRCT2; using namespace OpenRCT2::Drawing; +struct FootpathPaintInfo +{ + PathSurfaceDescriptor surface{}; + PathRailingsDescriptor railings{}; +}; + bool gPaintWidePathsAsGhost = false; const uint8_t kPathSlopeToLandSlope[] = { @@ -110,18 +110,18 @@ static constexpr WoodenSupportSubType PathSupportOrientation[] = { }; // clang-format on -void PathPaintBoxSupport( +static void PathPaintBoxSupport( PaintSession& session, const PathElement& pathElement, int32_t height, const FootpathPaintInfo& pathPaintInfo, bool hasSupports, ImageId imageTemplate, ImageId sceneryImageTemplate); -void PathPaintPoleSupport( +static void PathPaintPoleSupport( PaintSession& session, const PathElement& pathElement, int16_t height, const FootpathPaintInfo& pathPaintInfo, bool hasSupports, ImageId imageTemplate, ImageId sceneryImageTemplate); static void PathPaintQueueBanner( - PaintSession& session, const PathElement& pathElement, uint16_t height, const FootpathPaintInfo& pathPaintInfo, + PaintSession& session, const PathElement& pathElement, uint16_t height, const PathRailingsDescriptor& railings, ImageId imageTemplate) { - auto imageId = imageTemplate.WithIndex(pathPaintInfo.RailingsImageId); + auto imageId = imageTemplate.WithIndex(railings.railingsImage); uint8_t direction = pathElement.GetQueueBannerDirection(); // Draw ride sign @@ -152,7 +152,7 @@ static void PathPaintQueueBanner( auto ride = GetRide(pathElement.GetRideIndex()); if (direction < 2 && ride != nullptr && !imageTemplate.IsRemap()) { - uint16_t scrollingMode = pathPaintInfo.ScrollingMode; + uint16_t scrollingMode = railings.scrollingMode; scrollingMode += direction; auto ft = Formatter(); @@ -227,9 +227,9 @@ static void PathPaintSlopedFences( static void PathPaintFencesAndQueueBannersQueue( PaintSession& session, const PathElement& pathElement, uint16_t height, uint32_t connectedEdges, bool hasSupports, - const FootpathPaintInfo& pathPaintInfo, ImageId imageTemplate) + const PathRailingsDescriptor& railings, ImageId imageTemplate) { - auto imageId = imageTemplate.WithIndex(pathPaintInfo.RailingsImageId); + auto imageId = imageTemplate.WithIndex(railings.railingsImage); if (pathElement.IsSloped()) { @@ -367,9 +367,9 @@ static void PathPaintFencesAndQueueBannersQueue( } } - if (pathElement.HasQueueBanner() && !(pathPaintInfo.RailingFlags & RAILING_ENTRY_FLAG_NO_QUEUE_BANNER)) + if (pathElement.HasQueueBanner() && !(railings.flags & RAILING_ENTRY_FLAG_NO_QUEUE_BANNER)) { - PathPaintQueueBanner(session, pathElement, height, pathPaintInfo, imageTemplate); + PathPaintQueueBanner(session, pathElement, height, railings, imageTemplate); } } @@ -377,17 +377,17 @@ static void PathPaintFencesAndQueueBannersNonQueue( PaintSession& session, const PathElement& pathElement, uint16_t height, uint32_t connectedEdges, bool hasSupports, const FootpathPaintInfo& pathPaintInfo, ImageId imageTemplate) { - auto imageId = imageTemplate.WithIndex(pathPaintInfo.RailingsImageId); + auto imageId = imageTemplate.WithIndex(pathPaintInfo.railings.railingsImage); uint32_t drawnCorners = 0; // If the path is not drawn over the supports, then no corner sprites will be drawn (making double-width paths // look like connected series of intersections). - if (pathPaintInfo.RailingFlags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS) + if (pathPaintInfo.railings.flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS) { drawnCorners = (connectedEdges & FOOTPATH_PROPERTIES_EDGES_CORNERS_MASK) >> 4; } - auto slopeRailingsSupported = !(pathPaintInfo.SurfaceFlags & FOOTPATH_ENTRY_FLAG_NO_SLOPE_RAILINGS); + auto slopeRailingsSupported = !(pathPaintInfo.surface.flags & FOOTPATH_ENTRY_FLAG_NO_SLOPE_RAILINGS); if ((hasSupports || slopeRailingsSupported) && pathElement.IsSloped()) { PathPaintSlopedFences(session, pathElement, height, imageId, false); @@ -582,7 +582,7 @@ static void PathPaintFencesAndQueueBanners( if (pathElement.IsQueue()) { PathPaintFencesAndQueueBannersQueue( - session, pathElement, height, connectedEdges, hasSupports, pathPaintInfo, imageTemplate); + session, pathElement, height, connectedEdges, hasSupports, pathPaintInfo.railings, imageTemplate); } else { @@ -681,24 +681,8 @@ static void PathPaintFencesAdditionsTunnels( static FootpathPaintInfo GetFootpathPaintInfo(const PathElement& pathEl) { FootpathPaintInfo pathPaintInfo; - - const auto* surfaceDescriptor = pathEl.GetSurfaceDescriptor(); - if (surfaceDescriptor != nullptr) - { - pathPaintInfo.SurfaceImageId = surfaceDescriptor->image; - pathPaintInfo.SurfaceFlags = surfaceDescriptor->flags; - } - - const auto* railingsDescriptor = pathEl.GetRailingsDescriptor(); - if (railingsDescriptor != nullptr) - { - pathPaintInfo.BridgeImageId = railingsDescriptor->bridgeImage; - pathPaintInfo.RailingsImageId = railingsDescriptor->railingsImage; - pathPaintInfo.RailingFlags = railingsDescriptor->flags; - pathPaintInfo.ScrollingMode = railingsDescriptor->scrollingMode; - pathPaintInfo.SupportType = railingsDescriptor->supportType; - pathPaintInfo.SupportColour = railingsDescriptor->supportColour; - } + pathPaintInfo.surface = pathEl.GetSurfaceDescriptor(); + pathPaintInfo.railings = pathEl.GetRailingsDescriptor(); return pathPaintInfo; } @@ -834,7 +818,7 @@ void PaintPath(PaintSession& session, uint16_t height, const PathElement& tileEl auto hasSupports = ShouldDrawSupports(session, tileElement, height); auto pathPaintInfo = GetFootpathPaintInfo(tileElement); - if (pathPaintInfo.SupportType == RailingEntrySupportType::pole) + if (pathPaintInfo.railings.supportType == RailingEntrySupportType::pole) { PathPaintPoleSupport(session, tileElement, height, pathPaintInfo, hasSupports, imageTemplate, sceneryImageTemplate); } @@ -863,7 +847,7 @@ static ImageIndex PathPaintGetBaseImage( const PaintSession& session, const PathElement& pathElement, const FootpathPaintInfo& pathPaintInfo, const uint8_t rotatedEdgesAndCorners) { - ImageIndex surfaceBaseImageIndex = pathPaintInfo.SurfaceImageId; + ImageIndex surfaceBaseImageIndex = pathPaintInfo.surface.image; if (pathElement.IsSloped()) { auto directionOffset = (pathElement.GetSlopeDirection() + session.CurrentRotation) % kNumOrthogonalDirections; @@ -952,7 +936,7 @@ static void PathPaintSegmentSupportHeight( } } -void PathPaintBoxSupport( +static void PathPaintBoxSupport( PaintSession& session, const PathElement& pathElement, int32_t height, const FootpathPaintInfo& pathPaintInfo, bool hasSupports, ImageId imageTemplate, ImageId sceneryImageTemplate) { @@ -975,16 +959,16 @@ void PathPaintBoxSupport( if (pathElement.IsSloped()) { auto directionOffset = (pathElement.GetSlopeDirection() + session.CurrentRotation) % kNumOrthogonalDirections; - bridgeBaseImageIndex = pathPaintInfo.BridgeImageId + 51 + directionOffset; + bridgeBaseImageIndex = pathPaintInfo.railings.bridgeImage + 51 + directionOffset; } else { - bridgeBaseImageIndex = EnumValue(PathSupportOrientation[edges]) + pathPaintInfo.BridgeImageId + 49; + bridgeBaseImageIndex = EnumValue(PathSupportOrientation[edges]) + pathPaintInfo.railings.bridgeImage + 49; } PaintAddImageAsParent(session, imageTemplate.WithIndex(bridgeBaseImageIndex), { 0, 0, height }, boundbox); - if (pathElement.IsQueue() || (pathPaintInfo.RailingFlags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS)) + if (pathElement.IsQueue() || (pathPaintInfo.railings.flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS)) { PaintAddImageAsChild(session, imageTemplate.WithIndex(surfaceBaseImageIndex), { 0, 0, height }, boundbox); } @@ -1000,12 +984,13 @@ void PathPaintBoxSupport( } PathBoxSupportsPaintSetup( - session, PathSupportOrientation[edges], pathElement.IsSloped(), slopeDirection, height, imageTemplate, pathPaintInfo); + session, PathSupportOrientation[edges], pathElement.IsSloped(), slopeDirection, height, imageTemplate, + pathPaintInfo.railings); PathPaintSegmentSupportHeight(session, pathElement, height, edges, hasSupports); } -void PathPaintPoleSupport( +static void PathPaintPoleSupport( PaintSession& session, const PathElement& pathElement, int16_t height, const FootpathPaintInfo& pathPaintInfo, bool hasSupports, ImageId imageTemplate, ImageId sceneryImageTemplate) { @@ -1029,16 +1014,16 @@ void PathPaintPoleSupport( if (pathElement.IsSloped()) { bridgeBaseImageIndex = ((pathElement.GetSlopeDirection() + session.CurrentRotation) % kNumOrthogonalDirections) - + pathPaintInfo.BridgeImageId + 16; + + pathPaintInfo.railings.bridgeImage + 16; } else { - bridgeBaseImageIndex = edges + pathPaintInfo.BridgeImageId; + bridgeBaseImageIndex = edges + pathPaintInfo.railings.bridgeImage; } PaintAddImageAsParent(session, imageTemplate.WithIndex(bridgeBaseImageIndex), { 0, 0, height }, boundbox); - if (pathElement.IsQueue() || (pathPaintInfo.RailingFlags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS)) + if (pathElement.IsQueue() || (pathPaintInfo.railings.flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS)) { PaintAddImageAsChild(session, imageTemplate.WithIndex(surfaceBaseImageIndex), { 0, 0, height }, boundbox); } @@ -1060,12 +1045,13 @@ void PathPaintPoleSupport( if (!(edges & (1 << i))) { // Only colour the supports if not already remapped (e.g. ghost remap) - auto supportColour = pathPaintInfo.SupportColour; + auto supportColour = pathPaintInfo.railings.supportColour; if (supportColour != COLOUR_NULL && !imageTemplate.IsRemap()) { imageTemplate = ImageId().WithPrimary(supportColour); } - PathPoleSupportsPaintSetup(session, supports[i], pathElement.IsSloped(), height, imageTemplate, pathPaintInfo); + PathPoleSupportsPaintSetup( + session, supports[i], pathElement.IsSloped(), height, imageTemplate, pathPaintInfo.railings); } } diff --git a/src/openrct2/paint/tile_element/Paint.Path.h b/src/openrct2/paint/tile_element/Paint.Path.h new file mode 100644 index 000000000000..a4dda09f4731 --- /dev/null +++ b/src/openrct2/paint/tile_element/Paint.Path.h @@ -0,0 +1,21 @@ +/***************************************************************************** + * Copyright (c) 2014-2026 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include + +struct PaintSession; + +namespace OpenRCT2 +{ + struct PathElement; +} + +void PaintPath(PaintSession& session, uint16_t height, const OpenRCT2::PathElement& tileElement); diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.cpp b/src/openrct2/paint/tile_element/Paint.TileElement.cpp index 761a26db7dfb..a79af845b6b3 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.cpp +++ b/src/openrct2/paint/tile_element/Paint.TileElement.cpp @@ -30,6 +30,7 @@ #include "../Paint.SessionFlags.h" #include "../Paint.h" #include "../VirtualFloor.h" +#include "Paint.Path.h" #include "Paint.Surface.h" #include "Segment.h" diff --git a/src/openrct2/paint/tile_element/Paint.TileElement.h b/src/openrct2/paint/tile_element/Paint.TileElement.h index a782a05a4e12..5f2a28e808c0 100644 --- a/src/openrct2/paint/tile_element/Paint.TileElement.h +++ b/src/openrct2/paint/tile_element/Paint.TileElement.h @@ -55,7 +55,6 @@ void TileElementPaintSetup(PaintSession& session, const CoordsXY& mapCoords, boo void PaintEntrance(PaintSession& session, uint8_t direction, int32_t height, const OpenRCT2::EntranceElement& entranceElement); void PaintBanner(PaintSession& session, uint8_t direction, int32_t height, const OpenRCT2::BannerElement& bannerElement); void PaintSurface(PaintSession& session, uint8_t direction, uint16_t height, const OpenRCT2::SurfaceElement& tileElement); -void PaintPath(PaintSession& session, uint16_t height, const OpenRCT2::PathElement& tileElement); void PaintSmallScenery( PaintSession& session, uint8_t direction, int32_t height, const OpenRCT2::SmallSceneryElement& sceneryElement); void PaintWall(PaintSession& session, uint8_t direction, int32_t height, const OpenRCT2::WallElement& tileElement); diff --git a/src/openrct2/world/Footpath.h b/src/openrct2/world/Footpath.h index e19246545e81..1c93b5477b89 100644 --- a/src/openrct2/world/Footpath.h +++ b/src/openrct2/world/Footpath.h @@ -12,6 +12,7 @@ #include "../Identifiers.h" #include "../actions/CommandFlag.h" #include "../drawing/ImageIndexType.h" +#include "../drawing/ScrollingText.h" #include "../interface/Colour.h" #include "../localisation/StringIdType.h" #include "../object/ObjectTypes.h" @@ -44,23 +45,25 @@ enum class RailingEntrySupportType : uint8_t struct PathSurfaceDescriptor { - StringId name; - ImageIndex image; - ImageIndex previewImage; - uint8_t flags; + StringId name = kStringIdNone; + ImageIndex image{}; + ImageIndex previewImage{}; + uint8_t flags{}; }; +constexpr PathSurfaceDescriptor kPathSurfaceDescriptorDummy{}; struct PathRailingsDescriptor { - StringId name; - ImageIndex previewImage; - ImageIndex bridgeImage; - ImageIndex railingsImage; - RailingEntrySupportType supportType; - colour_t supportColour; - uint8_t flags; - uint8_t scrollingMode; + StringId name = kStringIdNone; + ImageIndex previewImage{}; + ImageIndex bridgeImage{}; + ImageIndex railingsImage{}; + RailingEntrySupportType supportType{}; + colour_t supportColour = COLOUR_NULL; + uint8_t flags{}; + uint8_t scrollingMode = kScrollingModeNone; }; +constexpr PathRailingsDescriptor kPathRailingsDescriptorDummy{}; using PathConstructFlags = uint8_t; namespace OpenRCT2::PathConstructFlag diff --git a/src/openrct2/world/tile_element/PathElement.cpp b/src/openrct2/world/tile_element/PathElement.cpp index e900908316b5..41861ec4e33f 100644 --- a/src/openrct2/world/tile_element/PathElement.cpp +++ b/src/openrct2/world/tile_element/PathElement.cpp @@ -206,43 +206,43 @@ namespace OpenRCT2 return (Flags2 & FOOTPATH_ELEMENT_FLAGS2_LEGACY_PATH_ENTRY) != 0; } - const PathSurfaceDescriptor* PathElement::GetSurfaceDescriptor() const + const PathSurfaceDescriptor& PathElement::GetSurfaceDescriptor() const { if (HasLegacyPathEntry()) { const auto* legacyPathEntry = GetLegacyPathEntry(); if (legacyPathEntry == nullptr) - return nullptr; + return kPathSurfaceDescriptorDummy; if (IsQueue()) - return &legacyPathEntry->GetQueueSurfaceDescriptor(); + return legacyPathEntry->GetQueueSurfaceDescriptor(); - return &legacyPathEntry->GetPathSurfaceDescriptor(); + return legacyPathEntry->GetPathSurfaceDescriptor(); } const auto* surfaceEntry = GetSurfaceEntry(); if (surfaceEntry == nullptr) - return nullptr; + return kPathSurfaceDescriptorDummy; - return &surfaceEntry->GetDescriptor(); + return surfaceEntry->GetDescriptor(); } - const PathRailingsDescriptor* PathElement::GetRailingsDescriptor() const + const PathRailingsDescriptor& PathElement::GetRailingsDescriptor() const { if (HasLegacyPathEntry()) { const auto* legacyPathEntry = GetLegacyPathEntry(); if (legacyPathEntry == nullptr) - return nullptr; + return kPathRailingsDescriptorDummy; - return &legacyPathEntry->GetPathRailingsDescriptor(); + return legacyPathEntry->GetPathRailingsDescriptor(); } const auto* railingsEntry = GetRailingsEntry(); if (railingsEntry == nullptr) - return nullptr; + return kPathRailingsDescriptorDummy; - return &railingsEntry->GetDescriptor(); + return railingsEntry->GetDescriptor(); } ObjectEntryIndex PathElement::GetSurfaceEntryIndex() const @@ -299,7 +299,7 @@ namespace OpenRCT2 bool PathElement::ShouldDrawPathOverSupports() const { // TODO: make this an actual decision of the tile element. - return (GetRailingsDescriptor()->flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS); + return (GetRailingsDescriptor().flags & RAILING_ENTRY_FLAG_DRAW_PATH_OVER_SUPPORTS); } void PathElement::SetShouldDrawPathOverSupports(bool on) diff --git a/src/openrct2/world/tile_element/PathElement.h b/src/openrct2/world/tile_element/PathElement.h index e88fa34d7fdc..ef1f618f4545 100644 --- a/src/openrct2/world/tile_element/PathElement.h +++ b/src/openrct2/world/tile_element/PathElement.h @@ -83,8 +83,8 @@ namespace OpenRCT2 const FootpathRailingsObject* GetRailingsEntry() const; void SetRailingsEntryIndex(ObjectEntryIndex newIndex); - const PathSurfaceDescriptor* GetSurfaceDescriptor() const; - const PathRailingsDescriptor* GetRailingsDescriptor() const; + const PathSurfaceDescriptor& GetSurfaceDescriptor() const; + const PathRailingsDescriptor& GetRailingsDescriptor() const; uint8_t GetQueueBannerDirection() const; void SetQueueBannerDirection(uint8_t direction); From 3dd71e20406577705c49203aeeb9e585e25604e8 Mon Sep 17 00:00:00 2001 From: mix <167040362+mixiate@users.noreply.github.com> Date: Mon, 12 Jan 2026 07:17:26 +0000 Subject: [PATCH 216/222] Fix news window option tab not invalidating (#25799) --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/News.cpp | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index a345f2c9b43f..e8dda64b9e0a 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -2,6 +2,7 @@ ------------------------------------------------------------------------ - Improved: [#25765] The ‘View options’ and ‘Special track elements’ dropdowns no longer need click-and-hold. - Fix: [#25739] Game freezes when a tab in the New Ride window contains more than 384 items. +- Fix: [#25799] The animated options tab icon of the news window does not always redraw. 0.4.30 (2026-01-04) ------------------------------------------------------------------------ diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 4fc758199791..a9ca64afecf8 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -347,13 +347,8 @@ namespace OpenRCT2::Ui::Windows } } - void onUpdate() override + void onUpdateNews() { - currentFrame++; - - if (page != newsTab) - return; - if (_pressedNewsItemIndex == -1 || --_suspendUpdateTicks != 0) { return; @@ -392,6 +387,25 @@ namespace OpenRCT2::Ui::Windows } } + void onUpdateOptions() + { + currentFrame++; + invalidateWidget(WIDX_TAB_OPTIONS); + } + + void onUpdate() override + { + switch (page) + { + case newsTab: + onUpdateNews(); + break; + case optionsTab: + onUpdateOptions(); + break; + } + } + ScreenSize onScrollGetSize(int32_t scrollIndex) override { int32_t scrollHeight = static_cast(getGameState().newsItems.GetArchived().size()) From 6c28f562852db9a12fd0e05c907d1c50756a9a6f Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Mon, 12 Jan 2026 05:37:40 -0300 Subject: [PATCH 217/222] Remove redundant namespace qualifiers from Vehicle.cpp (#25801) --- src/openrct2/ride/Vehicle.cpp | 414 +++++++++++++++++----------------- 1 file changed, 203 insertions(+), 211 deletions(-) diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 5f38c61f9f7a..3bd210e8a504 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -63,7 +63,6 @@ using namespace OpenRCT2; using namespace OpenRCT2::Audio; using namespace OpenRCT2::TrackMetaData; -using namespace OpenRCT2::Math::Trigonometry; using namespace OpenRCT2::RideVehicle; static bool vehicle_boat_is_location_accessible(const CoordsXYZ& location); @@ -89,18 +88,17 @@ uint8_t _vehicleF64E2C; Vehicle* _vehicleFrontVehicle; CoordsXYZ _vehicleCurPosition; -static constexpr OpenRCT2::Audio::SoundId _screamSetMisc[] = { - OpenRCT2::Audio::SoundId::scream8, - OpenRCT2::Audio::SoundId::scream1, +static constexpr SoundId _screamSetMisc[] = { + SoundId::scream8, + SoundId::scream1, }; -static constexpr OpenRCT2::Audio::SoundId _screamSetWooden[] = { - OpenRCT2::Audio::SoundId::scream3, OpenRCT2::Audio::SoundId::scream1, OpenRCT2::Audio::SoundId::scream5, - OpenRCT2::Audio::SoundId::scream6, OpenRCT2::Audio::SoundId::scream7, OpenRCT2::Audio::SoundId::scream2, - OpenRCT2::Audio::SoundId::scream4, +static constexpr SoundId _screamSetWooden[] = { + SoundId::scream3, SoundId::scream1, SoundId::scream5, SoundId::scream6, + SoundId::scream7, SoundId::scream2, SoundId::scream4, }; -static constexpr OpenRCT2::Audio::SoundId _screamSetSteel[] = { - OpenRCT2::Audio::SoundId::scream1, - OpenRCT2::Audio::SoundId::scream6, +static constexpr SoundId _screamSetSteel[] = { + SoundId::scream1, + SoundId::scream6, }; /** rct2: 0x009A37C4 */ @@ -116,19 +114,19 @@ static constexpr CoordsXY kSurroundingTiles[] = { { 0, +kCoordsXYStep }, }; -static constexpr OpenRCT2::Audio::SoundId kDoorOpenSoundIds[] = { - OpenRCT2::Audio::SoundId::null, // DoorSoundType::none - OpenRCT2::Audio::SoundId::doorOpen, // DoorSoundType::door - OpenRCT2::Audio::SoundId::portcullis, // DoorSoundType::portcullis +static constexpr SoundId kDoorOpenSoundIds[] = { + SoundId::null, // DoorSoundType::none + SoundId::doorOpen, // DoorSoundType::door + SoundId::portcullis, // DoorSoundType::portcullis }; -static_assert(std::size(kDoorOpenSoundIds) == OpenRCT2::Audio::kDoorSoundTypeCount); +static_assert(std::size(kDoorOpenSoundIds) == kDoorSoundTypeCount); -static constexpr OpenRCT2::Audio::SoundId kDoorCloseSoundIds[] = { - OpenRCT2::Audio::SoundId::null, // DoorSoundType::none - OpenRCT2::Audio::SoundId::doorClose, // DoorSoundType::door - OpenRCT2::Audio::SoundId::portcullis, // DoorSoundType::portcullis +static constexpr SoundId kDoorCloseSoundIds[] = { + SoundId::null, // DoorSoundType::none + SoundId::doorClose, // DoorSoundType::door + SoundId::portcullis, // DoorSoundType::portcullis }; -static_assert(std::size(kDoorCloseSoundIds) == OpenRCT2::Audio::kDoorSoundTypeCount); +static_assert(std::size(kDoorCloseSoundIds) == kDoorSoundTypeCount); template<> bool EntityBase::Is() const @@ -144,25 +142,25 @@ bool EntityBase::Is() const */ static void InvokeVehicleCrashHook(const EntityId vehicleId, const std::string_view crashId) { - auto& hookEngine = OpenRCT2::GetContext()->GetScriptEngine().GetHookEngine(); - if (hookEngine.HasSubscriptions(OpenRCT2::Scripting::HookType::vehicleCrash)) + auto& hookEngine = GetContext()->GetScriptEngine().GetHookEngine(); + if (hookEngine.HasSubscriptions(Scripting::HookType::vehicleCrash)) { - auto ctx = OpenRCT2::GetContext()->GetScriptEngine().GetContext(); + auto ctx = GetContext()->GetScriptEngine().GetContext(); // Create event args object - auto obj = OpenRCT2::Scripting::DukObject(ctx); + auto obj = Scripting::DukObject(ctx); obj.Set("id", vehicleId.ToUnderlying()); obj.Set("crashIntoType", crashId); // Call the subscriptions auto e = obj.Take(); - hookEngine.Call(OpenRCT2::Scripting::HookType::vehicleCrash, e, true); + hookEngine.Call(Scripting::HookType::vehicleCrash, e, true); } } #endif static bool vehicle_move_info_valid( - VehicleTrackSubposition trackSubposition, OpenRCT2::TrackElemType type, uint8_t direction, int32_t offset) + VehicleTrackSubposition trackSubposition, TrackElemType type, uint8_t direction, int32_t offset) { uint16_t typeAndDirection = (EnumValue(type) << 2) | (direction & 3); @@ -219,7 +217,7 @@ static bool vehicle_move_info_valid( } static const VehicleInfo* vehicle_get_move_info( - VehicleTrackSubposition trackSubposition, OpenRCT2::TrackElemType type, uint8_t direction, int32_t offset) + VehicleTrackSubposition trackSubposition, TrackElemType type, uint8_t direction, int32_t offset) { uint16_t typeAndDirection = (EnumValue(type) << 2) | (direction & 3); @@ -236,7 +234,7 @@ const VehicleInfo* Vehicle::GetMoveInfo() const return vehicle_get_move_info(TrackSubposition, GetTrackType(), GetTrackDirection(), track_progress); } -uint16_t VehicleGetMoveInfoSize(VehicleTrackSubposition trackSubposition, OpenRCT2::TrackElemType type, uint8_t direction) +uint16_t VehicleGetMoveInfoSize(VehicleTrackSubposition trackSubposition, TrackElemType type, uint8_t direction) { uint16_t typeAndDirection = (EnumValue(type) << 2) | (direction & 3); @@ -291,7 +289,7 @@ Vehicle* TryGetVehicle(EntityId spriteIndex) void VehicleSoundsUpdate() { - auto windowManager = OpenRCT2::Ui::GetWindowManager(); + auto windowManager = Ui::GetWindowManager(); windowManager->BroadcastIntent(Intent(INTENT_ACTION_UPDATE_VEHICLE_SOUNDS)); } @@ -485,27 +483,27 @@ bool Vehicle::OpenRestraints() return restraintsOpen; } -void RideUpdateMeasurementsSpecialElements_Default(Ride& ride, const OpenRCT2::TrackElemType trackType) +void RideUpdateMeasurementsSpecialElements_Default(Ride& ride, const TrackElemType trackType) { const auto& ted = GetTrackElementDescriptor(trackType); if (ted.flags.has(TrackElementFlag::normalToInversion)) { - if (ride.numInversions < OpenRCT2::Limits::kMaxInversions) + if (ride.numInversions < Limits::kMaxInversions) ride.numInversions++; } } -void RideUpdateMeasurementsSpecialElements_MiniGolf(Ride& ride, const OpenRCT2::TrackElemType trackType) +void RideUpdateMeasurementsSpecialElements_MiniGolf(Ride& ride, const TrackElemType trackType) { const auto& ted = GetTrackElementDescriptor(trackType); if (ted.flags.has(TrackElementFlag::isGolfHole)) { - if (ride.numHoles < OpenRCT2::Limits::kMaxGolfHoles) + if (ride.numHoles < Limits::kMaxGolfHoles) ride.numHoles++; } } -void RideUpdateMeasurementsSpecialElements_WaterCoaster(Ride& ride, const OpenRCT2::TrackElemType trackType) +void RideUpdateMeasurementsSpecialElements_WaterCoaster(Ride& ride, const TrackElemType trackType) { if (trackType >= TrackElemType::flatCovered && trackType <= TrackElemType::rightQuarterTurn3TilesCovered) { @@ -523,7 +521,7 @@ void Vehicle::UpdateMeasurements() if (curRide == nullptr) return; - if (status == Vehicle::Status::travellingBoat) + if (status == Status::travellingBoat) { curRide->lifecycleFlags |= RIDE_LIFECYCLE_TESTED; curRide->lifecycleFlags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -608,7 +606,7 @@ void Vehicle::UpdateMeasurements() if (!curRide->testingFlags.has(RideTestingFlag::poweredLift)) { curRide->testingFlags.set(RideTestingFlag::poweredLift); - if (curRide->numPoweredLifts < OpenRCT2::Limits::kRideMaxNumPoweredLiftsCount) + if (curRide->numPoweredLifts < Limits::kRideMaxNumPoweredLiftsCount) curRide->numPoweredLifts++; } } @@ -745,7 +743,7 @@ void Vehicle::UpdateMeasurements() curRide->testingFlags.unset(RideTestingFlag::dropUp); curRide->testingFlags.set(RideTestingFlag::dropDown); - if (curRide->numDrops < OpenRCT2::Limits::kRideMaxDropsCount) + if (curRide->numDrops < Limits::kRideMaxDropsCount) curRide->numDrops++; curRide->startDropHeight = z / kCoordsZStep; @@ -774,7 +772,7 @@ void Vehicle::UpdateMeasurements() curRide->testingFlags.unset(RideTestingFlag::dropDown); curRide->testingFlags.set(RideTestingFlag::dropUp); - if (curRide->numDrops < OpenRCT2::Limits::kRideMaxDropsCount) + if (curRide->numDrops < Limits::kRideMaxDropsCount) curRide->numDrops++; curRide->startDropHeight = z / kCoordsZStep; @@ -782,7 +780,7 @@ void Vehicle::UpdateMeasurements() if (ted.flags.has(TrackElementFlag::helix)) { - if (curRide->numHelices < OpenRCT2::Limits::kMaxHelices) + if (curRide->numHelices < Limits::kMaxHelices) curRide->numHelices++; } } @@ -873,7 +871,7 @@ void Vehicle::UpdateMeasurements() struct SoundIdVolume { - OpenRCT2::Audio::SoundId id; + SoundId id; uint8_t volume; }; @@ -882,10 +880,9 @@ struct SoundIdVolume * rct2: 0x006D7AC0 */ static SoundIdVolume VehicleSoundFadeInOut( - OpenRCT2::Audio::SoundId currentSoundId, uint8_t currentVolume, OpenRCT2::Audio::SoundId targetSoundId, - uint8_t targetVolume) + SoundId currentSoundId, uint8_t currentVolume, SoundId targetSoundId, uint8_t targetVolume) { - if (currentSoundId != OpenRCT2::Audio::SoundId::null) + if (currentSoundId != SoundId::null) { if (currentSoundId == targetSoundId) { @@ -907,14 +904,14 @@ static SoundIdVolume VehicleSoundFadeInOut( void Vehicle::GetLiftHillSound(const Ride& curRide, SoundIdVolume& curSound) { - scream_sound_id = OpenRCT2::Audio::SoundId::null; + scream_sound_id = SoundId::null; if (curRide.type < std::size(kRideTypeDescriptors)) { // Get lift hill sound curSound.id = GetRideTypeDescriptor(curRide.type).LiftData.sound_id; curSound.volume = 243; if (!(sound2_flags & VEHICLE_SOUND2_FLAGS_LIFT_HILL)) - curSound.id = OpenRCT2::Audio::SoundId::null; + curSound.id = SoundId::null; } } @@ -960,71 +957,71 @@ void Vehicle::Update() switch (status) { - case Vehicle::Status::movingToEndOfStation: + case Status::movingToEndOfStation: UpdateMovingToEndOfStation(); break; - case Vehicle::Status::waitingForPassengers: + case Status::waitingForPassengers: UpdateWaitingForPassengers(); break; - case Vehicle::Status::waitingToDepart: + case Status::waitingToDepart: UpdateWaitingToDepart(); break; - case Vehicle::Status::crashing: - case Vehicle::Status::crashed: + case Status::crashing: + case Status::crashed: UpdateCrash(); break; - case Vehicle::Status::travellingDodgems: + case Status::travellingDodgems: UpdateDodgemsMode(); break; - case Vehicle::Status::swinging: + case Status::swinging: UpdateSwinging(); break; - case Vehicle::Status::simulatorOperating: + case Status::simulatorOperating: UpdateSimulatorOperating(); break; - case Vehicle::Status::topSpinOperating: + case Status::topSpinOperating: UpdateTopSpinOperating(); break; - case Vehicle::Status::ferrisWheelRotating: + case Status::ferrisWheelRotating: UpdateFerrisWheelRotating(); break; - case Vehicle::Status::spaceRingsOperating: + case Status::spaceRingsOperating: UpdateSpaceRingsOperating(); break; - case Vehicle::Status::hauntedHouseOperating: + case Status::hauntedHouseOperating: UpdateHauntedHouseOperating(); break; - case Vehicle::Status::crookedHouseOperating: + case Status::crookedHouseOperating: UpdateCrookedHouseOperating(); break; - case Vehicle::Status::rotating: + case Status::rotating: UpdateRotating(); break; - case Vehicle::Status::departing: + case Status::departing: UpdateDeparting(); break; - case Vehicle::Status::travelling: + case Status::travelling: UpdateTravelling(); break; - case Vehicle::Status::travellingCableLift: + case Status::travellingCableLift: UpdateTravellingCableLift(); break; - case Vehicle::Status::travellingBoat: + case Status::travellingBoat: UpdateTravellingBoat(); break; - case Vehicle::Status::arriving: + case Status::arriving: UpdateArriving(); break; - case Vehicle::Status::unloadingPassengers: + case Status::unloadingPassengers: UpdateUnloadingPassengers(); break; - case Vehicle::Status::waitingForCableLift: + case Status::waitingForCableLift: UpdateWaitingForCableLift(); break; - case Vehicle::Status::showingFilm: + case Status::showingFilm: UpdateShowingFilm(); break; - case Vehicle::Status::doingCircusShow: + case Status::doingCircusShow: UpdateDoingCircusShow(); break; default: @@ -1086,7 +1083,7 @@ void Vehicle::UpdateMovingToEndOfStation() current_station = StationIndex::FromUnderlying(0); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::waitingForPassengers); + SetState(Status::waitingForPassengers); break; default: { @@ -1121,7 +1118,7 @@ void Vehicle::UpdateMovingToEndOfStation() if (curRide->mode == RideMode::race && sub_state >= 40) { - SetState(Vehicle::Status::waitingForPassengers); + SetState(Status::waitingForPassengers); break; } } @@ -1139,7 +1136,7 @@ void Vehicle::UpdateMovingToEndOfStation() current_station = StationIndex::FromUnderlying(station); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::waitingForPassengers); + SetState(Status::waitingForPassengers); break; } } @@ -1183,7 +1180,7 @@ void Vehicle::TrainReadyToDepart(uint8_t num_peeps_on_train, uint8_t num_used_se if (!peep[seat].IsNull()) { curRide->getStation(current_station).TrainAtStation = RideStation::kNoTrain; - SetState(Vehicle::Status::unloadingPassengers); + SetState(Status::unloadingPassengers); return; } @@ -1199,7 +1196,7 @@ void Vehicle::TrainReadyToDepart(uint8_t num_peeps_on_train, uint8_t num_used_se return; curRide->getStation(current_station).TrainAtStation = RideStation::kNoTrain; - SetState(Vehicle::Status::waitingForPassengers); + SetState(Status::waitingForPassengers); } static std::optional ride_get_train_index_from_vehicle(const Ride& ride, EntityId spriteIndex) @@ -1333,8 +1330,7 @@ void Vehicle::UpdateWaitingForPassengers() if (train == nullptr) continue; - if (train->status == Vehicle::Status::unloadingPassengers - || train->status == Vehicle::Status::movingToEndOfStation) + if (train->status == Status::unloadingPassengers || train->status == Status::movingToEndOfStation) { if (train->current_station == current_station) { @@ -1390,7 +1386,7 @@ void Vehicle::UpdateWaitingForPassengers() SetFlag(VehicleFlags::WaitingOnAdjacentStation); } - SetState(Vehicle::Status::waitingToDepart); + SetState(Status::waitingToDepart); } /** @@ -1433,7 +1429,7 @@ void Vehicle::UpdateDodgemsMode() Invalidate(); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::unloadingPassengers); + SetState(Status::unloadingPassengers); } /** @@ -1481,7 +1477,7 @@ void Vehicle::UpdateWaitingToDepart() { if (!currentStation.Exit.IsNull()) { - SetState(Vehicle::Status::unloadingPassengers); + SetState(Status::unloadingPassengers); return; } } @@ -1495,7 +1491,7 @@ void Vehicle::UpdateWaitingToDepart() { if (!currentStation.Exit.IsNull()) { - SetState(Vehicle::Status::unloadingPassengers); + SetState(Status::unloadingPassengers); return; } break; @@ -1524,7 +1520,7 @@ void Vehicle::UpdateWaitingToDepart() } } - SetState(Vehicle::Status::departing); + SetState(Status::departing); if (curRide->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT) { @@ -1537,7 +1533,7 @@ void Vehicle::UpdateWaitingToDepart() { if (track.element->AsTrack()->HasCableLift()) { - SetState(Vehicle::Status::waitingForCableLift, sub_state); + SetState(Status::waitingForCableLift, sub_state); } } } @@ -1547,36 +1543,36 @@ void Vehicle::UpdateWaitingToDepart() case RideMode::dodgems: // Dodgems mode uses sub_state and TimeActive to tell how long // the vehicle has been ridden. - SetState(Vehicle::Status::travellingDodgems); + SetState(Status::travellingDodgems); TimeActive = 0; UpdateDodgemsMode(); break; case RideMode::swing: - SetState(Vehicle::Status::swinging); + SetState(Status::swinging); NumSwings = 0; current_time = -1; UpdateSwinging(); break; case RideMode::rotation: - SetState(Vehicle::Status::rotating); + SetState(Status::rotating); NumRotations = 0; current_time = -1; UpdateRotating(); break; case RideMode::filmAvengingAviators: - SetState(Vehicle::Status::simulatorOperating); + SetState(Status::simulatorOperating); current_time = -1; UpdateSimulatorOperating(); break; case RideMode::filmThrillRiders: - SetState(Vehicle::Status::simulatorOperating, 1); + SetState(Status::simulatorOperating, 1); current_time = -1; UpdateSimulatorOperating(); break; case RideMode::beginners: case RideMode::intense: case RideMode::berserk: - SetState(Vehicle::Status::topSpinOperating, sub_state); + SetState(Status::topSpinOperating, sub_state); switch (curRide->mode) { case RideMode::beginners: @@ -1601,7 +1597,7 @@ void Vehicle::UpdateWaitingToDepart() break; case RideMode::forwardRotation: case RideMode::backwardRotation: - SetState(Vehicle::Status::ferrisWheelRotating, flatRideAnimationFrame); + SetState(Status::ferrisWheelRotating, flatRideAnimationFrame); NumRotations = 0; ferris_wheel_var_0 = 8; ferris_wheel_var_1 = 8; @@ -1610,7 +1606,7 @@ void Vehicle::UpdateWaitingToDepart() case RideMode::mouseTails3DFilm: case RideMode::stormChasers3DFilm: case RideMode::spaceRaiders3DFilm: - SetState(Vehicle::Status::showingFilm, sub_state); + SetState(Status::showingFilm, sub_state); switch (curRide->mode) { case RideMode::mouseTails3DFilm: @@ -1632,24 +1628,24 @@ void Vehicle::UpdateWaitingToDepart() UpdateShowingFilm(); break; case RideMode::circus: - SetState(Vehicle::Status::doingCircusShow); + SetState(Status::doingCircusShow); current_time = -1; UpdateDoingCircusShow(); break; case RideMode::spaceRings: - SetState(Vehicle::Status::spaceRingsOperating); + SetState(Status::spaceRingsOperating); flatRideAnimationFrame = 0; current_time = -1; UpdateSpaceRingsOperating(); break; case RideMode::hauntedHouse: - SetState(Vehicle::Status::hauntedHouseOperating); + SetState(Status::hauntedHouseOperating); flatRideAnimationFrame = 0; current_time = -1; UpdateHauntedHouseOperating(); break; case RideMode::crookedHouse: - SetState(Vehicle::Status::crookedHouseOperating); + SetState(Status::crookedHouseOperating); flatRideAnimationFrame = 0; current_time = -1; UpdateCrookedHouseOperating(); @@ -2143,7 +2139,7 @@ void Vehicle::UpdateTravellingBoatHireSetup() // No longer on a track so reset to 0 for import/export SetTrackDirection(0); SetTrackType(TrackElemType::flat); - SetState(Vehicle::Status::travellingBoat); + SetState(Status::travellingBoat); remaining_distance += 27924; UpdateTravellingBoat(); @@ -2207,15 +2203,13 @@ void Vehicle::UpdateDeparting() if (rideEntry->flags & RIDE_ENTRY_FLAG_PLAY_DEPART_SOUND) { - auto soundId = (rideEntry->Cars[0].soundRange == SoundRange::tramBell) ? OpenRCT2::Audio::SoundId::tram - : OpenRCT2::Audio::SoundId::trainDeparting; - - OpenRCT2::Audio::Play3D(soundId, GetLocation()); + auto soundId = (rideEntry->Cars[0].soundRange == SoundRange::tramBell) ? SoundId::tram : SoundId::trainDeparting; + Play3D(soundId, GetLocation()); } if (curRide->mode == RideMode::upwardLaunch || (curRide->mode == RideMode::downwardLaunch && NumLaunches > 1)) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::rideLaunch2, GetLocation()); + Play3D(SoundId::rideLaunch2, GetLocation()); } if (!(curRide->lifecycleFlags & RIDE_LIFECYCLE_TESTED)) @@ -2421,7 +2415,7 @@ void Vehicle::FinishDeparting() if (NumLaunches >= 1 && (14 << 16) > velocity) return; - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::rideLaunch1, GetLocation()); + Play3D(SoundId::rideLaunch1, GetLocation()); } if (curRide->mode == RideMode::upwardLaunch) @@ -2429,7 +2423,7 @@ void Vehicle::FinishDeparting() if ((curRide->launchSpeed << 16) > velocity) return; - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::rideLaunch1, GetLocation()); + Play3D(SoundId::rideLaunch1, GetLocation()); } if (curRide->mode != RideMode::race && !curRide->isBlockSectioned()) @@ -2446,7 +2440,7 @@ void Vehicle::FinishDeparting() currentStation.Depart |= waitingTime; } lost_time_out = 0; - SetState(Vehicle::Status::travelling, 1); + SetState(Status::travelling, 1); if (velocity < 0) sub_state = 0; } @@ -2527,7 +2521,7 @@ void Vehicle::UpdateCollisionSetup() return; } - SetState(Vehicle::Status::crashed, sub_state); + SetState(Status::crashed, sub_state); if (!(curRide->lifecycleFlags & RIDE_LIFECYCLE_CRASHED)) { @@ -2565,7 +2559,7 @@ void Vehicle::UpdateCollisionSetup() #endif const auto trainLoc = train->GetLocation(); - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::crash, trainLoc); + Play3D(SoundId::crash, trainLoc); ExplosionCloud::Create(trainLoc); @@ -2615,11 +2609,11 @@ void Vehicle::UpdateCrashSetup() SimulateCrash(); return; } - SetState(Vehicle::Status::crashing, sub_state); + SetState(Status::crashing, sub_state); if (NumPeepsUntilTrainTail() != 0) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::hauntedHouseScream2, GetLocation()); + Play3D(SoundId::hauntedHouseScream2, GetLocation()); } int32_t edx = velocity >> 10; @@ -2741,7 +2735,7 @@ void Vehicle::UpdateTravelling() { if (sub_state <= 1) { - SetState(Vehicle::Status::arriving, 1); + SetState(Status::arriving, 1); var_C0 = 0; return; } @@ -2851,7 +2845,7 @@ void Vehicle::UpdateTravelling() if (curRide->mode == RideMode::poweredLaunchPasstrough && velocity < 0) return; - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); current_station = _vehicleStationIndex; var_C0 = 0; if (velocity < 0) @@ -2976,7 +2970,7 @@ void Vehicle::UpdateArriving() ClearFlag(VehicleFlags::ReverseInclineCompletedLap); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::unloadingPassengers); + SetState(Status::unloadingPassengers); return; default: { @@ -3007,7 +3001,7 @@ void Vehicle::UpdateArriving() if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_STATION && !stationBrakesWork) { - SetState(Vehicle::Status::departing, 1); + SetState(Status::departing, 1); return; } @@ -3040,42 +3034,42 @@ void Vehicle::UpdateArriving() { if (NumLaps < curRide->numCircuits) { - SetState(Vehicle::Status::departing, 1); + SetState(Status::departing, 1); return; } if (NumLaps == curRide->numCircuits && HasFlag(VehicleFlags::ReverseInclineCompletedLap)) { - SetState(Vehicle::Status::departing, 1); + SetState(Status::departing, 1); return; } } if (curRide->numCircuits != 1 && NumLaps < curRide->numCircuits) { - SetState(Vehicle::Status::departing, 1); + SetState(Status::departing, 1); return; } if ((curRide->mode == RideMode::upwardLaunch || curRide->mode == RideMode::downwardLaunch) && NumLaunches < 2) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::rideLaunch2, GetLocation()); + Play3D(SoundId::rideLaunch2, GetLocation()); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::departing, 1); + SetState(Status::departing, 1); return; } if (curRide->mode == RideMode::race && curRide->lifecycleFlags & RIDE_LIFECYCLE_PASS_STATION_NO_STOPPING) { - SetState(Vehicle::Status::departing, 1); + SetState(Status::departing, 1); return; } ClearFlag(VehicleFlags::ReverseInclineCompletedLap); velocity = 0; acceleration = 0; - SetState(Vehicle::Status::unloadingPassengers); + SetState(Status::unloadingPassengers); } /** @@ -3136,7 +3130,7 @@ void Vehicle::UpdateUnloadingPassengers() { UpdateTestFinish(); } - SetState(Vehicle::Status::movingToEndOfStation); + SetState(Status::movingToEndOfStation); return; } @@ -3177,7 +3171,7 @@ void Vehicle::UpdateUnloadingPassengers() { UpdateTestFinish(); } - SetState(Vehicle::Status::movingToEndOfStation); + SetState(Status::movingToEndOfStation); } /** @@ -3194,10 +3188,10 @@ void Vehicle::UpdateWaitingForCableLift() if (cableLift == nullptr) return; - if (cableLift->status != Vehicle::Status::waitingForPassengers) + if (cableLift->status != Status::waitingForPassengers) return; - cableLift->SetState(Vehicle::Status::waitingToDepart, sub_state); + cableLift->SetState(Status::waitingToDepart, sub_state); cableLift->cable_lift_target = Id; } @@ -3261,7 +3255,7 @@ void Vehicle::UpdateTravellingCableLift() if (curFlags & VEHICLE_UPDATE_MOTION_TRACK_FLAG_11) { - SetState(Vehicle::Status::travelling, 1); + SetState(Status::travelling, 1); lost_time_out = 0; return; } @@ -3320,7 +3314,7 @@ void Vehicle::TryReconnectBoatToTrack(const CoordsXY& currentBoatLocation, const } track_progress = 0; - SetState(Vehicle::Status::travelling, sub_state); + SetState(Status::travelling, sub_state); _vehicleCurPosition.x = currentBoatLocation.x; _vehicleCurPosition.y = currentBoatLocation.y; } @@ -3781,7 +3775,7 @@ void Vehicle::UpdateSwinging() // swing has to be in slowing down phase if (sub_state == 0) { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; return; } @@ -3878,7 +3872,7 @@ void Vehicle::UpdateFerrisWheelRotating() if (subState != flatRideAnimationFrame) return; - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; } @@ -3904,7 +3898,7 @@ void Vehicle::UpdateSimulatorOperating() return; } - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; } @@ -3996,7 +3990,7 @@ void Vehicle::UpdateRotating() { if (sub_state == 2) { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; return; } @@ -4031,7 +4025,7 @@ void Vehicle::UpdateSpaceRingsOperating() } else { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; } } @@ -4059,7 +4053,7 @@ void Vehicle::UpdateHauntedHouseOperating() if (current_time + 1 > 1500) { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; return; } @@ -4068,24 +4062,24 @@ void Vehicle::UpdateHauntedHouseOperating() switch (current_time) { case 45: - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::hauntedHouseScare, GetLocation()); + Play3D(SoundId::hauntedHouseScare, GetLocation()); break; case 75: flatRideAnimationFrame = 1; Invalidate(); break; case 400: - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::hauntedHouseScream1, GetLocation()); + Play3D(SoundId::hauntedHouseScream1, GetLocation()); break; case 745: - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::hauntedHouseScare, GetLocation()); + Play3D(SoundId::hauntedHouseScare, GetLocation()); break; case 775: flatRideAnimationFrame = 1; Invalidate(); break; case 1100: - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::hauntedHouseScream2, GetLocation()); + Play3D(SoundId::hauntedHouseScream2, GetLocation()); break; } } @@ -4102,7 +4096,7 @@ void Vehicle::UpdateCrookedHouseOperating() // Originally used an array of size 1 at 0x009A0AC4 and passed the sub state into it. if (static_cast(current_time + 1) > 600) { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; return; } @@ -4138,7 +4132,7 @@ void Vehicle::UpdateTopSpinOperating() return; } - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; } @@ -4161,7 +4155,7 @@ void Vehicle::UpdateShowingFilm() } else { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; } } @@ -4182,7 +4176,7 @@ void Vehicle::UpdateDoingCircusShow() } else { - SetState(Vehicle::Status::arriving); + SetState(Status::arriving); var_C0 = 0; } } @@ -4314,7 +4308,7 @@ void Vehicle::CrashOnLand() SimulateCrash(); return; } - SetState(Vehicle::Status::crashed, sub_state); + SetState(Status::crashed, sub_state); #ifdef ENABLE_SCRIPTING InvokeVehicleCrashHook(Id, "land"); @@ -4349,7 +4343,7 @@ void Vehicle::CrashOnLand() sub_state = 2; const auto curLoc = GetLocation(); - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::crash, curLoc); + Play3D(SoundId::crash, curLoc); ExplosionCloud::Create(curLoc); ExplosionFlare::Create(curLoc); @@ -4382,7 +4376,7 @@ void Vehicle::CrashOnWater() SimulateCrash(); return; } - SetState(Vehicle::Status::crashed, sub_state); + SetState(Status::crashed, sub_state); #ifdef ENABLE_SCRIPTING InvokeVehicleCrashHook(Id, "water"); @@ -4417,7 +4411,7 @@ void Vehicle::CrashOnWater() sub_state = 2; const auto curLoc = GetLocation(); - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::water1, curLoc); + Play3D(SoundId::water1, curLoc); CrashSplashParticle::Create(curLoc); CrashSplashParticle::Create(curLoc + CoordsXYZ{ -8, -9, 0 }); @@ -4538,9 +4532,9 @@ void Vehicle::UpdateCrash() void Vehicle::UpdateSound() { // frictionVolume (bl) should be set before hand - SoundIdVolume frictionSound = { OpenRCT2::Audio::SoundId::null, 255 }; + SoundIdVolume frictionSound = { SoundId::null, 255 }; // bh screamVolume should be set before hand - SoundIdVolume screamSound = { OpenRCT2::Audio::SoundId::null, 255 }; + SoundIdVolume screamSound = { SoundId::null, 255 }; auto curRide = GetRide(); if (curRide == nullptr) @@ -4569,7 +4563,7 @@ void Vehicle::UpdateSound() screamSound.id = scream_sound_id; if (!(currentTicks & 0x7F)) { - if (velocity < 4.0_mph || scream_sound_id != OpenRCT2::Audio::SoundId::null) + if (velocity < 4.0_mph || scream_sound_id != SoundId::null) { GetLiftHillSound(*curRide, screamSound); break; @@ -4577,13 +4571,13 @@ void Vehicle::UpdateSound() if ((ScenarioRand() & 0xFFFF) <= 0x5555) { - scream_sound_id = OpenRCT2::Audio::SoundId::trainWhistle; + scream_sound_id = SoundId::trainWhistle; screamSound.volume = 255; break; } } - if (screamSound.id == OpenRCT2::Audio::SoundId::noScream) - screamSound.id = OpenRCT2::Audio::SoundId::null; + if (screamSound.id == SoundId::noScream) + screamSound.id = SoundId::null; screamSound.volume = 255; break; @@ -4591,7 +4585,7 @@ void Vehicle::UpdateSound() screamSound.id = scream_sound_id; if (!(currentTicks & 0x7F)) { - if (velocity < 4.0_mph || scream_sound_id != OpenRCT2::Audio::SoundId::null) + if (velocity < 4.0_mph || scream_sound_id != SoundId::null) { GetLiftHillSound(*curRide, screamSound); break; @@ -4599,13 +4593,13 @@ void Vehicle::UpdateSound() if ((ScenarioRand() & 0xFFFF) <= 0x5555) { - scream_sound_id = OpenRCT2::Audio::SoundId::tram; + scream_sound_id = SoundId::tram; screamSound.volume = 255; break; } } - if (screamSound.id == OpenRCT2::Audio::SoundId::noScream) - screamSound.id = OpenRCT2::Audio::SoundId::null; + if (screamSound.id == SoundId::noScream) + screamSound.id = SoundId::null; screamSound.volume = 255; break; @@ -4613,12 +4607,12 @@ void Vehicle::UpdateSound() if ((carEntry.flags & CAR_ENTRY_FLAG_RIDERS_SCREAM)) { screamSound.id = UpdateScreamSound(); - if (screamSound.id == OpenRCT2::Audio::SoundId::noScream) + if (screamSound.id == SoundId::noScream) { - screamSound.id = OpenRCT2::Audio::SoundId::null; + screamSound.id = SoundId::null; break; } - if (screamSound.id != OpenRCT2::Audio::SoundId::null) + if (screamSound.id != SoundId::null) { break; } @@ -4648,16 +4642,16 @@ void Vehicle::UpdateSound() * * rct2: 0x006D796B */ -OpenRCT2::Audio::SoundId Vehicle::UpdateScreamSound() +SoundId Vehicle::UpdateScreamSound() { int32_t totalNumPeeps = NumPeepsUntilTrainTail(); if (totalNumPeeps == 0) - return OpenRCT2::Audio::SoundId::null; + return SoundId::null; if (velocity < 0) { if (velocity > -2.75_mph) - return OpenRCT2::Audio::SoundId::null; + return SoundId::null; for (Vehicle* vehicle2 = getGameState().entities.GetEntity(Id); vehicle2 != nullptr; vehicle2 = getGameState().entities.GetEntity(vehicle2->next_vehicle_on_train)) @@ -4675,11 +4669,11 @@ OpenRCT2::Audio::SoundId Vehicle::UpdateScreamSound() if (vehicle2->pitch == VehiclePitch::up50) return ProduceScreamSound(totalNumPeeps); } - return OpenRCT2::Audio::SoundId::null; + return SoundId::null; } if (velocity < 2.75_mph) - return OpenRCT2::Audio::SoundId::null; + return SoundId::null; for (Vehicle* vehicle2 = getGameState().entities.GetEntity(Id); vehicle2 != nullptr; vehicle2 = getGameState().entities.GetEntity(vehicle2->next_vehicle_on_train)) @@ -4697,16 +4691,16 @@ OpenRCT2::Audio::SoundId Vehicle::UpdateScreamSound() if (vehicle2->pitch == VehiclePitch::down50) return ProduceScreamSound(totalNumPeeps); } - return OpenRCT2::Audio::SoundId::null; + return SoundId::null; } -OpenRCT2::Audio::SoundId Vehicle::ProduceScreamSound(const int32_t totalNumPeeps) +SoundId Vehicle::ProduceScreamSound(const int32_t totalNumPeeps) { const auto* rideEntry = GetRideEntry(); const auto& carEntry = rideEntry->Cars[vehicle_type]; - if (scream_sound_id == OpenRCT2::Audio::SoundId::null) + if (scream_sound_id == SoundId::null) { auto r = ScenarioRand(); if (totalNumPeeps >= static_cast(r % 16)) @@ -4723,13 +4717,13 @@ OpenRCT2::Audio::SoundId Vehicle::ProduceScreamSound(const int32_t totalNumPeeps scream_sound_id = _screamSetSteel[r % std::size(_screamSetSteel)]; break; default: - scream_sound_id = OpenRCT2::Audio::SoundId::noScream; + scream_sound_id = SoundId::noScream; break; } } else { - scream_sound_id = OpenRCT2::Audio::SoundId::noScream; + scream_sound_id = SoundId::noScream; } } return scream_sound_id; @@ -5192,7 +5186,7 @@ void Vehicle::ApplyStopBlockBrake() void Vehicle::ApplyCableLiftBlockBrake(bool brakeClosed) { // If we are already on the cable lift, ignore the brake - if (status == Vehicle::Status::travellingCableLift) + if (status == Status::travellingCableLift) return; // Slow down if travelling faster than 4mph @@ -5213,7 +5207,7 @@ void Vehicle::ApplyCableLiftBlockBrake(bool brakeClosed) velocity = 0; acceleration = 0; if (!brakeClosed) - SetState(Vehicle::Status::waitingForCableLift, sub_state); + SetState(Status::waitingForCableLift, sub_state); else _vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_AT_BLOCK_BRAKE; } @@ -5338,11 +5332,11 @@ static void BlockBrakesOpenPreviousSection(const Ride& ride, const CoordsXYZ& ve auto trackType = trackElement->GetTrackType(); if (trackType == TrackElemType::endStation) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::blockBrakeClose, location); + Play3D(SoundId::blockBrakeClose, location); } else if (TrackTypeIsBlockBrakes(trackType)) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::blockBrakeClose, location); + Play3D(SoundId::blockBrakeClose, location); BlockBrakeSetLinkedBrakesClosed(location, *trackElement, false); } } @@ -5762,11 +5756,11 @@ static uint8_t GetTargetFrame(const CarEntry& carEntry, uint32_t animationState) */ static constexpr CoordsXYZ ComputeSteamOffset(int32_t height, int32_t length, VehiclePitch pitch, uint8_t yaw) { - uint8_t trueYaw = OpenRCT2::Entity::Yaw::YawTo64(yaw); - auto offsets = PitchToDirectionVectorFromGeometry[EnumValue(pitch)]; + uint8_t trueYaw = Entity::Yaw::YawTo64(yaw); + auto offsets = Math::Trigonometry::PitchToDirectionVectorFromGeometry[EnumValue(pitch)]; int32_t projectedRun = (offsets.x * length - offsets.y * height) / 256; int32_t projectedHeight = (offsets.x * height + offsets.y * length) / 256; - return { ComputeXYVector(projectedRun, trueYaw), projectedHeight }; + return { Math::Trigonometry::ComputeXYVector(projectedRun, trueYaw), projectedHeight }; } /** @@ -5963,7 +5957,7 @@ static void play_scenery_door_open_sound(const CoordsXYZ& loc, WallElement* tile return; auto soundId = kDoorOpenSoundIds[EnumValue(doorSoundType)]; - OpenRCT2::Audio::Play3D(soundId, loc); + Play3D(soundId, loc); } /** @@ -6032,8 +6026,8 @@ void Vehicle::UpdateSceneryDoor() const template static void AnimateLandscapeDoor( - const CoordsXYZ& doorLocation, TrackElement& trackElement, const bool isLastVehicle, - const OpenRCT2::Audio::DoorSoundType doorSound, const CoordsXYZ& soundLocation) + const CoordsXYZ& doorLocation, TrackElement& trackElement, const bool isLastVehicle, const DoorSoundType doorSound, + const CoordsXYZ& soundLocation) { const auto doorState = isBackwards ? trackElement.GetDoorAState() : trackElement.GetDoorBState(); if (!isLastVehicle && doorState == kLandEdgeDoorFrameClosed) @@ -6044,7 +6038,7 @@ static void AnimateLandscapeDoor( trackElement.SetDoorBState(kLandEdgeDoorFrameOpening); MapAnimations::CreateTemporary(doorLocation, MapAnimations::TemporaryType::landEdgeDoor); - OpenRCT2::Audio::Play3D(kDoorOpenSoundIds[EnumValue(doorSound)], soundLocation); + Play3D(kDoorOpenSoundIds[EnumValue(doorSound)], soundLocation); } if (isLastVehicle) @@ -6055,7 +6049,7 @@ static void AnimateLandscapeDoor( trackElement.SetDoorBState(kLandEdgeDoorFrameClosing); MapAnimations::CreateTemporary(doorLocation, MapAnimations::TemporaryType::landEdgeDoor); - OpenRCT2::Audio::Play3D(kDoorCloseSoundIds[EnumValue(doorSound)], soundLocation); + Play3D(kDoorCloseSoundIds[EnumValue(doorSound)], soundLocation); } } @@ -6163,8 +6157,7 @@ static void vehicle_update_play_water_splash_sound() return; } - OpenRCT2::Audio::Play3D( - OpenRCT2::Audio::SoundId::waterSplash, { _vehicleCurPosition.x, _vehicleCurPosition.y, _vehicleCurPosition.z }); + Play3D(SoundId::waterSplash, { _vehicleCurPosition.x, _vehicleCurPosition.y, _vehicleCurPosition.z }); } /** @@ -6394,7 +6387,7 @@ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, EntityId* oth return false; } - if (collideVehicle->status == Vehicle::Status::travellingBoat && sub_state == BoatHireSubState::EnteringReturnPosition) + if (collideVehicle->status == Status::travellingBoat && sub_state == BoatHireSubState::EnteringReturnPosition) { return false; } @@ -6408,7 +6401,7 @@ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, EntityId* oth return true; } - if (status == Vehicle::Status::movingToEndOfStation) + if (status == Status::movingToEndOfStation) { if (Orientation == 0) { @@ -6440,8 +6433,7 @@ bool Vehicle::UpdateMotionCollisionDetection(const CoordsXYZ& loc, EntityId* oth } } - if (collideVehicle->status == Vehicle::Status::travellingBoat && status != Vehicle::Status::arriving - && status != Vehicle::Status::travelling) + if ((collideVehicle->status == Status::travellingBoat) && (status != Status::arriving) && (status != Status::travelling)) { return false; } @@ -6654,7 +6646,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( { if (!(rideEntry.Cars[0].flags & CAR_ENTRY_FLAG_POWERED)) { - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::blockBrakeRelease, TrackLocation); + Play3D(SoundId::blockBrakeRelease, TrackLocation); } } MapInvalidateElement(TrackLocation, tileElement); @@ -6866,7 +6858,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu if (_vehicleF64E2C == 0) { _vehicleF64E2C++; - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::brakeRelease, { x, y, z }); + Play3D(SoundId::brakeRelease, { x, y, z }); } } } @@ -7354,11 +7346,11 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } if (mini_golf_flags & MiniGolfFlag::Flag2) @@ -7376,11 +7368,11 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } mini_golf_flags &= ~MiniGolfFlag::Flag2; } @@ -7391,7 +7383,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c Vehicle* vEDI = getGameState().entities.GetEntity(vehicleIdx); if (vEDI == nullptr) { - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } if (!(vEDI->mini_golf_flags & MiniGolfFlag::Flag0) || (vEDI->mini_golf_flags & MiniGolfFlag::Flag2)) { @@ -7404,11 +7396,11 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } if (vEDI->var_D3 != 0) { @@ -7421,11 +7413,11 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } vEDI->mini_golf_flags &= ~MiniGolfFlag::Flag0; mini_golf_flags &= ~MiniGolfFlag::Flag0; @@ -7437,7 +7429,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c Vehicle* vEDI = getGameState().entities.GetEntity(vehicleIdx); if (vEDI == nullptr) { - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } if (!(vEDI->mini_golf_flags & MiniGolfFlag::Flag1) || (vEDI->mini_golf_flags & MiniGolfFlag::Flag2)) { @@ -7450,11 +7442,11 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } if (vEDI->var_D3 != 0) { @@ -7467,11 +7459,11 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } vEDI->mini_golf_flags &= ~MiniGolfFlag::Flag1; mini_golf_flags &= ~MiniGolfFlag::Flag1; @@ -7503,26 +7495,26 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c if (remaining_distance < 0x368A) { Loc6DCDE4(curRide); - return Vehicle::UpdateMiniGolfSubroutineStatus::stop; + return UpdateMiniGolfSubroutineStatus::stop; } acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } mini_golf_flags |= MiniGolfFlag::Flag4; mini_golf_flags &= ~MiniGolfFlag::Flag3; } - return Vehicle::UpdateMiniGolfSubroutineStatus::carryOn; + return UpdateMiniGolfSubroutineStatus::carryOn; } [[nodiscard]] Vehicle::UpdateMiniGolfSubroutineStatus Vehicle::Loc6DC462(const Ride& curRide) { while (true) { - Vehicle::UpdateMiniGolfSubroutineStatus flagsStatus = Vehicle::UpdateMiniGolfSubroutineStatus::restart; - while (flagsStatus == Vehicle::UpdateMiniGolfSubroutineStatus::restart) + UpdateMiniGolfSubroutineStatus flagsStatus = UpdateMiniGolfSubroutineStatus::restart; + while (flagsStatus == UpdateMiniGolfSubroutineStatus::restart) { flagsStatus = UpdateTrackMotionMiniGolfFlagsStatus(curRide); } @@ -7752,7 +7744,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c remaining_distance = 0x368A; acceleration = Geometry::getAccelerationFromPitch(pitch); _vehicleUnkF64E10++; - return Vehicle::UpdateMiniGolfSubroutineStatus::restart; + return UpdateMiniGolfSubroutineStatus::restart; } TrackLocation = trackPos; @@ -8470,7 +8462,7 @@ void Vehicle::UpdateCrossings() const MapGetTrackElementAtOfTypeSeq(frontVehicle->TrackLocation, frontVehicle->GetTrackType(), 0) }; int32_t curZ = frontVehicle->TrackLocation.z; - if (xyElement.element != nullptr && status != Vehicle::Status::arriving) + if (xyElement.element != nullptr && status != Status::arriving) { int16_t autoReserveAhead = 4 + abs(velocity) / 150000; int16_t crossingBonus = 0; @@ -8528,7 +8520,7 @@ void Vehicle::UpdateCrossings() const // Ensure trains near a station don't block possible crossings after the stop, // except when they are departing - if (xyElement.element->AsTrack()->IsStation() && status != Vehicle::Status::departing) + if (xyElement.element->AsTrack()->IsStation() && status != Status::departing) { break; } @@ -8543,7 +8535,7 @@ void Vehicle::UpdateCrossings() const } // Ensure departing trains don't clear blocked crossings behind them that might already be blocked by another incoming train - uint8_t freeCount = travellingForwards && status != Vehicle::Status::departing ? 3 : 1; + uint8_t freeCount = travellingForwards && status != Status::departing ? 3 : 1; while (freeCount-- > 0) { if (travellingForwards) @@ -8570,10 +8562,10 @@ void Vehicle::Claxon() const switch (rideEntry->Cars[vehicle_type].soundRange) { case SoundRange::steamWhistle: - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::trainWhistle, { x, y, z }); + Play3D(SoundId::trainWhistle, { x, y, z }); break; case SoundRange::tramBell: - OpenRCT2::Audio::Play3D(OpenRCT2::Audio::SoundId::tram, { x, y, z }); + Play3D(SoundId::tram, { x, y, z }); break; default: break; @@ -8610,7 +8602,7 @@ Vehicle* Vehicle::GetCar(size_t carIndex) const return car; } -void Vehicle::SetState(Vehicle::Status vehicleStatus, uint8_t subState) +void Vehicle::SetState(Status vehicleStatus, uint8_t subState) { status = vehicleStatus; sub_state = subState; From f1cce66fd64b1afdfcd35f8b488a59f543d3fcde Mon Sep 17 00:00:00 2001 From: Michael Steenbeek <1478678+Gymnasiast@users.noreply.github.com> Date: Tue, 13 Jan 2026 08:39:02 +0100 Subject: [PATCH 218/222] Untangle metal support repositioning (#25794) --- src/openrct2/paint/support/MetalSupports.cpp | 185 +++++++++++++------ 1 file changed, 124 insertions(+), 61 deletions(-) diff --git a/src/openrct2/paint/support/MetalSupports.cpp b/src/openrct2/paint/support/MetalSupports.cpp index 11181f0ad5ad..0a57eb1a50ea 100644 --- a/src/openrct2/paint/support/MetalSupports.cpp +++ b/src/openrct2/paint/support/MetalSupports.cpp @@ -21,8 +21,6 @@ using namespace OpenRCT2; using namespace OpenRCT2::Drawing; using namespace OpenRCT2::Numerics; -constexpr auto kMetalSupportSkip = 9 * 4 * 2; - // There are 13 types of metal support graphics, including rotated versions. A graphic showing all of them is available here: // https://cloud.githubusercontent.com/assets/737603/19420485/7eaba28e-93ec-11e6-83cb-03190accc094.png enum class MetalSupportGraphic : uint8_t @@ -87,47 +85,119 @@ static constexpr CoordsXY kMetalSupportBoundBoxOffsets[] = { { 16, 28 }, }; +struct RepositionPair +{ + MetalSupportPlace place = MetalSupportPlace::centre; + uint8_t crossBeamIndex = 0xFF; + + constexpr bool isNull() const + { + return crossBeamIndex == 0xFF; + } +}; +struct RepositionRow +{ + std::array pairs; + + constexpr RepositionRow(const RepositionPair pair) + { + pairs = { pair, pair, pair, pair }; + } + + constexpr RepositionRow(const RepositionPair pair1, const RepositionPair pair2, const RepositionPair pair3, const RepositionPair pair4) + { + pairs = { pair1, pair2, pair3, pair4 }; + } + + constexpr RepositionPair operator[](const Direction direction) const noexcept + { + return pairs[direction]; + } +}; + +constexpr uint8_t kNumMetalSupportPlaces = 9; +using RepositionAttempt = std::array; + +static constexpr RepositionAttempt kMetalSupportSegmentOffsets0 = { + { + { { MetalSupportPlace::topLeftSide, 2 } }, /* topCorner */ + { { MetalSupportPlace::bottomLeftSide, 1 } }, /* leftCorner */ + { { MetalSupportPlace::topRightSide, 3 } }, /* rightCorner */ + { { MetalSupportPlace::bottomRightSide, 0 } }, /* bottomCorner */ + { + { MetalSupportPlace::topLeftSide, 3 }, /* centre, rotation 0 */ + { MetalSupportPlace::topRightSide, 0 }, /* centre, rotation 1 */ + { MetalSupportPlace::bottomRightSide, 1 }, /* centre, rotation 2 */ + { MetalSupportPlace::bottomLeftSide, 2 } /* centre, rotation 3 */ + }, + { { MetalSupportPlace::leftCorner, 2 } }, /* topLeftSide */ + { { MetalSupportPlace::topCorner, 3 } }, /* topRightSide */ + { { MetalSupportPlace::bottomCorner, 1 } }, /* bottomLeftSide */ + { { MetalSupportPlace::rightCorner, 0 } }, /* bottomRightSide */ + } +}; + +static constexpr RepositionAttempt kMetalSupportSegmentOffsets1 = { +{ + { { MetalSupportPlace::topRightSide, 1 } }, /* topCorner */ + { { MetalSupportPlace::topLeftSide, 0 } }, /* leftCorner */ + { { MetalSupportPlace::bottomRightSide, 2 } }, /* rightCorner */ + { { MetalSupportPlace::bottomLeftSide, 3 } }, /* bottomCorner */ + { + { MetalSupportPlace::topRightSide, 0 }, /* centre, rotation 0 */ + { MetalSupportPlace::bottomRightSide, 1}, /* centre, rotation 1 */ + { MetalSupportPlace::bottomLeftSide, 2}, /* centre, rotation 2 */ + { MetalSupportPlace::topLeftSide, 3 } /* centre, rotation 3 */ + }, + { { MetalSupportPlace::topCorner, 0 } }, /* topLeftSide */ + { { MetalSupportPlace::rightCorner, 1 } }, /* topRightSide */ + { { MetalSupportPlace::leftCorner, 3 } }, /* bottomLeftSide */ + { { MetalSupportPlace::bottomCorner, 2 } }, /* bottomRightSide */ + } +}; +static constexpr RepositionAttempt kMetalSupportSegmentOffsets2 = { + { + { { MetalSupportPlace::leftCorner, 6 } }, /* topCorner */ + { { MetalSupportPlace::bottomCorner, 5 } }, /* leftCorner */ + { { MetalSupportPlace::topCorner, 7 } }, /* rightCorner */ + { { MetalSupportPlace::rightCorner, 4 } }, /* bottomCorner */ + { + { MetalSupportPlace::bottomRightSide, 1 }, /* centre, rotation 0 */ + { MetalSupportPlace::bottomLeftSide, 2 }, /* centre, rotation 1 */ + { MetalSupportPlace::topLeftSide, 3 }, /* centre, rotation 2 */ + { MetalSupportPlace::topRightSide, 0 } /* centre, rotation 3 */ + }, + { { MetalSupportPlace::centre, 1 } }, /* topLeftSide */ + { { MetalSupportPlace::centre, 2 } }, /* topRightSide */ + { { MetalSupportPlace::centre, 0 } }, /* bottomLeftSide */ + { { MetalSupportPlace::centre, 3 } }, /* bottomRightSide */ + } +}; +static constexpr RepositionAttempt kMetalSupportSegmentOffsets3 = { + { + { { MetalSupportPlace::rightCorner, 5 } }, /* topCorner */ + { { MetalSupportPlace::topCorner, 4 } }, /* leftCorner */ + { { MetalSupportPlace::bottomCorner, 6 } }, /* rightCorner */ + { { MetalSupportPlace::leftCorner, 7 } }, /* bottomCorner */ + { + { MetalSupportPlace::bottomLeftSide, 2 }, /* centre, rotation 0 */ + { MetalSupportPlace::topLeftSide, 3 }, /* centre, rotation 1 */ + { MetalSupportPlace::topRightSide, 0 }, /* centre, rotation 2 */ + { MetalSupportPlace::bottomRightSide, 1 } /* centre, rotation 3 */ + }, + { { MetalSupportPlace::bottomRightSide, 5 } }, /* topLeftSide */ + { { MetalSupportPlace::bottomLeftSide, 6 } }, /* topRightSide */ + { { MetalSupportPlace::topRightSide, 4 } }, /* bottomLeftSide */ + { { MetalSupportPlace::topLeftSide, 7 } }, /* bottomRightSide */ + } +}; + /** rct2: 0x0097AF32 */ -static constexpr uint8_t kMetalSupportSegmentOffsets[] = { - 5, 2, 5, 2, 5, 2, 5, 2, - 7, 1, 7, 1, 7, 1, 7, 1, - 6, 3, 6, 3, 6, 3, 6, 3, - 8, 0, 8, 0, 8, 0, 8, 0, - 5, 3, 6, 0, 8, 1, 7, 2, - 1, 2, 1, 2, 1, 2, 1, 2, - 0, 3, 0, 3, 0, 3, 0, 3, - 3, 1, 3, 1, 3, 1, 3, 1, - 2, 0, 2, 0, 2, 0, 2, 0, - - 6, 1, 6, 1, 6, 1, 6, 1, - 5, 0, 5, 0, 5, 0, 5, 0, - 8, 2, 8, 2, 8, 2, 8, 2, - 7, 3, 7, 3, 7, 3, 7, 3, - 6, 0, 8, 1, 7, 2, 5, 3, - 0, 0, 0, 0, 0, 0, 0, 0, - 2, 1, 2, 1, 2, 1, 2, 1, - 1, 3, 1, 3, 1, 3, 1, 3, - 3, 2, 3, 2, 3, 2, 3, 2, - - 1, 6, 1, 6, 1, 6, 1, 6, - 3, 5, 3, 5, 3, 5, 3, 5, - 0, 7, 0, 7, 0, 7, 0, 7, - 2, 4, 2, 4, 2, 4, 2, 4, - 8, 1, 7, 2, 5, 3, 6, 0, - 4, 1, 4, 1, 4, 1, 4, 1, - 4, 2, 4, 2, 4, 2, 4, 2, - 4, 0, 4, 0, 4, 0, 4, 0, - 4, 3, 4, 3, 4, 3, 4, 3, - - 2, 5, 2, 5, 2, 5, 2, 5, - 0, 4, 0, 4, 0, 4, 0, 4, - 3, 6, 3, 6, 3, 6, 3, 6, - 1, 7, 1, 7, 1, 7, 1, 7, - 7, 2, 5, 3, 6, 0, 8, 1, - 8, 5, 8, 5, 8, 5, 8, 5, - 7, 6, 7, 6, 7, 6, 7, 6, - 6, 4, 6, 4, 6, 4, 6, 4, - 5, 7, 5, 7, 5, 7, 5, 7, +static constexpr std::array kMetalSupportSegmentOffsets = { + kMetalSupportSegmentOffsets0, + kMetalSupportSegmentOffsets1, + kMetalSupportSegmentOffsets2, + kMetalSupportSegmentOffsets3, }; /** rct2: 0x0097B052, 0x0097B053 */ @@ -324,29 +394,22 @@ static bool MetalSupportsPaintSetupCommon( if (currentHeight < 0) return false; - uint16_t baseIndex = session.CurrentRotation * 2; - uint8_t newSegment = kMetalSupportSegmentOffsets[baseIndex + segment * 8]; - if (currentHeight <= supportSegments[newSegment].height) + RepositionPair newPlacement = {}; + for (size_t attempt = 0; attempt < kMetalSupportSegmentOffsets.size(); attempt++) { - baseIndex += kMetalSupportSkip; - newSegment = kMetalSupportSegmentOffsets[baseIndex + segment * 8]; - if (currentHeight <= supportSegments[newSegment].height) + const auto& candidate = kMetalSupportSegmentOffsets[attempt][segment][session.CurrentRotation]; + if (currentHeight > supportSegments[EnumValue(candidate.place)].height) { - baseIndex += kMetalSupportSkip; - newSegment = kMetalSupportSegmentOffsets[baseIndex + segment * 8]; - if (currentHeight <= supportSegments[newSegment].height) - { - baseIndex += kMetalSupportSkip; - newSegment = kMetalSupportSegmentOffsets[baseIndex + segment * 8]; - if (currentHeight <= supportSegments[newSegment].height) - { - return false; - } - } + newPlacement = candidate; + break; } } + if (newPlacement.isNull()) + { + return false; + } - const uint8_t crossBeamIndex = kMetalSupportSegmentOffsets[baseIndex + segment * 8 + 1]; + const uint8_t crossBeamIndex = newPlacement.crossBeamIndex; if constexpr (typeB) { if (crossBeamIndex >= kMetalSupportCrossbeamTwoSegmentOffsetIndex) @@ -358,7 +421,7 @@ static bool MetalSupportsPaintSetupCommon( { kMetalSupportBoundBoxOffsets[segment] + kMetalSupportCrossBeamBoundBoxOffsets[crossBeamIndex], currentHeight }, { kMetalSupportCrossBeamBoundBoxLengths[crossBeamIndex], 1 }); - segment = newSegment; + segment = EnumValue(newPlacement.place); } const int16_t crossbeamHeight = currentHeight; From db94c4fcd6421025540f2b495a35ee5a7bafdaed Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Tue, 13 Jan 2026 09:52:34 +0100 Subject: [PATCH 219/222] Automatically apply basic pull request labels (#25770) --- .github/labeler.yml | 55 +++++++++++++++++++++++++++++++++ .github/workflows/label-prs.yml | 18 +++++++++++ 2 files changed, 73 insertions(+) create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/label-prs.yml diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000000..bd3cb3ed7b06 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,55 @@ +# Rules for automatically applying labels to PRs +# See also: https://github.com/actions/labeler + +# General labels +'build': + - changed-files: + - any-glob-to-any-file: + - '.github/*' + - '.github/**/*' + - 'cmake/*' + - 'cmake/**/*' + - 'scripts/*' + - 'CMakeLists.txt' + - '**/CMakeLists.txt' + - '*.sln' + - '**/*.vcxproj' +'documentation': + - changed-files: + - any-glob-to-any-file: + - '*.md' + - '**/*.md' + +# Localisation +'localisation': + - changed-files: + - any-glob-to-any-file: + - 'data/language/en-GB.txt' + +# Game components +'actions': + - changed-files: + - any-glob-to-any-file: + - 'src/openrct2/actions/*' +'map generator': + - changed-files: + - any-glob-to-any-file: + - 'src/openrct2/world/map_generator/*' +'network': + - changed-files: + - any-glob-to-any-file: + - 'src/openrct2/network/*' +'paint': + - changed-files: + - any-glob-to-any-file: + - 'src/openrct2/paint/*' + +# Platform code +'platform': + - changed-files: + - any-glob-to-any-file: + - 'src/openrct2/platform/*' +'android': + - changed-files: + - any-glob-to-any-file: + - 'src/openrct2-android/*' diff --git a/.github/workflows/label-prs.yml b/.github/workflows/label-prs.yml new file mode 100644 index 000000000000..405ec0180846 --- /dev/null +++ b/.github/workflows/label-prs.yml @@ -0,0 +1,18 @@ +# This workflow automatically labels new pull requests +# See labeler.yml for the label rules involved + +name: Apply labels to pull request +on: pull_request_target + +jobs: + labeler: + permissions: + contents: read + issues: write # automatically creates labels + pull-requests: write # assigning labels to PRs + runs-on: ubuntu-latest + if: github.repository == 'OpenRCT2/OpenRCT2' + steps: + - uses: actions/labeler@v6 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} From f432b313dd45a966948bb5056b83350a4a398e93 Mon Sep 17 00:00:00 2001 From: Lily Linn Date: Tue, 13 Jan 2026 01:20:59 +0000 Subject: [PATCH 220/222] Fix API compatibility with upstream OpenRCT2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update AI agent code to work with current upstream API changes: - Status enum case changes (Ok -> ok, InvalidParameters -> invalidParameters, etc.) - Result struct field case changes (Position -> position, Expenditure -> expenditure) - Method name changes (GetData -> getData, GetErrorMessage -> getErrorMessage) - PaletteIndex now requires explicit static_cast from uint8_t - SequenceFlags uses .getEntranceConnectionSides() instead of bitwise operators - CommandFlag requires GameActions:: namespace prefix 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/openrct2-ui/windows/AIAgentTerminal.cpp | 5 +- src/openrct2/actions/TrackDesignAction.cpp | 89 +++++----- src/openrct2/actions/TrackPlaceAction.cpp | 160 +++++++++--------- src/openrct2/scripting/rpc/RpcUtils.cpp | 44 ++--- .../rpc/handlers/FinanceHandlers.cpp | 2 +- .../scripting/rpc/handlers/GuestHandlers.cpp | 6 +- .../scripting/rpc/handlers/MapHandlers.cpp | 22 +-- .../scripting/rpc/handlers/ParkHandlers.cpp | 6 +- .../rpc/handlers/ResearchHandlers.cpp | 4 +- .../scripting/rpc/handlers/RideHandlers.cpp | 63 +++---- .../scripting/rpc/handlers/ShopHandlers.cpp | 30 ++-- .../scripting/rpc/handlers/StaffHandlers.cpp | 26 +-- 12 files changed, 224 insertions(+), 233 deletions(-) diff --git a/src/openrct2-ui/windows/AIAgentTerminal.cpp b/src/openrct2-ui/windows/AIAgentTerminal.cpp index b57adba8b8cf..8082f47d42cf 100644 --- a/src/openrct2-ui/windows/AIAgentTerminal.cpp +++ b/src/openrct2-ui/windows/AIAgentTerminal.cpp @@ -2046,8 +2046,9 @@ namespace OpenRCT2::Ui::Windows const uint8_t foreground = TerminalPaletteMapper::Instance().Map(cell.foregroundRgb); TextDrawInfo drawInfo{}; - drawInfo.palette[1] = foreground; - drawInfo.palette[3] = foreground; + drawInfo.palette.fill = static_cast(foreground); + drawInfo.palette.sunnyOutline = static_cast(foreground); + drawInfo.palette.shadowOutline = static_cast(foreground); const int32_t glyphWidth = surface->w; const int32_t glyphHeight = surface->h; diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 275b5165ee55..0b615143db8a 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -57,14 +57,14 @@ namespace OpenRCT2::GameActions Result TrackDesignAction::Query(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::rideConstruction; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::rideConstruction; if (!LocationValid(_loc)) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } auto& objManager = GetContext()->GetObjectManager(); @@ -83,26 +83,24 @@ namespace OpenRCT2::GameActions auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); - if (r.Error != Status::Ok) + if (r.error != Status::ok) { - return Result(Status::NoFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); + return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } - const auto rideIndex = r.GetData(); + const auto rideIndex = r.getData(); auto ride = GetRide(rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d", rideIndex); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } bool placeScenery = _placeScenery; - uint32_t flags = 0; - if (GetFlags() & GAME_COMMAND_FLAG_GHOST) - flags |= GAME_COMMAND_FLAG_GHOST; - if (GetFlags() & GAME_COMMAND_FLAG_REPLAY) - flags |= GAME_COMMAND_FLAG_REPLAY; + CommandFlags flags = {}; + flags.set(CommandFlag::ghost, GetFlags().has(CommandFlag::ghost)); + flags.set(CommandFlag::replay, GetFlags().has(CommandFlag::replay)); auto queryRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); if (_trackDesignPlaceStateSceneryUnavailable) @@ -116,17 +114,17 @@ namespace OpenRCT2::GameActions ExecuteNested(&gameAction, gameState); - if (queryRes.Error != Status::Ok) + if (queryRes.error != Status::ok) { - res.Error = queryRes.Error; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - res.ErrorMessage = queryRes.ErrorMessage; - res.ErrorMessageArgs = queryRes.ErrorMessageArgs; + res.error = queryRes.error; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.errorMessage = queryRes.errorMessage; + res.errorMessageArgs = queryRes.errorMessageArgs; return res; } - res.Cost = queryRes.Cost; - res.SetData(RideId{ RideId::GetNull() }); + res.cost = queryRes.cost; + res.setData(RideId{ RideId::GetNull() }); return res; } @@ -134,10 +132,10 @@ namespace OpenRCT2::GameActions Result TrackDesignAction::Execute(GameState_t& gameState) const { auto res = Result(); - res.Position.x = _loc.x + 16; - res.Position.y = _loc.y + 16; - res.Position.z = _loc.z; - res.Expenditure = ExpenditureType::rideConstruction; + res.position.x = _loc.x + 16; + res.position.y = _loc.y + 16; + res.position.z = _loc.z; + res.expenditure = ExpenditureType::rideConstruction; auto& objManager = GetContext()->GetObjectManager(); auto entryIndex = objManager.GetLoadedObjectEntryIndex(_td.trackAndVehicle.vehicleObject); @@ -155,21 +153,21 @@ namespace OpenRCT2::GameActions auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); - if (r.Error != Status::Ok) + if (r.error != Status::ok) { - return Result(Status::NoFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); + return Result(Status::noFreeElements, STR_CANT_CREATE_NEW_RIDE_ATTRACTION, kStringIdNone); } - const auto rideIndex = r.GetData(); + const auto rideIndex = r.getData(); auto ride = GetRide(rideIndex); if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d", rideIndex); - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } // Query first, this is required again to determine if scenery is available. - uint32_t flags = GetFlags() & ~GAME_COMMAND_FLAG_APPLY; + auto flags = GetFlags().without(CommandFlag::apply); bool placeScenery = _placeScenery; @@ -180,34 +178,34 @@ namespace OpenRCT2::GameActions queryRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); } - if (queryRes.Error != Status::Ok) + if (queryRes.error != Status::ok) { auto gameAction = RideDemolishAction(ride->id, RideModifyType::demolish); gameAction.SetFlags(GetFlags()); ExecuteNested(&gameAction, gameState); - res.Error = queryRes.Error; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - res.ErrorMessage = queryRes.ErrorMessage; - res.ErrorMessageArgs = queryRes.ErrorMessageArgs; + res.error = queryRes.error; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.errorMessage = queryRes.errorMessage; + res.errorMessageArgs = queryRes.errorMessageArgs; return res; } // Execute. - flags |= GAME_COMMAND_FLAG_APPLY; + flags.set(CommandFlag::apply); auto execRes = TrackDesignPlace(_td, flags, placeScenery, *ride, _loc); - if (execRes.Error != Status::Ok) + if (execRes.error != Status::ok) { auto gameAction = RideDemolishAction(ride->id, RideModifyType::demolish); gameAction.SetFlags(GetFlags()); ExecuteNested(&gameAction, gameState); - res.Error = execRes.Error; - res.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; - res.ErrorMessage = execRes.ErrorMessage; - res.ErrorMessageArgs = execRes.ErrorMessageArgs; + res.error = execRes.error; + res.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + res.errorMessage = execRes.errorMessage; + res.errorMessageArgs = execRes.errorMessageArgs; return res; } @@ -261,18 +259,15 @@ namespace OpenRCT2::GameActions ride->vehicleColours[i] = _td.appearance.vehicleColours[i]; } - for (int32_t count = 1; count == 1 || r.Error != Status::Ok; ++count) + for (int32_t count = 1; count == 1 || r.error != Status::ok; ++count) { auto name = count == 1 ? _td.gameStateData.name : (_td.gameStateData.name + " " + std::to_string(count)); auto gameAction = RideSetNameAction(ride->id, name); gameAction.SetFlags(GetFlags()); r = ExecuteNested(&gameAction, gameState); } - res.Cost = execRes.Cost; - // Use rideIndex (from RideCreateAction result) rather than ride->id - // because the ride pointer could become stale if nested actions cause - // the rides array to be reallocated - res.SetData(RideId{ rideIndex }); + res.cost = execRes.cost; + res.setData(RideId{ ride->id }); return res; } diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 4992211324fb..d26cc162dec8 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -83,45 +83,45 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Ride not found for rideIndex %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } const auto* rideEntry = GetRideEntryByIndex(ride->subtype); if (rideEntry == nullptr) { LOG_ERROR("Invalid ride subtype for track placement, rideIndex = %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } if (!DirectionValid(_origin.direction)) { LOG_ERROR("Invalid direction for track placement, direction = %d", _origin.direction); return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } if (_rideType != ride->type && !gameState.cheats.allowArbitraryRideTypeChanges) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, kStringIdNone); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, kStringIdNone); } if (_rideType > RIDE_TYPE_COUNT) { LOG_ERROR("Invalid ride type for track placement, rideType = %d", _rideType); return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } if (_brakeSpeed > kMaximumTrackSpeed) { LOG_WARNING("Invalid speed for track placement, speed = %d", _brakeSpeed); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_SPEED_TOO_HIGH); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_SPEED_TOO_HIGH); } auto res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.Position.x = _origin.x + 16; - res.Position.y = _origin.y + 16; - res.Position.z = _origin.z; + res.expenditure = ExpenditureType::rideConstruction; + res.position.x = _origin.x + 16; + res.position.y = _origin.y + 16; + res.position.z = _origin.z; auto resultData = TrackPlaceActionResult{}; @@ -130,7 +130,7 @@ namespace OpenRCT2::GameActions if ((ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _trackType == TrackElemType::EndStation) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NOT_ALLOWED_TO_MODIFY_STATION); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NOT_ALLOWED_TO_MODIFY_STATION); } if (!(GetActionFlags() & Flags::AllowWhilePaused)) @@ -138,7 +138,7 @@ namespace OpenRCT2::GameActions if (GameIsPaused() && !gameState.cheats.buildInPauseMode) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED); } } @@ -150,7 +150,7 @@ namespace OpenRCT2::GameActions if (ride->lifecycleFlags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ONLY_ONE_ON_RIDE_PHOTO_PER_RIDE); } } @@ -159,7 +159,7 @@ namespace OpenRCT2::GameActions if (ride->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ONLY_ONE_CABLE_LIFT_HILL_PER_RIDE); } } @@ -171,7 +171,7 @@ namespace OpenRCT2::GameActions if (ted.flags & TRACK_ELEM_FLAG_IS_STEEP_UP) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL); } } } @@ -187,14 +187,11 @@ namespace OpenRCT2::GameActions if (!LocationValid(tileCoords)) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } if (!MapIsLocationOwned(tileCoords) && !gameState.cheats.sandboxMode) { - LOG_INFO( - "TrackPlaceAction ownership fail at (%d,%d,%d) for ride %u", tileCoords.x, tileCoords.y, tileCoords.z, - _rideIndex.ToUnderlying()); - return Result(Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); + return Result(Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_LAND_NOT_OWNED_BY_PARK); } numElements++; } @@ -203,7 +200,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Not enough free map elements to place track."); return Result( - Status::NoFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + Status::noFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } if (!gameState.cheats.allowTrackPlaceInvalidHeights) @@ -213,7 +210,7 @@ namespace OpenRCT2::GameActions if ((_origin.z & 0x0F) != 8) { return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); } } else @@ -221,7 +218,7 @@ namespace OpenRCT2::GameActions if ((_origin.z & 0x0F) != 0) { return Result( - Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); + Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_INVALID_HEIGHT); } } } @@ -240,7 +237,7 @@ namespace OpenRCT2::GameActions if (mapLoc.z < 16) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_LOW); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_LOW); } int32_t baseZ = floor2(mapLoc.z, kCoordsZStep); @@ -259,30 +256,30 @@ namespace OpenRCT2::GameActions if (clearanceZ > MAX_TRACK_HEIGHT) { - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::Flat) ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( - { mapLoc, baseZ, clearanceZ }, &MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, + { mapLoc, baseZ, clearanceZ }, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags(), kTileSlopeFlat, crossingMode); - if (canBuild.Error != Status::Ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - costs += canBuild.Cost; + costs += canBuild.cost; - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) { if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND); } } @@ -293,7 +290,7 @@ namespace OpenRCT2::GameActions if (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND); } } @@ -303,14 +300,14 @@ namespace OpenRCT2::GameActions if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_UNDERWATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_UNDERWATER); } } if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER && !gameState.cheats.disableClearanceChecks) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_RIDE_CANT_BUILD_THIS_UNDERWATER); } if (rtd.HasFlag(RtdFlag::trackMustBeOnWater) && !_trackDesignDrawingPreview) @@ -319,20 +316,20 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } auto waterHeight = surfaceElement->GetWaterHeight(); if (waterHeight == 0) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); } if (waterHeight != baseZ) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); } waterHeight -= kLandHeightStep; if (waterHeight == surfaceElement->GetBaseZ()) @@ -342,20 +339,19 @@ namespace OpenRCT2::GameActions || slope == kTileSlopeNCornerDown) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CAN_ONLY_BUILD_THIS_ON_WATER); } } } - int32_t entranceDirections = ted.sequences[0].flags; - if ((entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN) && blockIndex == 0) + if ((ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) && blockIndex == 0) { const auto addElementResult = TrackAddStationElement( - { mapLoc, baseZ, _origin.direction }, _rideIndex, 0, _fromTrackDesign); + { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); if (!addElementResult.Successful) { - return Result(Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, addElementResult.Message); + return Result(Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, addElementResult.Message); } } @@ -364,7 +360,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } if (!gameState.cheats.disableSupportLimits) @@ -387,7 +383,7 @@ namespace OpenRCT2::GameActions if (ride_height > maxHeight && !_trackDesignDrawingPreview) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH_FOR_SUPPORTS); + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH_FOR_SUPPORTS); } } } @@ -405,8 +401,8 @@ namespace OpenRCT2::GameActions price *= ted.priceModifier; price >>= 16; - res.Cost = costs + supportCosts + price; - res.SetData(std::move(resultData)); + res.cost = costs + supportCosts + price; + res.setData(std::move(resultData)); return res; } @@ -417,21 +413,21 @@ namespace OpenRCT2::GameActions if (ride == nullptr) { LOG_ERROR("Invalid ride for track placement, rideIndex = %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_RIDE_NOT_FOUND); } const auto* rideEntry = GetRideEntryByIndex(ride->subtype); if (rideEntry == nullptr) { LOG_ERROR("Invalid ride subtype for track placement, rideIndex = %d", _rideIndex.ToUnderlying()); - return Result(Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); + return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_UNKNOWN_OBJECT_TYPE); } auto res = Result(); - res.Expenditure = ExpenditureType::rideConstruction; - res.Position.x = _origin.x + 16; - res.Position.y = _origin.y + 16; - res.Position.z = _origin.z; + res.expenditure = ExpenditureType::rideConstruction; + res.position.x = _origin.x + 16; + res.position.y = _origin.y + 16; + res.position.z = _origin.z; auto resultData = TrackPlaceActionResult{}; @@ -471,17 +467,17 @@ namespace OpenRCT2::GameActions ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( - mapLocWithClearance, &MapPlaceNonSceneryClearFunc, quarterTile, GetFlags() | GAME_COMMAND_FLAG_APPLY, + mapLocWithClearance, MapPlaceNonSceneryClearFunc, quarterTile, GetFlags().with(CommandFlag::apply), kTileSlopeFlat, crossingMode); - if (canBuild.Error != Status::Ok) + if (canBuild.error != Status::ok) { - canBuild.ErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; + canBuild.errorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE; return canBuild; } - costs += canBuild.Cost; + costs += canBuild.cost; // When building a level crossing, remove any pre-existing path furniture. - if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags().has(CommandFlag::ghost))) { auto footpathElement = MapGetFootpathElement(mapLoc); if (footpathElement != nullptr && footpathElement->HasAddition()) @@ -490,7 +486,7 @@ namespace OpenRCT2::GameActions } } - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !gameState.cheats.disableClearanceChecks) + if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) { FootpathRemoveLitter(mapLoc); if (rtd.HasFlag(RtdFlag::noWallsAroundTrack)) @@ -513,14 +509,14 @@ namespace OpenRCT2::GameActions } } - const auto clearanceData = canBuild.GetData(); + const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) { if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { return Result( - Status::Disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, + Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND); } } @@ -532,7 +528,7 @@ namespace OpenRCT2::GameActions if (surfaceElement == nullptr) { return Result( - Status::Unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); + Status::unknown, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_SURFACE_ELEMENT_NOT_FOUND); } int32_t supportHeight = baseZ - surfaceElement->GetBaseZ(); @@ -543,16 +539,16 @@ namespace OpenRCT2::GameActions supportCosts += (supportHeight / (2 * kCoordsZStep)) * rtd.BuildCosts.SupportPrice; - int32_t entranceDirections = 0; + bool isOrigin = false; if (!ride->overallView.IsNull()) { - if (!(GetFlags() & GAME_COMMAND_FLAG_NO_SPEND)) + if (!(GetFlags().has(CommandFlag::noSpend))) { - entranceDirections = ted.sequences[0].flags; + isOrigin = ted.sequences[0].flags.has(SequenceFlag::trackOrigin); } } - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN || ride->overallView.IsNull()) + if (isOrigin || ride->overallView.IsNull()) { ride->overallView = mapLoc; } @@ -562,7 +558,7 @@ namespace OpenRCT2::GameActions { LOG_ERROR("Cannot create track element for ride = %d", _rideIndex.ToUnderlying()); return Result( - Status::NoFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); + Status::noFreeElements, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TILE_ELEMENT_LIMIT_REACHED); } trackElement->SetClearanceZ(clearanceZ); @@ -572,7 +568,7 @@ namespace OpenRCT2::GameActions trackElement->SetRideIndex(_rideIndex); trackElement->SetTrackType(_trackType); trackElement->SetRideType(_rideType); - trackElement->SetGhost(GetFlags() & GAME_COMMAND_FLAG_GHOST); + trackElement->SetGhost(GetFlags().has(CommandFlag::ghost)); switch (_trackType) { @@ -610,18 +606,17 @@ namespace OpenRCT2::GameActions } trackElement->SetColourScheme(static_cast(_colour)); - entranceDirections = ted.sequences[0].flags; - if (entranceDirections & TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH) + if (ted.sequences[0].flags.has(SequenceFlag::connectsToPath)) { - uint32_t availableDirections = entranceDirections & 0x0F; - if (availableDirections != 0) + uint32_t connectionSides = ted.sequences[0].getEntranceConnectionSides(); + if (connectionSides != 0) { - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !gameState.cheats.disableClearanceChecks) + if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) { - for (int32_t chosenDirection = Numerics::bitScanForward(availableDirections); chosenDirection != -1; - chosenDirection = Numerics::bitScanForward(availableDirections)) + for (int32_t chosenDirection = Numerics::bitScanForward(connectionSides); chosenDirection != -1; + chosenDirection = Numerics::bitScanForward(connectionSides)) { - availableDirections &= ~(1 << chosenDirection); + connectionSides &= ~(1 << chosenDirection); CoordsXY tempLoc{ mapLoc.x, mapLoc.y }; int32_t tempDirection = (_origin.direction + chosenDirection) & 3; tempLoc.x += CoordsDirectionDelta[tempDirection].x; @@ -636,13 +631,12 @@ namespace OpenRCT2::GameActions // If the placed tile is a station modify station properties. // Don't do this if the tile is a ghost to prevent desyncs // However, ghost tiles from track designs need to modify station data to display properly - if (entranceDirections & TRACK_SEQUENCE_FLAG_ORIGIN - && (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) || _fromTrackDesign)) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) + && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) { if (blockIndex == 0) { - TrackAddStationElement( - { mapLoc, _origin.direction }, _rideIndex, GAME_COMMAND_FLAG_APPLY, _fromTrackDesign); + TrackAddStationElement({ mapLoc, _origin.direction }, _rideIndex, { CommandFlag::apply }, _fromTrackDesign); } ride->validateStations(); ride->updateMaxVehicles(); @@ -660,7 +654,7 @@ namespace OpenRCT2::GameActions } } - if (!gameState.cheats.disableClearanceChecks || !(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!gameState.cheats.disableClearanceChecks || !(GetFlags().has(CommandFlag::ghost))) { FootpathConnectEdges(mapLoc, tileElement, GetFlags()); } @@ -668,7 +662,7 @@ namespace OpenRCT2::GameActions } // Update ride stats and block brake count if the piece was successfully built - if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) + if (!(GetFlags().has(CommandFlag::ghost))) { switch (_trackType) { @@ -726,8 +720,8 @@ namespace OpenRCT2::GameActions price *= ted.priceModifier; price >>= 16; - res.Cost = costs + supportCosts + price; - res.SetData(std::move(resultData)); + res.cost = costs + supportCosts + price; + res.setData(std::move(resultData)); return res; } diff --git a/src/openrct2/scripting/rpc/RpcUtils.cpp b/src/openrct2/scripting/rpc/RpcUtils.cpp index 4c77486137bc..776308b205d8 100644 --- a/src/openrct2/scripting/rpc/RpcUtils.cpp +++ b/src/openrct2/scripting/rpc/RpcUtils.cpp @@ -185,33 +185,33 @@ namespace OpenRCT2::Scripting::Rpc using GameActions::Status; switch (status) { - case Status::Ok: + case Status::ok: return "ok"; - case Status::InvalidParameters: + case Status::invalidParameters: return "invalidParameters"; - case Status::Disallowed: + case Status::disallowed: return "disallowed"; - case Status::GamePaused: + case Status::gamePaused: return "gamePaused"; - case Status::InsufficientFunds: + case Status::insufficientFunds: return "insufficientFunds"; - case Status::NotInEditorMode: + case Status::notInEditorMode: return "notInEditor"; - case Status::NotOwned: + case Status::notOwned: return "notOwned"; - case Status::TooLow: + case Status::tooLow: return "tooLow"; - case Status::TooHigh: + case Status::tooHigh: return "tooHigh"; - case Status::NoClearance: + case Status::noClearance: return "noClearance"; - case Status::ItemAlreadyPlaced: + case Status::itemAlreadyPlaced: return "itemAlreadyPlaced"; - case Status::NotClosed: + case Status::notClosed: return "notClosed"; - case Status::Broken: + case Status::broken: return "broken"; - case Status::NoFreeElements: + case Status::noFreeElements: return "noFreeElements"; default: return "unknown"; @@ -220,8 +220,8 @@ namespace OpenRCT2::Scripting::Rpc std::string BuildGameActionErrorMessage(const GameActions::Result& result) { - std::string message = result.GetErrorMessage(); - std::string title = result.GetErrorTitle(); + std::string message = result.getErrorMessage(); + std::string title = result.getErrorTitle(); if (!title.empty()) { @@ -237,7 +237,7 @@ namespace OpenRCT2::Scripting::Rpc if (message.empty()) { - message = "Game action failed (" + std::string(GameActionStatusToString(result.Error)) + ")"; + message = "Game action failed (" + std::string(GameActionStatusToString(result.error)) + ")"; } return message; } @@ -270,12 +270,12 @@ namespace OpenRCT2::Scripting::Rpc json_t BuildActionSuccessPayload(const GameActions::Result& result) { json_t payload = json_t::object(); - payload["status"] = GameActionStatusToString(result.Error); - payload["cost"] = MoneyToDouble(result.Cost); - payload["position"] = BuildPositionPayload(result.Position); - if (result.Expenditure != ExpenditureType::count) + payload["status"] = GameActionStatusToString(result.error); + payload["cost"] = MoneyToDouble(result.cost); + payload["position"] = BuildPositionPayload(result.position); + if (result.expenditure != ExpenditureType::count) { - payload["expenditure"] = static_cast(result.Expenditure); + payload["expenditure"] = static_cast(result.expenditure); } return payload; } diff --git a/src/openrct2/scripting/rpc/handlers/FinanceHandlers.cpp b/src/openrct2/scripting/rpc/handlers/FinanceHandlers.cpp index d676f872c7d7..109d07421d58 100644 --- a/src/openrct2/scripting/rpc/handlers/FinanceHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/FinanceHandlers.cpp @@ -243,7 +243,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::ParkSetLoanAction(desiredLoan); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } diff --git a/src/openrct2/scripting/rpc/handlers/GuestHandlers.cpp b/src/openrct2/scripting/rpc/handlers/GuestHandlers.cpp index aa54c3fa7339..f5bca962c2e4 100644 --- a/src/openrct2/scripting/rpc/handlers/GuestHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/GuestHandlers.cpp @@ -1352,7 +1352,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::PeepPickupAction pickupAction{ GameActions::PeepPickupType::Pickup, guest->Id, nullLoc, Network::GetCurrentPlayerId() }; auto result = GameActions::Execute(&pickupAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1406,7 +1406,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::PeepPickupAction placeAction{ GameActions::PeepPickupType::Place, guest->Id, coords, Network::GetCurrentPlayerId() }; auto result = GameActions::Execute(&placeAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1460,7 +1460,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::PeepPickupAction cancelAction{ GameActions::PeepPickupType::Cancel, guest->Id, restoreLoc, playerId }; auto result = GameActions::Execute(&cancelAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } diff --git a/src/openrct2/scripting/rpc/handlers/MapHandlers.cpp b/src/openrct2/scripting/rpc/handlers/MapHandlers.cpp index 876fa2bdfa30..86e94e5b8e5b 100644 --- a/src/openrct2/scripting/rpc/handlers/MapHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/MapHandlers.cpp @@ -1881,7 +1881,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers CoordsXYZD loc{ coords.x, coords.y, zCoord, 0 }; auto action = GameActions::SmallSceneryPlaceAction(loc, 0, entryIndexOpt.value(), 0, 0, 0); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1982,7 +1982,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers CoordsXYZD loc{ coords.x, coords.y, zCoord, direction }; auto action = GameActions::SmallSceneryPlaceAction(loc, quadrant, entryIndexOpt.value(), primaryColour, secondaryColour, 0); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2091,7 +2091,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers CoordsXYZ loc{ coords.x, coords.y, zCoord }; auto action = GameActions::FootpathAdditionPlaceAction(loc, entryIndexOpt.value()); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2174,7 +2174,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers CoordsXYZ loc{ coords.x, coords.y, zCoord }; auto action = GameActions::FootpathAdditionRemoveAction(loc); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2411,7 +2411,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::FootpathPlaceAction( location, slope, surfaceSelection->entryIndex, railingsIndex, kInvalidDirection, constructFlags); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2529,7 +2529,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::ClearAction(range, GameActions::CLEARABLE_ITEMS::kSceneryFootpath); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2542,7 +2542,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers payload["tile"] = tileObj; payload["height"] = foundZ; payload["queue"] = isQueue; - payload["cost"] = static_cast(result.Cost) / 10.0; // Convert to currency display format + payload["cost"] = static_cast(result.cost) / 10.0; // Convert to currency display format if (!surfaceName.empty()) { @@ -2646,7 +2646,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers result = GameActions::Execute(&action, getGameState()); } - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2730,7 +2730,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers result = GameActions::Execute(&action, getGameState()); } - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2827,7 +2827,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::ClearAction(range, itemsToClear); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2838,7 +2838,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers payload["y"] = tile.y; payload["width"] = width; payload["height"] = height; - payload["cost"] = result.Cost; + payload["cost"] = result.cost; // Build filter description std::vector clearedTypes; diff --git a/src/openrct2/scripting/rpc/handlers/ParkHandlers.cpp b/src/openrct2/scripting/rpc/handlers/ParkHandlers.cpp index e4f2063c0d01..e9f0320cd7bf 100644 --- a/src/openrct2/scripting/rpc/handlers/ParkHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/ParkHandlers.cpp @@ -865,7 +865,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers : GameActions::ParkParameter::Close; GameActions::ParkSetParameterAction action(mode); auto result = GameActions::Execute(&action, gameState); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -904,7 +904,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::ParkSetEntranceFeeAction action(fee); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -979,7 +979,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::CheatSetAction(descriptor->type, *valueParam ? 1 : 0); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } diff --git a/src/openrct2/scripting/rpc/handlers/ResearchHandlers.cpp b/src/openrct2/scripting/rpc/handlers/ResearchHandlers.cpp index c1e45d1160b1..7b1be821f297 100644 --- a/src/openrct2/scripting/rpc/handlers/ResearchHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/ResearchHandlers.cpp @@ -845,7 +845,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::ParkSetResearchFundingAction(priorities, funding); auto result = GameActions::Execute(&action, gameState); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -952,7 +952,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::ParkMarketingAction(*typeValue, item, weeks); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } diff --git a/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp b/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp index de6130b69314..d6aa14c3d2e6 100644 --- a/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp @@ -17,6 +17,7 @@ #include "../../../Context.h" #include "../../../Diagnostic.h" #include "../../../GameState.h" +#include "../../../actions/CommandFlag.h" #include "../../../actions/GameActionResult.h" #include "../../../actions/RideCreateAction.h" #include "../../../actions/RideDemolishAction.h" @@ -676,7 +677,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers Direction relativeDir = (DirectionReverse(searchDir) - trackElement->GetDirection()) & 3; const auto& ted = TrackMetaData::GetTrackElementDescriptor(trackElement->GetTrackType()); - if (ted.sequences[trackElement->GetSequenceIndex()].flags & (1 << relativeDir)) + if (ted.sequences[trackElement->GetSequenceIndex()].getEntranceConnectionSides() & (1 << relativeDir)) { return DirectionReverse(searchDir); } @@ -2225,7 +2226,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers const auto previousStatus = rideLookup->ride->status; auto action = GameActions::RideSetStatusAction(rideLookup->id, desiredStatus.value()); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2308,7 +2309,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::RideSetPriceAction(rideLookup->id, newPrice, !secondary); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2365,7 +2366,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers hint.requestWindowFocus = false; auto action = GameActions::RideDemolishAction(rideLookup->id, *modifyType); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2407,7 +2408,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers const std::string previousName = rideLookup->ride->getName(); auto action = GameActions::RideSetNameAction(rideLookup->id, *newNameParam); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -2451,7 +2452,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto execSetting = [&](RideSetSetting setting, uint8_t value) -> bool { auto action = GameActions::RideSetSettingAction(rideLookup->id, setting, value); lastResult = GameActions::Execute(&action, getGameState()); - if (lastResult.Error != GameActions::Status::Ok) + if (lastResult.error != GameActions::Status::ok) { return false; } @@ -3003,12 +3004,12 @@ namespace OpenRCT2::Scripting::Rpc::Handlers json_t payload = json_t::object(); payload["dryRun"] = true; - payload["feasible"] = (createQueryResult.Error == GameActions::Status::Ok); + payload["feasible"] = (createQueryResult.error == GameActions::Status::ok); - if (createQueryResult.Error == GameActions::Status::Ok) + if (createQueryResult.error == GameActions::Status::ok) { payload["status"] = "ok"; - payload["estimatedCost"] = MoneyToDouble(createQueryResult.Cost); + payload["estimatedCost"] = MoneyToDouble(createQueryResult.cost); payload["message"] = "Placement would succeed. Cost is an estimate; actual cost may vary slightly."; } else @@ -3051,18 +3052,18 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto rideCreate = GameActions::RideCreateAction( blueprint->rideType, blueprint->entryIndex, colour1, colour2, gameState.lastEntranceStyle); auto createResult = GameActions::ExecuteNested(&rideCreate, gameState); - if (createResult.Error != GameActions::Status::Ok) + if (createResult.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(createResult)); } - RideId rideId = createResult.GetData(); + RideId rideId = createResult.getData(); SelectedLiftAndInverted liftFlags{}; CoordsXYZD origin{ coords.x, coords.y, *placementHeight, direction }; auto trackAction = GameActions::TrackPlaceAction( rideId, blueprint->descriptor->StartTrackPiece, blueprint->rideType, origin, 0, 0, 0, liftFlags, false); auto placeResult = GameActions::ExecuteNested(&trackAction, gameState); - if (placeResult.Error != GameActions::Status::Ok) + if (placeResult.error != GameActions::Status::ok) { auto demolish = GameActions::RideDemolishAction(rideId, GameActions::RideModifyType::demolish); GameActions::Execute(&demolish, gameState); @@ -3075,15 +3076,15 @@ namespace OpenRCT2::Scripting::Rpc::Handlers return RpcResult::Error(kErrorServerError, "Ride data unavailable after placement"); } - money64 totalCost = createResult.Cost + placeResult.Cost; + money64 totalCost = createResult.cost + placeResult.cost; json_t payload = json_t::object(); - payload["status"] = GameActionStatusToString(placeResult.Error); + payload["status"] = GameActionStatusToString(placeResult.error); payload["cost"] = MoneyToDouble(totalCost); json_t costBreakdown = json_t::object(); - costBreakdown["create"] = MoneyToDouble(createResult.Cost); - costBreakdown["build"] = MoneyToDouble(placeResult.Cost); + costBreakdown["create"] = MoneyToDouble(createResult.cost); + costBreakdown["build"] = MoneyToDouble(placeResult.cost); payload["costBreakdown"] = costBreakdown; payload["ride"] = BuildRidePayload(*ride); @@ -3213,7 +3214,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::RideEntranceExitPlaceAction( coords, actionDirection, rideLookup->id, stationIndex, isExit); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -3715,7 +3716,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers // Execute the action in query mode auto action = GameActions::TrackDesignAction(location, trackDesign, false); - action.SetFlags(GAME_COMMAND_FLAG_NO_SPEND); // Query only + action.SetFlags({ GameActions::CommandFlag::noSpend }); // Query only auto result = GameActions::Query(&action, gameState); json_t payload = json_t::object(); @@ -3767,13 +3768,13 @@ namespace OpenRCT2::Scripting::Rpc::Handlers placement["z"] = zParam; placement["zAutoDetected"] = !zExplicit; placement["direction"] = directionParam; - placement["cost"] = MoneyToDouble(result.Cost); - placement["canPlace"] = result.Error == GameActions::Status::Ok; + placement["cost"] = MoneyToDouble(result.cost); + placement["canPlace"] = result.error == GameActions::Status::ok; - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { - placement["errorMessage"] = result.GetErrorMessage(); - std::string errMsg = result.GetErrorMessage(); + placement["errorMessage"] = result.getErrorMessage(); + std::string errMsg = result.getErrorMessage(); // Provide targeted height suggestions based on error type if (errMsg.find("Too high") != std::string::npos || errMsg.find("too high") != std::string::npos) @@ -3931,9 +3932,9 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::TrackDesignAction(location, trackDesign, placeScenery); auto result = GameActions::Execute(&action, gameState); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { - std::string errorMsg = result.GetErrorMessage(); + std::string errorMsg = result.getErrorMessage(); // Add targeted hint based on error type std::string hint; if (errorMsg.find("Too high") != std::string::npos || errorMsg.find("too high") != std::string::npos) @@ -3964,7 +3965,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers } // Get the created ride - auto rideId = result.GetData(); + auto rideId = result.getData(); auto* ride = GetRide(rideId); if (ride == nullptr) { @@ -3983,7 +3984,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers json_t payload = json_t::object(); payload["status"] = "ok"; - payload["cost"] = MoneyToDouble(result.Cost); + payload["cost"] = MoneyToDouble(result.cost); // Ride info - even if ride lookup failed, the coaster was placed successfully json_t rideInfo = json_t::object(); @@ -4168,7 +4169,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::RideSetAppearanceAction( rideLookup->id, type, static_cast(value), static_cast(schemeIndex)); auto result = GameActions::Execute(&action, getGameState()); - return result.Error == GameActions::Status::Ok; + return result.error == GameActions::Status::ok; }; // Process main color @@ -4258,7 +4259,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::RideSetAppearanceAction( rideLookup->id, type, static_cast(value), static_cast(trainIndex)); auto result = GameActions::Execute(&action, getGameState()); - return result.Error == GameActions::Status::Ok; + return result.error == GameActions::Status::ok; }; // Process body color @@ -4343,7 +4344,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers rideLookup->id, GameActions::RideSetAppearanceType::VehicleColourScheme, static_cast(*modeVal), 0); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -4394,7 +4395,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers rideLookup->id, GameActions::RideSetAppearanceType::EntranceStyle, static_cast(*styleVal), 0); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } diff --git a/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp b/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp index 587145c7f7fc..eaf35aaade5f 100644 --- a/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp @@ -864,8 +864,8 @@ namespace OpenRCT2::Scripting::Rpc::Handlers json_t BuildActionSuccessPayload(const GameActions::Result& result) { json_t payload = json_t::object(); - payload["status"] = GameActionStatusToString(result.Error); - payload["cost"] = MoneyToDouble(result.Cost); + payload["status"] = GameActionStatusToString(result.error); + payload["cost"] = MoneyToDouble(result.cost); return payload; } @@ -1134,12 +1134,12 @@ namespace OpenRCT2::Scripting::Rpc::Handlers json_t payload = json_t::object(); payload["dryRun"] = true; - payload["feasible"] = (createQueryResult.Error == GameActions::Status::Ok); + payload["feasible"] = (createQueryResult.error == GameActions::Status::ok); - if (createQueryResult.Error == GameActions::Status::Ok) + if (createQueryResult.error == GameActions::Status::ok) { payload["status"] = "ok"; - payload["estimatedCost"] = MoneyToDouble(createQueryResult.Cost); + payload["estimatedCost"] = MoneyToDouble(createQueryResult.cost); payload["message"] = "Placement would succeed. Cost is an estimate; actual cost may vary slightly."; } else @@ -1181,19 +1181,19 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto rideCreate = GameActions::RideCreateAction( shopInfo->rideType, shopInfo->entryIndex, colour1, colour2, gameState.lastEntranceStyle); auto createResult = GameActions::ExecuteNested(&rideCreate, gameState); - if (createResult.Error != GameActions::Status::Ok) + if (createResult.error != GameActions::Status::ok) { return RpcResult::Error(-32000, BuildGameActionErrorMessage(createResult)); } - RideId rideId = createResult.GetData(); + RideId rideId = createResult.getData(); SelectedLiftAndInverted liftFlags{}; CoordsXYZD origin{ coords.x, coords.y, *placementHeight, direction }; auto trackAction = GameActions::TrackPlaceAction( rideId, shopInfo->descriptor->StartTrackPiece, shopInfo->rideType, origin, 0, 0, 0, liftFlags, false); auto placeResult = GameActions::ExecuteNested(&trackAction, gameState); - if (placeResult.Error != GameActions::Status::Ok) + if (placeResult.error != GameActions::Status::ok) { auto demolish = GameActions::RideDemolishAction(rideId, GameActions::RideModifyType::demolish); GameActions::Execute(&demolish, gameState); @@ -1206,7 +1206,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers return RpcResult::Error(-32000, detailedMessage); } - money64 totalCost = createResult.Cost + placeResult.Cost; + money64 totalCost = createResult.cost + placeResult.cost; auto* ride = GetRide(rideId); // Automatically open the shop after placement @@ -1214,12 +1214,12 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto openResult = GameActions::ExecuteNested(&openAction, gameState); json_t payload = json_t::object(); - payload["status"] = GameActionStatusToString(placeResult.Error); + payload["status"] = GameActionStatusToString(placeResult.error); payload["cost"] = MoneyToDouble(totalCost); json_t costBreakdown = json_t::object(); - costBreakdown["create"] = MoneyToDouble(createResult.Cost); - costBreakdown["build"] = MoneyToDouble(placeResult.Cost); + costBreakdown["create"] = MoneyToDouble(createResult.cost); + costBreakdown["build"] = MoneyToDouble(placeResult.cost); payload["costBreakdown"] = costBreakdown; json_t tileNode = json_t::object(); @@ -1289,7 +1289,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers json_t rideSnapshot = BuildRidePayload(*rideLookup->ride); auto action = GameActions::RideDemolishAction(rideLookup->id, GameActions::RideModifyType::demolish); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(-32000, BuildGameActionErrorMessage(result)); } @@ -1367,7 +1367,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers const auto previousStatus = rideLookup->ride->status; auto action = GameActions::RideSetStatusAction(rideLookup->id, desiredStatus.value()); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(-32000, BuildGameActionErrorMessage(result)); } @@ -1506,7 +1506,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::RideSetPriceAction(rideLookup->id, newPrice, !secondary); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(-32000, BuildGameActionErrorMessage(result)); } diff --git a/src/openrct2/scripting/rpc/handlers/StaffHandlers.cpp b/src/openrct2/scripting/rpc/handlers/StaffHandlers.cpp index 85771f79931d..c1821cef1dd4 100644 --- a/src/openrct2/scripting/rpc/handlers/StaffHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/StaffHandlers.cpp @@ -374,10 +374,10 @@ namespace OpenRCT2::Scripting::Rpc::Handlers json_t BuildActionSuccessPayload(const GameActions::Result& result) { json_t payload = json_t::object(); - payload["status"] = GameActionStatusToString(result.Error); - payload["cost"] = MoneyToDouble(result.Cost); + payload["status"] = GameActionStatusToString(result.error); + payload["cost"] = MoneyToDouble(result.cost); json_t position = json_t::object(); - auto coords = result.Position; + auto coords = result.position; position["x"] = coords.x; position["y"] = coords.y; position["z"] = coords.z; @@ -397,9 +397,9 @@ namespace OpenRCT2::Scripting::Rpc::Handlers } position["tile"] = tile; payload["position"] = position; - if (result.Expenditure != ExpenditureType::count) + if (result.expenditure != ExpenditureType::count) { - payload["expenditure"] = static_cast(result.Expenditure); + payload["expenditure"] = static_cast(result.expenditure); } return payload; } @@ -765,12 +765,12 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::StaffHireNewAction(autoPlace, *staffType, costumeIndex, orders); // Use ExecuteNested to bypass queueing and get immediate result with valid entity ID auto result = GameActions::ExecuteNested(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } - auto hireResult = result.GetData(); + auto hireResult = result.getData(); Staff* newestStaff = nullptr; if (!hireResult.StaffEntityId.IsNull()) { @@ -863,7 +863,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::StaffFireAction(staff->Id); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -942,7 +942,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::StaffSetOrdersAction(staff->Id, desiredOrders); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1034,7 +1034,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto action = GameActions::StaffSetPatrolAreaAction(staff->Id, range, *mode); auto result = GameActions::Execute(&action, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1120,7 +1120,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::PeepPickupAction pickupAction{ GameActions::PeepPickupType::Pickup, staff->Id, nullLoc, Network::GetCurrentPlayerId() }; auto result = GameActions::Execute(&pickupAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1173,7 +1173,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::PeepPickupAction cancelAction{ GameActions::PeepPickupType::Cancel, staff->Id, restoreLoc, playerId }; auto result = GameActions::Execute(&cancelAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } @@ -1227,7 +1227,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers GameActions::PeepPickupAction placeAction{ GameActions::PeepPickupType::Place, staff->Id, coords, Network::GetCurrentPlayerId() }; auto result = GameActions::Execute(&placeAction, getGameState()); - if (result.Error != GameActions::Status::Ok) + if (result.error != GameActions::Status::ok) { return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(result)); } From a24f319d892037416a89680391b339b76eb5e49e Mon Sep 17 00:00:00 2001 From: Lily Linn Date: Tue, 13 Jan 2026 22:29:31 +0000 Subject: [PATCH 221/222] Fix API compatibility with real OpenRCT2 upstream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update TrackElemType enum case (None→none, Maze→maze, etc.) - Update MechanicStatus to enum class - Update RideInspection to enum class - Add 6th parameter (RideInspection) to RideCreateAction constructor - Fix PaletteIndex type conversions in AIAgentTerminal - Update TrackPlaceAction.cpp to upstream version 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/openrct2-ui/windows/AIAgentTerminal.cpp | 16 ++-- src/openrct2/actions/TrackPlaceAction.cpp | 87 ++++++++++--------- .../scripting/rpc/handlers/RideHandlers.cpp | 61 +++++++------ .../scripting/rpc/handlers/ShopHandlers.cpp | 4 +- 4 files changed, 86 insertions(+), 82 deletions(-) diff --git a/src/openrct2-ui/windows/AIAgentTerminal.cpp b/src/openrct2-ui/windows/AIAgentTerminal.cpp index 8082f47d42cf..7d0089e61acd 100644 --- a/src/openrct2-ui/windows/AIAgentTerminal.cpp +++ b/src/openrct2-ui/windows/AIAgentTerminal.cpp @@ -43,6 +43,8 @@ #include #include #include +#include +#include #include #include #include @@ -76,6 +78,8 @@ using OpenRCT2::Terminal::TerminalSnapshot; using OpenRCT2::Terminal::BuildAIAgentLaunchPlan; using OpenRCT2::Terminal::SessionLogGenerator; using OpenRCT2::Ui::InputEvent; +using OpenRCT2::Drawing::PaletteIndex; +using OpenRCT2::Drawing::RenderTarget; namespace Rect = OpenRCT2::Drawing::Rectangle; #ifndef TTF_GlyphIsProvided32 @@ -221,7 +225,7 @@ namespace // ColourMapA[COLOUR_BLACK].mid_dark, so cells with black backgrounds should too. if (colour.r == 0 && colour.g == 0 && colour.b == 0) { - return ColourMapA[COLOUR_BLACK].mid_dark; + return static_cast(ColourMapA[COLOUR_BLACK].mid_dark); } const uint32_t key = (static_cast(colour.r) << 16) | (static_cast(colour.g) << 8) @@ -233,7 +237,7 @@ namespace const auto& palette = gPalette; uint32_t bestScore = std::numeric_limits::max(); - uint8_t bestIndex = ColourMapA[COLOUR_BLACK].mid_dark; + uint8_t bestIndex = static_cast(ColourMapA[COLOUR_BLACK].mid_dark); for (uint32_t i = 0; i < OpenRCT2::Drawing::kGamePaletteSize; i++) { if (!IsStableIndex(i)) @@ -1260,7 +1264,7 @@ namespace OpenRCT2::Ui::Windows int32_t canvasB = windowPos.y + canvasWidget.bottom; // Get fill color from colour map - uint8_t fillColour = ColourMapA[colour.colour].mid_light; + PaletteIndex fillColour = ColourMapA[colour.colour].mid_light; // Draw the 3D frame border (outset style) Rect::fillInset( @@ -2068,7 +2072,7 @@ namespace OpenRCT2::Ui::Windows { const ScreenCoordsXY underlineStart = cellPos + ScreenCoordsXY{ 0, _cellHeight - 2 }; const ScreenCoordsXY underlineEnd = underlineStart + ScreenCoordsXY{ cellWidthPx - 1, 1 }; - Rect::fill(rt, { underlineStart, underlineEnd }, static_cast(foreground)); + Rect::fill(rt, { underlineStart, underlineEnd }, static_cast(foreground)); } #else (void)rt; @@ -2142,7 +2146,7 @@ namespace OpenRCT2::Ui::Windows _offscreenHeight = height; // Clear to background color - std::fill_n(_offscreenBuffer.get(), bufferSize, ColourMapA[COLOUR_BLACK].mid_dark); + std::fill_n(_offscreenBuffer.get(), bufferSize, static_cast(ColourMapA[COLOUR_BLACK].mid_dark)); } void AIAgentTerminalWindow::BlitOffscreenToScreen( @@ -2353,7 +2357,7 @@ namespace OpenRCT2::Ui::Windows ScreenCoordsXY cellPos = rowOrigin + ScreenCoordsXY{ col * _cellWidth, 0 }; ScreenCoordsXY cellEnd = cellPos + ScreenCoordsXY{ cellWidthPx - 1, _cellHeight - 1 }; const auto background = TerminalPaletteMapper::Instance().Map(cell.backgroundRgb); - Rect::fill(rt, { cellPos, cellEnd }, static_cast(background)); + Rect::fill(rt, { cellPos, cellEnd }, static_cast(background)); if (cell.codepoint <= U' ') return; diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index d26cc162dec8..2bbaf3596e25 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -28,6 +28,7 @@ #include "../world/tile_element/Slope.h" #include "../world/tile_element/SurfaceElement.h" #include "../world/tile_element/TrackElement.h" +#include "ResultWithMessage.h" #include "RideSetSettingAction.h" namespace OpenRCT2::GameActions @@ -127,7 +128,7 @@ namespace OpenRCT2::GameActions const auto& rtd = ride->getRideTypeDescriptor(); - if ((ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _trackType == TrackElemType::EndStation) + if ((ride->lifecycleFlags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && _trackType == TrackElemType::endStation) { return Result( Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_NOT_ALLOWED_TO_MODIFY_STATION); @@ -145,7 +146,7 @@ namespace OpenRCT2::GameActions if (!rtd.HasFlag(RtdFlag::isFlatRide)) { - if (_trackType == TrackElemType::OnRidePhoto) + if (_trackType == TrackElemType::onRidePhoto) { if (ride->lifecycleFlags & RIDE_LIFECYCLE_ON_RIDE_PHOTO) { @@ -154,7 +155,7 @@ namespace OpenRCT2::GameActions STR_ONLY_ONE_ON_RIDE_PHOTO_PER_RIDE); } } - else if (_trackType == TrackElemType::CableLiftHill) + else if (_trackType == TrackElemType::cableLiftHill) { if (ride->lifecycleFlags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) { @@ -168,7 +169,7 @@ namespace OpenRCT2::GameActions && !gameState.cheats.enableChainLiftOnAllTrack) { const auto& ted = GetTrackElementDescriptor(_trackType); - if (ted.flags & TRACK_ELEM_FLAG_IS_STEEP_UP) + if (ted.flags.has(TrackElementFlag::isSteepUp)) { return Result( Status::disallowed, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL); @@ -205,7 +206,7 @@ namespace OpenRCT2::GameActions if (!gameState.cheats.allowTrackPlaceInvalidHeights) { - if (ted.flags & TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT) + if (ted.flags.has(TrackElementFlag::startsAtHalfHeight)) { if ((_origin.z & 0x0F) != 8) { @@ -254,12 +255,12 @@ namespace OpenRCT2::GameActions clearanceZ = floor2(clearanceZ, kCoordsZStep) + baseZ; - if (clearanceZ > MAX_TRACK_HEIGHT) + if (clearanceZ > kMaximumTrackHeight) { return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_HIGH); } - auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::Flat) + auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::flat) ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( @@ -274,7 +275,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) + if (!ted.flags.has(TrackElementFlag::canBePartlyUnderground)) { if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { @@ -285,7 +286,7 @@ namespace OpenRCT2::GameActions } resultData.GroundFlags = mapGroundFlags; - if (ted.flags & TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND) + if (ted.flags.has(TrackElementFlag::onlyAboveGround)) { if (resultData.GroundFlags & ELEMENT_IS_UNDERGROUND) { @@ -295,7 +296,7 @@ namespace OpenRCT2::GameActions } } - if (ted.flags & TRACK_ELEM_FLAG_ONLY_UNDERWATER) + if (ted.flags.has(TrackElementFlag::onlyUnderwater)) { // No element has this flag if (clearanceData.GroundFlags & ELEMENT_IS_UNDERWATER) { @@ -345,7 +346,7 @@ namespace OpenRCT2::GameActions } } - if ((ted.sequences[0].flags.has(SequenceFlag::trackOrigin)) && blockIndex == 0) + if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) && blockIndex == 0) { const auto addElementResult = TrackAddStationElement( { mapLoc, baseZ, _origin.direction }, _rideIndex, {}, _fromTrackDesign); @@ -463,7 +464,7 @@ namespace OpenRCT2::GameActions clearanceZ = floor2(clearanceZ, kCoordsZStep) + baseZ; const auto mapLocWithClearance = CoordsXYRangedZ(mapLoc, baseZ, clearanceZ); - auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::Flat) + auto crossingMode = (rtd.HasFlag(RtdFlag::supportsLevelCrossings) && _trackType == TrackElemType::flat) ? CreateCrossingMode::trackOverPath : CreateCrossingMode::none; auto canBuild = MapCanConstructWithClearAt( @@ -477,7 +478,7 @@ namespace OpenRCT2::GameActions costs += canBuild.cost; // When building a level crossing, remove any pre-existing path furniture. - if (crossingMode == CreateCrossingMode::trackOverPath && !(GetFlags().has(CommandFlag::ghost))) + if (crossingMode == CreateCrossingMode::trackOverPath && !GetFlags().has(CommandFlag::ghost)) { auto footpathElement = MapGetFootpathElement(mapLoc); if (footpathElement != nullptr && footpathElement->HasAddition()) @@ -486,7 +487,7 @@ namespace OpenRCT2::GameActions } } - if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) + if (!GetFlags().has(CommandFlag::ghost) && !gameState.cheats.disableClearanceChecks) { FootpathRemoveLitter(mapLoc); if (rtd.HasFlag(RtdFlag::noWallsAroundTrack)) @@ -498,7 +499,7 @@ namespace OpenRCT2::GameActions // Remove walls in the directions this track intersects uint8_t intersectingDirections = ted.sequences[blockIndex].allowedWallEdges; intersectingDirections ^= 0x0F; - intersectingDirections = Numerics::rol4(intersectingDirections, _origin.direction); + intersectingDirections = rol4(intersectingDirections, _origin.direction); for (int32_t i = 0; i < kNumOrthogonalDirections; i++) { if (intersectingDirections & (1 << i)) @@ -511,7 +512,7 @@ namespace OpenRCT2::GameActions const auto clearanceData = canBuild.getData(); uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND); - if (!(ted.flags & TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND)) + if (!ted.flags.has(TrackElementFlag::canBePartlyUnderground)) { if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0) { @@ -542,7 +543,7 @@ namespace OpenRCT2::GameActions bool isOrigin = false; if (!ride->overallView.IsNull()) { - if (!(GetFlags().has(CommandFlag::noSpend))) + if (!GetFlags().has(CommandFlag::noSpend)) { isOrigin = ted.sequences[0].flags.has(SequenceFlag::trackOrigin); } @@ -572,14 +573,14 @@ namespace OpenRCT2::GameActions switch (_trackType) { - case TrackElemType::Waterfall: - case TrackElemType::Rapids: - case TrackElemType::Whirlpool: - case TrackElemType::SpinningTunnel: + case TrackElemType::waterfall: + case TrackElemType::rapids: + case TrackElemType::whirlpool: + case TrackElemType::spinningTunnel: MapAnimations::MarkTileForInvalidation(TileCoordsXY(mapLoc)); break; - case TrackElemType::Brakes: - case TrackElemType::DiagBrakes: + case TrackElemType::brakes: + case TrackElemType::diagBrakes: trackElement->SetBrakeClosed(true); break; default: @@ -611,10 +612,10 @@ namespace OpenRCT2::GameActions uint32_t connectionSides = ted.sequences[0].getEntranceConnectionSides(); if (connectionSides != 0) { - if (!(GetFlags().has(CommandFlag::ghost)) && !gameState.cheats.disableClearanceChecks) + if (!GetFlags().has(CommandFlag::ghost) && !gameState.cheats.disableClearanceChecks) { - for (int32_t chosenDirection = Numerics::bitScanForward(connectionSides); chosenDirection != -1; - chosenDirection = Numerics::bitScanForward(connectionSides)) + for (int32_t chosenDirection = bitScanForward(connectionSides); chosenDirection != -1; + chosenDirection = bitScanForward(connectionSides)) { connectionSides &= ~(1 << chosenDirection); CoordsXY tempLoc{ mapLoc.x, mapLoc.y }; @@ -632,7 +633,7 @@ namespace OpenRCT2::GameActions // Don't do this if the tile is a ghost to prevent desyncs // However, ghost tiles from track designs need to modify station data to display properly if (ted.sequences[0].flags.has(SequenceFlag::trackOrigin) - && (!(GetFlags().has(CommandFlag::ghost)) || _fromTrackDesign)) + && (!GetFlags().has(CommandFlag::ghost) || _fromTrackDesign)) { if (blockIndex == 0) { @@ -654,7 +655,7 @@ namespace OpenRCT2::GameActions } } - if (!gameState.cheats.disableClearanceChecks || !(GetFlags().has(CommandFlag::ghost))) + if (!gameState.cheats.disableClearanceChecks || !GetFlags().has(CommandFlag::ghost)) { FootpathConnectEdges(mapLoc, tileElement, GetFlags()); } @@ -662,33 +663,33 @@ namespace OpenRCT2::GameActions } // Update ride stats and block brake count if the piece was successfully built - if (!(GetFlags().has(CommandFlag::ghost))) + if (!GetFlags().has(CommandFlag::ghost)) { switch (_trackType) { - case TrackElemType::OnRidePhoto: + case TrackElemType::onRidePhoto: ride->lifecycleFlags |= RIDE_LIFECYCLE_ON_RIDE_PHOTO; InvalidateTestResults(*ride); break; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: ride->lifecycleFlags |= RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED; ride->cableLiftLoc = originLocation; InvalidateTestResults(*ride); break; - case TrackElemType::DiagBlockBrakes: - case TrackElemType::BlockBrakes: + case TrackElemType::diagBlockBrakes: + case TrackElemType::blockBrakes: { ride->numBlockBrakes++; auto newMode = RideModeGetBlockSectionedCounterpart(ride->mode); if (ride->mode != newMode) { - bool canSwitch = rtd.SupportsRideMode(newMode) || getGameState().cheats.showAllOperatingModes; + bool canSwitch = rtd.SupportsRideMode(newMode) || gameState.cheats.showAllOperatingModes; if (canSwitch) { - ride->windowInvalidateFlags |= RIDE_INVALIDATE_RIDE_OPERATING; - auto rideSetSetting = GameActions::RideSetSettingAction( - ride->id, GameActions::RideSetSetting::Mode, static_cast(newMode)); + ride->windowInvalidateFlags.set(RideInvalidateFlag::operatingSettings); + auto rideSetSetting = RideSetSettingAction( + ride->id, RideSetSetting::Mode, static_cast(newMode)); ExecuteNested(&rideSetSetting, gameState); } } @@ -701,14 +702,14 @@ namespace OpenRCT2::GameActions switch (_trackType) { - case TrackElemType::Up25ToFlat: - case TrackElemType::Up60ToFlat: - case TrackElemType::DiagUp25ToFlat: - case TrackElemType::DiagUp60ToFlat: + case TrackElemType::up25ToFlat: + case TrackElemType::up60ToFlat: + case TrackElemType::diagUp25ToFlat: + case TrackElemType::diagUp60ToFlat: if (!_trackPlaceFlags.has(LiftHillAndInverted::liftHill)) break; [[fallthrough]]; - case TrackElemType::CableLiftHill: + case TrackElemType::cableLiftHill: ride->numBlockBrakes++; break; default: diff --git a/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp b/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp index d6aa14c3d2e6..01569211244d 100644 --- a/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/RideHandlers.cpp @@ -113,7 +113,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers { TileCoordsXY anchor; Direction direction{ 0 }; - OpenRCT2::TrackElemType trackType{ OpenRCT2::TrackElemType::None }; + OpenRCT2::TrackElemType trackType{ OpenRCT2::TrackElemType::none }; std::vector tiles; }; @@ -567,7 +567,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers auto& gameState = getGameState(); std::set> seen; RideFootprint footprint; - footprint.trackType = TrackElemType::None; + footprint.trackType = TrackElemType::none; TileCoordsXY tilePos; for (tilePos.y = 0; tilePos.y < gameState.mapSize.y; ++tilePos.y) @@ -584,7 +584,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers { footprint.tiles.push_back(tilePos); } - if (footprint.trackType == TrackElemType::None) + if (footprint.trackType == TrackElemType::none) { footprint.anchor = tilePos; footprint.direction = trackElement->GetDirection(); @@ -670,7 +670,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers continue; } - if (trackElement->GetTrackType() == TrackElemType::Maze) + if (trackElement->GetTrackType() == TrackElemType::maze) { return DirectionReverse(searchDir); } @@ -779,7 +779,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers if (descriptor.BuildCosts.TrackPrice == kMoney64Undefined) return std::nullopt; money64 price = descriptor.BuildCosts.TrackPrice; - if (descriptor.StartTrackPiece != TrackElemType::None) + if (descriptor.StartTrackPiece != TrackElemType::none) { const auto& startPieceDescriptor = TrackMetaData::GetTrackElementDescriptor(descriptor.StartTrackPiece); price *= startPieceDescriptor.priceModifier; @@ -796,32 +796,31 @@ namespace OpenRCT2::Scripting::Rpc::Handlers return static_cast(value) / 100.0; } - int32_t GetInspectionIntervalMinutes(uint8_t index) + int32_t GetInspectionIntervalMinutes(RideInspection interval) { + auto index = static_cast(interval); if (index >= kRideInspectionIntervalMinutes.size()) return 0; return kRideInspectionIntervalMinutes[index]; } - std::string_view InspectionIntervalToString(uint8_t value) + std::string_view InspectionIntervalToString(RideInspection value) { switch (value) { - case 0: + case RideInspection::every10Minutes: return "10min"; - case 1: + case RideInspection::every20Minutes: return "20min"; - case 2: + case RideInspection::every30Minutes: return "30min"; - case 3: + case RideInspection::every45Minutes: return "45min"; - case 4: + case RideInspection::everyHour: return "60min"; - case 5: - return "90min"; - case 6: + case RideInspection::every2Hours: return "120min"; - case 7: + case RideInspection::never: return "never"; default: return "unknown"; @@ -1146,12 +1145,12 @@ namespace OpenRCT2::Scripting::Rpc::Handlers rideJson["downtimePercent"] = ride.downtime; rideJson["minutesSinceInspection"] = ride.lastInspection; rideJson["inspectionIntervalMinutes"] = inspectionIntervalMinutes; - rideJson["inspectionIntervalIndex"] = ride.inspectionInterval; + rideJson["inspectionIntervalIndex"] = static_cast(ride.inspectionInterval); rideJson["inspectionIntervalLabel"] = InspectionIntervalToString(ride.inspectionInterval); rideJson["dueInspection"] = (ride.lifecycleFlags & RIDE_LIFECYCLE_DUE_INSPECTION) != 0; rideJson["isBrokenDown"] = (ride.lifecycleFlags & (RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN)) != 0; - rideJson["mechanicDispatched"] = ride.mechanicStatus != 0; + rideJson["mechanicDispatched"] = ride.mechanicStatus != MechanicStatus::undefined; rideJson["ageMonths"] = ride.getAge(); rideJson["numInversions"] = ride.numInversions; rideJson["lifecycleFlags"] = ride.lifecycleFlags; @@ -1242,19 +1241,19 @@ namespace OpenRCT2::Scripting::Rpc::Handlers return node; } - std::string MechanicStatusKey(uint8_t status) + std::string MechanicStatusKey(MechanicStatus status) { switch (status) { - case RIDE_MECHANIC_STATUS_CALLING: + case MechanicStatus::calling: return "calling"; - case RIDE_MECHANIC_STATUS_HEADING: + case MechanicStatus::heading: return "heading"; - case RIDE_MECHANIC_STATUS_FIXING: + case MechanicStatus::fixing: return "fixing"; - case RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES: + case MechanicStatus::hasFixedStationBrakes: return "resetting"; - case RIDE_MECHANIC_STATUS_UNDEFINED: + case MechanicStatus::undefined: default: return "idle"; } @@ -2539,7 +2538,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers std::optional inspectionValue; if (auto inspectionIndex = GetIntParam(params, "inspectionIndex")) { - if (*inspectionIndex < 0 || *inspectionIndex > RIDE_INSPECTION_NEVER) + if (*inspectionIndex < 0 || *inspectionIndex > static_cast(RideInspection::never)) { return RpcResult::Error(kErrorInvalidParams, "inspectionIndex out of range"); } @@ -2568,7 +2567,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers return RpcResult::Error(kErrorActionFailed, BuildGameActionErrorMessage(lastResult)); } applied["inspectionIntervalIndex"] = inspectionValue.value(); - applied["inspectionIntervalLabel"] = InspectionIntervalToString(inspectionValue.value()); + applied["inspectionIntervalLabel"] = InspectionIntervalToString(static_cast(inspectionValue.value())); } // Operating option (laps, launch speed, rotations, time limit - depends on ride type) @@ -2967,7 +2966,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers { return RpcResult::Error(kErrorInvalidParams, "rides.place currently supports flat rides only"); } - if (blueprint->descriptor->StartTrackPiece == OpenRCT2::TrackElemType::None) + if (blueprint->descriptor->StartTrackPiece == OpenRCT2::TrackElemType::none) { return RpcResult::Error(kErrorInvalidParams, "Ride does not define a buildable start piece"); } @@ -2999,7 +2998,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers int32_t colour2 = RideGetUnusedPresetVehicleColour(blueprint->entryIndex); auto rideCreate = GameActions::RideCreateAction( - blueprint->rideType, blueprint->entryIndex, colour1, colour2, gameState.lastEntranceStyle); + blueprint->rideType, blueprint->entryIndex, colour1, colour2, gameState.lastEntranceStyle, RideInspection::every10Minutes); auto createQueryResult = GameActions::Query(&rideCreate, gameState); json_t payload = json_t::object(); @@ -3050,7 +3049,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers int32_t colour2 = RideGetUnusedPresetVehicleColour(blueprint->entryIndex); auto rideCreate = GameActions::RideCreateAction( - blueprint->rideType, blueprint->entryIndex, colour1, colour2, gameState.lastEntranceStyle); + blueprint->rideType, blueprint->entryIndex, colour1, colour2, gameState.lastEntranceStyle, RideInspection::every10Minutes); auto createResult = GameActions::ExecuteNested(&rideCreate, gameState); if (createResult.error != GameActions::Status::ok) { @@ -3715,7 +3714,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers location.direction = directionParam & 3; // Execute the action in query mode - auto action = GameActions::TrackDesignAction(location, trackDesign, false); + auto action = GameActions::TrackDesignAction(location, trackDesign, false, RideInspection::every10Minutes); action.SetFlags({ GameActions::CommandFlag::noSpend }); // Query only auto result = GameActions::Query(&action, gameState); @@ -3929,7 +3928,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers location.direction = directionParam & 3; // Execute the action - auto action = GameActions::TrackDesignAction(location, trackDesign, placeScenery); + auto action = GameActions::TrackDesignAction(location, trackDesign, placeScenery, RideInspection::every10Minutes); auto result = GameActions::Execute(&action, gameState); if (result.error != GameActions::Status::ok) diff --git a/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp b/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp index eaf35aaade5f..5a2a6a03ae96 100644 --- a/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp +++ b/src/openrct2/scripting/rpc/handlers/ShopHandlers.cpp @@ -1129,7 +1129,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers int32_t colour2 = RideGetUnusedPresetVehicleColour(shopInfo->entryIndex); auto rideCreate = GameActions::RideCreateAction( - shopInfo->rideType, shopInfo->entryIndex, colour1, colour2, gameState.lastEntranceStyle); + shopInfo->rideType, shopInfo->entryIndex, colour1, colour2, gameState.lastEntranceStyle, RideInspection::every10Minutes); auto createQueryResult = GameActions::Query(&rideCreate, gameState); json_t payload = json_t::object(); @@ -1179,7 +1179,7 @@ namespace OpenRCT2::Scripting::Rpc::Handlers int32_t colour2 = RideGetUnusedPresetVehicleColour(shopInfo->entryIndex); auto rideCreate = GameActions::RideCreateAction( - shopInfo->rideType, shopInfo->entryIndex, colour1, colour2, gameState.lastEntranceStyle); + shopInfo->rideType, shopInfo->entryIndex, colour1, colour2, gameState.lastEntranceStyle, RideInspection::every10Minutes); auto createResult = GameActions::ExecuteNested(&rideCreate, gameState); if (createResult.error != GameActions::Status::ok) { From 0691d5dae0da4d37e861b1ec74f98f3fbe515506 Mon Sep 17 00:00:00 2001 From: Lily Linn Date: Wed, 14 Jan 2026 14:41:22 +0000 Subject: [PATCH 222/222] Fix TrackDesignAction.cpp API compatibility --- src/openrct2/actions/TrackDesignAction.cpp | 34 +++++++++++++--------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/openrct2/actions/TrackDesignAction.cpp b/src/openrct2/actions/TrackDesignAction.cpp index 0b615143db8a..289d0961bcc1 100644 --- a/src/openrct2/actions/TrackDesignAction.cpp +++ b/src/openrct2/actions/TrackDesignAction.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014-2025 OpenRCT2 developers + * Copyright (c) 2014-2026 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 @@ -27,10 +27,12 @@ namespace OpenRCT2::GameActions { - TrackDesignAction::TrackDesignAction(const CoordsXYZD& location, const TrackDesign& td, bool placeScenery) + TrackDesignAction::TrackDesignAction( + const CoordsXYZD& location, const TrackDesign& td, bool placeScenery, RideInspection inspectionInterval) : _loc(location) , _td(td) , _placeScenery(placeScenery) + , _inspectionInterval(inspectionInterval) { } @@ -52,6 +54,7 @@ namespace OpenRCT2::GameActions stream << DS_TAG(_loc); _td.Serialise(stream); stream << DS_TAG(_placeScenery); + stream << DS_TAG(_inspectionInterval); } Result TrackDesignAction::Query(GameState_t& gameState) const @@ -67,6 +70,12 @@ namespace OpenRCT2::GameActions return Result(Status::invalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_OFF_EDGE_OF_MAP); } + if (_inspectionInterval > RideInspection::never) + { + LOG_ERROR("Invalid inspection interval: %u", EnumValue(_inspectionInterval)); + return Result(Status::invalidParameters, STR_CANT_CHANGE_OPERATING_MODE, STR_ERR_VALUE_OUT_OF_RANGE); + } + auto& objManager = GetContext()->GetObjectManager(); auto entryIndex = objManager.GetLoadedObjectEntryIndex(_td.trackAndVehicle.vehicleObject); if (entryIndex == kObjectEntryIndexNull) @@ -80,7 +89,8 @@ namespace OpenRCT2::GameActions } // Colours do not matter as will be overwritten - auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); + auto rideCreateAction = RideCreateAction( + _td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle, _inspectionInterval); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); if (r.error != Status::ok) @@ -150,7 +160,8 @@ namespace OpenRCT2::GameActions } // Colours do not matter as will be overwritten - auto rideCreateAction = RideCreateAction(_td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle); + auto rideCreateAction = RideCreateAction( + _td.trackAndVehicle.rtdIndex, entryIndex, 0, 0, gameState.lastEntranceStyle, _inspectionInterval); rideCreateAction.SetFlags(GetFlags()); auto r = ExecuteNested(&rideCreateAction, gameState); if (r.error != Status::ok) @@ -213,18 +224,17 @@ namespace OpenRCT2::GameActions if (entryIndex != kObjectEntryIndexNull) { auto colour = RideGetUnusedPresetVehicleColour(entryIndex); - auto rideSetVehicleAction = GameActions::RideSetVehicleAction( - ride->id, GameActions::RideSetVehicleType::RideEntry, entryIndex, colour); + auto rideSetVehicleAction = RideSetVehicleAction(ride->id, RideSetVehicleType::RideEntry, entryIndex, colour); ExecuteNested(&rideSetVehicleAction, gameState); } SetOperatingSettingNested(ride->id, RideSetSetting::Mode, static_cast(_td.operation.rideMode), flags); - auto rideSetVehicleAction2 = GameActions::RideSetVehicleAction( - ride->id, GameActions::RideSetVehicleType::NumTrains, _td.trackAndVehicle.numberOfTrains); + auto rideSetVehicleAction2 = RideSetVehicleAction( + ride->id, RideSetVehicleType::NumTrains, _td.trackAndVehicle.numberOfTrains); ExecuteNested(&rideSetVehicleAction2, gameState); - auto rideSetVehicleAction3 = GameActions::RideSetVehicleAction( - ride->id, GameActions::RideSetVehicleType::NumCarsPerTrain, _td.trackAndVehicle.numberOfCarsPerTrain); + auto rideSetVehicleAction3 = RideSetVehicleAction( + ride->id, RideSetVehicleType::NumCarsPerTrain, _td.trackAndVehicle.numberOfCarsPerTrain); ExecuteNested(&rideSetVehicleAction3, gameState); SetOperatingSettingNested(ride->id, RideSetSetting::Departure, _td.operation.departFlags, flags); @@ -236,10 +246,6 @@ namespace OpenRCT2::GameActions auto numCircuits = std::max(1, _td.operation.numCircuits); SetOperatingSettingNested(ride->id, RideSetSetting::NumCircuits, numCircuits, flags); - uint8_t defaultInspectionInterval = Config::Get().general.defaultInspectionInterval; - if (defaultInspectionInterval <= RIDE_INSPECTION_NEVER) - SetOperatingSettingNested(ride->id, RideSetSetting::InspectionInterval, defaultInspectionInterval, flags); - ride->lifecycleFlags |= RIDE_LIFECYCLE_NOT_CUSTOM_DESIGN; ride->vehicleColourSettings = _td.appearance.vehicleColourSettings;