mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-20 13:33:02 +01:00
Merge pull request #11621 from Gymnasiast/feature/7648-bis
Add drawing code for more APVC, Water Coaster and B&M pieces
This commit is contained in:
@@ -21,6 +21,9 @@
|
||||
|
||||
enum
|
||||
{
|
||||
SPR_REVERSE_FREEFALL_RC_FLAT_SW_NE = 22164,
|
||||
SPR_REVERSE_FREEFALL_RC_FLAT_NW_SE = 22165,
|
||||
|
||||
SPR_AIR_POWERED_VERTICAL_RC_FLAT_SW_NE = 22226,
|
||||
SPR_AIR_POWERED_VERTICAL_RC_FLAT_NW_SE = 22227,
|
||||
SPR_AIR_POWERED_VERTICAL_RC_STATION_SW_NE = 22228,
|
||||
@@ -893,6 +896,39 @@ static void air_powered_vertical_rc_track_vertical_slope_down(
|
||||
session, rideIndex, 6 - trackSequence, (direction + 2) & 3, height, tileElement);
|
||||
}
|
||||
|
||||
static void air_powered_vertical_rc_track_booster(
|
||||
paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TileElement* tileElement)
|
||||
{
|
||||
// The booster piece is borrowed from the Reverse Freefall Colour.
|
||||
// It has two track colours, instead of the one that the APVC has.
|
||||
uint32_t colour = session->TrackColours[SCHEME_TRACK];
|
||||
if (!tileElement->IsGhost() && !tileElement->AsTrack()->IsHighlighted())
|
||||
{
|
||||
// Replace remap colour 2 (bits 24-28) with a copy of remap colour 1 (bits 19-23).
|
||||
colour_t colour1 = (colour >> 19) & 31;
|
||||
colour &= ~0x1F000000;
|
||||
colour |= (colour1 << 24);
|
||||
}
|
||||
|
||||
if (direction & 1)
|
||||
{
|
||||
uint32_t imageId = SPR_REVERSE_FREEFALL_RC_FLAT_NW_SE | colour;
|
||||
sub_98197C(session, imageId, 0, 0, 20, 32, 1, height, 6, 0, height);
|
||||
paint_util_push_tunnel_right(session, height, TUNNEL_6);
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t imageId = SPR_REVERSE_FREEFALL_RC_FLAT_SW_NE | colour;
|
||||
sub_98197C(session, imageId, 0, 0, 32, 20, 1, height, 0, 6, height);
|
||||
paint_util_push_tunnel_left(session, height, TUNNEL_6);
|
||||
}
|
||||
|
||||
wooden_a_supports_paint_setup(session, (direction & 1) ? 1 : 0, 0, height, session->TrackColours[SCHEME_SUPPORTS], nullptr);
|
||||
paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
|
||||
paint_util_set_general_support_height(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
TRACK_PAINT_FUNCTION get_track_paint_function_air_powered_vertical_rc(int32_t trackType, int32_t direction)
|
||||
{
|
||||
switch (trackType)
|
||||
@@ -935,6 +971,8 @@ TRACK_PAINT_FUNCTION get_track_paint_function_air_powered_vertical_rc(int32_t tr
|
||||
return air_powered_vertical_rc_track_vertical_down;
|
||||
case TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL:
|
||||
return air_powered_vertical_rc_track_vertical_slope_down;
|
||||
case TRACK_ELEM_BOOSTER:
|
||||
return air_powered_vertical_rc_track_booster;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ constexpr const RideTypeDescriptor AirPoweredVerticalCoasterRTD =
|
||||
SET_FIELD(AlternateType, RIDE_TYPE_NULL),
|
||||
SET_FIELD(Category, RIDE_CATEGORY_ROLLERCOASTER),
|
||||
SET_FIELD(EnabledTrackPieces, (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_LIFT_HILL_CURVE) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_REVERSE_FREEFALL) | (1ULL << TRACK_SLOPE_TO_FLAT)),
|
||||
SET_FIELD(ExtraTrackPieces, 0),
|
||||
SET_FIELD(ExtraTrackPieces, (1ULL << TRACK_BOOSTER)),
|
||||
SET_FIELD(StartTrackPiece, TRACK_ELEM_END_STATION),
|
||||
SET_FIELD(TrackPaintFunction, get_track_paint_function_air_powered_vertical_rc),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
|
||||
|
||||
@@ -19,7 +19,7 @@ constexpr const RideTypeDescriptor TwisterRollerCoasterRTD =
|
||||
SET_FIELD(AlternateType, RIDE_TYPE_NULL),
|
||||
SET_FIELD(Category, RIDE_CATEGORY_ROLLERCOASTER),
|
||||
SET_FIELD(EnabledTrackPieces, (1ULL << TRACK_FLAT) | (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BARREL_ROLL) | (1ULL << TRACK_POWERED_LIFT) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_SLOPE_CURVE_BANKED) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_SLOPE_STEEP_LONG) | (1ULL << TRACK_CURVE_VERTICAL) | (1ULL << TRACK_QUARTER_LOOP) | (1ULL << TRACK_BOOSTER)),
|
||||
SET_FIELD(ExtraTrackPieces, 0),
|
||||
SET_FIELD(ExtraTrackPieces, (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_BRAKE_FOR_DROP)),
|
||||
SET_FIELD(StartTrackPiece, TRACK_ELEM_END_STATION),
|
||||
SET_FIELD(TrackPaintFunction, get_track_paint_function_twister_rc),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
|
||||
@@ -19,7 +19,7 @@ constexpr const RideTypeDescriptor VerticalDropCoasterRTD =
|
||||
SET_FIELD(AlternateType, RIDE_TYPE_NULL),
|
||||
SET_FIELD(Category, RIDE_CATEGORY_ROLLERCOASTER),
|
||||
SET_FIELD(EnabledTrackPieces, (1ULL << TRACK_FLAT) | (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_SLOPE_CURVE_BANKED) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_CURVE_VERTICAL) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_BRAKE_FOR_DROP)),
|
||||
SET_FIELD(ExtraTrackPieces, 0),
|
||||
SET_FIELD(ExtraTrackPieces, (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_BARREL_ROLL) | (1ULL << TRACK_POWERED_LIFT) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_QUARTER_LOOP) | (1ULL << TRACK_BOOSTER)),
|
||||
SET_FIELD(StartTrackPiece, TRACK_ELEM_END_STATION),
|
||||
SET_FIELD(TrackPaintFunction, get_track_paint_function_vertical_drop_rc),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
|
||||
@@ -476,6 +476,18 @@ TRACK_PAINT_FUNCTION get_track_paint_function_water_rc(int32_t trackType, int32_
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_S_BEND_LEFT, direction);
|
||||
case TRACK_ELEM_S_BEND_RIGHT_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_S_BEND_RIGHT, direction);
|
||||
case TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_FLAT_TO_25_DEG_DOWN, direction);
|
||||
case TRACK_ELEM_25_DEG_DOWN_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_25_DEG_DOWN, direction);
|
||||
case TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN, direction);
|
||||
case TRACK_ELEM_60_DEG_DOWN_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_60_DEG_DOWN, direction);
|
||||
case TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN, direction);
|
||||
case TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED:
|
||||
return get_track_paint_function_splash_boats(TRACK_ELEM_25_DEG_DOWN_TO_FLAT, direction);
|
||||
|
||||
case TRACK_ELEM_ON_RIDE_PHOTO:
|
||||
return get_track_paint_function_junior_rc(trackType, direction);
|
||||
|
||||
Reference in New Issue
Block a user