From f848fe5bd473d5a5abbf037887fae2d4a80161fc Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 20 Dec 2022 22:15:44 +0100 Subject: [PATCH] Create Ride::ChangeStatusDoStationChecks() Co-authored-by: spacek531 --- src/openrct2/ride/Ride.cpp | 48 +++++++++++++++++++++++--------------- src/openrct2/ride/Ride.h | 1 + 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 0d01ab161e..65c74476b1 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -3896,14 +3896,12 @@ ResultWithMessage Ride::Test(RideStatus newStatus, bool isApplying) window_close_by_number(WindowClass::RideConstruction, id.ToUnderlying()); } - auto stationIndexCheck = ride_mode_check_station_present(this); - auto stationIndex = stationIndexCheck.StationIndex; - if (stationIndex.IsNull()) - return { false, stationIndexCheck.Message }; - - auto stationNumbersCheck = ride_mode_check_valid_station_numbers(this); - if (!stationNumbersCheck.Successful) - return { false, stationNumbersCheck.Message }; + StationIndex stationIndex = {}; + auto message = ChangeStatusDoStationChecks(stationIndex); + if (!message.Successful) + { + return message; + } if (newStatus != RideStatus::Simulating) { @@ -3937,7 +3935,7 @@ ResultWithMessage Ride::Test(RideStatus newStatus, bool isApplying) } } - auto message = ChangeStatusCheckTrackValidity(trackElement); + message = ChangeStatusCheckTrackValidity(trackElement); if (!message.Successful) { return message; @@ -3951,7 +3949,7 @@ ResultWithMessage Ride::Test(RideStatus newStatus, bool isApplying) */ ResultWithMessage Ride::Open(bool isApplying) { - CoordsXYE trackElement, problematicTrackElement = {}; + CoordsXYE trackElement = {}; // Check to see if construction tool is in use. If it is close the construction window // to set the track to its final state and clean up ghosts. @@ -3963,14 +3961,12 @@ ResultWithMessage Ride::Open(bool isApplying) window_close_by_number(WindowClass::RideConstruction, id.ToUnderlying()); } - auto stationIndexCheck = ride_mode_check_station_present(this); - auto stationIndex = stationIndexCheck.StationIndex; - if (stationIndex.IsNull()) - return { false, stationIndexCheck.Message }; - - auto stationNumbersCheck = ride_mode_check_valid_station_numbers(this); - if (!stationNumbersCheck.Successful) - return { false, stationNumbersCheck.Message }; + StationIndex stationIndex = {}; + auto message = ChangeStatusDoStationChecks(stationIndex); + if (!message.Successful) + { + return message; + } auto entranceExitCheck = ride_check_for_entrance_exit(id); if (!entranceExitCheck.Successful) @@ -3998,7 +3994,7 @@ ResultWithMessage Ride::Open(bool isApplying) return { false }; } - auto message = ChangeStatusCheckCompleteCircuit(trackElement); + message = ChangeStatusCheckCompleteCircuit(trackElement); if (!message.Successful) { return message; @@ -5793,6 +5789,20 @@ std::vector GetTracklessRides() return result; } +ResultWithMessage Ride::ChangeStatusDoStationChecks(StationIndex& stationIndex) +{ + auto stationIndexCheck = ride_mode_check_station_present(this); + stationIndex = stationIndexCheck.StationIndex; + if (stationIndex.IsNull()) + return { false, stationIndexCheck.Message }; + + auto stationNumbersCheck = ride_mode_check_valid_station_numbers(this); + if (!stationNumbersCheck.Successful) + return { false, stationNumbersCheck.Message }; + + return { true }; +} + ResultWithMessage Ride::ChangeStatusCheckCompleteCircuit(const CoordsXYE& trackElement) { CoordsXYE problematicTrackElement = {}; diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 10ca50800f..717f4f352e 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -309,6 +309,7 @@ private: void ChainQueues() const; void ConstructMissingEntranceOrExit() const; + ResultWithMessage ChangeStatusDoStationChecks(StationIndex& stationIndex); ResultWithMessage ChangeStatusCheckCompleteCircuit(const CoordsXYE& trackElement); ResultWithMessage ChangeStatusCheckTrackValidity(const CoordsXYE& trackElement); ResultWithMessage ChangeStatusCreateVehicles(bool isApplying, const CoordsXYE& trackElement);