From a25daf2fc109fedd3ea6b1860f53ee4ea6781c1b Mon Sep 17 00:00:00 2001 From: spacek531 Date: Tue, 4 Jun 2024 17:45:44 -0700 Subject: [PATCH] Small max speed changes --- src/openrct2-ui/windows/RideConstruction.cpp | 25 +++++++++++++------ src/openrct2/actions/TrackPlaceAction.cpp | 2 +- .../actions/TrackSetBrakeSpeedAction.cpp | 2 +- src/openrct2/ride/Track.h | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index fe66a2b497..f5de620e05 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -47,6 +47,9 @@ #include #include +constexpr int8_t kDefaultSpeedIncrement = 2; +constexpr int8_t kDefaultMinimumSpeed = 2; + using namespace OpenRCT2::TrackMetaData; namespace OpenRCT2::Ui::Windows { @@ -1336,9 +1339,10 @@ static Widget _rideConstructionWidgets[] = { } else { - uint8_t* brakesSpeedPtr = &_currentBrakeSpeed; - uint8_t brakesSpeed = *brakesSpeedPtr + 2; - if (brakesSpeed <= kMaximumBrakeSpeed) + auto trackSpeedMaximum = kMaximumTrackSpeed; + auto trackSpeedIncrement = kDefaultSpeedIncrement; + uint8_t brakesSpeed = std::min(trackSpeedMaximum, _currentBrakeSpeed + trackSpeedIncrement); + if (brakesSpeed != _currentBrakeSpeed) { if (_rideConstructionState == RideConstructionState::Selected) { @@ -1346,7 +1350,7 @@ static Widget _rideConstructionWidgets[] = { } else { - *brakesSpeedPtr = brakesSpeed; + _currentBrakeSpeed = brakesSpeed; WindowRideConstructionUpdateActiveElements(); } } @@ -1362,9 +1366,14 @@ static Widget _rideConstructionWidgets[] = { } else { - uint8_t* brakesSpeedPtr = &_currentBrakeSpeed; - uint8_t brakesSpeed = *brakesSpeedPtr - 2; - if (brakesSpeed >= 2) + auto trackSpeedIncrement = kDefaultSpeedIncrement; + auto trackSpeedMinimum = kDefaultMinimumSpeed; + if (GetGameState().Cheats.UnlockOperatingLimits) + { + trackSpeedMinimum = 0; + } + uint8_t brakesSpeed = std::max(trackSpeedMinimum, _currentBrakeSpeed - trackSpeedIncrement); + if (brakesSpeed != _currentBrakeSpeed) { if (_rideConstructionState == RideConstructionState::Selected) { @@ -1372,7 +1381,7 @@ static Widget _rideConstructionWidgets[] = { } else { - *brakesSpeedPtr = brakesSpeed; + _currentBrakeSpeed = brakesSpeed; WindowRideConstructionUpdateActiveElements(); } } diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 03bbddaff0..049b4a4520 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -105,7 +105,7 @@ GameActions::Result TrackPlaceAction::Query() const GameActions::Status::InvalidParameters, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_ERR_VALUE_OUT_OF_RANGE); } - if (_brakeSpeed > kMaximumBrakeSpeed) + if (_brakeSpeed > kMaximumTrackSpeed) { LOG_WARNING("Invalid speed for track placement, speed = %d", _brakeSpeed); return GameActions::Result( diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp index b72d4a0e23..1c73514dcd 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.cpp @@ -68,7 +68,7 @@ GameActions::Result TrackSetBrakeSpeedAction::QueryExecute(bool isExecuting) con GameActions::Status::InvalidParameters, STR_ERR_INVALID_PARAMETER, STR_ERR_TILE_ELEMENT_NOT_FOUND); } - if (_brakeSpeed > kMaximumBrakeSpeed) + if (_brakeSpeed > kMaximumTrackSpeed) { LOG_WARNING("Invalid speed for track, speed = %d", _brakeSpeed); return GameActions::Result(GameActions::Status::InvalidParameters, STR_SPEED_TOO_HIGH, STR_NONE); diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 52f393a714..fd67b01ed3 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -22,7 +22,7 @@ constexpr uint8_t kRCT2DefaultBlockBrakeSpeed = 2; constexpr int32_t kBlockBrakeBaseSpeed = 0x20364; constexpr int32_t kBlockBrakeSpeedOffset = kBlockBrakeBaseSpeed - (kRCT2DefaultBlockBrakeSpeed << 16); -constexpr uint8_t kMaximumBrakeSpeed = 30; +constexpr uint8_t kMaximumTrackSpeed = 30; using track_type_t = uint16_t;