From 3329da538bea92b9d441782fb7c508bf1c044509 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 17 Dec 2022 18:01:31 +0100 Subject: [PATCH] Create Ride::ChangeStatusCreateVehicles() to reduce codedup Co-authored-by: spacek531 --- src/openrct2/ride/Ride.cpp | 71 +++++++++++++++----------------------- src/openrct2/ride/Ride.h | 1 + 2 files changed, 29 insertions(+), 43 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 56d2dfd091..a3c1bfb978 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -3943,28 +3943,7 @@ ResultWithMessage Ride::Test(RideStatus newStatus, bool isApplying) return message; } - if (isApplying) - ride_set_start_finish_points(id, trackElement); - - const auto& rtd = GetRideTypeDescriptor(); - if (!rtd.HasFlag(RIDE_TYPE_FLAG_NO_VEHICLES) && !(lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) - { - const auto createVehicleResult = CreateVehicles(trackElement, isApplying); - if (!createVehicleResult.Successful) - { - return { false, createVehicleResult.Message }; - } - } - - if (rtd.HasFlag(RIDE_TYPE_FLAG_ALLOW_CABLE_LIFT_HILL) && (lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) - && !(lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT)) - { - const auto createCableLiftResult = ride_create_cable_lift(id, isApplying); - if (!createCableLiftResult.Successful) - return { false, createCableLiftResult.Message }; - } - - return { true }; + return ChangeStatusCreateVehicles(isApplying, trackElement); } /** * @@ -4034,27 +4013,7 @@ ResultWithMessage Ride::Open(bool isApplying) return message; } - if (isApplying) - ride_set_start_finish_points(id, trackElement); - - if (!GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_NO_VEHICLES) && !(lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) - { - const auto createVehicleResult = CreateVehicles(trackElement, isApplying); - if (!createVehicleResult.Successful) - { - return { false, createVehicleResult.Message }; - } - } - - if ((GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_ALLOW_CABLE_LIFT_HILL)) - && (lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) && !(lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT)) - { - const auto createCableLiftResult = ride_create_cable_lift(id, isApplying); - if (!createCableLiftResult.Successful) - return { false, createCableLiftResult.Message }; - } - - return { true }; + return ChangeStatusCreateVehicles(isApplying, trackElement); } /** @@ -5894,3 +5853,29 @@ ResultWithMessage Ride::ChangeStatusCheckTrackValidity(const CoordsXYE& trackEle return { true }; } + +ResultWithMessage Ride::ChangeStatusCreateVehicles(bool isApplying, const CoordsXYE& trackElement) +{ + if (isApplying) + ride_set_start_finish_points(id, trackElement); + + const auto& rtd = GetRideTypeDescriptor(); + if (!rtd.HasFlag(RIDE_TYPE_FLAG_NO_VEHICLES) && !(lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) + { + const auto createVehicleResult = CreateVehicles(trackElement, isApplying); + if (!createVehicleResult.Successful) + { + return { false, createVehicleResult.Message }; + } + } + + if (rtd.HasFlag(RIDE_TYPE_FLAG_ALLOW_CABLE_LIFT_HILL) && (lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT_HILL_COMPONENT_USED) + && !(lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT)) + { + const auto createCableLiftResult = ride_create_cable_lift(id, isApplying); + if (!createCableLiftResult.Successful) + return { false, createCableLiftResult.Message }; + } + + return { true }; +} diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 1090ec952f..a607a21793 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -310,6 +310,7 @@ private: void ConstructMissingEntranceOrExit() const; ResultWithMessage ChangeStatusCheckTrackValidity(const CoordsXYE& trackElement); + ResultWithMessage ChangeStatusCreateVehicles(bool isApplying, const CoordsXYE& trackElement); public: bool CanBreakDown() const;