From c645ec2a12cb58db8076d0d3ad43ca1463504c40 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 23 Dec 2025 19:49:03 +0100 Subject: [PATCH] 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 94aa0c51a1..0612c82890 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 02118e0119..245aa0ef71 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 a864f482ac..86fa63997a 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 72a0f221a1..f504b9dbec 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 1672a63a67..d73215282a 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 019c5b24eb..914710a1d4 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;