Add RIDE_TYPE_FLAG_IS_SPIRAL_SLIDE flag (#18848)

This commit is contained in:
frutiemax 2022-12-17 10:42:51 -05:00 committed by GitHub
parent bd6e572dbc
commit b67a80aaba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 7 deletions

View File

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

View File

@ -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.

View File

@ -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 }),