mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE flag (#18848)
This commit is contained in:
parent
bd6e572dbc
commit
b67a80aaba
|
@ -3868,7 +3868,8 @@ void Guest::UpdateRideFreeVehicleEnterRide(Ride* ride)
|
|||
}
|
||||
}
|
||||
|
||||
if (ride->type == RIDE_TYPE_SPIRAL_SLIDE)
|
||||
const auto& rtd = ride->GetRideTypeDescriptor();
|
||||
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE))
|
||||
{
|
||||
SwitchToSpecialSprite(1);
|
||||
}
|
||||
|
@ -4590,6 +4591,7 @@ void Guest::UpdateRideApproachSpiralSlide()
|
|||
return;
|
||||
}
|
||||
|
||||
[[maybe_unused]] const auto& rtd = ride->GetRideTypeDescriptor();
|
||||
if (waypoint == 2)
|
||||
{
|
||||
bool lastRide = false;
|
||||
|
@ -4610,7 +4612,7 @@ void Guest::UpdateRideApproachSpiralSlide()
|
|||
Var37 = (exit.direction * 4) | (Var37 & 0x30) | waypoint;
|
||||
CoordsXY targetLoc = ride->GetStation(CurrentRideStation).Start;
|
||||
|
||||
assert(ride->type == RIDE_TYPE_SPIRAL_SLIDE);
|
||||
assert(rtd.HasFlag(RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE));
|
||||
targetLoc += SpiralSlideWalkingPath[Var37];
|
||||
|
||||
SetDestination(targetLoc);
|
||||
|
@ -4624,7 +4626,7 @@ void Guest::UpdateRideApproachSpiralSlide()
|
|||
|
||||
CoordsXY targetLoc = ride->GetStation(CurrentRideStation).Start;
|
||||
|
||||
assert(ride->type == RIDE_TYPE_SPIRAL_SLIDE);
|
||||
assert(rtd.HasFlag(RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE));
|
||||
targetLoc += SpiralSlideWalkingPath[Var37];
|
||||
|
||||
SetDestination(targetLoc);
|
||||
|
@ -4653,7 +4655,12 @@ static constexpr const CoordsXY _SpiralSlideEndWaypoint[] = {
|
|||
void Guest::UpdateRideOnSpiralSlide()
|
||||
{
|
||||
auto ride = get_ride(CurrentRide);
|
||||
if (ride == nullptr || ride->type != RIDE_TYPE_SPIRAL_SLIDE)
|
||||
|
||||
if (ride == nullptr)
|
||||
return;
|
||||
|
||||
const auto& rtd = ride->GetRideTypeDescriptor();
|
||||
if (!rtd.HasFlag(RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE))
|
||||
return;
|
||||
|
||||
auto destination = GetDestination();
|
||||
|
@ -4718,7 +4725,6 @@ void Guest::UpdateRideOnSpiralSlide()
|
|||
|
||||
CoordsXY targetLoc = ride->GetStation(CurrentRideStation).Start;
|
||||
|
||||
assert(ride->type == RIDE_TYPE_SPIRAL_SLIDE);
|
||||
targetLoc += SpiralSlideWalkingPath[Var37];
|
||||
|
||||
SetDestination(targetLoc);
|
||||
|
@ -4758,7 +4764,8 @@ void Guest::UpdateRideLeaveSpiralSlide()
|
|||
Var37--;
|
||||
CoordsXY targetLoc = ride->GetStation(CurrentRideStation).Start;
|
||||
|
||||
assert(ride->type == RIDE_TYPE_SPIRAL_SLIDE);
|
||||
[[maybe_unused]] const auto& rtd = ride->GetRideTypeDescriptor();
|
||||
assert(rtd.HasFlag(RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE));
|
||||
targetLoc += SpiralSlideWalkingPath[Var37];
|
||||
|
||||
SetDestination(targetLoc);
|
||||
|
|
|
@ -339,6 +339,7 @@ enum ride_type_flags : uint64_t
|
|||
RIDE_TYPE_FLAG_HAS_SEAT_ROTATION = (1uLL << 56),
|
||||
RIDE_TYPE_FLAG_IS_FIRST_AID = (1uLL << 57),
|
||||
RIDE_TYPE_FLAG_IS_MAZE = (1uLL << 58),
|
||||
RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE = (1uLL << 59),
|
||||
};
|
||||
|
||||
// Set on ride types that have a main colour, additional colour and support colour.
|
||||
|
|
|
@ -27,7 +27,7 @@ constexpr const RideTypeDescriptor SpiralSlideRTD =
|
|||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_NO_VEHICLES | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT |
|
||||
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
|
||||
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY | RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::SingleRidePerAdmission, RideMode::UnlimitedRidesPerAdmission)),
|
||||
SET_FIELD(DefaultMode, RideMode::SingleRidePerAdmission),
|
||||
SET_FIELD(OperatingSettings, { 1, 5, 0, 0, 0, 0 }),
|
||||
|
|
Loading…
Reference in New Issue