From 4f48ccc5c8817af6becd2d1d6fbc31bdfadd8641 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 20 Dec 2022 21:56:37 +0100 Subject: [PATCH] Create Ride::ChangeStatusCheckCompleteCircuit() Co-authored-by: spacek531 --- src/openrct2/ride/Ride.cpp | 26 +++++++++++++++++++------- src/openrct2/ride/Ride.h | 1 + 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index a3c1bfb978..0d01ab161e 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -3998,16 +3998,13 @@ ResultWithMessage Ride::Open(bool isApplying) return { false }; } - if (mode == RideMode::Race || mode == RideMode::ContinuousCircuit || IsBlockSectioned()) + auto message = ChangeStatusCheckCompleteCircuit(trackElement); + if (!message.Successful) { - if (FindTrackGap(trackElement, &problematicTrackElement)) - { - ride_scroll_to_track_error(problematicTrackElement); - return { false, STR_TRACK_IS_NOT_A_COMPLETE_CIRCUIT }; - } + return message; } - auto message = ChangeStatusCheckTrackValidity(trackElement); + message = ChangeStatusCheckTrackValidity(trackElement); if (!message.Successful) { return message; @@ -5796,6 +5793,21 @@ std::vector GetTracklessRides() return result; } +ResultWithMessage Ride::ChangeStatusCheckCompleteCircuit(const CoordsXYE& trackElement) +{ + CoordsXYE problematicTrackElement = {}; + if (mode == RideMode::Race || mode == RideMode::ContinuousCircuit || IsBlockSectioned()) + { + if (FindTrackGap(trackElement, &problematicTrackElement)) + { + ride_scroll_to_track_error(problematicTrackElement); + return { false, STR_TRACK_IS_NOT_A_COMPLETE_CIRCUIT }; + } + } + + return { true }; +} + ResultWithMessage Ride::ChangeStatusCheckTrackValidity(const CoordsXYE& trackElement) { CoordsXYE problematicTrackElement = {}; diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index a607a21793..10ca50800f 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 ChangeStatusCheckCompleteCircuit(const CoordsXYE& trackElement); ResultWithMessage ChangeStatusCheckTrackValidity(const CoordsXYE& trackElement); ResultWithMessage ChangeStatusCreateVehicles(bool isApplying, const CoordsXYE& trackElement);