mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-19 04:53:12 +01:00
Implement flat-to-steep pieces and 25-to-60-degree lifts on the Junior rc
This commit is contained in:
committed by
Ted John
parent
8cf7e87b5c
commit
7ebdec7e8f
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user