diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 19bdc4e0cc..fd92ce165e 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1480,8 +1480,8 @@ public: if (_currentlyShowingBrakeOrBoosterSpeed) { uint16_t brakeSpeed2 = ((_currentBrakeSpeed2 * 9) >> 2) & 0xFFFF; - if (_selectedTrackType == TrackElemType::Booster - || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TrackElemType::Booster)) + if (TrackTypeIsBooster(_selectedTrackType) + || TrackTypeIsBooster(_currentTrackCurve & ~RideConstructionSpecialPieceSelected)) { brakeSpeed2 = GetBoosterSpeed(currentRide->type, brakeSpeed2); } @@ -1837,8 +1837,8 @@ public: bool trackHasSpeedSetting = TrackTypeHasSpeedSetting(_selectedTrackType) || TrackTypeHasSpeedSetting(_currentTrackCurve & ~RideConstructionSpecialPieceSelected); - bool boosterTrackSelected = _selectedTrackType == TrackElemType::Booster - || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TrackElemType::Booster); + bool boosterTrackSelected = TrackTypeIsBooster(_selectedTrackType) + || TrackTypeIsBooster(_currentTrackCurve & ~RideConstructionSpecialPieceSelected); // Only necessary because TD6 writes speed and seat rotation to the same bits. Remove for new track design format. bool trackHasSpeedAndSeatRotation = _selectedTrackType == TrackElemType::BlockBrakes diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 9ae210b5e3..fa3d8d20f9 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -635,6 +635,11 @@ bool TrackTypeIsBlockBrakes(track_type_t trackType) return (trackType == TrackElemType::BlockBrakes) || (trackType == TrackElemType::DiagBlockBrakes); } +bool TrackTypeIsBooster(track_type_t trackType) +{ + return trackType == TrackElemType::Booster; +} + bool TrackElementIsCovered(track_type_t trackElementType) { switch (trackElementType) @@ -666,7 +671,7 @@ bool TrackElementIsCovered(track_type_t trackElementType) bool TrackTypeHasSpeedSetting(track_type_t trackType) { - return trackType == TrackElemType::Booster || TrackTypeIsBrakes(trackType) || TrackTypeIsBlockBrakes(trackType); + return TrackTypeIsBooster(trackType) || TrackTypeIsBrakes(trackType) || TrackTypeIsBlockBrakes(trackType); } bool TrackTypeIsHelix(track_type_t trackType) diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index a650463398..7bcea8d780 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -682,6 +682,7 @@ bool TrackElementIsCovered(track_type_t trackElementType); bool TrackTypeIsStation(track_type_t trackType); bool TrackTypeIsBrakes(track_type_t trackType); bool TrackTypeIsBlockBrakes(track_type_t trackType); +bool TrackTypeIsBooster(track_type_t trackType); std::optional GetTrackElementOriginAndApplyChanges( const CoordsXYZD& location, track_type_t type, uint16_t extra_params, TileElement** output_element, uint16_t flags);