From e5b2cac905dc510730d9c1d683640ea789e135c3 Mon Sep 17 00:00:00 2001 From: Ted John Date: Tue, 27 Sep 2016 22:44:17 +0100 Subject: [PATCH] Implement flat --- src/ride/track_data.c | 2 +- src/ride/track_paint.h | 2 +- src/ride/water/dingy_slide.c | 49 +++++++++++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/ride/track_data.c b/src/ride/track_data.c index 0586e2c9cb..82a942992d 100644 --- a/src/ride/track_data.c +++ b/src/ride/track_data.c @@ -6257,7 +6257,7 @@ const TRACK_PAINT_FUNCTION_GETTER RideTypeTrackPaintFunctions[91] = { 0, // RIDE_TYPE_BOBSLEIGH_COASTER get_track_paint_function_observation_tower, // RIDE_TYPE_OBSERVATION_TOWER 0, // RIDE_TYPE_LOOPING_ROLLER_COASTER - get_track_paint_function_dingy_slide, // RIDE_TYPE_DINGHY_SLIDE + get_track_paint_function_dinghy_slide, // RIDE_TYPE_DINGHY_SLIDE 0, // RIDE_TYPE_MINE_TRAIN_COASTER get_track_paint_function_chairlift, // RIDE_TYPE_CHAIRLIFT 0, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h index c82f390418..6f02a0571f 100644 --- a/src/ride/track_paint.h +++ b/src/ride/track_paint.h @@ -256,7 +256,7 @@ TRACK_PAINT_FUNCTION get_track_paint_function_boat_ride(int trackType, int direc TRACK_PAINT_FUNCTION get_track_paint_function_car_ride(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_launched_freefall(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_observation_tower(int trackType, int direction); -TRACK_PAINT_FUNCTION get_track_paint_function_dingy_slide(int trackType, int direction); +TRACK_PAINT_FUNCTION get_track_paint_function_dinghy_slide(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_chairlift(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_maze(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_spiral_slide(int trackType, int direction); diff --git a/src/ride/water/dingy_slide.c b/src/ride/water/dingy_slide.c index c5bb2e4fec..e12c00ee5c 100644 --- a/src/ride/water/dingy_slide.c +++ b/src/ride/water/dingy_slide.c @@ -21,9 +21,56 @@ #include "../track.h" #include "../track_paint.h" -TRACK_PAINT_FUNCTION get_track_paint_function_dingy_slide(int trackType, int direction) +enum { + SPR_DINGHY_SLIDE_FLAT_SW_NE = 19720, + SPR_DINGHY_SLIDE_FLAT_NW_SE = 19721, + SPR_DINGHY_SLIDE_FLAT_FRONT_SW_NE = 19722, + SPR_DINGHY_SLIDE_FLAT_FRONT_NW_SE = 19723, + SPR_DINGHY_SLIDE_FLAT_CHAIN_SW_NE = 19724, + SPR_DINGHY_SLIDE_FLAT_CHAIN_NW_SE = 19725, + SPR_DINGHY_SLIDE_FLAT_CHAIN_FRONT_SW_NE = 19726, + SPR_DINGHY_SLIDE_FLAT_CHAIN_FRONT_NW_SE = 19727, +}; + +static void dinghy_slide_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + static const uint32 imageIds[2][4][2] = { + { + { SPR_DINGHY_SLIDE_FLAT_SW_NE, SPR_DINGHY_SLIDE_FLAT_FRONT_SW_NE }, + { SPR_DINGHY_SLIDE_FLAT_NW_SE, SPR_DINGHY_SLIDE_FLAT_FRONT_NW_SE }, + { SPR_DINGHY_SLIDE_FLAT_SW_NE, SPR_DINGHY_SLIDE_FLAT_FRONT_SW_NE }, + { SPR_DINGHY_SLIDE_FLAT_NW_SE, SPR_DINGHY_SLIDE_FLAT_FRONT_NW_SE }, + }, + { + { SPR_DINGHY_SLIDE_FLAT_CHAIN_SW_NE, SPR_DINGHY_SLIDE_FLAT_CHAIN_FRONT_SW_NE }, + { SPR_DINGHY_SLIDE_FLAT_CHAIN_NW_SE, SPR_DINGHY_SLIDE_FLAT_CHAIN_FRONT_NW_SE }, + { SPR_DINGHY_SLIDE_FLAT_CHAIN_SW_NE, SPR_DINGHY_SLIDE_FLAT_CHAIN_FRONT_SW_NE }, + { SPR_DINGHY_SLIDE_FLAT_CHAIN_NW_SE, SPR_DINGHY_SLIDE_FLAT_CHAIN_FRONT_NW_SE }, + }, + }; + + bool isChained = track_element_is_lift_hill(mapElement); + uint32 imageId = imageIds[isChained][direction][0] | gTrackColours[SCHEME_TRACK]; + sub_98197C_rotated(direction, imageId, 0, 0, 32, 20, 2, height, 0, 6, height); + + imageId = imageIds[isChained][direction][1] | gTrackColours[SCHEME_TRACK]; + sub_98197C_rotated(direction, imageId, 0, 0, 32, 1, 26, height, 0, 27, height); + + if (track_paint_util_should_paint_supports(gPaintMapPosition)) { + metal_a_supports_paint_setup(0, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + paint_util_push_tunnel_rotated(direction, height, TUNNEL_0); + + paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); +} + +TRACK_PAINT_FUNCTION get_track_paint_function_dinghy_slide(int trackType, int direction) { switch (trackType) { + case TRACK_ELEM_FLAT: + return dinghy_slide_track_flat; } return NULL;