diff --git a/src/ride/coaster/junior_roller_coaster.c b/src/ride/coaster/junior_roller_coaster.c index 34a644559d..3fceccab81 100644 --- a/src/ride/coaster/junior_roller_coaster.c +++ b/src/ride/coaster/junior_roller_coaster.c @@ -146,7 +146,9 @@ enum { SPR_JUNIOR_RC_25_DEG_CHAIN_NE_SW = 27919, SPR_JUNIOR_RC_60_DEG_CHAIN_NE_SW = 27920, SPR_JUNIOR_RC_FLAT_TO_25_DEG_UP_CHAIN_NE_SW = 27921, + SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NE_SW_PART_0_2 = 27922, SPR_JUNIOR_RC_25_DEG_UP_TO_FLAT_CHAIN_NE_SW = 27923, + SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NE_SW_PART_0_2 = 27924, SPR_JUNIOR_RC_25_DEG_UP_TO_FLAT_CHAIN_SW_NE = 27925, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_SW_NE = 27926, SPR_JUNIOR_RC_25_DEG_CHAIN_NW_SE = 27927, @@ -154,11 +156,17 @@ enum { SPR_JUNIOR_RC_25_DEG_CHAIN_SE_NW = 27929, SPR_JUNIOR_RC_60_DEG_CHAIN_SE_NW = 27930, SPR_JUNIOR_RC_FLAT_TO_25_DEG_UP_CHAIN_NW_SE = 27931, + SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NW_SE_PART_0_2 = 27932, SPR_JUNIOR_RC_FLAT_TO_25_DEG_UP_CHAIN_SE_NW = 27933, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_SE_NW = 27934, SPR_JUNIOR_RC_25_DEG_UP_TO_FLAT_CHAIN_SE_NW = 27935, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_SE_NW = 27936, SPR_JUNIOR_RC_25_DEG_UP_TO_FLAT_CHAIN_NW_SE = 27937, + SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NW_SE_PART_0_2 = 27938, + SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NE_SW = 27939, + SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NE_SW = 27940, + SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NW_SE = 27941, + SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NW_SE = 27942, SPR_JUNIOR_RC_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP_CHAIN_SW_SE_PART_0 = 27943, SPR_JUNIOR_RC_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP_CHAIN_SW_SE_PART_1 = 27944, SPR_JUNIOR_RC_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP_CHAIN_SW_SE_PART_2 = 27945, @@ -558,14 +566,29 @@ enum { SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_NW_SE = SPR_G2_BEGIN + 35, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_NE_SW = SPR_G2_BEGIN + 36, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_SE_NW = SPR_G2_BEGIN + 37, - SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_NW_SE_PART_0_2 = SPR_G2_BEGIN + 35, - SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_NE_SW_PART_0_2 = SPR_G2_BEGIN + 37, + SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_NW_SE_PART_0_2 = SPR_G2_BEGIN + 38, + SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_NE_SW_PART_0_2 = SPR_G2_BEGIN + 39, + SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_CHAIN_SW_NE = SPR_G2_BEGIN + 46, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_CHAIN_NW_SE = SPR_G2_BEGIN + 47, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_CHAIN_NE_SW = SPR_G2_BEGIN + 48, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_CHAIN_SE_NW = SPR_G2_BEGIN + 49, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_CHAIN_NW_SE_PART_0_2 = SPR_G2_BEGIN + 50, SPR_JUNIOR_RC_FLAT_TO_60_DEG_UP_CHAIN_NE_SW_PART_0_2 = SPR_G2_BEGIN + 51, + + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_SW_NE = SPR_G2_BEGIN + 40, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NW_SE = SPR_G2_BEGIN + 41, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NE_SW = SPR_G2_BEGIN + 42, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_SE_NW = SPR_G2_BEGIN + 43, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NW_SE_PART_0_2 = SPR_G2_BEGIN + 44, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NE_SW_PART_0_2 = SPR_G2_BEGIN + 45, + + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_SW_NE = SPR_G2_BEGIN + 52, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NW_SE = SPR_G2_BEGIN + 53, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NE_SW = SPR_G2_BEGIN + 54, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_SE_NW = SPR_G2_BEGIN + 55, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NW_SE_PART_0_2 = SPR_G2_BEGIN + 56, + SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NE_SW_PART_0_2 = SPR_G2_BEGIN + 57, }; static const uint32 junior_rc_track_pieces_flat[2][4] = { @@ -1521,6 +1544,21 @@ static const uint32 junior_rc_track_pieces_flat_to_60_deg_up[2][4][2] = { }, }; +static const uint32 junior_rc_track_pieces_60_deg_up_to_flat[2][4][2] = { + { + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_SW_NE, 0}, + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NW_SE, SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NW_SE_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NE_SW, SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_NE_SW_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_SE_NW, 0}, + }, + { + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_SW_NE, 0}, + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NW_SE, SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NW_SE_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NE_SW, SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_NE_SW_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_UP_TO_FLAT_CHAIN_SE_NW, 0}, + }, +}; + static const uint32 junior_rc_track_pieces_60_deg_up[2][4] = { { SPR_JUNIOR_RC_60_DEG_SW_NE, @@ -1536,18 +1574,34 @@ static const uint32 junior_rc_track_pieces_60_deg_up[2][4] = { }, }; -static const uint32 junior_rc_track_pieces_25_deg_up_to_60_deg_up[4][2] = { - {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_SW_NE, 0}, - {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NW_SE, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NW_SE_PART_0_2}, - {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NE_SW, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NE_SW_PART_0_2}, - {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_SE_NW, 0}, +static const uint32 junior_rc_track_pieces_25_deg_up_to_60_deg_up[2][4][2] = { + { + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_SW_NE, 0}, + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NW_SE, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NW_SE_PART_0_2}, + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NE_SW, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_NE_SW_PART_0_2}, + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_SE_NW, 0}, + }, + { + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_SW_NE, 0}, + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NW_SE, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NW_SE_PART_0_2}, + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NE_SW, SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_NE_SW_PART_0_2}, + {SPR_JUNIOR_RC_25_DEG_TO_60_DEG_UP_CHAIN_SE_NW, 0}, + }, }; -static const uint32 junior_rc_track_pieces_60_deg_up_to_25_deg_up[4][2] = { - {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_SW_NE, 0}, - {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NW_SE, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NW_SE_PART_0_2}, - {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NE_SW, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NE_SW_PART_0_2}, - {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_SE_NW, 0}, +static const uint32 junior_rc_track_pieces_60_deg_up_to_25_deg_up[2][4][2] = { + { + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_SW_NE, 0}, + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NW_SE, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NW_SE_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NE_SW, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_NE_SW_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_SE_NW, 0}, + }, + { + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_SW_NE, 0}, + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NW_SE, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NW_SE_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NE_SW, SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_NE_SW_PART_0_2}, + {SPR_JUNIOR_RC_60_DEG_TO_25_DEG_UP_CHAIN_SE_NW, 0}, + } }; static const uint32 junior_rc_track_pieces_diag_60_deg_up[2][4] = { @@ -3865,7 +3919,9 @@ static void junior_rc_25_deg_up_to_60_deg_up_paint_setup(uint8 rideIndex, uint8 uint32 image_id = RCT2_GLOBAL(0x00F44198, uint32); - image_id |= junior_rc_track_pieces_25_deg_up_to_60_deg_up[direction][0]; + bool isChained = mapElement->type & (1 << 7); + + image_id |= junior_rc_track_pieces_25_deg_up_to_60_deg_up[isChained][direction][0]; sub_98197C(image_id, (sint8)junior_rc_60_deg_up_tile_offsets[direction].x, @@ -3879,10 +3935,10 @@ static void junior_rc_25_deg_up_to_60_deg_up_paint_setup(uint8 rideIndex, uint8 height, get_current_rotation()); - if (junior_rc_track_pieces_25_deg_up_to_60_deg_up[direction][1] != 0) { + if (junior_rc_track_pieces_25_deg_up_to_60_deg_up[isChained][direction][1] != 0) { image_id = RCT2_GLOBAL(0x00F44198, uint32); - image_id |= junior_rc_track_pieces_25_deg_up_to_60_deg_up[direction][1]; + image_id |= junior_rc_track_pieces_25_deg_up_to_60_deg_up[isChained][direction][1]; sub_98197C(image_id, (sint8)junior_rc_60_deg_up_tile_offsets[direction].x, @@ -3931,7 +3987,9 @@ static void junior_rc_60_deg_up_to_25_deg_up_paint_setup(uint8 rideIndex, uint8 uint32 image_id = RCT2_GLOBAL(0x00F44198, uint32); - image_id |= junior_rc_track_pieces_60_deg_up_to_25_deg_up[direction][0]; + bool isChained = mapElement->type & (1 << 7); + + image_id |= junior_rc_track_pieces_60_deg_up_to_25_deg_up[isChained][direction][0]; sub_98197C(image_id, (sint8)junior_rc_60_deg_up_tile_offsets[direction].x, @@ -3945,10 +4003,10 @@ static void junior_rc_60_deg_up_to_25_deg_up_paint_setup(uint8 rideIndex, uint8 height, get_current_rotation()); - if (junior_rc_track_pieces_60_deg_up_to_25_deg_up[direction][1] != 0) { + if (junior_rc_track_pieces_60_deg_up_to_25_deg_up[isChained][direction][1] != 0) { image_id = RCT2_GLOBAL(0x00F44198, uint32); - image_id |= junior_rc_track_pieces_60_deg_up_to_25_deg_up[direction][1]; + image_id |= junior_rc_track_pieces_60_deg_up_to_25_deg_up[isChained][direction][1]; sub_98197C(image_id, (sint8)junior_rc_60_deg_up_tile_offsets[direction].x, @@ -4076,6 +4134,179 @@ static void junior_rc_diag_60_deg_down_to_25_deg_down_paint_setup(uint8 rideInde paint_util_set_general_support_height(height + 72, 0x20); } +static const rct_xy16 junior_rc_flat_to_60_deg_up_bound_lengths[4][2] = { + {{32, 24}, {0}}, + {{10, 1}, {2, 32}}, + {{1, 10}, {32, 2}}, + {{24, 32}, {0}}, +}; + +static const sint8 junior_rc_flat_to_60_deg_up_bound_thickness[4] = { + 1, + 43, + 43, + 1 +}; + +static const rct_xy16 junior_rc_flat_to_60_deg_up_bound_offsets[4][2] = { + {{0, 4}, {0}}, + {{10, 0}, {4, 0}}, + {{0, 10}, {0, 4}}, + {{4, 0}, {0}}, +}; + +static const rct_xy16 junior_rc_flat_to_60_deg_up_tile_offsets[4][2] = { + {{12, -10}, { 0}}, + {{22, 9}, {12, -11}}, + {{30, 7}, { 5, 0}}, + {{12, -12}, { 0}} +}; + +static const rct_xy16 junior_rc_60_deg_up_to_flat_tile_offsets[4][2] = { + {{13, -9}, { 0 }}, + {{32, 9}, {-7, -11}}, + {{22, 18}, { 2, -19}}, + {{13, -9}, { 0 }} +}; + +static void junior_rc_flat_to_60_deg_up_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement) +{ + uint32 image_id = RCT2_GLOBAL(0x00F44198, uint32); + + bool isChained = mapElement->type & (1 << 7); + + image_id |= junior_rc_track_pieces_flat_to_60_deg_up[isChained][direction][0]; + + sub_98197C(image_id, + (sint8)junior_rc_flat_to_60_deg_up_tile_offsets[direction][0].x, + (sint8)junior_rc_flat_to_60_deg_up_tile_offsets[direction][0].y, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][0].x, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][0].y, + junior_rc_flat_to_60_deg_up_bound_thickness[direction], + height + 24, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][0].x, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][0].y, + height, + get_current_rotation()); + + if (junior_rc_track_pieces_flat_to_60_deg_up[isChained][direction][1] != 0) { + image_id = RCT2_GLOBAL(0x00F44198, uint32); + + image_id |= junior_rc_track_pieces_flat_to_60_deg_up[isChained][direction][1]; + + sub_98197C(image_id, + (sint8)junior_rc_flat_to_60_deg_up_tile_offsets[direction][1].x, + (sint8)junior_rc_flat_to_60_deg_up_tile_offsets[direction][1].y, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][1].x, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][1].y, + junior_rc_flat_to_60_deg_up_bound_thickness[direction], + height, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][1].x, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][1].y, + height, + get_current_rotation()); + } + + switch (direction) { + case 0: + paint_util_push_tunnel_left(height, TUNNEL_1); + break; + case 1: + paint_util_push_tunnel_right(height + 24, TUNNEL_2); + break; + case 2: + paint_util_push_tunnel_left(height + 24, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_right(height, TUNNEL_1); + break; + } + + const rct_xy16 pos = {RCT2_GLOBAL(0x009DE56A, sint16), RCT2_GLOBAL(0x009DE56E, sint16)}; + + sint8 support[4] = { 12, 12, 12, 14}; + if (track_paint_util_should_paint_supports(pos)) { + metal_a_supports_paint_setup(direction & 1 ? 2 : 1, 4, support[direction], height - 7, RCT2_GLOBAL(0x00F4419C, uint32)); + } + + paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_D0 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 72, 0x20); +} + +static void junior_rc_60_deg_down_to_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement) +{ + junior_rc_flat_to_60_deg_up_paint_setup(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement); +} + +static void junior_rc_60_deg_up_to_flat_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement) { + + uint32 image_id = RCT2_GLOBAL(0x00F44198, uint32); + + bool isChained = mapElement->type & (1 << 7); + + image_id |= junior_rc_track_pieces_60_deg_up_to_flat[isChained][direction][0]; + + sub_98197C(image_id, + (sint8)junior_rc_60_deg_up_to_flat_tile_offsets[direction][0].x, + (sint8)junior_rc_60_deg_up_to_flat_tile_offsets[direction][0].y, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][0].x, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][0].y, + junior_rc_flat_to_60_deg_up_bound_thickness[direction], + height + 24, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][0].x, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][0].y, + height, + get_current_rotation()); + + if (junior_rc_track_pieces_60_deg_up_to_flat[isChained][direction][1] != 0) { + image_id = RCT2_GLOBAL(0x00F44198, uint32); + + image_id |= junior_rc_track_pieces_60_deg_up_to_flat[isChained][direction][1]; + + sub_98197C(image_id, + (sint8)junior_rc_60_deg_up_to_flat_tile_offsets[direction][1].x, + (sint8)junior_rc_60_deg_up_to_flat_tile_offsets[direction][1].y, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][1].x, + junior_rc_flat_to_60_deg_up_bound_lengths[direction][1].y, + junior_rc_flat_to_60_deg_up_bound_thickness[direction], + height, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][1].x, + junior_rc_flat_to_60_deg_up_bound_offsets[direction][1].y, + height, + get_current_rotation()); + } + + switch (direction) { + case 0: + paint_util_push_tunnel_left(height, TUNNEL_1); + break; + case 1: + paint_util_push_tunnel_right(height + 24, TUNNEL_2); + break; + case 2: + paint_util_push_tunnel_left(height + 24, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_right(height, TUNNEL_1); + break; + } + + const rct_xy16 pos = {RCT2_GLOBAL(0x009DE56A, sint16), RCT2_GLOBAL(0x009DE56E, sint16)}; + + if (track_paint_util_should_paint_supports(pos)) { + metal_a_supports_paint_setup(direction & 1 ? 2 : 1, 4, 20, height - 5, RCT2_GLOBAL(0x00F4419C, uint32)); + } + + paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_D0 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 72, 0x20); +} + +static void junior_rc_flat_to_60_deg_down_paint_setup(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement) +{ + junior_rc_60_deg_up_to_flat_paint_setup(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement); +} + + /* 0x008AAA0C */ TRACK_PAINT_FUNCTION get_track_paint_function_junior_rc(int trackType, int direction) { switch (trackType) { @@ -4178,10 +4409,13 @@ TRACK_PAINT_FUNCTION get_track_paint_function_junior_rc(int trackType, int direc return junior_rc_right_quarter_turn_3_tiles_25_deg_down_paint_setup; case TRACK_ELEM_FLAT_TO_60_DEG_UP: + return junior_rc_flat_to_60_deg_up_paint_setup; case TRACK_ELEM_60_DEG_UP_TO_FLAT: + return junior_rc_60_deg_up_to_flat_paint_setup; case TRACK_ELEM_FLAT_TO_60_DEG_DOWN: + return junior_rc_flat_to_60_deg_down_paint_setup; case TRACK_ELEM_60_DEG_DOWN_TO_FLAT: - return NULL; + return junior_rc_60_deg_down_to_flat_paint_setup; case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL: return junior_rc_left_half_banked_helix_up_small_paint_setup; @@ -4279,4 +4513,4 @@ TRACK_PAINT_FUNCTION get_track_paint_function_junior_rc(int trackType, int direc return junior_rc_block_brake_paint_setup; } return NULL; -} \ No newline at end of file +} diff --git a/src/ride/track_data.c b/src/ride/track_data.c index ae0f6755d5..71565894ff 100644 --- a/src/ride/track_data.c +++ b/src/ride/track_data.c @@ -1059,7 +1059,7 @@ const uint64 RideTypePossibleTrackConfigurations[91] = { /* RIDE_TYPE_STAND_UP_ROLLER_COASTER */ (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_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_BLOCK_BRAKES), /* RIDE_TYPE_SUSPENDED_SWINGING_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_LARGE_UNBANKED) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES), /* RIDE_TYPE_INVERTED_ROLLER_COASTER */ (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_TWIST) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_LARGE) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING), - /* RIDE_TYPE_JUNIOR_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_CURVE) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES), + /* RIDE_TYPE_JUNIOR_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_CURVE) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES), /* RIDE_TYPE_MINIATURE_RAILWAY */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE), /* RIDE_TYPE_MONORAIL */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE), /* RIDE_TYPE_MINI_SUSPENDED_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE),