From a4d5f764f415bab7ee6590dea612d5e0405dd5d7 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Tue, 24 Jan 2017 09:26:30 +0100 Subject: [PATCH] Implement diagonal flat-to-steep slopes on the Junior RC, fixes #4584 --- .../ride/coaster/junior_roller_coaster.c | 175 ++++++++++++++++++ .../ride/coaster/junior_roller_coaster.h | 4 + 2 files changed, 179 insertions(+) diff --git a/src/openrct2/ride/coaster/junior_roller_coaster.c b/src/openrct2/ride/coaster/junior_roller_coaster.c index 7a902e361e..ba0fed483b 100644 --- a/src/openrct2/ride/coaster/junior_roller_coaster.c +++ b/src/openrct2/ride/coaster/junior_roller_coaster.c @@ -448,6 +448,15 @@ enum { SPR_JUNIOR_RC_DIAG_60_DEG_UP_E_W = 28223, SPR_JUNIOR_RC_DIAG_60_DEG_UP_S_N = 28224, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_W_E = 28225, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_N_S = 28226, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_E_W = 28227, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_S_N = 28228, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_W_E = 28229, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_N_S = 28230, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_E_W = 28231, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_S_N = 28232, + SPR_JUNIOR_RC_DIAG_FLAT_CHAIN_W_E = 28233, SPR_JUNIOR_RC_DIAG_FLAT_CHAIN_N_S = 28234, SPR_JUNIOR_RC_DIAG_FLAT_CHAIN_E_W = 28235, @@ -477,6 +486,15 @@ enum { SPR_JUNIOR_RC_DIAG_60_DEG_UP_CHAIN_E_W = 28259, SPR_JUNIOR_RC_DIAG_60_DEG_UP_CHAIN_S_N = 28260, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_W_E = 28261, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_N_S = 28262, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_E_W = 28263, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_S_N = 28264, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_W_E = 28265, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_N_S = 28266, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_E_W = 28267, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_S_N = 28268, + SPR_WATER_RC_DIAG_FLAT_CHAIN_W_E = 28269, SPR_WATER_RC_DIAG_FLAT_CHAIN_N_S = 28270, SPR_WATER_RC_DIAG_FLAT_CHAIN_E_W = 28271, @@ -1443,6 +1461,21 @@ static const uint32 junior_rc_track_pieces_diag_flat_to_25_deg_up[3][4] = { }, }; +static const uint32 junior_rc_track_pieces_diag_flat_to_60_deg_up[2][4] = { + { + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_W_E, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_N_S, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_E_W, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_S_N + }, + { + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_W_E, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_N_S, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_E_W, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_S_N + }, +}; + static const uint32 junior_rc_track_pieces_diag_25_deg_up_to_flat[3][4] = { { SPR_JUNIOR_RC_DIAG_25_DEG_UP_TO_FLAT_W_E, @@ -1464,6 +1497,21 @@ static const uint32 junior_rc_track_pieces_diag_25_deg_up_to_flat[3][4] = { }, }; +static const uint32 junior_rc_track_pieces_diag_60_deg_up_to_flat[2][4] = { + { + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_W_E, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_N_S, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_E_W, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_S_N + }, + { + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_W_E, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_N_S, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_E_W, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_S_N + }, +}; + static const uint32 junior_rc_track_pieces_diag_25_deg_down[3][4] = { { SPR_JUNIOR_RC_DIAG_25_DEG_UP_E_W, @@ -1506,6 +1554,21 @@ static const uint32 junior_rc_track_pieces_diag_flat_to_25_deg_down[3][4] = { }, }; +static const uint32 junior_rc_track_pieces_diag_flat_to_60_deg_down[2][4] = { + { + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_E_W, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_S_N, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_W_E, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_N_S, + }, + { + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_E_W, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_S_N, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_W_E, + SPR_JUNIOR_RC_DIAG_60_DEG_UP_TO_FLAT_CHAIN_N_S, + }, +}; + static const uint32 junior_rc_track_pieces_diag_25_deg_down_to_flat[3][4] = { { SPR_JUNIOR_RC_DIAG_FLAT_TO_25_DEG_UP_E_W, @@ -1527,6 +1590,21 @@ static const uint32 junior_rc_track_pieces_diag_25_deg_down_to_flat[3][4] = { }, }; +static const uint32 junior_rc_track_pieces_diag_60_deg_down_to_flat[2][4] = { + { + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_E_W, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_S_N, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_W_E, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_N_S, + }, + { + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_E_W, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_S_N, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_W_E, + SPR_JUNIOR_RC_DIAG_FLAT_TO_60_DEG_UP_CHAIN_N_S, + }, +}; + static const uint32 junior_rc_track_pieces_diag_flat_to_left_bank[4] = { SPR_JUNIOR_RC_DIAG_FLAT_TO_LEFT_BANK_W_E, SPR_JUNIOR_RC_DIAG_FLAT_TO_LEFT_BANK_N_S, @@ -3692,6 +3770,22 @@ void junior_rc_paint_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSe paint_util_set_general_support_height(height + 48, 0x20); } +void junior_rc_paint_track_diag_flat_to_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) +{ + // There is no specific chain for the Water Coaster, use the Junior RC chain instead + chainType = min(1, chainType); + + track_paint_util_diag_tiles_paint(1, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], junior_rc_track_pieces_diag_flat_to_60_deg_up[chainType], defaultDiagTileOffsets, defaultDiagBoundLengths, 0, get_current_rotation()); + + if (trackSequence == 3) { + metal_b_supports_paint_setup((direction & 1) ? 2 : 1, junior_rc_diag_support_segment[direction], 0, height + 6, gTrackColours[SCHEME_SUPPORTS]); + } + + sint32 blockedSegments = junior_rc_diag_blocked_segments[trackSequence]; + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 64, 0x20); +} + void junior_rc_paint_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) { track_paint_util_diag_tiles_paint(1, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], junior_rc_track_pieces_diag_25_deg_up_to_flat[chainType], defaultDiagTileOffsets, defaultDiagBoundLengths, 0, get_current_rotation()); @@ -3705,6 +3799,22 @@ void junior_rc_paint_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSe paint_util_set_general_support_height(height + 56, 0x20); } +void junior_rc_paint_track_diag_60_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) +{ + // There is no specific chain for the Water Coaster, use the Junior RC chain instead + chainType = min(1, chainType); + + track_paint_util_diag_tiles_paint(1, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], junior_rc_track_pieces_diag_60_deg_up_to_flat[chainType], defaultDiagTileOffsets, defaultDiagBoundLengths, 0, get_current_rotation()); + + if (trackSequence == 3) { + metal_b_supports_paint_setup((direction & 1) ? 2 : 1, junior_rc_diag_support_segment[direction], 4, height + 13, gTrackColours[SCHEME_SUPPORTS]); + } + + sint32 blockedSegments = junior_rc_diag_blocked_segments[trackSequence]; + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 64, 0x20); +} + void junior_rc_paint_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) { @@ -3732,6 +3842,22 @@ void junior_rc_paint_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 track paint_util_set_general_support_height(height + 56, 0x20); } +void junior_rc_paint_track_diag_flat_to_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) +{ + // There is no specific chain for the Water Coaster, use the Junior RC chain instead + chainType = min(1, chainType); + + track_paint_util_diag_tiles_paint(1, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], junior_rc_track_pieces_diag_flat_to_60_deg_down[chainType], defaultDiagTileOffsets, defaultDiagBoundLengths, 0, get_current_rotation()); + + if (trackSequence == 3) { + metal_b_supports_paint_setup((direction & 1) ? 2 : 1, junior_rc_diag_support_segment[direction], 4, height + 7, gTrackColours[SCHEME_SUPPORTS]); + } + + sint32 blockedSegments = junior_rc_diag_blocked_segments[trackSequence]; + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); +} + void junior_rc_paint_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) { track_paint_util_diag_tiles_paint(1, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], junior_rc_track_pieces_diag_25_deg_down_to_flat[chainType], defaultDiagTileOffsets, defaultDiagBoundLengths, 0, get_current_rotation()); @@ -3745,6 +3871,22 @@ void junior_rc_paint_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 track paint_util_set_general_support_height(height + 48, 0x20); } +void junior_rc_paint_track_diag_60_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType) +{ + // There is no specific chain for the Water Coaster, use the Junior RC chain instead + chainType = min(1, chainType); + + track_paint_util_diag_tiles_paint(1, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], junior_rc_track_pieces_diag_60_deg_down_to_flat[chainType], defaultDiagTileOffsets, defaultDiagBoundLengths, 0, get_current_rotation()); + + if (trackSequence == 3) { + metal_b_supports_paint_setup((direction & 1) ? 2 : 1, junior_rc_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + sint32 blockedSegments = junior_rc_diag_blocked_segments[trackSequence]; + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); +} + /** rct2: 0x008AAF10 */ static void junior_rc_diag_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) { @@ -3766,6 +3908,12 @@ static void junior_rc_diag_flat_to_25_deg_up_paint_setup(uint8 rideIndex, uint8 junior_rc_paint_track_diag_flat_to_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); } +static void junior_rc_diag_flat_to_60_deg_up_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) +{ + bool isChained = track_element_is_lift_hill(mapElement); + junior_rc_paint_track_diag_flat_to_60_deg_up(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); +} + /** rct2: 0x008AAF30 */ static void junior_rc_diag_25_deg_up_to_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) { @@ -3773,6 +3921,12 @@ static void junior_rc_diag_25_deg_up_to_flat_paint_setup(uint8 rideIndex, uint8 junior_rc_paint_track_diag_25_deg_up_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); } +static void junior_rc_diag_60_deg_up_to_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) +{ + bool isChained = track_element_is_lift_hill(mapElement); + junior_rc_paint_track_diag_60_deg_up_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); +} + /** rct2: 0x008AAF70 */ static void junior_rc_diag_25_deg_down_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) { @@ -3787,6 +3941,12 @@ static void junior_rc_diag_flat_to_25_deg_down_paint_setup(uint8 rideIndex, uint junior_rc_paint_track_diag_flat_to_25_deg_down(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); } +static void junior_rc_diag_flat_to_60_deg_down_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) +{ + bool isChained = track_element_is_lift_hill(mapElement); + junior_rc_paint_track_diag_flat_to_60_deg_down(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); +} + /** rct2: 0x008AAF60 */ static void junior_rc_diag_25_deg_down_to_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) { @@ -3794,6 +3954,12 @@ static void junior_rc_diag_25_deg_down_to_flat_paint_setup(uint8 rideIndex, uint junior_rc_paint_track_diag_25_deg_down_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); } +static void junior_rc_diag_60_deg_down_to_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) +{ + bool isChained = track_element_is_lift_hill(mapElement); + junior_rc_paint_track_diag_60_deg_down_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_FRICTION_WHEELS : JUNIOR_RC_CHAIN_NONE); +} + /** rct2: 0x008AB1C0 */ static void junior_rc_diag_flat_to_left_bank_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, rct_map_element * mapElement) { @@ -4876,6 +5042,15 @@ TRACK_PAINT_FUNCTION get_track_paint_function_junior_rc(sint32 trackType, sint32 case TRACK_ELEM_BOOSTER: return junior_rc_brake_paint_setup; + + case TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT: + return junior_rc_diag_60_deg_down_to_flat_paint_setup; + case TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT: + return junior_rc_diag_60_deg_up_to_flat_paint_setup; + case TRACK_ELEM_DIAG_FLAT_TO_60_DEG_UP: + return junior_rc_diag_flat_to_60_deg_up_paint_setup; + case TRACK_ELEM_DIAG_FLAT_TO_60_DEG_DOWN: + return junior_rc_diag_flat_to_60_deg_down_paint_setup; } return NULL; } diff --git a/src/openrct2/ride/coaster/junior_roller_coaster.h b/src/openrct2/ride/coaster/junior_roller_coaster.h index 2662d1c7be..48e9a8177c 100644 --- a/src/openrct2/ride/coaster/junior_roller_coaster.h +++ b/src/openrct2/ride/coaster/junior_roller_coaster.h @@ -47,14 +47,18 @@ void junior_rc_paint_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 void junior_rc_paint_track_diag_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); +void junior_rc_paint_track_diag_flat_to_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_25_deg_up_to_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_60_deg_up_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); +void junior_rc_paint_track_diag_60_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); +void junior_rc_paint_track_diag_flat_to_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_25_deg_down_to_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_60_deg_down_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); void junior_rc_paint_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); +void junior_rc_paint_track_diag_60_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, uint16 height, rct_map_element* mapElement, JUNIOR_RC_CHAINTYPE chainType); #endif // _JUNIOR_ROLLER_COASTER_H