Create Ride::ChangeStatusCreateVehicles() to reduce codedup

Co-authored-by: spacek531 <spacek531@users.noreply.github.com>
This commit is contained in:
Gymnasiast 2022-12-17 18:01:31 +01:00
parent e91d22b203
commit 3329da538b
No known key found for this signature in database
GPG Key ID: DBFFF47AB2CA3EDD
2 changed files with 29 additions and 43 deletions

View File

@ -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 };
}

View File

@ -310,6 +310,7 @@ private:
void ConstructMissingEntranceOrExit() const;
ResultWithMessage ChangeStatusCheckTrackValidity(const CoordsXYE& trackElement);
ResultWithMessage ChangeStatusCreateVehicles(bool isApplying, const CoordsXYE& trackElement);
public:
bool CanBreakDown() const;