From bd7b2c536eff148de22dee2245eea1d470172a66 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 18 Oct 2016 18:52:41 +0200 Subject: [PATCH] Fix 'left corkscrew up' track --- src/ride/coaster/corkscrew_roller_coaster.c | 3 +-- src/ride/coaster/lim_launched_roller_coaster.c | 3 +-- src/ride/coaster/stand_up_roller_coaster.c | 3 +-- src/ride/coaster/twister_roller_coaster.c | 3 +-- src/ride/track_paint.c | 11 +++++++++++ src/ride/track_paint.h | 2 ++ 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/ride/coaster/corkscrew_roller_coaster.c b/src/ride/coaster/corkscrew_roller_coaster.c index fcff2188ce..4c96c1fa18 100644 --- a/src/ride/coaster/corkscrew_roller_coaster.c +++ b/src/ride/coaster/corkscrew_roller_coaster.c @@ -2190,8 +2190,7 @@ static void corkscrew_rc_track_left_corkscrew_up(uint8 rideIndex, uint8 trackSeq break; } - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); - metal_a_supports_paint_setup(0, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + track_paint_util_left_corkscrew_up_supports(direction, height); if (direction == 0 || direction == 3) { paint_util_push_tunnel_rotated(direction, height, TUNNEL_0); diff --git a/src/ride/coaster/lim_launched_roller_coaster.c b/src/ride/coaster/lim_launched_roller_coaster.c index ce34769253..b71e2d8060 100644 --- a/src/ride/coaster/lim_launched_roller_coaster.c +++ b/src/ride/coaster/lim_launched_roller_coaster.c @@ -755,8 +755,7 @@ static void lim_launched_rc_track_left_corkscrew_up(uint8 rideIndex, uint8 track break; } - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); - metal_a_supports_paint_setup(0, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + track_paint_util_left_corkscrew_up_supports(direction, height); if (direction == 0 || direction == 3) { paint_util_push_tunnel_rotated(direction, height, TUNNEL_0); diff --git a/src/ride/coaster/stand_up_roller_coaster.c b/src/ride/coaster/stand_up_roller_coaster.c index 613b23b93f..6e10867908 100644 --- a/src/ride/coaster/stand_up_roller_coaster.c +++ b/src/ride/coaster/stand_up_roller_coaster.c @@ -2417,8 +2417,7 @@ static void stand_up_rc_track_left_corkscrew_up(uint8 rideIndex, uint8 trackSequ break; } - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); - metal_a_supports_paint_setup(0, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + track_paint_util_left_corkscrew_up_supports(direction, height); if (direction == 0 || direction == 3) { paint_util_push_tunnel_rotated(direction, height, TUNNEL_0); diff --git a/src/ride/coaster/twister_roller_coaster.c b/src/ride/coaster/twister_roller_coaster.c index 691c7fb719..26340637a2 100644 --- a/src/ride/coaster/twister_roller_coaster.c +++ b/src/ride/coaster/twister_roller_coaster.c @@ -2193,8 +2193,7 @@ static void twister_rc_track_left_corkscrew_up(uint8 rideIndex, uint8 trackSeque break; } - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); - metal_a_supports_paint_setup(0, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + track_paint_util_left_corkscrew_up_supports(direction, height); if (direction == 0 || direction == 3) { paint_util_push_tunnel_rotated(direction, height, TUNNEL_6); diff --git a/src/ride/track_paint.c b/src/ride/track_paint.c index 3ae1188d61..d5e2dcde72 100644 --- a/src/ride/track_paint.c +++ b/src/ride/track_paint.c @@ -1680,6 +1680,17 @@ void track_paint_util_onride_photo_paint(uint8 direction, sint32 height, rct_map } } +void track_paint_util_left_corkscrew_up_supports(uint8 direction, uint16 height) { + // TODO: Figure out which of these looks best, and use one to keep a consistent world + if (direction == 2) { + paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + } + metal_a_supports_paint_setup(0, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction != 2) { + paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + } +} + static int pick_ride_type_for_drawing(int rideType, int trackType) { if (rideType == RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER) { diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h index 164e95994f..980e847d46 100644 --- a/src/ride/track_paint.h +++ b/src/ride/track_paint.h @@ -307,6 +307,8 @@ void track_paint_util_right_helix_up_large_quarter_tiles_paint(const sint8 thick void track_paint_util_eighth_to_diag_tiles_paint(const sint8 thickness[4][4], sint16 height, int direction, uint8 trackSequence, uint32 colourFlags, const uint32 sprites[4][4], const rct_xy16 offsets[4][4], const rct_xy16 boundsLengths[4][4], const rct_xyz16 boundsOffsets[4][4], uint8 rotation); void track_paint_util_diag_tiles_paint(sint8 thickness, sint16 height, int direction, uint8 trackSequence, uint32 colourFlags, const uint32 sprites[4], const rct_xy16 offsets[4], const rct_xy16 boundsLengths[4], const rct_xyz16 boundsOffsets[4], uint8 rotation); +void track_paint_util_left_corkscrew_up_supports(uint8 direction, uint16 height); + typedef void (*TRACK_PAINT_FUNCTION)(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement); typedef TRACK_PAINT_FUNCTION (*TRACK_PAINT_FUNCTION_GETTER)(int trackType, int direction);