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);