From 159f048abcaf3a5599df96ab4dfdb123c7f71240 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Sat, 24 Sep 2016 09:43:15 +0100 Subject: [PATCH 01/24] Make stub mini railway based on monorail --- src/ride/track_data.c | 2 +- src/ride/track_paint.h | 1 + src/ride/transport/minature_railway.c | 1135 +++++++++++++++++++++++++ 3 files changed, 1137 insertions(+), 1 deletion(-) diff --git a/src/ride/track_data.c b/src/ride/track_data.c index 0a2a50113d..7d197c85c9 100644 --- a/src/ride/track_data.c +++ b/src/ride/track_data.c @@ -6246,7 +6246,7 @@ const TRACK_PAINT_FUNCTION_GETTER RideTypeTrackPaintFunctions[91] = { get_track_paint_function_suspended_swinging_rc, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER get_track_paint_function_inverted_rc, // RIDE_TYPE_INVERTED_ROLLER_COASTER get_track_paint_function_junior_rc, // RIDE_TYPE_JUNIOR_ROLLER_COASTER - 0, // RIDE_TYPE_MINIATURE_RAILWAY + get_track_paint_function_minature_railway, // RIDE_TYPE_MINIATURE_RAILWAY get_track_paint_function_monorail, // RIDE_TYPE_MONORAIL get_track_paint_function_mini_suspended_rc, // RIDE_TYPE_MINI_SUSPENDED_COASTER get_track_paint_function_boat_ride, // RIDE_TYPE_BOAT_RIDE diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h index c3409824a5..61291e171b 100644 --- a/src/ride/track_paint.h +++ b/src/ride/track_paint.h @@ -304,6 +304,7 @@ TRACK_PAINT_FUNCTION get_track_paint_function_inverted_rc(int trackType, int dir TRACK_PAINT_FUNCTION get_track_paint_function_junior_rc(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_monorail(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_mini_suspended_rc(int trackType, int direction); +TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_boat_ride(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_wooden_wild_mouse(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_steeplechase(int trackType, int direction); diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 846fd9695d..6d8cd8a44d 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -13,3 +13,1138 @@ * A full copy of the GNU General Public License can be found in licence.txt *****************************************************************************/ #pragma endregion + +#include "../../common.h" +#include "../track_paint.h" +#include "../track.h" +#include "../vehicle_paint.h" +#include "../../interface/viewport.h" +#include "../../paint/paint.h" +#include "../../paint/supports.h" +#include "../ride_data.h" +#include "../../world/map.h" + +enum +{ + SPR_MINATURE_RAILWAY_FLAT_SW_NE = 23341, + SPR_MINATURE_RAILWAY_FLAT_NW_SE = 23342, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0 = 23343, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_1 = 23344, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_2 = 23345, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_3 = 23346, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_4 = 23347, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_0 = 23348, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_1 = 23349, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_2 = 23350, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_3 = 23351, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_4 = 23352, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_0 = 23353, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_1 = 23354, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_2 = 23355, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_3 = 23356, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_4 = 23357, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_0 = 23358, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_1 = 23359, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2 = 23360, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3 = 23361, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4 = 23362, + SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE = 23363, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE = 23364, + SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW = 23365, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW = 23366, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW = 23367, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE = 23368, + SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE = 23369, + SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW = 23370, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE = 23381, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23382, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23383, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE = 23384, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0 = 23385, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23386, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23387, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3 = 23388, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23389, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23390, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23391, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23392, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23393, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23394, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23395, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23396, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0 = 23397, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1 = 23398, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2 = 23399, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3 = 23400, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0 = 23401, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1 = 23402, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 = 23403, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0 = 23404, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1 = 23405, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 = 23406, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0 = 23407, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1 = 23408, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 = 23409, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0 = 23410, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1 = 23411, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 = 23412, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0 = 23413, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1 = 23414, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2 = 23415, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3 = 23416, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0 = 23417, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1 = 23418, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2 = 23419, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3 = 23420, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0 = 23421, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1 = 23422, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2 = 23423, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3 = 23424, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0 = 23425, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1 = 23426, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2 = 23427, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3 = 23428, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0 = 23429, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1 = 23430, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2 = 23431, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3 = 23432, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0 = 23433, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1 = 23434, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2 = 23435, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3 = 23436, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0 = 23437, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1 = 23438, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2 = 23439, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3 = 23440, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0 = 23441, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1 = 23442, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2 = 23443, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3 = 23444, + SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E = 23445, + SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S = 23446, + SPR_MINATURE_RAILWAY_DIAG_FLAT_E_W = 23447, + SPR_MINATURE_RAILWAY_DIAG_FLAT_S_N = 23448, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_W_E = 23449, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_N_S = 23450, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_E_W = 23451, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_S_N = 23452, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_W_E = 23453, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_N_S = 23454, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_E_W = 23455, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_S_N = 23456, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_W_E = 23457, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_N_S = 23458, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_E_W = 23459, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_S_N = 23460, +}; + +static const uint32 minature_railway_track_pieces_flat[4] = { + SPR_MINATURE_RAILWAY_FLAT_SW_NE, + SPR_MINATURE_RAILWAY_FLAT_NW_SE, + SPR_MINATURE_RAILWAY_FLAT_SW_NE, + SPR_MINATURE_RAILWAY_FLAT_NW_SE, +}; + +static const uint32 minature_railway_track_pieces_flat_quarter_turn_5_tiles[4][5] = { + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_2, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_3, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_4, + }, + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_2, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_3, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_4, + }, + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_2, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_3, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_4, + }, + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3, + SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4, + } +}; + +static const uint32 minature_railway_track_pieces_25_deg_up[4] = { + SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE, + SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE, + SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW, + SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW, +}; + +static const uint32 minature_railway_track_pieces_flat_to_25_deg_up[4] = { + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW, +}; + +static const uint32 minature_railway_track_pieces_25_deg_up_to_flat[4] = { + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW, +}; + +static const uint32 minature_railway_track_pieces_s_bend_left[2][4] = { + { + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3, + }, + { + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0, + } +}; + +static const uint32 minature_railway_track_pieces_s_bend_right[2][4] = { + { + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3, + }, + { + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0, + } +}; + +static const uint32 minature_railway_track_pieces_flat_quarter_turn_3_tiles[4][3] = { + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 + }, + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 + }, + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 + }, + { + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 + } +}; + +static const uint32 ghost_train_track_pieces_right_eight_to_diag[4][4] = { + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3, + }, + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3, + }, + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3, + }, + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3, + }, +}; + +static const rct_xy16 ghost_train_track_pieces_right_eight_to_diag_bounds[4][4] = { + { + {32, 20}, + {32, 16}, + {16, 16}, + {16, 16}, + }, + { + {20, 32}, + {16, 32}, + {16, 16}, + {16, 16}, + }, + { + {32, 20}, + {34, 16}, + {28, 28}, + {16, 18}, + }, + { + {20, 32}, + {16, 32}, + {16, 16}, + {16, 16}, + }, +}; + +static const rct_xy16 ghost_train_track_pieces_right_eight_to_diag_offset[4][4] = { + { + {0, 6}, + {0, 16}, + {0, 0}, + {16, 0}, + }, + { + {6, 0}, + {16, 0}, + {0, 16}, + {0, 0}, + }, + { + {0, 6}, + {0, 0}, + {4, 4}, + {0, 16}, + }, + { + {6, 0}, + {0, 0}, + {16, 0}, + {16, 16}, + }, +}; + +static const uint32 ghost_train_track_pieces_left_eight_to_diag[4][4] = { + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3, + }, + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3, + }, + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3, + }, + { + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3, + }, +}; + +static const rct_xy16 ghost_train_track_pieces_left_eight_to_diag_bounds[4][4] = { + { + {32, 20}, + {32, 16}, + {16, 16}, + {16, 16}, + }, + { + {20, 32}, + {16, 34}, + {16, 16}, + {18, 16}, + }, + { + {32, 20}, + {32, 16}, + {16, 16}, + {16, 16}, + }, + { + {20, 32}, + {16, 32}, + {16, 16}, + {16, 16}, + }, +}; + +static const rct_xy16 ghost_train_track_pieces_left_eight_to_diag_offset[4][4] = { + { + {0, 6}, + {0, 0}, + {0, 16}, + {16, 16}, + }, + { + {6, 0}, + {0, 0}, + {16, 16}, + {16, 0}, + }, + { + {0, 6}, + {0, 16}, + {16, 0}, + {0, 0}, + }, + { + {6, 0}, + {16, 0}, + {0, 0}, + {0, 16}, + }, +}; + +static const uint32 minature_railway_track_pieces_diag_flat[4] = { + SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E, + SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S, + SPR_MINATURE_RAILWAY_DIAG_FLAT_E_W, + SPR_MINATURE_RAILWAY_DIAG_FLAT_S_N, +}; + +static const uint32 minature_railway_track_pieces_diag_flat_to_25_deg_up[4] = { + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_W_E, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_N_S, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_E_W, + SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_S_N, +}; + +static const uint32 minature_railway_track_pieces_diag_25_deg_up_to_flat[4] = { + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_W_E, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_N_S, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_E_W, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_S_N, +}; + +static const uint32 minature_railway_track_pieces_diag_25_deg_up[4] = { + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_W_E, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_N_S, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_E_W, + SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_S_N, +}; + +/** rct2: 0x008AE1AC */ +static void paint_minature_railway_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; + + uint32 imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + + if (direction == 0 || direction == 2) { + sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); + } else { + sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); + } + + if (direction == 0 || direction == 2) { + paint_util_push_tunnel_left(height, TUNNEL_6); + } else { + paint_util_push_tunnel_right(height, TUNNEL_6); + } + + if (track_paint_util_should_paint_supports(position)) { + metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + 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); +} + +/** rct2: 0x008AE25C, 0x008AE26C, 0x008AE27C */ +static void paint_minature_railway_station(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + uint32 imageId; + + if (direction == 0 || direction == 2) { + imageId = SPR_STATION_BASE_B_SW_NE | gTrackColours[SCHEME_MISC]; + sub_98197C(imageId, 0, 0, 32, 28, 2, height - 2, 0, 2, height, get_current_rotation()); + } else if (direction == 1 || direction == 3) { + imageId = SPR_STATION_BASE_B_NW_SE | gTrackColours[SCHEME_MISC]; + sub_98197C(imageId, 0, 0, 28, 32, 2, height - 2, 2, 0, height, get_current_rotation()); + } + + imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + if (direction == 0 || direction == 2) { + sub_98199C(imageId, 0, 6, 32, 20, 2, height, 0, 0, height, get_current_rotation()); + } else { + sub_98199C(imageId, 6, 0, 20, 32, 2, height, 0, 0, height, get_current_rotation()); + } + + if (direction == 0 || direction == 2) { + paint_util_push_tunnel_left(height, TUNNEL_6); + } else { + paint_util_push_tunnel_right(height, TUNNEL_6); + } + + if (direction == 0 || direction == 2) { + metal_a_supports_paint_setup(3, 5, 0, height, gTrackColours[SCHEME_SUPPORTS]); + metal_a_supports_paint_setup(3, 8, 0, height, gTrackColours[SCHEME_SUPPORTS]); + } else { + metal_a_supports_paint_setup(3, 6, 0, height, gTrackColours[SCHEME_SUPPORTS]); + metal_a_supports_paint_setup(3, 7, 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + track_paint_util_draw_station(rideIndex, trackSequence, direction, height, mapElement); + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE1BC */ +static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; + + uint32 imageId = minature_railway_track_pieces_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; + + if (direction == 0 || direction == 2) { + sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); + } else { + sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); + } + + switch (direction) { + case 0: paint_util_push_tunnel_left(height - 8, TUNNEL_7); break; + case 1: paint_util_push_tunnel_right(height + 8, TUNNEL_8); break; + case 2: paint_util_push_tunnel_left(height + 8, TUNNEL_8); break; + case 3: paint_util_push_tunnel_right(height - 8, TUNNEL_7); break; + } + + if (track_paint_util_should_paint_supports(position)) { + metal_a_supports_paint_setup(3, 4, 8, height, gTrackColours[SCHEME_SUPPORTS]); + } + + 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 + 56, 0x20); +} + +/** rct2: 0x008AE1CC */ +static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; + + uint32 imageId = minature_railway_track_pieces_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; + + if (direction == 0 || direction == 2) { + sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); + } else { + sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); + } + + switch (direction) { + case 0: paint_util_push_tunnel_left(height, TUNNEL_6); break; + case 1: paint_util_push_tunnel_right(height, TUNNEL_8); break; + case 2: paint_util_push_tunnel_left(height, TUNNEL_8); break; + case 3: paint_util_push_tunnel_right(height, TUNNEL_6); break; + } + + if (track_paint_util_should_paint_supports(position)) { + metal_a_supports_paint_setup(3, 4, 3, height, gTrackColours[SCHEME_SUPPORTS]); + } + + 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 + 48, 0x20); +} + +/** rct2: 0x008AE1DC */ +static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; + + uint32 imageId = minature_railway_track_pieces_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; + + if (direction == 0 || direction == 2) { + sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); + } else { + sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); + } + + switch (direction) { + case 0: paint_util_push_tunnel_left(height - 8, TUNNEL_6); break; + case 1: paint_util_push_tunnel_right(height + 8, TUNNEL_14); break; + case 2: paint_util_push_tunnel_left(height + 8, TUNNEL_14); break; + case 3: paint_util_push_tunnel_right(height - 8, TUNNEL_6); break; + } + + if (track_paint_util_should_paint_supports(position)) { + metal_a_supports_paint_setup(3, 4, 6, height, gTrackColours[SCHEME_SUPPORTS]); + } + + 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 + 40, 0x20); +} + +/** rct2: 0x008AE1EC */ +static void paint_minature_railway_track_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + paint_minature_railway_track_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); +} + +/** rct2: 0x008AE1FC */ +static void paint_minature_railway_track_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + paint_minature_railway_track_25_deg_up_to_flat(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); +} + +/** rct2: 0x008AE20C */ +static void paint_minature_railway_track_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + paint_minature_railway_track_flat_to_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); +} + +/** rct2: 0x008AE22C */ +static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + track_paint_util_right_quarter_turn_5_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_5_tiles, defaultRightQuarterTurn5TilesOffsets, defaultRightQuarterTurn5TilesBoundLengths, NULL, get_current_rotation()); + + switch (trackSequence) { + case 0: + case 6: + metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + } + + if (direction == 0 && trackSequence == 0) { + paint_util_push_tunnel_left(height, TUNNEL_6); + } + + if (direction == 0 && trackSequence == 6) { + paint_util_push_tunnel_right(height, TUNNEL_6); + } + + if (direction == 1 && trackSequence == 6) { + paint_util_push_tunnel_left(height, TUNNEL_6); + } + + if (direction == 3 && trackSequence == 0) { + paint_util_push_tunnel_right(height, TUNNEL_6); + } + + int blockedSegments = 0; + switch (trackSequence) { + case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC; break; + case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_CC; break; + case 3: blockedSegments = SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_C4; break; + case 5: blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C8; break; + case 6: blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8; break; + } + + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + + + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE21C */ +static void paint_minature_railway_track_left_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + paint_minature_railway_track_right_quarter_turn_5_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); +} + +/** rct2: 0x */ +static void paint_minature_railway_track_s_bend_left(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (direction == 2 || direction == 3) { + trackSequence = 3 - trackSequence; + } + + const rct_xy16 offsetList[] = { + {0, 6}, + {0, 0}, + {0, 6}, + {0, 6}, + }; + + const rct_xy16 boundsList[] = { + {32, 20}, + {32, 26}, + {32, 26}, + {32, 20}, + }; + + uint32 imageId = minature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = offsetList[trackSequence]; + rct_xy16 bounds = boundsList[trackSequence]; + if (direction == 0 || direction == 2) { + sub_98196C(imageId, (sint8) offset.x, (sint8) offset.y, bounds.x, bounds.y, 3, height, get_current_rotation()); + } else { + sub_98196C(imageId, (sint8) offset.y, (sint8) offset.x, bounds.y, bounds.x, 3, height, get_current_rotation()); + } + + if (direction == 0 || direction == 2) { + if (trackSequence == 0) { + paint_util_push_tunnel_left(height, TUNNEL_6); + } + + switch (trackSequence) { + case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 1: metal_a_supports_paint_setup(3, 5, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + } + } else { + if (trackSequence == 3) { + paint_util_push_tunnel_right(height, TUNNEL_6); + } + + switch (trackSequence) { + case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 1: metal_a_supports_paint_setup(3, 6, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + } + } + + int blockedSegments = 0; + switch (trackSequence) { + case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B4; break; + case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; + case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; + case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0; break; + } + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction & 1), 0xFFFF, 0); + + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE24C */ +static void paint_minature_railway_track_s_bend_right(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (direction == 2 || direction == 3) { + trackSequence = 3 - trackSequence; + } + + const rct_xy16 offsetList[] = { + {0, 6}, + {0, 6}, + {0, 0}, + {0, 6}, + }; + + const rct_xy16 boundsList[] = { + {32, 20}, + {32, 26}, + {32, 26}, + {32, 20}, + }; + + uint32 imageId = minature_railway_track_pieces_s_bend_right[direction&1][trackSequence] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = offsetList[trackSequence]; + rct_xy16 bounds = boundsList[trackSequence]; + if (direction == 0 || direction == 2) { + sub_98196C(imageId, (sint8) offset.x, (sint8) offset.y, bounds.x, bounds.y, 3, height, get_current_rotation()); + } else { + sub_98196C(imageId, (sint8) offset.y, (sint8) offset.x, bounds.y, bounds.x, 3, height, get_current_rotation()); + } + + if (direction == 0 || direction == 2) { + if (trackSequence == 0) { + paint_util_push_tunnel_left(height, TUNNEL_6); + } + + switch (trackSequence) { + case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 1: metal_a_supports_paint_setup(3, 8, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + } + } else { + if (trackSequence == 3) { + paint_util_push_tunnel_right(height, TUNNEL_6); + } + + switch (trackSequence) { + case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 1: metal_a_supports_paint_setup(3, 7, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; + } + } + + int blockedSegments = 0; + switch (trackSequence) { + case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC; break; + case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; + case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; + case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8; break; + } + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction & 1), 0xFFFF, 0); + + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE29C */ +static void paint_minature_railway_track_right_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, NULL, get_current_rotation()); + track_paint_util_right_quarter_turn_3_tiles_tunnel(height, direction, trackSequence, TUNNEL_6); + + switch (trackSequence) { + case 0: + case 3: + metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + } + + int blockedSegments = 0; + switch (trackSequence) { + case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC; break; + case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0; break; + case 3: blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8; break; + } + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE28C */ +static void paint_minature_railway_track_left_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + paint_minature_railway_track_right_quarter_turn_3_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); +} + +static const sint8 paint_minature_railway_eighth_to_diag_index[] = {0, 1, 2, -1, 3}; + +/** rct2: 0x008AE31C */ +static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + uint32 imageId; + sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + if (index >= 0) { + imageId = ghost_train_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + const rct_xy16 offset = ghost_train_track_pieces_left_eight_to_diag_offset[direction][index]; + const rct_xy16 bounds = ghost_train_track_pieces_left_eight_to_diag_bounds[direction][index]; + sub_98197C(imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height, get_current_rotation()); + } + + switch (trackSequence) { + case 0: + metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + case 4: + if (direction == 0) metal_a_supports_paint_setup(3, 3, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction == 1) metal_a_supports_paint_setup(3, 1, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction == 2) metal_a_supports_paint_setup(3, 0, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction == 3) metal_a_supports_paint_setup(3, 2, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + } + + if (direction == 0 && trackSequence == 0) { + paint_util_push_tunnel_left(height, TUNNEL_0); + } + if (direction == 3 && trackSequence == 0) { + paint_util_push_tunnel_right(height, TUNNEL_0); + } + + int blockedSegments; + switch (trackSequence) { + case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC; break; + case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; + case 2: blockedSegments = SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; + case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_B8 | SEGMENT_C8; break; + case 4: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C8 | SEGMENT_C0 | SEGMENT_D4; break; + } + + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE32C */ +static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + uint32 imageId; + sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + if (index >= 0) { + imageId = ghost_train_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + const rct_xy16 offset = ghost_train_track_pieces_right_eight_to_diag_offset[direction][index]; + const rct_xy16 bounds = ghost_train_track_pieces_right_eight_to_diag_bounds[direction][index]; + sub_98197C(imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height, get_current_rotation()); + } + + switch (trackSequence) { + case 0: + metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + case 4: + if (direction == 0) metal_a_supports_paint_setup(3, 1, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction == 1) metal_a_supports_paint_setup(3, 0, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction == 2) metal_a_supports_paint_setup(3, 2, 0, height, gTrackColours[SCHEME_SUPPORTS]); + if (direction == 3) metal_a_supports_paint_setup(3, 3, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + } + + if (direction == 0 && trackSequence == 0) { + paint_util_push_tunnel_left(height, TUNNEL_0); + } + if (direction == 3 && trackSequence == 0) { + paint_util_push_tunnel_right(height, TUNNEL_0); + } + + int blockedSegments; + switch (trackSequence) { + case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC; break; + case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; + case 2: blockedSegments = SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; + case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_C0 | SEGMENT_D4; break; + case 4: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_D4; break; + } + + paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); +} + +/** rct2: 0x008AE33C */ +static void paint_minature_railway_track_left_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + const uint8 map[] = {4, 2, 3, 1, 0}; + trackSequence = map[trackSequence]; + paint_minature_railway_track_right_eighth_to_diag(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); +} + +/** rct2: 0x008AE34C */ +static void paint_minature_railway_track_right_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + const uint8 map[] = {4, 2, 3, 1, 0}; + trackSequence = map[trackSequence]; + paint_minature_railway_track_left_eighth_to_diag(rideIndex, trackSequence, (direction + 3) % 4, height, mapElement); +} + +static void paint_minature_railway_util_diag_supports(uint8 direction, int height) +{ + switch (direction) { + case 0: + metal_a_supports_paint_setup(3, 1, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + case 1: + metal_a_supports_paint_setup(3, 0, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup(3, 2, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup(3, 3, 0, height, gTrackColours[SCHEME_SUPPORTS]); + break; + } +} + +static const bool minature_railway_diag_image_segment[][4] = { + {false, true, false, false}, + {false, false, false, true}, + {false, false, true, false}, + {true, false, false, false}, +}; + +static const uint8 minature_railway_diag_support_segment[] = {1, 0, 2, 3}; + +static const int minature_railway_diag_blocked_segments[] = { + SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4 | SEGMENT_BC, + SEGMENT_C4 | SEGMENT_CC | SEGMENT_C8 | SEGMENT_B4, + SEGMENT_D0 | SEGMENT_C4 | SEGMENT_C0 | SEGMENT_D4, + SEGMENT_D0 | SEGMENT_C4 | SEGMENT_B8 | SEGMENT_C8 +}; + +/** rct2: 0x008AE2AC */ +static void paint_minature_railway_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_flat[direction] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_a_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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 + 32, 0x20); +} + +/** rct2: 0x008AE2DC */ +static void paint_minature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 8, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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: 0x008AE2BC */ +static void paint_minature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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); +} + +/** rct2: 0x008AE2CC */ +static void paint_minature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 4, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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: 0x008AE30C */ +static void paint_minature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_25_deg_up[(direction + 2) % 4] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 8, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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: 0x008AE2EC */ +static void paint_minature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_25_deg_up_to_flat[(direction + 2) % 4] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 4, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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: 0x008AE2FC */ +static void paint_minature_railway_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +{ + if (minature_railway_diag_image_segment[direction][trackSequence]) { + uint32 imageId = minature_railway_track_pieces_diag_flat_to_25_deg_up[(direction + 2) % 4] | gTrackColours[SCHEME_TRACK]; + sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + if (trackSequence == 3) { + metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); + } + + int blockedSegments = minature_railway_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); +} + +/** + * rct2: 0x008ACE48 + */ +TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, int direction) +{ + switch (trackType) { + case TRACK_ELEM_FLAT: + return paint_minature_railway_track_flat; + + case TRACK_ELEM_END_STATION: + case TRACK_ELEM_BEGIN_STATION: + case TRACK_ELEM_MIDDLE_STATION: + return paint_minature_railway_station; + + case TRACK_ELEM_25_DEG_UP: + return paint_minature_railway_track_25_deg_up; + case TRACK_ELEM_FLAT_TO_25_DEG_UP: + return paint_minature_railway_track_flat_to_25_deg_up; + case TRACK_ELEM_25_DEG_UP_TO_FLAT: + return paint_minature_railway_track_25_deg_up_to_flat; + + case TRACK_ELEM_25_DEG_DOWN: + return paint_minature_railway_track_25_deg_down; + case TRACK_ELEM_FLAT_TO_25_DEG_DOWN: + return paint_minature_railway_track_flat_to_25_deg_down; + case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: + return paint_minature_railway_track_25_deg_down_to_flat; + + case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: + return paint_minature_railway_track_left_quarter_turn_5_tiles; + case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: + return paint_minature_railway_track_right_quarter_turn_5_tiles; + + case TRACK_ELEM_S_BEND_LEFT: + return paint_minature_railway_track_s_bend_left; + case TRACK_ELEM_S_BEND_RIGHT: + return paint_minature_railway_track_s_bend_right; + + case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: + return paint_minature_railway_track_left_quarter_turn_3_tiles; + case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: + return paint_minature_railway_track_right_quarter_turn_3_tiles; + + case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: + return paint_minature_railway_track_left_eighth_to_diag; + case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: + return paint_minature_railway_track_right_eighth_to_diag; + case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: + return paint_minature_railway_track_left_eighth_to_orthogonal; + case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: + return paint_minature_railway_track_right_eighth_to_orthogonal; + + case TRACK_ELEM_DIAG_FLAT: + return paint_minature_railway_track_diag_flat; + + case TRACK_ELEM_DIAG_25_DEG_UP: + return paint_minature_railway_track_diag_25_deg_up; + case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP: + return paint_minature_railway_track_diag_flat_to_25_deg_up; + case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: + return paint_minature_railway_track_diag_25_deg_up_to_flat; + + case TRACK_ELEM_DIAG_25_DEG_DOWN: + return paint_minature_railway_track_diag_25_deg_down; + case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN: + return paint_minature_railway_track_diag_flat_to_25_deg_down; + case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT: + return paint_minature_railway_track_diag_25_deg_down_to_flat; + } + + return NULL; +} From ccf2649390efd73b2c025557e96217f39e359415 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Mon, 3 Oct 2016 21:29:34 +0100 Subject: [PATCH 02/24] Fix flat track element --- src/ride/transport/minature_railway.c | 38 +++++++++++++++++++-------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 6d8cd8a44d..e411f46452 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -138,6 +138,13 @@ enum SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_S_N = 23460, }; +static const uint32 minature_railway_track_floor[4] = { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_90_DEG +}; + static const uint32 minature_railway_track_pieces_flat[4] = { SPR_MINATURE_RAILWAY_FLAT_SW_NE, SPR_MINATURE_RAILWAY_FLAT_NW_SE, @@ -440,30 +447,39 @@ static const uint32 minature_railway_track_pieces_diag_25_deg_up[4] = { SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_S_N, }; -/** rct2: 0x008AE1AC */ +/** rct2: 0x008AD0C0 */ static void paint_minature_railway_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; - uint32 imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + bool isSupported = wooden_a_supports_paint_setup(direction & 1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + uint32 imageId; - if (direction == 0 || direction == 2) { - sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); - } else { - sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); + if (isSupported) { + imageId = minature_railway_track_floor[direction] | gTrackColours[SCHEME_SUPPORTS]; + sub_98197C_rotated(direction, imageId, 0, 0, 32, 20, 2, height, 0, 6, height); + + imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + + sub_98199C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 6, height); } + else { + imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + if (direction & 1) { + sub_98197C(imageId, 6, 0, 20, 32, 2, height, 6, 0, height, get_current_rotation()); + } + else { + sub_98197C(imageId, 0, 6, 32, 20, 2, height, 0, 6, height, get_current_rotation()); + } + } if (direction == 0 || direction == 2) { paint_util_push_tunnel_left(height, TUNNEL_6); } else { paint_util_push_tunnel_right(height, TUNNEL_6); } - if (track_paint_util_should_paint_supports(position)) { - metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); - } - - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 32, 0x20); } From 6d94d3a1a2afd4501c0bde85c29eb7dd340c0541 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 4 Oct 2016 18:23:37 +0100 Subject: [PATCH 03/24] Improvements --- src/ride/transport/minature_railway.c | 182 ++++++++++++-------------- 1 file changed, 85 insertions(+), 97 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index e411f46452..35411f55c4 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -48,14 +48,14 @@ enum SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2 = 23360, SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3 = 23361, SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4 = 23362, - SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE = 23363, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE = 23364, - SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW = 23365, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW = 23366, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW = 23367, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE = 23368, - SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE = 23369, - SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW = 23370, + SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE = 23379, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE = 23380, + SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW = 23381, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW = 23382, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW = 23383, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE = 23384, + SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE = 23385, + SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW = 23386, SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE = 23381, SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23382, SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23383, @@ -78,6 +78,10 @@ enum SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3 = 23400, SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0 = 23401, SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1 = 23402, + + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE = 23403, + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE = 23404, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 = 23403, SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0 = 23404, SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1 = 23405, @@ -152,6 +156,20 @@ static const uint32 minature_railway_track_pieces_flat[4] = { SPR_MINATURE_RAILWAY_FLAT_NW_SE, }; +static const uint32 minature_railway_station_floor[4] = { + SPR_STATION_BASE_A_SW_NE, + SPR_STATION_BASE_A_NW_SE, + SPR_STATION_BASE_A_SW_NE, + SPR_STATION_BASE_A_NW_SE +}; + +static const uint32 minature_railway_track_pieces_flat_station[4] = { + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE, + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE, + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE, + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE, +}; + static const uint32 minature_railway_track_pieces_flat_quarter_turn_5_tiles[4][5] = { { SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0, @@ -459,68 +477,39 @@ static void paint_minature_railway_track_flat(uint8 rideIndex, uint8 trackSequen imageId = minature_railway_track_floor[direction] | gTrackColours[SCHEME_SUPPORTS]; sub_98197C_rotated(direction, imageId, 0, 0, 32, 20, 2, height, 0, 6, height); - imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; - + imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; sub_98199C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 6, height); } else { imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + sub_98197C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 6, height); + } - if (direction & 1) { - sub_98197C(imageId, 6, 0, 20, 32, 2, height, 6, 0, height, get_current_rotation()); - } - else { - sub_98197C(imageId, 0, 6, 32, 20, 2, height, 0, 6, height, get_current_rotation()); - } - } - if (direction == 0 || direction == 2) { - paint_util_push_tunnel_left(height, TUNNEL_6); - } else { - paint_util_push_tunnel_right(height, TUNNEL_6); - } + paint_util_push_tunnel_rotated(direction, height, TUNNEL_6); paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE25C, 0x008AE26C, 0x008AE27C */ +/** rct2: 0x008AD170, 0x008AD180, 0x008AD190 */ static void paint_minature_railway_station(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { uint32 imageId; - if (direction == 0 || direction == 2) { - imageId = SPR_STATION_BASE_B_SW_NE | gTrackColours[SCHEME_MISC]; - sub_98197C(imageId, 0, 0, 32, 28, 2, height - 2, 0, 2, height, get_current_rotation()); - } else if (direction == 1 || direction == 3) { - imageId = SPR_STATION_BASE_B_NW_SE | gTrackColours[SCHEME_MISC]; - sub_98197C(imageId, 0, 0, 28, 32, 2, height - 2, 2, 0, height, get_current_rotation()); - } + wooden_a_supports_paint_setup(direction & 1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; - if (direction == 0 || direction == 2) { - sub_98199C(imageId, 0, 6, 32, 20, 2, height, 0, 0, height, get_current_rotation()); - } else { - sub_98199C(imageId, 6, 0, 20, 32, 2, height, 0, 0, height, get_current_rotation()); - } + imageId = minature_railway_station_floor[direction] | gTrackColours[SCHEME_MISC]; + sub_98197C_rotated(direction, imageId, 0, 0, 32, 28, 2, height - 2, 0, 2, height); - if (direction == 0 || direction == 2) { - paint_util_push_tunnel_left(height, TUNNEL_6); - } else { - paint_util_push_tunnel_right(height, TUNNEL_6); - } + imageId = minature_railway_track_pieces_flat_station[direction] | gTrackColours[SCHEME_TRACK]; + sub_98199C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 0, height); - if (direction == 0 || direction == 2) { - metal_a_supports_paint_setup(3, 5, 0, height, gTrackColours[SCHEME_SUPPORTS]); - metal_a_supports_paint_setup(3, 8, 0, height, gTrackColours[SCHEME_SUPPORTS]); - } else { - metal_a_supports_paint_setup(3, 6, 0, height, gTrackColours[SCHEME_SUPPORTS]); - metal_a_supports_paint_setup(3, 7, 0, height, gTrackColours[SCHEME_SUPPORTS]); - } + paint_util_push_tunnel_rotated(direction, height, TUNNEL_6); - track_paint_util_draw_station(rideIndex, trackSequence, direction, height, mapElement); + track_paint_util_draw_station(rideIndex, trackSequence, direction, height + 2, mapElement); paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 32, 0x20); + paint_util_set_general_support_height(height + 30, 0x20); } /** rct2: 0x008AE1BC */ @@ -543,9 +532,8 @@ static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackS case 3: paint_util_push_tunnel_right(height - 8, TUNNEL_7); break; } - if (track_paint_util_should_paint_supports(position)) { - metal_a_supports_paint_setup(3, 4, 8, height, gTrackColours[SCHEME_SUPPORTS]); - } + wooden_a_supports_paint_setup(direction & 1, 45, height, gTrackColours[SCHEME_SUPPORTS], NULL); + 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 + 56, 0x20); @@ -1108,58 +1096,58 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_25_DEG_UP: return paint_minature_railway_track_25_deg_up; - case TRACK_ELEM_FLAT_TO_25_DEG_UP: - return paint_minature_railway_track_flat_to_25_deg_up; - case TRACK_ELEM_25_DEG_UP_TO_FLAT: - return paint_minature_railway_track_25_deg_up_to_flat; + //case TRACK_ELEM_FLAT_TO_25_DEG_UP: + // return paint_minature_railway_track_flat_to_25_deg_up; + //case TRACK_ELEM_25_DEG_UP_TO_FLAT: + // return paint_minature_railway_track_25_deg_up_to_flat; - case TRACK_ELEM_25_DEG_DOWN: - return paint_minature_railway_track_25_deg_down; - case TRACK_ELEM_FLAT_TO_25_DEG_DOWN: - return paint_minature_railway_track_flat_to_25_deg_down; - case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: - return paint_minature_railway_track_25_deg_down_to_flat; + //case TRACK_ELEM_25_DEG_DOWN: + // return paint_minature_railway_track_25_deg_down; + //case TRACK_ELEM_FLAT_TO_25_DEG_DOWN: + // return paint_minature_railway_track_flat_to_25_deg_down; + //case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: + // return paint_minature_railway_track_25_deg_down_to_flat; - case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: - return paint_minature_railway_track_left_quarter_turn_5_tiles; - case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: - return paint_minature_railway_track_right_quarter_turn_5_tiles; + //case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: + // return paint_minature_railway_track_left_quarter_turn_5_tiles; + //case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: + // return paint_minature_railway_track_right_quarter_turn_5_tiles; - case TRACK_ELEM_S_BEND_LEFT: - return paint_minature_railway_track_s_bend_left; - case TRACK_ELEM_S_BEND_RIGHT: - return paint_minature_railway_track_s_bend_right; + //case TRACK_ELEM_S_BEND_LEFT: + // return paint_minature_railway_track_s_bend_left; + //case TRACK_ELEM_S_BEND_RIGHT: + // return paint_minature_railway_track_s_bend_right; - case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: - return paint_minature_railway_track_left_quarter_turn_3_tiles; - case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: - return paint_minature_railway_track_right_quarter_turn_3_tiles; + //case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: + // return paint_minature_railway_track_left_quarter_turn_3_tiles; + //case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: + // return paint_minature_railway_track_right_quarter_turn_3_tiles; - case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: - return paint_minature_railway_track_left_eighth_to_diag; - case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: - return paint_minature_railway_track_right_eighth_to_diag; - case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: - return paint_minature_railway_track_left_eighth_to_orthogonal; - case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: - return paint_minature_railway_track_right_eighth_to_orthogonal; + //case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: + // return paint_minature_railway_track_left_eighth_to_diag; + //case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: + // return paint_minature_railway_track_right_eighth_to_diag; + //case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: + // return paint_minature_railway_track_left_eighth_to_orthogonal; + //case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: + // return paint_minature_railway_track_right_eighth_to_orthogonal; - case TRACK_ELEM_DIAG_FLAT: - return paint_minature_railway_track_diag_flat; + //case TRACK_ELEM_DIAG_FLAT: + // return paint_minature_railway_track_diag_flat; - case TRACK_ELEM_DIAG_25_DEG_UP: - return paint_minature_railway_track_diag_25_deg_up; - case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP: - return paint_minature_railway_track_diag_flat_to_25_deg_up; - case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: - return paint_minature_railway_track_diag_25_deg_up_to_flat; + //case TRACK_ELEM_DIAG_25_DEG_UP: + // return paint_minature_railway_track_diag_25_deg_up; + //case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP: + // return paint_minature_railway_track_diag_flat_to_25_deg_up; + //case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: + // return paint_minature_railway_track_diag_25_deg_up_to_flat; - case TRACK_ELEM_DIAG_25_DEG_DOWN: - return paint_minature_railway_track_diag_25_deg_down; - case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN: - return paint_minature_railway_track_diag_flat_to_25_deg_down; - case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT: - return paint_minature_railway_track_diag_25_deg_down_to_flat; + //case TRACK_ELEM_DIAG_25_DEG_DOWN: + // return paint_minature_railway_track_diag_25_deg_down; + //case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN: + // return paint_minature_railway_track_diag_flat_to_25_deg_down; + //case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT: + // return paint_minature_railway_track_diag_25_deg_down_to_flat; } return NULL; From 1a4f51bfd24aeb0ef61b318da452cc3b390eb2c1 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 4 Oct 2016 19:51:58 +0100 Subject: [PATCH 04/24] More improvements --- src/ride/track_paint.h | 9 +- src/ride/transport/minature_railway.c | 204 +++++++++++++++++++------- 2 files changed, 157 insertions(+), 56 deletions(-) diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h index 61291e171b..a3b15d8cbb 100644 --- a/src/ride/track_paint.h +++ b/src/ride/track_paint.h @@ -38,7 +38,14 @@ extern const uint8 track_map_1x4[][4]; enum { SPR_FLOOR_PLANKS = 3395, SPR_FLOOR_PLANKS_90_DEG = 3396, - + SPR_FLOOR_PLANKS_SLOPE_NE_SW = 3397, + SPR_FLOOR_PLANKS_SLOPE_SE_NW = 3398, + SPR_FLOOR_PLANKS_SLOPE_SW_NE = 3399, + SPR_FLOOR_PLANKS_SLOPE_NW_SE = 3400, + SPR_FLOOR_PLANKS_N_SEGMENT = 3401, + SPR_FLOOR_PLANKS_E_SEGMENT = 3402, + SPR_FLOOR_PLANKS_S_SEGMENT = 3403, + SPR_FLOOR_PLANKS_W_SEGMENT = 3404, SPR_FLOOR_METAL = 14567, SPR_FENCE_METAL_NE = 14568, SPR_FENCE_METAL_SE = 14569, diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 35411f55c4..438fb06f30 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -56,10 +56,10 @@ enum SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE = 23384, SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE = 23385, SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW = 23386, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE = 23381, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23382, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23383, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE = 23384, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE = 23387, + SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23388, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23389, + SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE = 23390, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0 = 23385, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23386, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23387, @@ -519,11 +519,7 @@ static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackS uint32 imageId = minature_railway_track_pieces_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; - if (direction == 0 || direction == 2) { - sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); - } else { - sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); - } + sub_98197C_rotated(direction, imageId, 0, 2, 32, 25, 2, height, 0, 3, height); switch (direction) { case 0: paint_util_push_tunnel_left(height - 8, TUNNEL_7); break; @@ -532,10 +528,9 @@ static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackS case 3: paint_util_push_tunnel_right(height - 8, TUNNEL_7); break; } - wooden_a_supports_paint_setup(direction & 1, 45, height, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_a_supports_paint_setup(direction & 1, 45 + direction, height, gTrackColours[SCHEME_SUPPORTS], NULL); - - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 56, 0x20); } @@ -546,11 +541,7 @@ static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint uint32 imageId = minature_railway_track_pieces_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; - if (direction == 0 || direction == 2) { - sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); - } else { - sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); - } + sub_98197C_rotated(direction, imageId, 0, 2, 32, 25, 2, height, 0, 3, height); switch (direction) { case 0: paint_util_push_tunnel_left(height, TUNNEL_6); break; @@ -559,11 +550,9 @@ static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint case 3: paint_util_push_tunnel_right(height, TUNNEL_6); break; } - if (track_paint_util_should_paint_supports(position)) { - metal_a_supports_paint_setup(3, 4, 3, height, gTrackColours[SCHEME_SUPPORTS]); - } + wooden_a_supports_paint_setup(direction & 1, 37 + direction, height, gTrackColours[SCHEME_SUPPORTS], NULL); - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 48, 0x20); } @@ -574,12 +563,8 @@ static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint uint32 imageId = minature_railway_track_pieces_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; - if (direction == 0 || direction == 2) { - sub_98196C(imageId, 0, 6, 32, 20, 3, height, get_current_rotation()); - } else { - sub_98196C(imageId, 6, 0, 20, 32, 3, height, get_current_rotation()); - } - + sub_98197C_rotated(direction, imageId, 0, 2, 32, 25, 2, height, 0, 3, height); + switch (direction) { case 0: paint_util_push_tunnel_left(height - 8, TUNNEL_6); break; case 1: paint_util_push_tunnel_right(height + 8, TUNNEL_14); break; @@ -587,11 +572,9 @@ static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint case 3: paint_util_push_tunnel_right(height - 8, TUNNEL_6); break; } - if (track_paint_util_should_paint_supports(position)) { - metal_a_supports_paint_setup(3, 4, 6, height, gTrackColours[SCHEME_SUPPORTS]); - } + wooden_a_supports_paint_setup(direction & 1, 41 + direction, height, gTrackColours[SCHEME_SUPPORTS], NULL); - paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0); + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 40, 0x20); } @@ -613,18 +596,128 @@ static void paint_minature_railway_track_25_deg_down_to_flat(uint8 rideIndex, ui paint_minature_railway_track_flat_to_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } -/** rct2: 0x008AE22C */ +const rct_xy16 minature_railway_right_quarter_turn_5_tiles_offsets[4][5] = { + { + {0, 2}, + {0, 16}, + {0, 0}, + {16, 0}, + {2, 0}, + }, + { + {2, 0}, + {16, 0}, + {0, 16}, + {0, 0}, + {0, 2}, + }, + { + {0, 2}, + {0, 0}, + {16, 16}, + {0, 0}, + {2, 0}, + }, + { + {2, 0}, + {0, 0}, + {16, 0}, + {0, 16}, + {0, 2}, + } +}; + +const rct_xy16 minature_railway_right_quarter_turn_5_tiles_bound_lengths[4][5] = { + { + {32, 32}, + {32, 16}, + {16, 16}, + {16, 32}, + {32, 32}, + }, + { + {32, 32}, + {16, 34}, + {16, 16}, + {32, 16}, + {32, 27}, + }, + { + {32, 27}, + {32, 16}, + {16, 16}, + {16, 32}, + {27, 32}, + }, + { + {27, 32}, + {16, 32}, + {16, 16}, + {32, 16}, + {32, 32}, + } +}; + +static const uint32 minature_railway_right_quarter_turn_5_tiles_track_floor[4][5] = { + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS + }, + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS + }, +}; + +static const sint8 right_quarter_turn_5_supports_type[4][7] = { + {0, -1, 4, 2, -1, 4, 1}, + {1, -1, 5, 3, -1, 5, 0}, + {0, -1, 2, 4, -1, 2, 1}, + {1, -1, 3, 5, -1, 3, 0} +}; + +static const sint8 right_quarter_turn_5_tiles_sprite_map[] = {0, -1, 1, 2, -1, 3, 4}; + +/** rct2: 0x008AD140 */ static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - track_paint_util_right_quarter_turn_5_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_5_tiles, defaultRightQuarterTurn5TilesOffsets, defaultRightQuarterTurn5TilesBoundLengths, NULL, get_current_rotation()); - switch (trackSequence) { - case 0: - case 6: - metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); - break; + if (right_quarter_turn_5_supports_type[direction][trackSequence] != -1){ + bool isSupported = wooden_a_supports_paint_setup(right_quarter_turn_5_supports_type[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + + if (isSupported == false) { + track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_5_tiles, minature_railway_right_quarter_turn_5_tiles_offsets, minature_railway_right_quarter_turn_5_tiles_bound_lengths, NULL, get_current_rotation()); + } + else { + int index = right_quarter_turn_5_tiles_sprite_map[trackSequence]; + uint32 imageId = minature_railway_track_pieces_flat_quarter_turn_5_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = minature_railway_right_quarter_turn_5_tiles_offsets[direction][index]; + rct_xy16 boundsLength = minature_railway_right_quarter_turn_5_tiles_bound_lengths[direction][index]; + rct_xyz16 boundsOffset = { .x = offset.x, .y = offset.y, .z = 0 }; + + sub_98199C(imageId, (sint8) offset.x, (sint8) offset.y, boundsLength.x, boundsLength.y, 2, height, boundsOffset.x, boundsOffset.y, height + boundsOffset.z, get_current_rotation()); + } } - if (direction == 0 && trackSequence == 0) { paint_util_push_tunnel_left(height, TUNNEL_6); } @@ -643,16 +736,17 @@ static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIn int blockedSegments = 0; switch (trackSequence) { - case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC; break; + case 0: blockedSegments = SEGMENTS_ALL; break; + case 1: blockedSegments = SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC; break; case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_CC; break; - case 3: blockedSegments = SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_C4; break; + case 3: blockedSegments = SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4; break; + case 4: blockedSegments = SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC; break; case 5: blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C8; break; - case 6: blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8; break; + case 6: blockedSegments = SEGMENTS_ALL; break; } paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); - paint_util_set_general_support_height(height + 32, 0x20); } @@ -1096,22 +1190,22 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_25_DEG_UP: return paint_minature_railway_track_25_deg_up; - //case TRACK_ELEM_FLAT_TO_25_DEG_UP: - // return paint_minature_railway_track_flat_to_25_deg_up; - //case TRACK_ELEM_25_DEG_UP_TO_FLAT: - // return paint_minature_railway_track_25_deg_up_to_flat; + case TRACK_ELEM_FLAT_TO_25_DEG_UP: + return paint_minature_railway_track_flat_to_25_deg_up; + case TRACK_ELEM_25_DEG_UP_TO_FLAT: + return paint_minature_railway_track_25_deg_up_to_flat; - //case TRACK_ELEM_25_DEG_DOWN: - // return paint_minature_railway_track_25_deg_down; - //case TRACK_ELEM_FLAT_TO_25_DEG_DOWN: - // return paint_minature_railway_track_flat_to_25_deg_down; - //case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: - // return paint_minature_railway_track_25_deg_down_to_flat; + case TRACK_ELEM_25_DEG_DOWN: + return paint_minature_railway_track_25_deg_down; + case TRACK_ELEM_FLAT_TO_25_DEG_DOWN: + return paint_minature_railway_track_flat_to_25_deg_down; + case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: + return paint_minature_railway_track_25_deg_down_to_flat; //case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: // return paint_minature_railway_track_left_quarter_turn_5_tiles; - //case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: - // return paint_minature_railway_track_right_quarter_turn_5_tiles; + case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: + return paint_minature_railway_track_right_quarter_turn_5_tiles; //case TRACK_ELEM_S_BEND_LEFT: // return paint_minature_railway_track_s_bend_left; From 13c33bcbbe38a94729e9c2f6e661a79b0c0b3fa2 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 4 Oct 2016 21:06:49 +0100 Subject: [PATCH 05/24] Fix 5 tile turn --- src/ride/transport/minature_railway.c | 41 ++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 438fb06f30..487e968236 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -627,6 +627,37 @@ const rct_xy16 minature_railway_right_quarter_turn_5_tiles_offsets[4][5] = { } }; +const rct_xyz16 minature_railway_right_quarter_turn_5_tiles_bound_offsets[4][5] = { + { + {0, 2, 0}, + {0, 16, 0}, + {0, 0, 0}, + {16, 0, 0}, + {2, 0, 0}, + }, + { + {2, 0, 0}, + {16, 0, 0}, + {0, 16, 0}, + {0, 0, 0}, + {0, 2, 0}, + }, + { + {0, 2, 0}, + {0, 0, 0}, + {16, 16, 0}, + {0, 0, 0}, + {2, 0, 0}, + }, + { + {2, 0, 0}, + {0, 0, 0}, + {16, 0, 0}, + {0, 16, 0}, + {0, 2, 0}, + } +}; + const rct_xy16 minature_railway_right_quarter_turn_5_tiles_bound_lengths[4][5] = { { {32, 32}, @@ -682,9 +713,9 @@ static const uint32 minature_railway_right_quarter_turn_5_tiles_track_floor[4][5 }, { SPR_FLOOR_PLANKS_90_DEG, - SPR_FLOOR_PLANKS_W_SEGMENT, SPR_FLOOR_PLANKS_E_SEGMENT, SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, SPR_FLOOR_PLANKS }, }; @@ -705,10 +736,12 @@ static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIn if (right_quarter_turn_5_supports_type[direction][trackSequence] != -1){ bool isSupported = wooden_a_supports_paint_setup(right_quarter_turn_5_supports_type[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - if (isSupported == false) { + if (isSupported == false || (trackSequence == 3 && direction == 2)) { track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_5_tiles, minature_railway_right_quarter_turn_5_tiles_offsets, minature_railway_right_quarter_turn_5_tiles_bound_lengths, NULL, get_current_rotation()); } else { + track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_SUPPORTS], minature_railway_right_quarter_turn_5_tiles_track_floor, NULL, minature_railway_right_quarter_turn_5_tiles_bound_lengths, minature_railway_right_quarter_turn_5_tiles_bound_offsets, get_current_rotation()); + int index = right_quarter_turn_5_tiles_sprite_map[trackSequence]; uint32 imageId = minature_railway_track_pieces_flat_quarter_turn_5_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; rct_xy16 offset = minature_railway_right_quarter_turn_5_tiles_offsets[direction][index]; @@ -1202,8 +1235,8 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: return paint_minature_railway_track_25_deg_down_to_flat; - //case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: - // return paint_minature_railway_track_left_quarter_turn_5_tiles; + case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: + return paint_minature_railway_track_left_quarter_turn_5_tiles; case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: return paint_minature_railway_track_right_quarter_turn_5_tiles; From a0d2c0263880c18ab7f59a1d6dfe5d6c2a4347ab Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 4 Oct 2016 21:33:36 +0100 Subject: [PATCH 06/24] Fix s bend left --- src/ride/transport/minature_railway.c | 83 ++++++++++++++++----------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 487e968236..61e7ec8d22 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -64,14 +64,14 @@ enum SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23386, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23387, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3 = 23388, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23389, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23390, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23391, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23392, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23393, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23394, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23395, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23396, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23367, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23368, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23369, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23370, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23371, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23372, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23373, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23374, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0 = 23397, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1 = 23398, SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2 = 23399, @@ -790,64 +790,81 @@ static void paint_minature_railway_track_left_quarter_turn_5_tiles(uint8 rideInd paint_minature_railway_track_right_quarter_turn_5_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); } -/** rct2: 0x */ +static const sint8 s_bend_left_supports_type[4][4] = { + {0, 5, 3, 0}, + {1, 2, 4, 1}, + {0, 5, 3, 0}, + {1, 2, 4, 1} +}; + +static const uint32 minature_railway_s_bend_left_tiles_track_floor[2][4] = { + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG, + } +}; + +/** rct2: 0x8AD150 */ static void paint_minature_railway_track_s_bend_left(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { if (direction == 2 || direction == 3) { trackSequence = 3 - trackSequence; } + bool isSupported = wooden_a_supports_paint_setup(s_bend_left_supports_type[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + const rct_xy16 offsetList[] = { - {0, 6}, + {0, 2}, {0, 0}, {0, 6}, - {0, 6}, + {0, 2}, }; const rct_xy16 boundsList[] = { - {32, 20}, + {32, 27}, {32, 26}, {32, 26}, - {32, 20}, + {32, 27}, }; uint32 imageId = minature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; rct_xy16 offset = offsetList[trackSequence]; rct_xy16 bounds = boundsList[trackSequence]; - if (direction == 0 || direction == 2) { - sub_98196C(imageId, (sint8) offset.x, (sint8) offset.y, bounds.x, bounds.y, 3, height, get_current_rotation()); - } else { - sub_98196C(imageId, (sint8) offset.y, (sint8) offset.x, bounds.y, bounds.x, 3, height, get_current_rotation()); + + if (isSupported == false) { + sub_98197C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); } + else { + imageId = minature_railway_s_bend_left_tiles_track_floor[direction & 1][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + sub_98197C_rotated(direction, imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); + imageId = minature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; + sub_98199C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); + } if (direction == 0 || direction == 2) { if (trackSequence == 0) { paint_util_push_tunnel_left(height, TUNNEL_6); } - - switch (trackSequence) { - case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 1: metal_a_supports_paint_setup(3, 5, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - } } else { if (trackSequence == 3) { paint_util_push_tunnel_right(height, TUNNEL_6); } - - switch (trackSequence) { - case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 1: metal_a_supports_paint_setup(3, 6, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - } } int blockedSegments = 0; switch (trackSequence) { - case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B4; break; + case 0: blockedSegments = SEGMENTS_ALL; break; case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; - case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0; break; + case 3: blockedSegments = SEGMENTS_ALL; break; } paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction & 1), 0xFFFF, 0); @@ -1240,8 +1257,8 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: return paint_minature_railway_track_right_quarter_turn_5_tiles; - //case TRACK_ELEM_S_BEND_LEFT: - // return paint_minature_railway_track_s_bend_left; + case TRACK_ELEM_S_BEND_LEFT: + return paint_minature_railway_track_s_bend_left; //case TRACK_ELEM_S_BEND_RIGHT: // return paint_minature_railway_track_s_bend_right; From e532c99bff65cf8fd38149d9c220e2d1b907273f Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Wed, 5 Oct 2016 18:40:14 +0100 Subject: [PATCH 07/24] Fix more --- src/ride/transport/minature_railway.c | 218 +++++++++++++++++--------- 1 file changed, 147 insertions(+), 71 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 61e7ec8d22..4e74898b5f 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -48,6 +48,22 @@ enum SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2 = 23360, SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3 = 23361, SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4 = 23362, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0 = 23363, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23364, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23365, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3 = 23366, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23367, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23368, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23369, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23370, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23371, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23372, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23373, + SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23374, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0 = 23375, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1 = 23376, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2 = 23377, + SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3 = 23378, SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE = 23379, SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE = 23380, SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW = 23381, @@ -60,38 +76,20 @@ enum SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23388, SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23389, SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE = 23390, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0 = 23385, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23386, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23387, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3 = 23388, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23367, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23368, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23369, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23370, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23371, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23372, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23373, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23374, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0 = 23397, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1 = 23398, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2 = 23399, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3 = 23400, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0 = 23401, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1 = 23402, - + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0 = 23391, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1 = 23392, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 = 23393, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0 = 23394, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1 = 23395, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 = 23396, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0 = 23397, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1 = 23398, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 = 23399, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0 = 23400, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1 = 23401, + SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 = 23402, SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE = 23403, - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE = 23404, - - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 = 23403, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0 = 23404, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1 = 23405, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 = 23406, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0 = 23407, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1 = 23408, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 = 23409, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0 = 23410, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1 = 23411, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 = 23412, + SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE = 23404, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0 = 23413, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1 = 23414, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2 = 23415, @@ -871,88 +869,166 @@ static void paint_minature_railway_track_s_bend_left(uint8 rideIndex, uint8 trac paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE24C */ +static const sint8 s_bend_right_supports_type[4][4] = { + {0, 4, 2, 0}, + {1, 5, 3, 1}, + {0, 4, 2, 0}, + {1, 5, 3, 1} +}; + +static const uint32 minature_railway_s_bend_right_tiles_track_floor[2][4] = { + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG, + } +}; + +/** rct2: 0x008AD160 */ static void paint_minature_railway_track_s_bend_right(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { if (direction == 2 || direction == 3) { trackSequence = 3 - trackSequence; } + bool isSupported = wooden_a_supports_paint_setup(s_bend_right_supports_type[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + const rct_xy16 offsetList[] = { - {0, 6}, + {0, 2}, {0, 6}, {0, 0}, - {0, 6}, + {0, 2}, }; const rct_xy16 boundsList[] = { - {32, 20}, + {32, 27}, {32, 26}, {32, 26}, - {32, 20}, + {32, 27}, }; uint32 imageId = minature_railway_track_pieces_s_bend_right[direction&1][trackSequence] | gTrackColours[SCHEME_TRACK]; rct_xy16 offset = offsetList[trackSequence]; rct_xy16 bounds = boundsList[trackSequence]; - if (direction == 0 || direction == 2) { - sub_98196C(imageId, (sint8) offset.x, (sint8) offset.y, bounds.x, bounds.y, 3, height, get_current_rotation()); - } else { - sub_98196C(imageId, (sint8) offset.y, (sint8) offset.x, bounds.y, bounds.x, 3, height, get_current_rotation()); + if (isSupported == false) { + sub_98197C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); + } + else { + imageId = minature_railway_s_bend_right_tiles_track_floor[direction & 1][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + sub_98197C_rotated(direction, imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); + + imageId = minature_railway_track_pieces_s_bend_right[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; + sub_98199C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); } if (direction == 0 || direction == 2) { if (trackSequence == 0) { paint_util_push_tunnel_left(height, TUNNEL_6); } - - switch (trackSequence) { - case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 1: metal_a_supports_paint_setup(3, 8, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - } } else { if (trackSequence == 3) { paint_util_push_tunnel_right(height, TUNNEL_6); } - - switch (trackSequence) { - case 0: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 1: metal_a_supports_paint_setup(3, 7, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - case 3: metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); break; - } } int blockedSegments = 0; switch (trackSequence) { - case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC; break; + case 0: blockedSegments = SEGMENTS_ALL; break; case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; - case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8; break; + case 3: blockedSegments = SEGMENTS_ALL; break; } paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction & 1), 0xFFFF, 0); paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE29C */ +static const uint32 minature_railway_right_quarter_turn_3_tile_track_floor[4][3] = { + { + SPR_FLOOR_PLANKS_S_SEGMENT, + 0, + SPR_FLOOR_PLANKS_S_SEGMENT, + }, + { + SPR_FLOOR_PLANKS_W_SEGMENT, + 0, + SPR_FLOOR_PLANKS_W_SEGMENT, + }, + { + SPR_FLOOR_PLANKS_N_SEGMENT, + 0, + SPR_FLOOR_PLANKS_N_SEGMENT, + }, + { + SPR_FLOOR_PLANKS_E_SEGMENT, + 0, + SPR_FLOOR_PLANKS_E_SEGMENT, + } +}; + +const rct_xyz16 minature_railway_right_quarter_turn_3_tile_bound_offsets[4][3] = { + { + {0, 6, 0}, + {16, 16, 0}, + {6, 0, 0}, + }, + { + {6, 0, 0}, + {16, 0, 0}, + {0, 6, 0}, + }, + { + {0, 6, 0}, + {0, 0, 0}, + {6, 0, 0}, + }, + { + {6, 0, 0}, + {0, 16, 0}, + {0, 6, 0}, + } +}; + +/** rct2: 0x008AD1B0 */ static void paint_minature_railway_track_right_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, NULL, get_current_rotation()); - track_paint_util_right_quarter_turn_3_tiles_tunnel(height, direction, trackSequence, TUNNEL_6); - - switch (trackSequence) { - case 0: - case 3: - metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); - break; + bool isSupported = false; + if (trackSequence != 1 && trackSequence != 2) + { + const uint8 supportType[] = { 4, 5, 2, 3 }; + isSupported = wooden_a_supports_paint_setup(supportType[direction], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); } + if (isSupported == false) { + track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, NULL, get_current_rotation()); + } + else { + track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_SUPPORTS], minature_railway_right_quarter_turn_3_tile_track_floor, NULL, defaultRightQuarterTurn3TilesBoundLengths, minature_railway_right_quarter_turn_3_tile_bound_offsets, get_current_rotation()); + + static const sint8 right_quarter_turn_3_tiles_sprite_map[] = {0, -1, 1, 2}; + + int index = right_quarter_turn_3_tiles_sprite_map[trackSequence]; + + uint32 imageId = minature_railway_track_pieces_flat_quarter_turn_3_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = defaultRightQuarterTurn3TilesOffsets[direction][index]; + rct_xy16 boundsLength = defaultRightQuarterTurn3TilesBoundLengths[direction][index]; + rct_xyz16 boundsOffset = { .x = offset.x, .y = offset.y, .z = 0 }; + + sub_98199C(imageId, (sint8) offset.x, (sint8) offset.y, boundsLength.x, boundsLength.y, 3, height, boundsOffset.x, boundsOffset.y, height + boundsOffset.z, get_current_rotation()); + } + track_paint_util_right_quarter_turn_3_tiles_tunnel(height, direction, trackSequence, TUNNEL_6); int blockedSegments = 0; switch (trackSequence) { - case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC; break; + case 0: blockedSegments = SEGMENTS_ALL; break; case 2: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0; break; - case 3: blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8; break; + case 3: blockedSegments = SEGMENTS_ALL; break; } paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); @@ -1259,13 +1335,13 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_S_BEND_LEFT: return paint_minature_railway_track_s_bend_left; - //case TRACK_ELEM_S_BEND_RIGHT: - // return paint_minature_railway_track_s_bend_right; + case TRACK_ELEM_S_BEND_RIGHT: + return paint_minature_railway_track_s_bend_right; - //case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: - // return paint_minature_railway_track_left_quarter_turn_3_tiles; - //case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: - // return paint_minature_railway_track_right_quarter_turn_3_tiles; + case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: + return paint_minature_railway_track_left_quarter_turn_3_tiles; + case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: + return paint_minature_railway_track_right_quarter_turn_3_tiles; //case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: // return paint_minature_railway_track_left_eighth_to_diag; From 17b63410e78297875199023cf6b4bf690a2f3fe6 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Thu, 6 Oct 2016 18:21:26 +0100 Subject: [PATCH 08/24] Start left eigth --- src/ride/transport/minature_railway.c | 143 +++++++++++++------------- 1 file changed, 70 insertions(+), 73 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 4e74898b5f..43a7fa9659 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -106,22 +106,22 @@ enum SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1 = 23426, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2 = 23427, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3 = 23428, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0 = 23429, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1 = 23430, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2 = 23431, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3 = 23432, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0 = 23433, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1 = 23434, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2 = 23435, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3 = 23436, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0 = 23437, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1 = 23438, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2 = 23439, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3 = 23440, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0 = 23441, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1 = 23442, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2 = 23443, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3 = 23444, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0 = 23421, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1 = 23422, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2 = 23423, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3 = 23424, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0 = 23425, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1 = 23426, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2 = 23427, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3 = 23428, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0 = 23429, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1 = 23430, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2 = 23431, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3 = 23432, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0 = 23433, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1 = 23434, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2 = 23435, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3 = 23436, SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E = 23445, SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S = 23446, SPR_MINATURE_RAILWAY_DIAG_FLAT_E_W = 23447, @@ -273,7 +273,7 @@ static const uint32 minature_railway_track_pieces_flat_quarter_turn_3_tiles[4][3 } }; -static const uint32 ghost_train_track_pieces_right_eight_to_diag[4][4] = { +static const uint32 minature_railway_track_pieces_right_eight_to_diag[4][4] = { { SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1, @@ -300,7 +300,7 @@ static const uint32 ghost_train_track_pieces_right_eight_to_diag[4][4] = { }, }; -static const rct_xy16 ghost_train_track_pieces_right_eight_to_diag_bounds[4][4] = { +static const rct_xy16 minature_railway_track_pieces_right_eight_to_diag_bounds[4][4] = { { {32, 20}, {32, 16}, @@ -327,7 +327,7 @@ static const rct_xy16 ghost_train_track_pieces_right_eight_to_diag_bounds[4][4] }, }; -static const rct_xy16 ghost_train_track_pieces_right_eight_to_diag_offset[4][4] = { +static const rct_xy16 minature_railway_track_pieces_right_eight_to_diag_offset[4][4] = { { {0, 6}, {0, 16}, @@ -354,7 +354,7 @@ static const rct_xy16 ghost_train_track_pieces_right_eight_to_diag_offset[4][4] }, }; -static const uint32 ghost_train_track_pieces_left_eight_to_diag[4][4] = { +static const uint32 minature_railway_track_pieces_left_eight_to_diag[4][4] = { { SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1, @@ -381,57 +381,57 @@ static const uint32 ghost_train_track_pieces_left_eight_to_diag[4][4] = { }, }; -static const rct_xy16 ghost_train_track_pieces_left_eight_to_diag_bounds[4][4] = { +static const rct_xyz16 minature_railway_track_pieces_left_eight_to_diag_bounds[4][4] = { { - {32, 20}, - {32, 16}, - {16, 16}, - {16, 16}, + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {30, 30, 0}, }, { - {20, 32}, - {16, 34}, - {16, 16}, - {18, 16}, + {32, 32, 2}, + {16, 34, 2}, + {14, 14, 2}, + {34, 32, 0}, }, { - {32, 20}, - {32, 16}, - {16, 16}, - {16, 16}, + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {16, 16, 2}, }, { - {20, 32}, - {16, 32}, - {16, 16}, - {16, 16}, + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {32, 32, 0}, }, }; -static const rct_xy16 ghost_train_track_pieces_left_eight_to_diag_offset[4][4] = { +static const rct_xy16 minature_railway_track_pieces_left_eight_to_diag_offset[4][4] = { { - {0, 6}, + {0, 0}, {0, 0}, {0, 16}, - {16, 16}, + {0, 0}, }, { - {6, 0}, + {0, 0}, {0, 0}, {16, 16}, - {16, 0}, + {0, 0}, }, { - {0, 6}, + {0, 0}, {0, 16}, {16, 0}, {0, 0}, }, { - {6, 0}, + {0, 0}, {16, 0}, {0, 0}, - {0, 16}, + {0, 0}, }, }; @@ -1046,41 +1046,38 @@ static const sint8 paint_minature_railway_eighth_to_diag_index[] = {0, 1, 2, -1, /** rct2: 0x008AE31C */ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { + const uint8 supportType[4][5] = { + { 0, 0, 3, 5, 1 }, + { 1, 1, 4, 2, 0 }, + { 0, 0, 5, 3, 1 }, + { 1, 1, 2, 4, 0 } + }; + + bool isSupported = wooden_a_supports_paint_setup(supportType[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + uint32 imageId; sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { - imageId = ghost_train_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - const rct_xy16 offset = ghost_train_track_pieces_left_eight_to_diag_offset[direction][index]; - const rct_xy16 bounds = ghost_train_track_pieces_left_eight_to_diag_bounds[direction][index]; - sub_98197C(imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height, get_current_rotation()); - } - - switch (trackSequence) { - case 0: - metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); - break; - case 4: - if (direction == 0) metal_a_supports_paint_setup(3, 3, 0, height, gTrackColours[SCHEME_SUPPORTS]); - if (direction == 1) metal_a_supports_paint_setup(3, 1, 0, height, gTrackColours[SCHEME_SUPPORTS]); - if (direction == 2) metal_a_supports_paint_setup(3, 0, 0, height, gTrackColours[SCHEME_SUPPORTS]); - if (direction == 3) metal_a_supports_paint_setup(3, 2, 0, height, gTrackColours[SCHEME_SUPPORTS]); - break; + imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + const rct_xy16 offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; + const rct_xyz16 bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); } if (direction == 0 && trackSequence == 0) { - paint_util_push_tunnel_left(height, TUNNEL_0); + paint_util_push_tunnel_left(height, TUNNEL_6); } if (direction == 3 && trackSequence == 0) { - paint_util_push_tunnel_right(height, TUNNEL_0); + paint_util_push_tunnel_right(height, TUNNEL_6); } int blockedSegments; switch (trackSequence) { - case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC; break; - case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; - case 2: blockedSegments = SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; - case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_B8 | SEGMENT_C8; break; - case 4: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C8 | SEGMENT_C0 | SEGMENT_D4; break; + case 0: blockedSegments = SEGMENTS_ALL; break; + case 1: blockedSegments = SEGMENTS_ALL; break; + case 2: blockedSegments = SEGMENTS_ALL; break; + case 3: blockedSegments = SEGMENTS_ALL; break; + case 4: blockedSegments = SEGMENTS_ALL; break; } paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); @@ -1093,9 +1090,9 @@ static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, u uint32 imageId; sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { - imageId = ghost_train_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - const rct_xy16 offset = ghost_train_track_pieces_right_eight_to_diag_offset[direction][index]; - const rct_xy16 bounds = ghost_train_track_pieces_right_eight_to_diag_bounds[direction][index]; + imageId = minature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + const rct_xy16 offset = minature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; + const rct_xy16 bounds = minature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; sub_98197C(imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height, get_current_rotation()); } @@ -1343,8 +1340,8 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: return paint_minature_railway_track_right_quarter_turn_3_tiles; - //case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: - // return paint_minature_railway_track_left_eighth_to_diag; + case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: + return paint_minature_railway_track_left_eighth_to_diag; //case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: // return paint_minature_railway_track_right_eighth_to_diag; //case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: From abe0ee5a12c51c78ec88e5776d3b3b5e11c07e37 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Fri, 7 Oct 2016 08:41:59 +0100 Subject: [PATCH 09/24] Finish left eigth --- src/ride/transport/minature_railway.c | 125 ++++++++++++++++++++++++-- 1 file changed, 117 insertions(+), 8 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 43a7fa9659..fb45ac97e3 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1043,7 +1043,100 @@ static void paint_minature_railway_track_left_quarter_turn_3_tiles(uint8 rideInd static const sint8 paint_minature_railway_eighth_to_diag_index[] = {0, 1, 2, -1, 3}; -/** rct2: 0x008AE31C */ +static const uint32 minature_railway_floor_track_pieces_left_eight_to_diag[4][5] = { + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS + }, + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS + }, +}; + +static const rct_xyz16 minature_railway_track_floor_pieces_left_eight_to_diag_bounds[4][5] = { + { + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {16, 16, 0}, + {30, 30, 0}, + }, + { + {32, 32, 2}, + {16, 34, 2}, + {14, 14, 2}, + {16, 16, 0}, + {34, 32, 0}, + }, + { + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {16, 16, 0}, + {16, 16, 2}, + }, + { + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {16, 16, 0}, + {32, 32, 0}, + }, +}; + +static const rct_xy16 minature_railway_track_floor_pieces_left_eight_to_diag_offset[4][5] = { + { + {0, 0}, + {0, 0}, + {0, 16}, + {16, 0}, + {0, 0}, + }, + { + {0, 0}, + {0, 0}, + {16, 16}, + {0, 0}, + {0, 0}, + }, + { + {0, 0}, + {0, 16}, + {16, 0}, + {0, 16}, + {0, 0}, + }, + { + {0, 0}, + {16, 0}, + {0, 0}, + {16, 16}, + {0, 0}, + }, +}; + +/** rct2: 0x008AD1C0 */ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { const uint8 supportType[4][5] = { @@ -1056,12 +1149,28 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui bool isSupported = wooden_a_supports_paint_setup(supportType[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); uint32 imageId; - sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; - if (index >= 0) { - imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - const rct_xy16 offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; - const rct_xyz16 bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + if (isSupported == false) { + sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + if (index >= 0) { + imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + const rct_xy16 offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; + const rct_xyz16 bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); + } + } + else { + imageId = minature_railway_floor_track_pieces_left_eight_to_diag[direction][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + rct_xy16 offset = minature_railway_track_floor_pieces_left_eight_to_diag_offset[direction][trackSequence]; + rct_xyz16 bounds = minature_railway_track_floor_pieces_left_eight_to_diag_bounds[direction][trackSequence]; sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); + + sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + if (index >= 0) { + imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; + bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + sub_98199C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); + } } if (direction == 0 && trackSequence == 0) { @@ -1346,8 +1455,8 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in // return paint_minature_railway_track_right_eighth_to_diag; //case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: // return paint_minature_railway_track_left_eighth_to_orthogonal; - //case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: - // return paint_minature_railway_track_right_eighth_to_orthogonal; + case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: + return paint_minature_railway_track_right_eighth_to_orthogonal; //case TRACK_ELEM_DIAG_FLAT: // return paint_minature_railway_track_diag_flat; From d6151a3a6b9cc4a6d5d7729bbe1f2c6808c04107 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Fri, 7 Oct 2016 08:56:59 +0100 Subject: [PATCH 10/24] Add special case for right orth --- src/ride/transport/minature_railway.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index fb45ac97e3..188b0a39eb 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1146,8 +1146,12 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui { 1, 1, 2, 4, 0 } }; - bool isSupported = wooden_a_supports_paint_setup(supportType[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - + bool isSupported = false; + // Right eigth to orthogonal calls this function but we do not want to have a support call for it + // for track sequence 4 + if (trackSequence != 4 || mapElement->properties.track.type != TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL) { + isSupported = wooden_a_supports_paint_setup(supportType[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + } uint32 imageId; if (isSupported == false) { sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; From 2639114f159bc24b83dd18c7753cfeb6dd84fb65 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Sun, 9 Oct 2016 18:16:53 +0100 Subject: [PATCH 11/24] Add code from generator --- src/ride/transport/minature_railway.c | 594 ++++++++++++++++++++------ 1 file changed, 461 insertions(+), 133 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 188b0a39eb..9525ec020a 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1257,157 +1257,487 @@ static void paint_minature_railway_track_right_eighth_to_orthogonal(uint8 rideIn paint_minature_railway_track_left_eighth_to_diag(rideIndex, trackSequence, (direction + 3) % 4, height, mapElement); } -static void paint_minature_railway_util_diag_supports(uint8 direction, int height) +static void miniature_railway_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - switch (direction) { + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23440, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { case 0: - metal_a_supports_paint_setup(3, 1, 0, height, gTrackColours[SCHEME_SUPPORTS]); + wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23437, -16, -16, 32, 32, 2, height, -16, -16, height); break; case 1: - metal_a_supports_paint_setup(3, 0, 0, height, gTrackColours[SCHEME_SUPPORTS]); + wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - metal_a_supports_paint_setup(3, 2, 0, height, gTrackColours[SCHEME_SUPPORTS]); + wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 3: - metal_a_supports_paint_setup(3, 3, 0, height, gTrackColours[SCHEME_SUPPORTS]); + wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23439, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23438, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); + break; } } -static const bool minature_railway_diag_image_segment[][4] = { - {false, true, false, false}, - {false, false, false, true}, - {false, false, true, false}, - {true, false, false, false}, -}; - -static const uint8 minature_railway_diag_support_segment[] = {1, 0, 2, 3}; - -static const int minature_railway_diag_blocked_segments[] = { - SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4 | SEGMENT_BC, - SEGMENT_C4 | SEGMENT_CC | SEGMENT_C8 | SEGMENT_B4, - SEGMENT_D0 | SEGMENT_C4 | SEGMENT_C0 | SEGMENT_D4, - SEGMENT_D0 | SEGMENT_C4 | SEGMENT_B8 | SEGMENT_C8 -}; - -/** rct2: 0x008AE2AC */ -static void paint_minature_railway_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_flat[direction] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23452, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23449, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 1: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 3: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23451, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23450, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; } - - if (trackSequence == 3) { - metal_a_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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 + 32, 0x20); } -/** rct2: 0x008AE2DC */ -static void paint_minature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23444, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23441, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 1: + wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 3: + wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23443, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23442, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); + break; } - - if (trackSequence == 3) { - metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 8, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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: 0x008AE2BC */ -static void paint_minature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23448, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23445, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 1: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 3: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23447, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23446, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; } - - if (trackSequence == 3) { - metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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); } -/** rct2: 0x008AE2CC */ -static void paint_minature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23450, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23451, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 1: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 3: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23449, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23452, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; } - - if (trackSequence == 3) { - metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 4, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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: 0x008AE30C */ -static void paint_minature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void miniature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_25_deg_up[(direction + 2) % 4] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23446, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23447, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 1: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 3: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23445, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23448, -16, -16, 32, 32, 2, height, -16, -16, height + 8); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + break; } - - if (trackSequence == 3) { - metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 8, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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: 0x008AE2EC */ -static void paint_minature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void miniature_railway_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_25_deg_up_to_flat[(direction + 2) % 4] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + switch (trackSequence) { + case 0: + switch (direction) { + case 3: + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23442, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + break; + case 1: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23443, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 1: + wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 3: + wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); + break; + case 2: + switch (direction) { + case 0: + wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 2: + wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23441, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); + break; + case 3: + switch (direction) { + case 0: + case 2: + wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + case 1: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23444, -16, -16, 32, 32, 2, height, -16, -16, height); + break; + case 3: + wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + break; + } + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); + break; } - - if (trackSequence == 3) { - metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 4, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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: 0x008AE2FC */ -static void paint_minature_railway_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) -{ - if (minature_railway_diag_image_segment[direction][trackSequence]) { - uint32 imageId = minature_railway_track_pieces_diag_flat_to_25_deg_up[(direction + 2) % 4] | gTrackColours[SCHEME_TRACK]; - sub_98197C(imageId, -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); - } - - if (trackSequence == 3) { - metal_b_supports_paint_setup(3, minature_railway_diag_support_segment[direction], 0, height, gTrackColours[SCHEME_SUPPORTS]); - } - - int blockedSegments = minature_railway_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); } /** @@ -1462,22 +1792,20 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: return paint_minature_railway_track_right_eighth_to_orthogonal; - //case TRACK_ELEM_DIAG_FLAT: - // return paint_minature_railway_track_diag_flat; - - //case TRACK_ELEM_DIAG_25_DEG_UP: - // return paint_minature_railway_track_diag_25_deg_up; - //case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP: - // return paint_minature_railway_track_diag_flat_to_25_deg_up; - //case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: - // return paint_minature_railway_track_diag_25_deg_up_to_flat; - - //case TRACK_ELEM_DIAG_25_DEG_DOWN: - // return paint_minature_railway_track_diag_25_deg_down; - //case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN: - // return paint_minature_railway_track_diag_flat_to_25_deg_down; - //case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT: - // return paint_minature_railway_track_diag_25_deg_down_to_flat; + case TRACK_ELEM_DIAG_FLAT: + return miniature_railway_track_diag_flat; + case TRACK_ELEM_DIAG_25_DEG_UP: + return miniature_railway_track_diag_25_deg_up; + case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP: + return miniature_railway_track_diag_flat_to_25_deg_up; + case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: + return miniature_railway_track_diag_25_deg_up_to_flat; + case TRACK_ELEM_DIAG_25_DEG_DOWN: + return miniature_railway_track_diag_25_deg_down; + case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN: + return miniature_railway_track_diag_flat_to_25_deg_down; + case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT: + return miniature_railway_track_diag_25_deg_down_to_flat; } return NULL; From 03aa9baaf3098e9980475ef3110eef95a9f555b9 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 11 Oct 2016 18:41:42 +0100 Subject: [PATCH 12/24] Fix right eigth --- src/ride/transport/minature_railway.c | 67 +++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 9525ec020a..2757e387b1 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -435,6 +435,60 @@ static const rct_xy16 minature_railway_track_pieces_left_eight_to_diag_offset[4] }, }; +static const rct_xyz16 minature_railway_track_pieces_right_eight_to_orthog_bounds[4][4] = { + { + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {14, 14, 2}, + }, + { + {32, 32, 2}, + {16, 34, 2}, + {14, 14, 2}, + {18, 16, 2}, + }, + { + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {16, 16, 2}, + }, + { + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {16, 16, 2}, + }, +}; + +static const rct_xy16 minature_railway_track_pieces_right_eight_to_orthog_offset[4][4] = { + { + {0, 0}, + {0, 0}, + {0, 16}, + {16, 16}, + }, + { + {0, 0}, + {0, 0}, + {16, 16}, + {16, 0}, + }, + { + {0, 0}, + {0, 16}, + {16, 0}, + {0, 0}, + }, + { + {0, 0}, + {16, 0}, + {0, 0}, + {0, 16}, + }, +}; + static const uint32 minature_railway_track_pieces_diag_flat[4] = { SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E, SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S, @@ -1147,9 +1201,10 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui }; bool isSupported = false; + bool isRightEighthToOrthog = mapElement->properties.track.type == TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL; // Right eigth to orthogonal calls this function but we do not want to have a support call for it // for track sequence 4 - if (trackSequence != 4 || mapElement->properties.track.type != TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL) { + if (trackSequence != 4 || !isRightEighthToOrthog) { isSupported = wooden_a_supports_paint_setup(supportType[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); } uint32 imageId; @@ -1157,8 +1212,12 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - const rct_xy16 offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; - const rct_xyz16 bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + rct_xy16 offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; + rct_xyz16 bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + if (isRightEighthToOrthog) { + bounds = minature_railway_track_pieces_right_eight_to_orthog_bounds[direction][index]; + offset = minature_railway_track_pieces_right_eight_to_orthog_offset[direction][index]; + } sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); } } @@ -1249,7 +1308,7 @@ static void paint_minature_railway_track_left_eighth_to_orthogonal(uint8 rideInd paint_minature_railway_track_right_eighth_to_diag(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } -/** rct2: 0x008AE34C */ +/** rct2: 0x008AD1F0 */ static void paint_minature_railway_track_right_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { const uint8 map[] = {4, 2, 3, 1, 0}; From 67d3ccc7a75b8d997a78a5b9eadcbe9cb1f3bcb9 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Wed, 12 Oct 2016 19:38:11 +0100 Subject: [PATCH 13/24] Fix right eigth --- src/ride/transport/minature_railway.c | 320 +++++++++++++++++++------- 1 file changed, 236 insertions(+), 84 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 2757e387b1..1acf9735f1 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -90,22 +90,22 @@ enum SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 = 23402, SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE = 23403, SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE = 23404, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0 = 23413, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1 = 23414, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2 = 23415, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3 = 23416, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0 = 23417, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1 = 23418, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2 = 23419, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3 = 23420, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0 = 23421, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1 = 23422, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2 = 23423, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3 = 23424, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0 = 23425, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1 = 23426, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2 = 23427, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3 = 23428, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0 = 23405, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1 = 23406, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2 = 23407, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3 = 23408, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0 = 23409, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1 = 23410, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2 = 23411, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3 = 23412, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0 = 23413, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1 = 23414, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2 = 23415, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3 = 23416, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0 = 23417, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1 = 23418, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2 = 23419, + SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3 = 23420, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0 = 23421, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1 = 23422, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2 = 23423, @@ -300,57 +300,57 @@ static const uint32 minature_railway_track_pieces_right_eight_to_diag[4][4] = { }, }; -static const rct_xy16 minature_railway_track_pieces_right_eight_to_diag_bounds[4][4] = { +static const rct_xyz16 minature_railway_track_pieces_right_eight_to_diag_bounds[4][4] = { { - {32, 20}, - {32, 16}, - {16, 16}, - {16, 16}, + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {32, 32, 0}, }, { - {20, 32}, - {16, 32}, - {16, 16}, - {16, 16}, + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {16, 16, 2}, }, { - {32, 20}, - {34, 16}, - {28, 28}, - {16, 18}, + {32, 32, 2}, + {34, 16, 2}, + {28, 28, 2}, + {32, 34, 0}, }, { - {20, 32}, - {16, 32}, - {16, 16}, - {16, 16}, + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {30, 30, 0}, }, }; static const rct_xy16 minature_railway_track_pieces_right_eight_to_diag_offset[4][4] = { { - {0, 6}, + {0, 0}, {0, 16}, {0, 0}, - {16, 0}, + {0, 0}, }, { - {6, 0}, + {0, 0}, {16, 0}, {0, 16}, {0, 0}, }, { - {0, 6}, + {0, 0}, {0, 0}, {4, 4}, - {0, 16}, + {0, 0}, }, { - {6, 0}, + {0, 0}, {0, 0}, {16, 0}, - {16, 16}, + {0, 0}, }, }; @@ -489,6 +489,60 @@ static const rct_xy16 minature_railway_track_pieces_right_eight_to_orthog_offset }, }; +static const rct_xyz16 minature_railway_track_pieces_left_eight_to_orthog_bounds[4][4] = { + { + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {16, 16, 2}, + }, + { + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {16, 16, 2}, + }, + { + {32, 32, 2}, + {34, 16, 2}, + {28, 28, 2}, + {16, 18, 2}, + }, + { + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {14, 14, 2}, + }, +}; + +static const rct_xy16 minature_railway_track_pieces_left_eight_to_orthog_offset[4][4] = { + { + {0, 0}, + {0, 16}, + {0, 0}, + {16, 0}, + }, + { + {0, 0}, + {16, 0}, + {0, 16}, + {0, 0}, + }, + { + {0, 0}, + {0, 0}, + {4, 4}, + {0, 16}, + }, + { + {0, 0}, + {0, 0}, + {16, 0}, + {16, 16}, + }, +}; + static const uint32 minature_railway_track_pieces_diag_flat[4] = { SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E, SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S, @@ -1243,60 +1297,158 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui paint_util_push_tunnel_right(height, TUNNEL_6); } - int blockedSegments; - switch (trackSequence) { - case 0: blockedSegments = SEGMENTS_ALL; break; - case 1: blockedSegments = SEGMENTS_ALL; break; - case 2: blockedSegments = SEGMENTS_ALL; break; - case 3: blockedSegments = SEGMENTS_ALL; break; - case 4: blockedSegments = SEGMENTS_ALL; break; - } - - paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE32C */ +static const uint32 minature_railway_floor_track_pieces_right_eight_to_diag[4][5] = { + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS + }, + { + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_S_SEGMENT, + SPR_FLOOR_PLANKS_N_SEGMENT, + SPR_FLOOR_PLANKS_90_DEG + }, + { + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_W_SEGMENT, + SPR_FLOOR_PLANKS_E_SEGMENT, + SPR_FLOOR_PLANKS + }, +}; + +static const rct_xyz16 minature_railway_track_floor_pieces_right_eight_to_diag_bounds[4][5] = { + { + {32, 32, 2}, + {32, 16, 2}, + {16, 16, 2}, + {16, 16, 0}, + {32, 32, 0}, + }, + { + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {16, 16, 0}, + {16, 16, 2}, + }, + { + {32, 32, 2}, + {34, 16, 2}, + {28, 28, 2}, + {16, 16, 0}, + {32, 34, 0}, + }, + { + {32, 32, 2}, + {16, 32, 2}, + {16, 16, 2}, + {16, 16, 0}, + {30, 30, 0}, + }, +}; + +static const rct_xy16 minature_railway_track_floor_pieces_right_eight_to_diag_offset[4][5] = { + { + {0, 0}, + {0, 16}, + {0, 0}, + {16, 16}, + {0, 0}, + }, + { + {0, 0}, + {16, 0}, + {0, 16}, + {16, 0}, + {0, 0}, + }, + { + {0, 0}, + {0, 0}, + {4, 4}, + {0, 0}, + {0, 0}, + }, + { + {0, 0}, + {0, 0}, + {16, 0}, + {0, 16}, + {0, 0}, + }, +}; + +/** rct2: 0x008AD1D0 */ static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - uint32 imageId; - sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; - if (index >= 0) { - imageId = minature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - const rct_xy16 offset = minature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; - const rct_xy16 bounds = minature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; - sub_98197C(imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height, get_current_rotation()); + const uint8 supportType[4][5] = { + { 0, 0, 2, 4, 1 }, + { 1, 1, 3, 5, 0 }, + { 0, 0, 4, 2, 1 }, + { 1, 1, 5, 3, 0 } + }; + + bool isSupported = false; + bool isLeftEighthToOrthog = mapElement->properties.track.type == TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL; + // Right eigth to orthogonal calls this function but we do not want to have a support call for it + // for track sequence 4 + if (trackSequence != 4 || !isLeftEighthToOrthog) { + isSupported = wooden_a_supports_paint_setup(supportType[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); } - switch (trackSequence) { - case 0: - metal_a_supports_paint_setup(3, 4, 0, height, gTrackColours[SCHEME_SUPPORTS]); - break; - case 4: - if (direction == 0) metal_a_supports_paint_setup(3, 1, 0, height, gTrackColours[SCHEME_SUPPORTS]); - if (direction == 1) metal_a_supports_paint_setup(3, 0, 0, height, gTrackColours[SCHEME_SUPPORTS]); - if (direction == 2) metal_a_supports_paint_setup(3, 2, 0, height, gTrackColours[SCHEME_SUPPORTS]); - if (direction == 3) metal_a_supports_paint_setup(3, 3, 0, height, gTrackColours[SCHEME_SUPPORTS]); - break; + uint32 imageId; + if (isSupported == false) { + sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + if (index >= 0) { + imageId = minature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = minature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; + rct_xyz16 bounds = minature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; + if (isLeftEighthToOrthog) { + bounds = minature_railway_track_pieces_left_eight_to_orthog_bounds[direction][index]; + offset = minature_railway_track_pieces_left_eight_to_orthog_offset[direction][index]; + } + sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); + } + } + else { + imageId = minature_railway_floor_track_pieces_right_eight_to_diag[direction][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + rct_xy16 offset = minature_railway_track_floor_pieces_right_eight_to_diag_offset[direction][trackSequence]; + rct_xyz16 bounds = minature_railway_track_floor_pieces_right_eight_to_diag_bounds[direction][trackSequence]; + sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); + + sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + if (index >= 0) { + imageId = minature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + offset = minature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; + bounds = minature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; + sub_98199C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); + } } if (direction == 0 && trackSequence == 0) { - paint_util_push_tunnel_left(height, TUNNEL_0); + paint_util_push_tunnel_left(height, TUNNEL_6); } if (direction == 3 && trackSequence == 0) { - paint_util_push_tunnel_right(height, TUNNEL_0); + paint_util_push_tunnel_right(height, TUNNEL_6); } - int blockedSegments; - switch (trackSequence) { - case 0: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC; break; - case 1: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_C0 | SEGMENT_D4 | SEGMENT_BC; break; - case 2: blockedSegments = SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_B4; break; - case 3: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_C0 | SEGMENT_D4; break; - case 4: blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B8 | SEGMENT_C8 | SEGMENT_D4; break; - } - - paint_util_set_segment_support_height(paint_util_rotate_segments(blockedSegments, direction), 0xFFFF, 0); + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); paint_util_set_general_support_height(height + 32, 0x20); } @@ -1844,10 +1996,10 @@ TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, in case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: return paint_minature_railway_track_left_eighth_to_diag; - //case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: - // return paint_minature_railway_track_right_eighth_to_diag; - //case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: - // return paint_minature_railway_track_left_eighth_to_orthogonal; + case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: + return paint_minature_railway_track_right_eighth_to_diag; + case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: + return paint_minature_railway_track_left_eighth_to_orthogonal; case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: return paint_minature_railway_track_right_eighth_to_orthogonal; From 634d7d200aa0c22573f9af965b079f63a7bf7ac3 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 01:09:13 +0200 Subject: [PATCH 14/24] Update with new generated code --- src/ride/transport/minature_railway.c | 102 +++++++++++++------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 1acf9735f1..10c7b6931e 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -574,7 +574,6 @@ static const uint32 minature_railway_track_pieces_diag_25_deg_up[4] = { /** rct2: 0x008AD0C0 */ static void paint_minature_railway_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; bool isSupported = wooden_a_supports_paint_setup(direction & 1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); uint32 imageId; @@ -618,10 +617,9 @@ static void paint_minature_railway_station(uint8 rideIndex, uint8 trackSequence, paint_util_set_general_support_height(height + 30, 0x20); } -/** rct2: 0x008AE1BC */ +/** rct2: 0x008AD0D0 */ static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; uint32 imageId = minature_railway_track_pieces_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; @@ -640,10 +638,9 @@ static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackS paint_util_set_general_support_height(height + 56, 0x20); } -/** rct2: 0x008AE1CC */ +/** rct2: 0x008AD0E0 */ static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; uint32 imageId = minature_railway_track_pieces_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; @@ -662,10 +659,9 @@ static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint paint_util_set_general_support_height(height + 48, 0x20); } -/** rct2: 0x008AE1DC */ +/** rct2: 0x008AD0F0 */ static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - rct_xy16 position = {gPaintMapPosition.x, gPaintMapPosition.y}; uint32 imageId = minature_railway_track_pieces_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; @@ -684,19 +680,19 @@ static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint paint_util_set_general_support_height(height + 40, 0x20); } -/** rct2: 0x008AE1EC */ +/** rct2: 0x008AD100 */ static void paint_minature_railway_track_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { paint_minature_railway_track_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } -/** rct2: 0x008AE1FC */ +/** rct2: 0x008AD110 */ static void paint_minature_railway_track_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { paint_minature_railway_track_25_deg_up_to_flat(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } -/** rct2: 0x008AE20C */ +/** rct2: 0x008AD120 */ static void paint_minature_railway_track_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { paint_minature_railway_track_flat_to_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); @@ -889,7 +885,7 @@ static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIn paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE21C */ +/** rct2: 0x008AD130 */ static void paint_minature_railway_track_left_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; @@ -1143,7 +1139,7 @@ static void paint_minature_railway_track_right_quarter_turn_3_tiles(uint8 rideIn paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE28C */ +/** rct2: 0x008AD1A0 */ static void paint_minature_railway_track_left_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) {trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; paint_minature_railway_track_right_quarter_turn_3_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); @@ -1452,19 +1448,17 @@ static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, u paint_util_set_general_support_height(height + 32, 0x20); } -/** rct2: 0x008AE33C */ +/** rct2: 0x008AD1E0 */ static void paint_minature_railway_track_left_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - const uint8 map[] = {4, 2, 3, 1, 0}; - trackSequence = map[trackSequence]; + trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; paint_minature_railway_track_right_eighth_to_diag(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } /** rct2: 0x008AD1F0 */ static void paint_minature_railway_track_right_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - const uint8 map[] = {4, 2, 3, 1, 0}; - trackSequence = map[trackSequence]; + trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; paint_minature_railway_track_left_eighth_to_diag(rideIndex, trackSequence, (direction + 3) % 4, height, mapElement); } @@ -1551,17 +1545,17 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS case 1: switch (direction) { case 0: - wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23449, -16, -16, 32, 32, 2, height, -16, -16, height + 8); break; case 1: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 3: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1570,17 +1564,17 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS case 2: switch (direction) { case 0: - wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 1: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23451, -16, -16, 32, 32, 2, height, -16, -16, height + 8); break; case 3: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1590,14 +1584,14 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS switch (direction) { case 0: case 2: - wooden_a_supports_paint_setup(0, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_a_supports_paint_setup(0, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 1: - wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23450, -16, -16, 32, 32, 2, height, -16, -16, height); break; case 3: - wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1606,6 +1600,7 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS } } +/** rct2: 0x008AD210 */ static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { switch (trackSequence) { @@ -1675,6 +1670,7 @@ static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint } } +/** rct2: 0x008AD220 */ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { switch (trackSequence) { @@ -1689,17 +1685,17 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint case 1: switch (direction) { case 0: - wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23445, -16, -16, 32, 32, 2, height, -16, -16, height + 8); break; case 1: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 3: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1708,17 +1704,17 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint case 2: switch (direction) { case 0: - wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 1: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23447, -16, -16, 32, 32, 2, height, -16, -16, height + 8); break; case 3: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1744,6 +1740,7 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint } } +/** rct2: 0x008AD260 */ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { switch (trackSequence) { @@ -1758,17 +1755,17 @@ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trac case 1: switch (direction) { case 0: - wooden_a_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23451, -16, -16, 32, 32, 2, height, -16, -16, height); break; case 1: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 3: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1777,17 +1774,17 @@ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trac case 2: switch (direction) { case 0: - wooden_a_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 1: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23449, -16, -16, 32, 32, 2, height, -16, -16, height + 8); break; case 3: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1813,6 +1810,7 @@ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trac } } +/** rct2: 0x008AD240 */ static void miniature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { switch (trackSequence) { @@ -1827,17 +1825,17 @@ static void miniature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, ui case 1: switch (direction) { case 0: - wooden_a_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23447, -16, -16, 32, 32, 2, height, -16, -16, height); break; case 1: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 3: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); @@ -1846,17 +1844,17 @@ static void miniature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, ui case 2: switch (direction) { case 0: - wooden_a_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 1: - wooden_a_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; case 2: - wooden_a_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23445, -16, -16, 32, 32, 2, height, -16, -16, height + 8); break; case 3: - wooden_a_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); + wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); break; } paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); From d8b7bf4b0c4524096cae3b18767d91c34ecad61e Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 12:54:40 +0200 Subject: [PATCH 15/24] Implement diagonal pieces --- src/ride/transport/minature_railway.c | 588 +++++++++++++------------- 1 file changed, 292 insertions(+), 296 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 10c7b6931e..209284324f 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -122,22 +122,22 @@ enum SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1 = 23434, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2 = 23435, SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3 = 23436, - SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E = 23445, - SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S = 23446, - SPR_MINATURE_RAILWAY_DIAG_FLAT_E_W = 23447, - SPR_MINATURE_RAILWAY_DIAG_FLAT_S_N = 23448, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_W_E = 23449, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_N_S = 23450, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_E_W = 23451, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_S_N = 23452, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_W_E = 23453, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_N_S = 23454, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_E_W = 23455, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_S_N = 23456, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_W_E = 23457, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_N_S = 23458, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_E_W = 23459, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_S_N = 23460, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_W_E = 23437, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_N_S = 23438, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_E_W = 23439, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_S_N = 23440, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_W_E = 23441, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_N_S = 23442, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_E_W = 23443, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_S_N = 23444, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_W_E = 23445, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_N_S = 23446, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_E_W = 23447, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_S_N = 23448, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_W_E = 23449, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_N_S = 23450, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_E_W = 23451, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_S_N = 23452, }; static const uint32 minature_railway_track_floor[4] = { @@ -543,32 +543,32 @@ static const rct_xy16 minature_railway_track_pieces_left_eight_to_orthog_offset[ }, }; -static const uint32 minature_railway_track_pieces_diag_flat[4] = { - SPR_MINATURE_RAILWAY_DIAG_FLAT_W_E, - SPR_MINATURE_RAILWAY_DIAG_FLAT_N_S, - SPR_MINATURE_RAILWAY_DIAG_FLAT_E_W, - SPR_MINATURE_RAILWAY_DIAG_FLAT_S_N, +static const uint32 miniature_railway_track_pieces_diag_flat[4] = { + SPR_MINIATURE_RAILWAY_DIAG_FLAT_W_E, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_N_S, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_E_W, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_S_N, }; -static const uint32 minature_railway_track_pieces_diag_flat_to_25_deg_up[4] = { - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_W_E, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_N_S, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_E_W, - SPR_MINATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_S_N, +static const uint32 miniature_railway_track_pieces_diag_flat_to_25_deg_up[4] = { + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_W_E, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_N_S, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_E_W, + SPR_MINIATURE_RAILWAY_DIAG_FLAT_TO_25_DEG_UP_S_N, }; -static const uint32 minature_railway_track_pieces_diag_25_deg_up_to_flat[4] = { - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_W_E, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_N_S, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_E_W, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_S_N, +static const uint32 miniature_railway_track_pieces_diag_25_deg_up_to_flat[4] = { + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_W_E, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_N_S, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_E_W, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_TO_FLAT_S_N, }; -static const uint32 minature_railway_track_pieces_diag_25_deg_up[4] = { - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_W_E, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_N_S, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_E_W, - SPR_MINATURE_RAILWAY_DIAG_25_DEG_UP_S_N, +static const uint32 miniature_railway_track_pieces_diag_25_deg_up[4] = { + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_W_E, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_N_S, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_E_W, + SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_S_N, }; /** rct2: 0x008AD0C0 */ @@ -1462,282 +1462,278 @@ static void paint_minature_railway_track_right_eighth_to_orthogonal(uint8 rideIn paint_minature_railway_track_left_eighth_to_diag(rideIndex, trackSequence, (direction + 3) % 4, height, mapElement); } -static void miniature_railway_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) -{ - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23440, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23437, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 1: - wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 32, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23439, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 32, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23438, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 32, 0x20); - break; +static const bool monorail_diag_image_segment[][4] = { + {false, true, false, false}, + {false, false, false, true}, + {false, false, true, false}, + {true, false, false, false}, +}; + +enum { + SUPPORT_PLAIN = 0, + SUPPORT_PLAIN_90_DEG = 1, + SUPPORT_PLAIN_N = 2, + SUPPORT_PLAIN_E = 3, + SUPPORT_PLAIN_S = 4, + SUPPORT_PLAIN_W = 5, +}; + +static const sint16 monorail_diag_support_types[][4] = { + {-1, SUPPORT_PLAIN_N, SUPPORT_PLAIN_S, SUPPORT_PLAIN}, + {-1, SUPPORT_PLAIN_E, SUPPORT_PLAIN_W, SUPPORT_PLAIN_90_DEG}, + {-1, SUPPORT_PLAIN_S, SUPPORT_PLAIN_N, SUPPORT_PLAIN}, + {-1, SUPPORT_PLAIN_W, SUPPORT_PLAIN_E, SUPPORT_PLAIN_90_DEG}, +}; + +typedef struct floor_desc { + uint32 image_id; + rct_xy16 bound_size; + rct_xy16 bound_offset; +} floor_desc; + +static const floor_desc floors[] = { + {SPR_FLOOR_PLANKS, {32, 32}, {0, 0}}, + {SPR_FLOOR_PLANKS_90_DEG, {32, 32}, {0, 0}}, // -16,-16(1:3) + {SPR_FLOOR_PLANKS_N_SEGMENT, {32, 32}, {-16, -16}}, + {SPR_FLOOR_PLANKS_E_SEGMENT, {16, 16}, {0, 16}}, + {SPR_FLOOR_PLANKS_S_SEGMENT, {16, 16}, {16, 16}}, + {SPR_FLOOR_PLANKS_W_SEGMENT, {16, 16}, {16, 0}}, +}; + +/** rct2: 0x008AD200 */ +static void miniature_railway_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element *mapElement) { + + bool isSupported = false; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + isSupported = wooden_a_supports_paint_setup(supportType, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + uint32 imageId = miniature_railway_track_pieces_diag_flat[direction]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + + if (isSupported) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height, + floorBoundOffset.x, floorBoundOffset.y, height, + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 32, 0x20); } +enum { + WOOD_A = 0, + WOOD_B = 1, +}; + +static bool wooden_supports_paint_setup(int woodType, int supportType, int special, int height, uint32 imageColourFlags, bool *underground) { + switch (woodType) { + case WOOD_A: + return wooden_a_supports_paint_setup(supportType, special, height, imageColourFlags, underground); + + case WOOD_B: + return wooden_b_supports_paint_setup(supportType, special, height, imageColourFlags, underground); + } + + return false; +} + +/** rct2: 0x008AD230 */ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23452, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23449, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 1: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23451, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 3: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23450, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; + // TODO: The supports are inconsistent for different rotations + + sint8 supportFunction = WOOD_B; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + if (supportType == SUPPORT_PLAIN || supportType == SUPPORT_PLAIN_90_DEG) { + supportFunction = WOOD_A; } + + sint8 heightDiffs[] = {+8, -8, +8, -8}; + sint8 heightDiff = heightDiffs[direction]; + if (trackSequence == 3) { + heightDiff = 8; + } + + bool hasSupports = false; + + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + hasSupports = wooden_supports_paint_setup(supportFunction, supportType, 0, height + heightDiff, gTrackColours[SCHEME_SUPPORTS], NULL); + } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + const sint8 offsetsB[4][4][2] = { + {{0, 0}, {+8, +16}, {+8, +8}, {+8, +8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {+8, +8}}, + {{0, 0}, {+8, +8}, {+8, +16}, {+8, +8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {+8, +8}}, + }; + + uint32 imageId = miniature_railway_track_pieces_diag_25_deg_up[direction]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + static const sint8 offsetB[] = {+8, 0, +8, +8}; + if (hasSupports) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height + offsetsB[direction][trackSequence][0], + floorBoundOffset.x, floorBoundOffset.y, height + offsetsB[direction][trackSequence][1], + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + offsetB[direction], get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + offsetB[direction], get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); + return; } /** rct2: 0x008AD210 */ static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23444, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23441, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 1: - wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 48, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23443, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 48, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23442, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 48, 0x20); - break; + // TODO: The supports are inconsistent for different rotations + + sint8 supportFunction = WOOD_B; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + if (supportType == SUPPORT_PLAIN || supportType == SUPPORT_PLAIN_90_DEG) { + supportFunction = WOOD_A; } + + sint8 heightDiffs[] = {+8, -8, +8, -8}; + sint8 heightDiff = heightDiffs[direction]; + if (trackSequence == 3) { + heightDiff = 8; + } + + bool hasSupports = false; + + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + hasSupports = wooden_a_supports_paint_setup(supportType, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); + } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + uint32 imageId = miniature_railway_track_pieces_diag_flat_to_25_deg_up[direction]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + + if (hasSupports) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height, + floorBoundOffset.x, floorBoundOffset.y, height, + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); } /** rct2: 0x008AD220 */ -static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) -{ - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23448, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23445, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 1: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23447, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 3: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23446, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; +static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element *mapElement) { + const sint8 supportOffsets[][4] = { + {0, +8, +8, +8}, + {0, -8, -8, 0}, + {0, +8, +8, +8}, + {0, -8, -8, +8}, + }; + + sint8 supportFunction = WOOD_B; + if (trackSequence == 3) { + supportFunction = WOOD_A; } + + bool hasSupports = false; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + hasSupports = wooden_supports_paint_setup(supportFunction, supportType, 0, height + supportOffsets[direction][trackSequence], gTrackColours[SCHEME_SUPPORTS], NULL); + } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + uint32 imageId = miniature_railway_track_pieces_diag_25_deg_up_to_flat[direction]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + + const sint8 railOffsets[] = {+8, 0, +8, +8}; + + if (hasSupports) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height, + floorBoundOffset.x, floorBoundOffset.y, height, + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); } /** rct2: 0x008AD260 */ From 564139b29ba5410d4a8354670994820e5cc77640 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 12:55:43 +0200 Subject: [PATCH 16/24] Test supports --- test/testpaint/intercept.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/test/testpaint/intercept.c b/test/testpaint/intercept.c index f2dda46f02..12e546b2eb 100644 --- a/test/testpaint/intercept.c +++ b/test/testpaint/intercept.c @@ -37,6 +37,7 @@ extern const utf8string RideNames[91]; extern const utf8string TrackNames[256]; extern const utf8string FlatTrackNames[256]; +static bool _woodenSupports; static uint8 callCount; static function_call calls[256]; @@ -172,7 +173,7 @@ bool wooden_a_supports_paint_setup(int supportType, int special, int height, uin calls[callCount] = call; callCount++; - return false; + return _woodenSupports; } bool wooden_b_supports_paint_setup(int supportType, int special, int height, uint32 imageColourFlags, bool *underground) { @@ -189,7 +190,7 @@ bool wooden_b_supports_paint_setup(int supportType, int special, int height, uin calls[callCount] = call; callCount++; - return false; + return _woodenSupports; } static void check_support_height() @@ -570,6 +571,12 @@ static bool testTrackElement(uint8 rideType, uint8 trackType, utf8string error, TRACK_PAINT_FUNCTION_GETTER newPaintGetter = RideTypeTrackPaintFunctions[rideType]; int sequenceCount = getTrackSequenceCount(rideType, trackType); + for (int supports = 0; supports < 2; supports++) { + if (supports == 0) { + _woodenSupports = false; + } else { + _woodenSupports = true; + } for (int inverted = 0; inverted < 2; inverted++) { if (inverted == 0) { mapElement.properties.track.colour &= ~TRACK_ELEMENT_COLOUR_FLAG_INVERTED; @@ -674,6 +681,7 @@ static bool testTrackElement(uint8 rideType, uint8 trackType, utf8string error, } } } + } bool segmentSuccess = testSupportSegments(rideType, trackType); if (!segmentSuccess) { @@ -761,16 +769,16 @@ static int intercept_draw_9c(uint32 eax, uint32 ebx, uint32 ecx, uint32 edx, uin static uint32 intercept_wooden_a_supports(uint32 eax, uint32 ebx, uint32 edx, uint32 edi, uint32 ebp) { registers regs = {.eax =eax, .ebx = ebx, .edx = edx, .edi = edi, .ebp = ebp}; - wooden_a_supports_paint_setup(regs.edi, (sint16) regs.ax, regs.dx, (uint32) regs.ebp, NULL); + bool output = wooden_a_supports_paint_setup(regs.edi, (sint16) regs.ax, regs.dx, (uint32) regs.ebp, NULL); - return 0; + return output ? 1 : 0; } static uint32 intercept_wooden_b_supports(uint32 eax, uint32 ebx, uint32 edx, uint32 edi, uint32 ebp) { registers regs = {.eax =eax, .ebx = ebx, .edx = edx, .edi = edi, .ebp = ebp}; - wooden_b_supports_paint_setup(regs.edi, (sint16) regs.ax, regs.dx, (uint32) regs.ebp, NULL); + bool output = wooden_b_supports_paint_setup(regs.edi, (sint16) regs.ax, regs.dx, (uint32) regs.ebp, NULL); - return 0; + return output ? 1 : 0; } static uint32 intercept_metal_a_supports(uint32 eax, uint32 ebx, uint32 edx, uint32 edi, uint32 ebp) { From 4877102bf94482a3463a83d627b7d146ea34ef53 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 13:17:16 +0200 Subject: [PATCH 17/24] Continue diagonal --- src/ride/transport/minature_railway.c | 136 +++++++++++++------------- 1 file changed, 67 insertions(+), 69 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 209284324f..c2f4513877 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1627,8 +1627,6 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS /** rct2: 0x008AD210 */ static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - // TODO: The supports are inconsistent for different rotations - sint8 supportFunction = WOOD_B; sint16 supportType = monorail_diag_support_types[direction][trackSequence]; if (supportType == SUPPORT_PLAIN || supportType == SUPPORT_PLAIN_90_DEG) { @@ -1711,6 +1709,13 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint floorBoundOffset = (rct_xy16) {-16, -16}; } + const sint8 offsetsB[4][4][2] = { + {{0, 0}, {+8, +16}, {+8, +8}, {+8, +8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {+8, +8}}, + {{0, 0}, {+8, +8}, {+8, +16}, {+8, +8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {+8, +8}}, + }; + uint32 imageId = miniature_railway_track_pieces_diag_25_deg_up_to_flat[direction]; bool drawRail = monorail_diag_image_segment[direction][trackSequence]; @@ -1721,12 +1726,12 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint floorImage | gTrackColours[SCHEME_SUPPORTS], 0, 0, floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), - height, - floorBoundOffset.x, floorBoundOffset.y, height, + height + offsetsB[direction][trackSequence][0], + floorBoundOffset.x, floorBoundOffset.y, height + offsetsB[direction][trackSequence][1], get_current_rotation() ); if (drawRail) { - sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); } } else if (drawRail) { sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); @@ -1739,71 +1744,64 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint /** rct2: 0x008AD260 */ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23450, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23451, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 1: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23449, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 3: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23452, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; + const sint8 supportOffsets[][4] = { + {0, +16, +16, 0}, + {0, -8, -8, 0}, + {0, +16, +16, 0}, + {0, -8, -8, -8}, + }; + + sint8 supportFunction = WOOD_B; + if (trackSequence == 3) { + supportFunction = WOOD_A; } + + bool hasSupports = false; + + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + hasSupports = wooden_supports_paint_setup(supportFunction, supportType, 0, height + supportOffsets[direction][trackSequence], gTrackColours[SCHEME_SUPPORTS], NULL); + } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + uint32 imageId = miniature_railway_track_pieces_diag_25_deg_up[(direction + 2) % 4]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + const sint8 railOffsets[] = {0, +8, +8, +8}; + + const sint8 offsetsB[4][4][2] = { + {{0, 0}, {+8, +8}, {+8, +8}, {-8, -8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {-8, 0}}, + {{0, 0}, {+8, +8}, {+8, +16}, {-8, -8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {-8, -8}}, + }; + + if (hasSupports) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height + offsetsB[direction][trackSequence][0], + floorBoundOffset.x, floorBoundOffset.y, height + offsetsB[direction][trackSequence][1], + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); } /** rct2: 0x008AD240 */ From 12b931e7236fdc2aafce63c22907225566478776 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 13:25:59 +0200 Subject: [PATCH 18/24] Fix typo --- src/ride/track_data.c | 2 +- src/ride/track_paint.h | 2 +- src/ride/transport/minature_railway.c | 648 +++++++++++++------------- 3 files changed, 326 insertions(+), 326 deletions(-) diff --git a/src/ride/track_data.c b/src/ride/track_data.c index 7d197c85c9..0ba29150dc 100644 --- a/src/ride/track_data.c +++ b/src/ride/track_data.c @@ -6246,7 +6246,7 @@ const TRACK_PAINT_FUNCTION_GETTER RideTypeTrackPaintFunctions[91] = { get_track_paint_function_suspended_swinging_rc, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER get_track_paint_function_inverted_rc, // RIDE_TYPE_INVERTED_ROLLER_COASTER get_track_paint_function_junior_rc, // RIDE_TYPE_JUNIOR_ROLLER_COASTER - get_track_paint_function_minature_railway, // RIDE_TYPE_MINIATURE_RAILWAY + get_track_paint_function_miniature_railway, // RIDE_TYPE_MINIATURE_RAILWAY get_track_paint_function_monorail, // RIDE_TYPE_MONORAIL get_track_paint_function_mini_suspended_rc, // RIDE_TYPE_MINI_SUSPENDED_COASTER get_track_paint_function_boat_ride, // RIDE_TYPE_BOAT_RIDE diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h index a3b15d8cbb..ddc6eceac2 100644 --- a/src/ride/track_paint.h +++ b/src/ride/track_paint.h @@ -311,7 +311,7 @@ TRACK_PAINT_FUNCTION get_track_paint_function_inverted_rc(int trackType, int dir TRACK_PAINT_FUNCTION get_track_paint_function_junior_rc(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_monorail(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_mini_suspended_rc(int trackType, int direction); -TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, int direction); +TRACK_PAINT_FUNCTION get_track_paint_function_miniature_railway(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_boat_ride(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_wooden_wild_mouse(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_steeplechase(int trackType, int direction); diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index c2f4513877..83af92157e 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -26,102 +26,102 @@ enum { - SPR_MINATURE_RAILWAY_FLAT_SW_NE = 23341, - SPR_MINATURE_RAILWAY_FLAT_NW_SE = 23342, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0 = 23343, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_1 = 23344, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_2 = 23345, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_3 = 23346, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_4 = 23347, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_0 = 23348, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_1 = 23349, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_2 = 23350, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_3 = 23351, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_4 = 23352, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_0 = 23353, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_1 = 23354, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_2 = 23355, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_3 = 23356, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_4 = 23357, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_0 = 23358, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_1 = 23359, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2 = 23360, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3 = 23361, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4 = 23362, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0 = 23363, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23364, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23365, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3 = 23366, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23367, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23368, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23369, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23370, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23371, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23372, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23373, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23374, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0 = 23375, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1 = 23376, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2 = 23377, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3 = 23378, - SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE = 23379, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE = 23380, - SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW = 23381, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW = 23382, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW = 23383, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE = 23384, - SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE = 23385, - SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW = 23386, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE = 23387, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23388, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23389, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE = 23390, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0 = 23391, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1 = 23392, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 = 23393, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0 = 23394, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1 = 23395, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 = 23396, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0 = 23397, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1 = 23398, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 = 23399, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0 = 23400, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1 = 23401, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 = 23402, - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE = 23403, - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE = 23404, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0 = 23405, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1 = 23406, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2 = 23407, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3 = 23408, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0 = 23409, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1 = 23410, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2 = 23411, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3 = 23412, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0 = 23413, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1 = 23414, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2 = 23415, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3 = 23416, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0 = 23417, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1 = 23418, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2 = 23419, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3 = 23420, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0 = 23421, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1 = 23422, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2 = 23423, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3 = 23424, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0 = 23425, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1 = 23426, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2 = 23427, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3 = 23428, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0 = 23429, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1 = 23430, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2 = 23431, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3 = 23432, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0 = 23433, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1 = 23434, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2 = 23435, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3 = 23436, + SPR_MINIATURE_RAILWAY_FLAT_SW_NE = 23341, + SPR_MINIATURE_RAILWAY_FLAT_NW_SE = 23342, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0 = 23343, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_1 = 23344, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_2 = 23345, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_3 = 23346, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_4 = 23347, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_0 = 23348, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_1 = 23349, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_2 = 23350, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_3 = 23351, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_4 = 23352, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_0 = 23353, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_1 = 23354, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_2 = 23355, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_3 = 23356, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_4 = 23357, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_0 = 23358, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_1 = 23359, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2 = 23360, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3 = 23361, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4 = 23362, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0 = 23363, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1 = 23364, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2 = 23365, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3 = 23366, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0 = 23367, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1 = 23368, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2 = 23369, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3 = 23370, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0 = 23371, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1 = 23372, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2 = 23373, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3 = 23374, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0 = 23375, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1 = 23376, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2 = 23377, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3 = 23378, + SPR_MINIATURE_RAILWAY_25_DEG_UP_SW_NE = 23379, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE = 23380, + SPR_MINIATURE_RAILWAY_25_DEG_UP_NE_SW = 23381, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW = 23382, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW = 23383, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE = 23384, + SPR_MINIATURE_RAILWAY_25_DEG_UP_NW_SE = 23385, + SPR_MINIATURE_RAILWAY_25_DEG_UP_SE_NW = 23386, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE = 23387, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW = 23388, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW = 23389, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE = 23390, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0 = 23391, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1 = 23392, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 = 23393, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0 = 23394, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1 = 23395, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 = 23396, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0 = 23397, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1 = 23398, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 = 23399, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0 = 23400, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1 = 23401, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 = 23402, + SPR_MINIATURE_RAILWAY_FLAT_NO_BASE_SW_NE = 23403, + SPR_MINIATURE_RAILWAY_FLAT_NO_BASE_NW_SE = 23404, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0 = 23405, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1 = 23406, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2 = 23407, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3 = 23408, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0 = 23409, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1 = 23410, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2 = 23411, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3 = 23412, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0 = 23413, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1 = 23414, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2 = 23415, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3 = 23416, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0 = 23417, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1 = 23418, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2 = 23419, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3 = 23420, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0 = 23421, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1 = 23422, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2 = 23423, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3 = 23424, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0 = 23425, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1 = 23426, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2 = 23427, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3 = 23428, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0 = 23429, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1 = 23430, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2 = 23431, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3 = 23432, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0 = 23433, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1 = 23434, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2 = 23435, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3 = 23436, SPR_MINIATURE_RAILWAY_DIAG_FLAT_W_E = 23437, SPR_MINIATURE_RAILWAY_DIAG_FLAT_N_S = 23438, SPR_MINIATURE_RAILWAY_DIAG_FLAT_E_W = 23439, @@ -140,167 +140,167 @@ enum SPR_MINIATURE_RAILWAY_DIAG_25_DEG_UP_S_N = 23452, }; -static const uint32 minature_railway_track_floor[4] = { +static const uint32 miniature_railway_track_floor[4] = { SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS_90_DEG, SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS_90_DEG }; -static const uint32 minature_railway_track_pieces_flat[4] = { - SPR_MINATURE_RAILWAY_FLAT_SW_NE, - SPR_MINATURE_RAILWAY_FLAT_NW_SE, - SPR_MINATURE_RAILWAY_FLAT_SW_NE, - SPR_MINATURE_RAILWAY_FLAT_NW_SE, +static const uint32 miniature_railway_track_pieces_flat[4] = { + SPR_MINIATURE_RAILWAY_FLAT_SW_NE, + SPR_MINIATURE_RAILWAY_FLAT_NW_SE, + SPR_MINIATURE_RAILWAY_FLAT_SW_NE, + SPR_MINIATURE_RAILWAY_FLAT_NW_SE, }; -static const uint32 minature_railway_station_floor[4] = { +static const uint32 miniature_railway_station_floor[4] = { SPR_STATION_BASE_A_SW_NE, SPR_STATION_BASE_A_NW_SE, SPR_STATION_BASE_A_SW_NE, SPR_STATION_BASE_A_NW_SE }; -static const uint32 minature_railway_track_pieces_flat_station[4] = { - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE, - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE, - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_SW_NE, - SPR_MINATURE_RAILWAY_FLAT_NO_BASE_NW_SE, +static const uint32 miniature_railway_track_pieces_flat_station[4] = { + SPR_MINIATURE_RAILWAY_FLAT_NO_BASE_SW_NE, + SPR_MINIATURE_RAILWAY_FLAT_NO_BASE_NW_SE, + SPR_MINIATURE_RAILWAY_FLAT_NO_BASE_SW_NE, + SPR_MINIATURE_RAILWAY_FLAT_NO_BASE_NW_SE, }; -static const uint32 minature_railway_track_pieces_flat_quarter_turn_5_tiles[4][5] = { +static const uint32 miniature_railway_track_pieces_flat_quarter_turn_5_tiles[4][5] = { { - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_2, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_3, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_4, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_2, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_3, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SW_SE_PART_4, }, { - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_2, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_3, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_4, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_2, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_3, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NW_SW_PART_4, }, { - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_2, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_3, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_4, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_2, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_3, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_NE_NW_PART_4, }, { - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3, - SPR_MINATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_2, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_3, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_5_TILES_SE_NE_PART_4, } }; -static const uint32 minature_railway_track_pieces_25_deg_up[4] = { - SPR_MINATURE_RAILWAY_25_DEG_UP_SW_NE, - SPR_MINATURE_RAILWAY_25_DEG_UP_NW_SE, - SPR_MINATURE_RAILWAY_25_DEG_UP_NE_SW, - SPR_MINATURE_RAILWAY_25_DEG_UP_SE_NW, +static const uint32 miniature_railway_track_pieces_25_deg_up[4] = { + SPR_MINIATURE_RAILWAY_25_DEG_UP_SW_NE, + SPR_MINIATURE_RAILWAY_25_DEG_UP_NW_SE, + SPR_MINIATURE_RAILWAY_25_DEG_UP_NE_SW, + SPR_MINIATURE_RAILWAY_25_DEG_UP_SE_NW, }; -static const uint32 minature_railway_track_pieces_flat_to_25_deg_up[4] = { - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW, - SPR_MINATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW, +static const uint32 miniature_railway_track_pieces_flat_to_25_deg_up[4] = { + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_SW_NE, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_NW_SE, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_NE_SW, + SPR_MINIATURE_RAILWAY_FLAT_TO_25_DEG_UP_SE_NW, }; -static const uint32 minature_railway_track_pieces_25_deg_up_to_flat[4] = { - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW, - SPR_MINATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW, +static const uint32 miniature_railway_track_pieces_25_deg_up_to_flat[4] = { + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_SW_NE, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_NW_SE, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_NE_SW, + SPR_MINIATURE_RAILWAY_25_DEG_UP_TO_FLAT_SE_NW, }; -static const uint32 minature_railway_track_pieces_s_bend_left[2][4] = { +static const uint32 miniature_railway_track_pieces_s_bend_left[2][4] = { { - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_0, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_1, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_2, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SW_NE_PART_3, }, { - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1, - SPR_MINATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_3, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_2, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_1, + SPR_MINIATURE_RAILWAY_S_BEND_LEFT_SE_NW_PART_0, } }; -static const uint32 minature_railway_track_pieces_s_bend_right[2][4] = { +static const uint32 miniature_railway_track_pieces_s_bend_right[2][4] = { { - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_0, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_1, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_2, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SW_NE_PART_3, }, { - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1, - SPR_MINATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_3, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_2, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_1, + SPR_MINIATURE_RAILWAY_S_BEND_RIGHT_SE_NW_PART_0, } }; -static const uint32 minature_railway_track_pieces_flat_quarter_turn_3_tiles[4][3] = { +static const uint32 miniature_railway_track_pieces_flat_quarter_turn_3_tiles[4][3] = { { - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_2 }, { - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NW_SW_PART_2 }, { - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_NE_NW_PART_2 }, { - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1, - SPR_MINATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_0, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_1, + SPR_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SE_NE_PART_2 } }; -static const uint32 minature_railway_track_pieces_right_eight_to_diag[4][4] = { +static const uint32 miniature_railway_track_pieces_right_eight_to_diag[4][4] = { { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_E_PART_3, }, { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_S_PART_3, }, { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_W_PART_3, }, { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_N_PART_3, }, }; -static const rct_xyz16 minature_railway_track_pieces_right_eight_to_diag_bounds[4][4] = { +static const rct_xyz16 miniature_railway_track_pieces_right_eight_to_diag_bounds[4][4] = { { {32, 32, 2}, {32, 16, 2}, @@ -327,7 +327,7 @@ static const rct_xyz16 minature_railway_track_pieces_right_eight_to_diag_bounds[ }, }; -static const rct_xy16 minature_railway_track_pieces_right_eight_to_diag_offset[4][4] = { +static const rct_xy16 miniature_railway_track_pieces_right_eight_to_diag_offset[4][4] = { { {0, 0}, {0, 16}, @@ -354,34 +354,34 @@ static const rct_xy16 minature_railway_track_pieces_right_eight_to_diag_offset[4 }, }; -static const uint32 minature_railway_track_pieces_left_eight_to_diag[4][4] = { +static const uint32 miniature_railway_track_pieces_left_eight_to_diag[4][4] = { { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SW_N_PART_3, }, { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NW_E_PART_3, }, { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_NE_S_PART_3, }, { - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2, - SPR_MINATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_0, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_1, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_2, + SPR_MINIATURE_RAILWAY_EIGHT_TO_DIAG_SE_W_PART_3, }, }; -static const rct_xyz16 minature_railway_track_pieces_left_eight_to_diag_bounds[4][4] = { +static const rct_xyz16 miniature_railway_track_pieces_left_eight_to_diag_bounds[4][4] = { { {32, 32, 2}, {32, 16, 2}, @@ -408,7 +408,7 @@ static const rct_xyz16 minature_railway_track_pieces_left_eight_to_diag_bounds[4 }, }; -static const rct_xy16 minature_railway_track_pieces_left_eight_to_diag_offset[4][4] = { +static const rct_xy16 miniature_railway_track_pieces_left_eight_to_diag_offset[4][4] = { { {0, 0}, {0, 0}, @@ -435,7 +435,7 @@ static const rct_xy16 minature_railway_track_pieces_left_eight_to_diag_offset[4] }, }; -static const rct_xyz16 minature_railway_track_pieces_right_eight_to_orthog_bounds[4][4] = { +static const rct_xyz16 miniature_railway_track_pieces_right_eight_to_orthog_bounds[4][4] = { { {32, 32, 2}, {32, 16, 2}, @@ -462,7 +462,7 @@ static const rct_xyz16 minature_railway_track_pieces_right_eight_to_orthog_bound }, }; -static const rct_xy16 minature_railway_track_pieces_right_eight_to_orthog_offset[4][4] = { +static const rct_xy16 miniature_railway_track_pieces_right_eight_to_orthog_offset[4][4] = { { {0, 0}, {0, 0}, @@ -489,7 +489,7 @@ static const rct_xy16 minature_railway_track_pieces_right_eight_to_orthog_offset }, }; -static const rct_xyz16 minature_railway_track_pieces_left_eight_to_orthog_bounds[4][4] = { +static const rct_xyz16 miniature_railway_track_pieces_left_eight_to_orthog_bounds[4][4] = { { {32, 32, 2}, {32, 16, 2}, @@ -516,7 +516,7 @@ static const rct_xyz16 minature_railway_track_pieces_left_eight_to_orthog_bounds }, }; -static const rct_xy16 minature_railway_track_pieces_left_eight_to_orthog_offset[4][4] = { +static const rct_xy16 miniature_railway_track_pieces_left_eight_to_orthog_offset[4][4] = { { {0, 0}, {0, 16}, @@ -572,21 +572,21 @@ static const uint32 miniature_railway_track_pieces_diag_25_deg_up[4] = { }; /** rct2: 0x008AD0C0 */ -static void paint_minature_railway_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { bool isSupported = wooden_a_supports_paint_setup(direction & 1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); uint32 imageId; if (isSupported) { - imageId = minature_railway_track_floor[direction] | gTrackColours[SCHEME_SUPPORTS]; + imageId = miniature_railway_track_floor[direction] | gTrackColours[SCHEME_SUPPORTS]; sub_98197C_rotated(direction, imageId, 0, 0, 32, 20, 2, height, 0, 6, height); - imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + imageId = miniature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; sub_98199C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 6, height); } else { - imageId = minature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; + imageId = miniature_railway_track_pieces_flat[direction] | gTrackColours[SCHEME_TRACK]; sub_98197C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 6, height); } @@ -597,16 +597,16 @@ static void paint_minature_railway_track_flat(uint8 rideIndex, uint8 trackSequen } /** rct2: 0x008AD170, 0x008AD180, 0x008AD190 */ -static void paint_minature_railway_station(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_station(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { uint32 imageId; wooden_a_supports_paint_setup(direction & 1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - imageId = minature_railway_station_floor[direction] | gTrackColours[SCHEME_MISC]; + imageId = miniature_railway_station_floor[direction] | gTrackColours[SCHEME_MISC]; sub_98197C_rotated(direction, imageId, 0, 0, 32, 28, 2, height - 2, 0, 2, height); - imageId = minature_railway_track_pieces_flat_station[direction] | gTrackColours[SCHEME_TRACK]; + imageId = miniature_railway_track_pieces_flat_station[direction] | gTrackColours[SCHEME_TRACK]; sub_98199C_rotated(direction, imageId, 0, 6, 32, 20, 2, height, 0, 0, height); paint_util_push_tunnel_rotated(direction, height, TUNNEL_6); @@ -618,10 +618,10 @@ static void paint_minature_railway_station(uint8 rideIndex, uint8 trackSequence, } /** rct2: 0x008AD0D0 */ -static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - uint32 imageId = minature_railway_track_pieces_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; + uint32 imageId = miniature_railway_track_pieces_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; sub_98197C_rotated(direction, imageId, 0, 2, 32, 25, 2, height, 0, 3, height); @@ -639,10 +639,10 @@ static void paint_minature_railway_track_25_deg_up(uint8 rideIndex, uint8 trackS } /** rct2: 0x008AD0E0 */ -static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - uint32 imageId = minature_railway_track_pieces_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; + uint32 imageId = miniature_railway_track_pieces_flat_to_25_deg_up[direction] | gTrackColours[SCHEME_TRACK]; sub_98197C_rotated(direction, imageId, 0, 2, 32, 25, 2, height, 0, 3, height); @@ -660,10 +660,10 @@ static void paint_minature_railway_track_flat_to_25_deg_up(uint8 rideIndex, uint } /** rct2: 0x008AD0F0 */ -static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - uint32 imageId = minature_railway_track_pieces_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; + uint32 imageId = miniature_railway_track_pieces_25_deg_up_to_flat[direction] | gTrackColours[SCHEME_TRACK]; sub_98197C_rotated(direction, imageId, 0, 2, 32, 25, 2, height, 0, 3, height); @@ -681,24 +681,24 @@ static void paint_minature_railway_track_25_deg_up_to_flat(uint8 rideIndex, uint } /** rct2: 0x008AD100 */ -static void paint_minature_railway_track_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - paint_minature_railway_track_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); + paint_miniature_railway_track_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } /** rct2: 0x008AD110 */ -static void paint_minature_railway_track_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - paint_minature_railway_track_25_deg_up_to_flat(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); + paint_miniature_railway_track_25_deg_up_to_flat(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } /** rct2: 0x008AD120 */ -static void paint_minature_railway_track_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - paint_minature_railway_track_flat_to_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); + paint_miniature_railway_track_flat_to_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } -const rct_xy16 minature_railway_right_quarter_turn_5_tiles_offsets[4][5] = { +const rct_xy16 miniature_railway_right_quarter_turn_5_tiles_offsets[4][5] = { { {0, 2}, {0, 16}, @@ -729,7 +729,7 @@ const rct_xy16 minature_railway_right_quarter_turn_5_tiles_offsets[4][5] = { } }; -const rct_xyz16 minature_railway_right_quarter_turn_5_tiles_bound_offsets[4][5] = { +const rct_xyz16 miniature_railway_right_quarter_turn_5_tiles_bound_offsets[4][5] = { { {0, 2, 0}, {0, 16, 0}, @@ -760,7 +760,7 @@ const rct_xyz16 minature_railway_right_quarter_turn_5_tiles_bound_offsets[4][5] } }; -const rct_xy16 minature_railway_right_quarter_turn_5_tiles_bound_lengths[4][5] = { +const rct_xy16 miniature_railway_right_quarter_turn_5_tiles_bound_lengths[4][5] = { { {32, 32}, {32, 16}, @@ -791,7 +791,7 @@ const rct_xy16 minature_railway_right_quarter_turn_5_tiles_bound_lengths[4][5] = } }; -static const uint32 minature_railway_right_quarter_turn_5_tiles_track_floor[4][5] = { +static const uint32 miniature_railway_right_quarter_turn_5_tiles_track_floor[4][5] = { { SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS_S_SEGMENT, @@ -832,22 +832,22 @@ static const sint8 right_quarter_turn_5_supports_type[4][7] = { static const sint8 right_quarter_turn_5_tiles_sprite_map[] = {0, -1, 1, 2, -1, 3, 4}; /** rct2: 0x008AD140 */ -static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_right_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { if (right_quarter_turn_5_supports_type[direction][trackSequence] != -1){ bool isSupported = wooden_a_supports_paint_setup(right_quarter_turn_5_supports_type[direction][trackSequence], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); if (isSupported == false || (trackSequence == 3 && direction == 2)) { - track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_5_tiles, minature_railway_right_quarter_turn_5_tiles_offsets, minature_railway_right_quarter_turn_5_tiles_bound_lengths, NULL, get_current_rotation()); + track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], miniature_railway_track_pieces_flat_quarter_turn_5_tiles, miniature_railway_right_quarter_turn_5_tiles_offsets, miniature_railway_right_quarter_turn_5_tiles_bound_lengths, NULL, get_current_rotation()); } else { - track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_SUPPORTS], minature_railway_right_quarter_turn_5_tiles_track_floor, NULL, minature_railway_right_quarter_turn_5_tiles_bound_lengths, minature_railway_right_quarter_turn_5_tiles_bound_offsets, get_current_rotation()); + track_paint_util_right_quarter_turn_5_tiles_paint(2, height, direction, trackSequence, gTrackColours[SCHEME_SUPPORTS], miniature_railway_right_quarter_turn_5_tiles_track_floor, NULL, miniature_railway_right_quarter_turn_5_tiles_bound_lengths, miniature_railway_right_quarter_turn_5_tiles_bound_offsets, get_current_rotation()); int index = right_quarter_turn_5_tiles_sprite_map[trackSequence]; - uint32 imageId = minature_railway_track_pieces_flat_quarter_turn_5_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; - rct_xy16 offset = minature_railway_right_quarter_turn_5_tiles_offsets[direction][index]; - rct_xy16 boundsLength = minature_railway_right_quarter_turn_5_tiles_bound_lengths[direction][index]; + uint32 imageId = miniature_railway_track_pieces_flat_quarter_turn_5_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = miniature_railway_right_quarter_turn_5_tiles_offsets[direction][index]; + rct_xy16 boundsLength = miniature_railway_right_quarter_turn_5_tiles_bound_lengths[direction][index]; rct_xyz16 boundsOffset = { .x = offset.x, .y = offset.y, .z = 0 }; sub_98199C(imageId, (sint8) offset.x, (sint8) offset.y, boundsLength.x, boundsLength.y, 2, height, boundsOffset.x, boundsOffset.y, height + boundsOffset.z, get_current_rotation()); @@ -886,10 +886,10 @@ static void paint_minature_railway_track_right_quarter_turn_5_tiles(uint8 rideIn } /** rct2: 0x008AD130 */ -static void paint_minature_railway_track_left_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_left_quarter_turn_5_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; - paint_minature_railway_track_right_quarter_turn_5_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); + paint_miniature_railway_track_right_quarter_turn_5_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); } static const sint8 s_bend_left_supports_type[4][4] = { @@ -899,7 +899,7 @@ static const sint8 s_bend_left_supports_type[4][4] = { {1, 2, 4, 1} }; -static const uint32 minature_railway_s_bend_left_tiles_track_floor[2][4] = { +static const uint32 miniature_railway_s_bend_left_tiles_track_floor[2][4] = { { SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS_W_SEGMENT, @@ -915,7 +915,7 @@ static const uint32 minature_railway_s_bend_left_tiles_track_floor[2][4] = { }; /** rct2: 0x8AD150 */ -static void paint_minature_railway_track_s_bend_left(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_s_bend_left(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { if (direction == 2 || direction == 3) { trackSequence = 3 - trackSequence; @@ -937,7 +937,7 @@ static void paint_minature_railway_track_s_bend_left(uint8 rideIndex, uint8 trac {32, 27}, }; - uint32 imageId = minature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; + uint32 imageId = miniature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; rct_xy16 offset = offsetList[trackSequence]; rct_xy16 bounds = boundsList[trackSequence]; @@ -945,10 +945,10 @@ static void paint_minature_railway_track_s_bend_left(uint8 rideIndex, uint8 trac sub_98197C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); } else { - imageId = minature_railway_s_bend_left_tiles_track_floor[direction & 1][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + imageId = miniature_railway_s_bend_left_tiles_track_floor[direction & 1][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; sub_98197C_rotated(direction, imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); - imageId = minature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; + imageId = miniature_railway_track_pieces_s_bend_left[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; sub_98199C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); } if (direction == 0 || direction == 2) { @@ -980,7 +980,7 @@ static const sint8 s_bend_right_supports_type[4][4] = { {1, 5, 3, 1} }; -static const uint32 minature_railway_s_bend_right_tiles_track_floor[2][4] = { +static const uint32 miniature_railway_s_bend_right_tiles_track_floor[2][4] = { { SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS_S_SEGMENT, @@ -996,7 +996,7 @@ static const uint32 minature_railway_s_bend_right_tiles_track_floor[2][4] = { }; /** rct2: 0x008AD160 */ -static void paint_minature_railway_track_s_bend_right(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_s_bend_right(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { if (direction == 2 || direction == 3) { trackSequence = 3 - trackSequence; @@ -1018,17 +1018,17 @@ static void paint_minature_railway_track_s_bend_right(uint8 rideIndex, uint8 tra {32, 27}, }; - uint32 imageId = minature_railway_track_pieces_s_bend_right[direction&1][trackSequence] | gTrackColours[SCHEME_TRACK]; + uint32 imageId = miniature_railway_track_pieces_s_bend_right[direction&1][trackSequence] | gTrackColours[SCHEME_TRACK]; rct_xy16 offset = offsetList[trackSequence]; rct_xy16 bounds = boundsList[trackSequence]; if (isSupported == false) { sub_98197C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); } else { - imageId = minature_railway_s_bend_right_tiles_track_floor[direction & 1][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + imageId = miniature_railway_s_bend_right_tiles_track_floor[direction & 1][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; sub_98197C_rotated(direction, imageId, 0, 0, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); - imageId = minature_railway_track_pieces_s_bend_right[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; + imageId = miniature_railway_track_pieces_s_bend_right[direction & 1][trackSequence] | gTrackColours[SCHEME_TRACK]; sub_98199C_rotated(direction, imageId, (sint8)offset.x, (sint8)offset.y, bounds.x, bounds.y, 2, height, offset.x, offset.y, height); } @@ -1054,7 +1054,7 @@ static void paint_minature_railway_track_s_bend_right(uint8 rideIndex, uint8 tra paint_util_set_general_support_height(height + 32, 0x20); } -static const uint32 minature_railway_right_quarter_turn_3_tile_track_floor[4][3] = { +static const uint32 miniature_railway_right_quarter_turn_3_tile_track_floor[4][3] = { { SPR_FLOOR_PLANKS_S_SEGMENT, 0, @@ -1077,7 +1077,7 @@ static const uint32 minature_railway_right_quarter_turn_3_tile_track_floor[4][3] } }; -const rct_xyz16 minature_railway_right_quarter_turn_3_tile_bound_offsets[4][3] = { +const rct_xyz16 miniature_railway_right_quarter_turn_3_tile_bound_offsets[4][3] = { { {0, 6, 0}, {16, 16, 0}, @@ -1101,7 +1101,7 @@ const rct_xyz16 minature_railway_right_quarter_turn_3_tile_bound_offsets[4][3] = }; /** rct2: 0x008AD1B0 */ -static void paint_minature_railway_track_right_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_right_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { bool isSupported = false; if (trackSequence != 1 && trackSequence != 2) @@ -1110,16 +1110,16 @@ static void paint_minature_railway_track_right_quarter_turn_3_tiles(uint8 rideIn isSupported = wooden_a_supports_paint_setup(supportType[direction], 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); } if (isSupported == false) { - track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], minature_railway_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, NULL, get_current_rotation()); + track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_TRACK], miniature_railway_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, NULL, get_current_rotation()); } else { - track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_SUPPORTS], minature_railway_right_quarter_turn_3_tile_track_floor, NULL, defaultRightQuarterTurn3TilesBoundLengths, minature_railway_right_quarter_turn_3_tile_bound_offsets, get_current_rotation()); + track_paint_util_right_quarter_turn_3_tiles_paint(3, height, direction, trackSequence, gTrackColours[SCHEME_SUPPORTS], miniature_railway_right_quarter_turn_3_tile_track_floor, NULL, defaultRightQuarterTurn3TilesBoundLengths, miniature_railway_right_quarter_turn_3_tile_bound_offsets, get_current_rotation()); static const sint8 right_quarter_turn_3_tiles_sprite_map[] = {0, -1, 1, 2}; int index = right_quarter_turn_3_tiles_sprite_map[trackSequence]; - uint32 imageId = minature_railway_track_pieces_flat_quarter_turn_3_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; + uint32 imageId = miniature_railway_track_pieces_flat_quarter_turn_3_tiles[direction][index] | gTrackColours[SCHEME_TRACK]; rct_xy16 offset = defaultRightQuarterTurn3TilesOffsets[direction][index]; rct_xy16 boundsLength = defaultRightQuarterTurn3TilesBoundLengths[direction][index]; rct_xyz16 boundsOffset = { .x = offset.x, .y = offset.y, .z = 0 }; @@ -1140,14 +1140,14 @@ static void paint_minature_railway_track_right_quarter_turn_3_tiles(uint8 rideIn } /** rct2: 0x008AD1A0 */ -static void paint_minature_railway_track_left_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_left_quarter_turn_3_tiles(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) {trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; - paint_minature_railway_track_right_quarter_turn_3_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); + paint_miniature_railway_track_right_quarter_turn_3_tiles(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement); } -static const sint8 paint_minature_railway_eighth_to_diag_index[] = {0, 1, 2, -1, 3}; +static const sint8 paint_miniature_railway_eighth_to_diag_index[] = {0, 1, 2, -1, 3}; -static const uint32 minature_railway_floor_track_pieces_left_eight_to_diag[4][5] = { +static const uint32 miniature_railway_floor_track_pieces_left_eight_to_diag[4][5] = { { SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS, @@ -1178,7 +1178,7 @@ static const uint32 minature_railway_floor_track_pieces_left_eight_to_diag[4][5] }, }; -static const rct_xyz16 minature_railway_track_floor_pieces_left_eight_to_diag_bounds[4][5] = { +static const rct_xyz16 miniature_railway_track_floor_pieces_left_eight_to_diag_bounds[4][5] = { { {32, 32, 2}, {32, 16, 2}, @@ -1209,7 +1209,7 @@ static const rct_xyz16 minature_railway_track_floor_pieces_left_eight_to_diag_bo }, }; -static const rct_xy16 minature_railway_track_floor_pieces_left_eight_to_diag_offset[4][5] = { +static const rct_xy16 miniature_railway_track_floor_pieces_left_eight_to_diag_offset[4][5] = { { {0, 0}, {0, 0}, @@ -1241,7 +1241,7 @@ static const rct_xy16 minature_railway_track_floor_pieces_left_eight_to_diag_off }; /** rct2: 0x008AD1C0 */ -static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_left_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { const uint8 supportType[4][5] = { { 0, 0, 3, 5, 1 }, @@ -1259,29 +1259,29 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui } uint32 imageId; if (isSupported == false) { - sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + sint8 index = paint_miniature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { - imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - rct_xy16 offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; - rct_xyz16 bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + imageId = miniature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = miniature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; + rct_xyz16 bounds = miniature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; if (isRightEighthToOrthog) { - bounds = minature_railway_track_pieces_right_eight_to_orthog_bounds[direction][index]; - offset = minature_railway_track_pieces_right_eight_to_orthog_offset[direction][index]; + bounds = miniature_railway_track_pieces_right_eight_to_orthog_bounds[direction][index]; + offset = miniature_railway_track_pieces_right_eight_to_orthog_offset[direction][index]; } sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); } } else { - imageId = minature_railway_floor_track_pieces_left_eight_to_diag[direction][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; - rct_xy16 offset = minature_railway_track_floor_pieces_left_eight_to_diag_offset[direction][trackSequence]; - rct_xyz16 bounds = minature_railway_track_floor_pieces_left_eight_to_diag_bounds[direction][trackSequence]; + imageId = miniature_railway_floor_track_pieces_left_eight_to_diag[direction][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + rct_xy16 offset = miniature_railway_track_floor_pieces_left_eight_to_diag_offset[direction][trackSequence]; + rct_xyz16 bounds = miniature_railway_track_floor_pieces_left_eight_to_diag_bounds[direction][trackSequence]; sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); - sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + sint8 index = paint_miniature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { - imageId = minature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - offset = minature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; - bounds = minature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; + imageId = miniature_railway_track_pieces_left_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + offset = miniature_railway_track_pieces_left_eight_to_diag_offset[direction][index]; + bounds = miniature_railway_track_pieces_left_eight_to_diag_bounds[direction][index]; sub_98199C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); } } @@ -1297,7 +1297,7 @@ static void paint_minature_railway_track_left_eighth_to_diag(uint8 rideIndex, ui paint_util_set_general_support_height(height + 32, 0x20); } -static const uint32 minature_railway_floor_track_pieces_right_eight_to_diag[4][5] = { +static const uint32 miniature_railway_floor_track_pieces_right_eight_to_diag[4][5] = { { SPR_FLOOR_PLANKS, SPR_FLOOR_PLANKS, @@ -1328,7 +1328,7 @@ static const uint32 minature_railway_floor_track_pieces_right_eight_to_diag[4][5 }, }; -static const rct_xyz16 minature_railway_track_floor_pieces_right_eight_to_diag_bounds[4][5] = { +static const rct_xyz16 miniature_railway_track_floor_pieces_right_eight_to_diag_bounds[4][5] = { { {32, 32, 2}, {32, 16, 2}, @@ -1359,7 +1359,7 @@ static const rct_xyz16 minature_railway_track_floor_pieces_right_eight_to_diag_b }, }; -static const rct_xy16 minature_railway_track_floor_pieces_right_eight_to_diag_offset[4][5] = { +static const rct_xy16 miniature_railway_track_floor_pieces_right_eight_to_diag_offset[4][5] = { { {0, 0}, {0, 16}, @@ -1391,7 +1391,7 @@ static const rct_xy16 minature_railway_track_floor_pieces_right_eight_to_diag_of }; /** rct2: 0x008AD1D0 */ -static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_right_eighth_to_diag(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { const uint8 supportType[4][5] = { { 0, 0, 2, 4, 1 }, @@ -1410,29 +1410,29 @@ static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, u uint32 imageId; if (isSupported == false) { - sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + sint8 index = paint_miniature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { - imageId = minature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - rct_xy16 offset = minature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; - rct_xyz16 bounds = minature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; + imageId = miniature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + rct_xy16 offset = miniature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; + rct_xyz16 bounds = miniature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; if (isLeftEighthToOrthog) { - bounds = minature_railway_track_pieces_left_eight_to_orthog_bounds[direction][index]; - offset = minature_railway_track_pieces_left_eight_to_orthog_offset[direction][index]; + bounds = miniature_railway_track_pieces_left_eight_to_orthog_bounds[direction][index]; + offset = miniature_railway_track_pieces_left_eight_to_orthog_offset[direction][index]; } sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); } } else { - imageId = minature_railway_floor_track_pieces_right_eight_to_diag[direction][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; - rct_xy16 offset = minature_railway_track_floor_pieces_right_eight_to_diag_offset[direction][trackSequence]; - rct_xyz16 bounds = minature_railway_track_floor_pieces_right_eight_to_diag_bounds[direction][trackSequence]; + imageId = miniature_railway_floor_track_pieces_right_eight_to_diag[direction][trackSequence] | gTrackColours[SCHEME_SUPPORTS]; + rct_xy16 offset = miniature_railway_track_floor_pieces_right_eight_to_diag_offset[direction][trackSequence]; + rct_xyz16 bounds = miniature_railway_track_floor_pieces_right_eight_to_diag_bounds[direction][trackSequence]; sub_98197C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); - sint8 index = paint_minature_railway_eighth_to_diag_index[trackSequence]; + sint8 index = paint_miniature_railway_eighth_to_diag_index[trackSequence]; if (index >= 0) { - imageId = minature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; - offset = minature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; - bounds = minature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; + imageId = miniature_railway_track_pieces_right_eight_to_diag[direction][index] | gTrackColours[SCHEME_TRACK]; + offset = miniature_railway_track_pieces_right_eight_to_diag_offset[direction][index]; + bounds = miniature_railway_track_pieces_right_eight_to_diag_bounds[direction][index]; sub_98199C(imageId, 0, 0, bounds.x, bounds.y, (sint8)bounds.z, height, offset.x, offset.y, height, get_current_rotation()); } } @@ -1449,17 +1449,17 @@ static void paint_minature_railway_track_right_eighth_to_diag(uint8 rideIndex, u } /** rct2: 0x008AD1E0 */ -static void paint_minature_railway_track_left_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_left_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; - paint_minature_railway_track_right_eighth_to_diag(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); + paint_miniature_railway_track_right_eighth_to_diag(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement); } /** rct2: 0x008AD1F0 */ -static void paint_minature_railway_track_right_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) +static void paint_miniature_railway_track_right_eighth_to_orthogonal(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; - paint_minature_railway_track_left_eighth_to_diag(rideIndex, trackSequence, (direction + 3) % 4, height, mapElement); + paint_miniature_railway_track_left_eighth_to_diag(rideIndex, trackSequence, (direction + 3) % 4, height, mapElement); } static const bool monorail_diag_image_segment[][4] = { @@ -1946,54 +1946,54 @@ static void miniature_railway_track_diag_25_deg_down_to_flat(uint8 rideIndex, ui /** * rct2: 0x008ACE48 */ -TRACK_PAINT_FUNCTION get_track_paint_function_minature_railway(int trackType, int direction) +TRACK_PAINT_FUNCTION get_track_paint_function_miniature_railway(int trackType, int direction) { switch (trackType) { case TRACK_ELEM_FLAT: - return paint_minature_railway_track_flat; + return paint_miniature_railway_track_flat; case TRACK_ELEM_END_STATION: case TRACK_ELEM_BEGIN_STATION: case TRACK_ELEM_MIDDLE_STATION: - return paint_minature_railway_station; + return paint_miniature_railway_station; case TRACK_ELEM_25_DEG_UP: - return paint_minature_railway_track_25_deg_up; + return paint_miniature_railway_track_25_deg_up; case TRACK_ELEM_FLAT_TO_25_DEG_UP: - return paint_minature_railway_track_flat_to_25_deg_up; + return paint_miniature_railway_track_flat_to_25_deg_up; case TRACK_ELEM_25_DEG_UP_TO_FLAT: - return paint_minature_railway_track_25_deg_up_to_flat; + return paint_miniature_railway_track_25_deg_up_to_flat; case TRACK_ELEM_25_DEG_DOWN: - return paint_minature_railway_track_25_deg_down; + return paint_miniature_railway_track_25_deg_down; case TRACK_ELEM_FLAT_TO_25_DEG_DOWN: - return paint_minature_railway_track_flat_to_25_deg_down; + return paint_miniature_railway_track_flat_to_25_deg_down; case TRACK_ELEM_25_DEG_DOWN_TO_FLAT: - return paint_minature_railway_track_25_deg_down_to_flat; + return paint_miniature_railway_track_25_deg_down_to_flat; case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES: - return paint_minature_railway_track_left_quarter_turn_5_tiles; + return paint_miniature_railway_track_left_quarter_turn_5_tiles; case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES: - return paint_minature_railway_track_right_quarter_turn_5_tiles; + return paint_miniature_railway_track_right_quarter_turn_5_tiles; case TRACK_ELEM_S_BEND_LEFT: - return paint_minature_railway_track_s_bend_left; + return paint_miniature_railway_track_s_bend_left; case TRACK_ELEM_S_BEND_RIGHT: - return paint_minature_railway_track_s_bend_right; + return paint_miniature_railway_track_s_bend_right; case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: - return paint_minature_railway_track_left_quarter_turn_3_tiles; + return paint_miniature_railway_track_left_quarter_turn_3_tiles; case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: - return paint_minature_railway_track_right_quarter_turn_3_tiles; + return paint_miniature_railway_track_right_quarter_turn_3_tiles; case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: - return paint_minature_railway_track_left_eighth_to_diag; + return paint_miniature_railway_track_left_eighth_to_diag; case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: - return paint_minature_railway_track_right_eighth_to_diag; + return paint_miniature_railway_track_right_eighth_to_diag; case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: - return paint_minature_railway_track_left_eighth_to_orthogonal; + return paint_miniature_railway_track_left_eighth_to_orthogonal; case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: - return paint_minature_railway_track_right_eighth_to_orthogonal; + return paint_miniature_railway_track_right_eighth_to_orthogonal; case TRACK_ELEM_DIAG_FLAT: return miniature_railway_track_diag_flat; From 4687549185b34df778850ce85aa9b992e4385363 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 13:37:34 +0200 Subject: [PATCH 19/24] Finish diagonal pieces --- src/ride/transport/minature_railway.c | 220 +++++++++++--------------- 1 file changed, 92 insertions(+), 128 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 83af92157e..d2b4a031ae 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1807,140 +1807,104 @@ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trac /** rct2: 0x008AD240 */ static void miniature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23446, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(2, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23447, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 1: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(4, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_b_supports_paint_setup(4, 0, height + 16, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_b_supports_paint_setup(5, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_b_supports_paint_setup(2, 0, height + 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23445, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 3: - wooden_b_supports_paint_setup(3, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23448, -16, -16, 32, 32, 2, height, -16, -16, height + 8); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height - 8, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 56, 0x20); - break; + const sint8 supportOffsets[][4] = { + {0, +16, +16, 0}, + {0, -8, -8, -8}, + {0, +8, +8, 0}, + {0, -8, -8, -8}, + }; + + sint8 supportFunction = WOOD_B; + if (trackSequence == 3) { + supportFunction = WOOD_A; } + + bool hasSupports = false; + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + hasSupports = wooden_supports_paint_setup(supportFunction, supportType, 0, height + supportOffsets[direction][trackSequence], gTrackColours[SCHEME_SUPPORTS], NULL); + } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + const sint8 offsetsB[4][4][2] = { + {{0, 0}, {+8, +8}, {+8, +8}, {-8, -8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {-8, 0}}, + {{0, 0}, {+8, +8}, {+8, +16}, {-8, -8}}, + {{0, 0}, {-8, -8}, {-8, -8}, {-8, -8}}, + }; + + uint32 imageId = miniature_railway_track_pieces_diag_25_deg_up_to_flat[(direction + 2) % 4]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + const sint8 railOffsets[] = {0, +8, +8, +8}; + + if (hasSupports) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height + offsetsB[direction][trackSequence][0], + floorBoundOffset.x, floorBoundOffset.y, height + offsetsB[direction][trackSequence][1], + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height + railOffsets[direction], get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 56, 0x20); } static void miniature_railway_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - switch (trackSequence) { - case 0: - switch (direction) { - case 3: - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23442, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - break; - case 1: - switch (direction) { - case 0: - wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23443, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 1: - wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 3: - wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 48, 0x20); - break; - case 2: - switch (direction) { - case 0: - wooden_a_supports_paint_setup(4, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(5, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 2: - wooden_a_supports_paint_setup(2, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23441, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(3, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 48, 0x20); - break; - case 3: - switch (direction) { - case 0: - case 2: - wooden_a_supports_paint_setup(0, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - case 1: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - sub_98197C_rotated(direction, gTrackColours[SCHEME_TRACK] | 23444, -16, -16, 32, 32, 2, height, -16, -16, height); - break; - case 3: - wooden_a_supports_paint_setup(1, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); - break; - } - paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); - paint_util_set_general_support_height(height + 48, 0x20); - break; + bool hasSupports = false; + uint32 floorImage; + rct_xy16 floorBoundSize, floorBoundOffset; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; + + if (supportType != -1) { + floorImage = floors[supportType].image_id; + floorBoundSize = floors[supportType].bound_size; + floorBoundOffset = floors[supportType].bound_offset; + hasSupports = wooden_a_supports_paint_setup(supportType, 0, height, gTrackColours[SCHEME_SUPPORTS], NULL); } + + if (direction == 1 && trackSequence == 3) { + floorBoundOffset = (rct_xy16) {-16, -16}; + } + + uint32 imageId = miniature_railway_track_pieces_diag_flat_to_25_deg_up[(direction + 2) % 4]; + bool drawRail = monorail_diag_image_segment[direction][trackSequence]; + + if (hasSupports) { + sub_98197C( + floorImage | gTrackColours[SCHEME_SUPPORTS], + 0, 0, + floorBoundSize.x, floorBoundSize.y, (drawRail ? 2 : 0), + height, + floorBoundOffset.x, floorBoundOffset.y, height, + get_current_rotation() + ); + if (drawRail) { + sub_98199C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + } else if (drawRail) { + sub_98197C(imageId | gTrackColours[SCHEME_TRACK], -16, -16, 32, 32, 2, height, -16, -16, height, get_current_rotation()); + } + + paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(height + 48, 0x20); } /** From 0fc10f22a1c6b5b2776a83a6c14b95e8c1454a58 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 13:53:10 +0200 Subject: [PATCH 20/24] Fix right eight to diag --- src/ride/transport/minature_railway.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index d2b4a031ae..8df2e6e892 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1299,8 +1299,8 @@ static void paint_miniature_railway_track_left_eighth_to_diag(uint8 rideIndex, u static const uint32 miniature_railway_floor_track_pieces_right_eight_to_diag[4][5] = { { - SPR_FLOOR_PLANKS, - SPR_FLOOR_PLANKS, + SPR_FLOOR_PLANKS_90_DEG, + SPR_FLOOR_PLANKS_90_DEG, SPR_FLOOR_PLANKS_N_SEGMENT, SPR_FLOOR_PLANKS_S_SEGMENT, SPR_FLOOR_PLANKS_90_DEG From d270b2dcb0af70130719fa9e6b1c1da992af03fc Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 13:55:22 +0200 Subject: [PATCH 21/24] Allow unused variables during testing --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3971e7e5d7..7364335c50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -370,7 +370,7 @@ if (UNIX AND (NOT USE_MMAP) AND (NOT DISABLE_RCT2) AND (NOT FORCE64)) file(GLOB_RECURSE ORCT2_TESTPAINT_SOURCES "test/testpaint/*.c" "test/testpaint/*.cpp" "test/testpaint/*.h") add_executable(testpaint EXCLUDE_FROM_ALL ${ORCT2_RIDE_SOURCES} ${ORCT2_RIDE_DEP_SOURCES} ${ORCT2_TESTPAINT_SOURCES} ${RCT2_SECTIONS}) - set_target_properties(testpaint PROPERTIES COMPILE_FLAGS "-DNO_VEHICLES -D__TESTPAINT__") + set_target_properties(testpaint PROPERTIES COMPILE_FLAGS "-DNO_VEHICLES -D__TESTPAINT__ -Wno-unused") add_dependencies(testpaint segfiles) endif () From b0c98588a5d4d03e074884f80827c10345fdef12 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 14:14:32 +0200 Subject: [PATCH 22/24] Removes unused variables --- src/ride/transport/minature_railway.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/minature_railway.c index 8df2e6e892..e1a36bd12e 100644 --- a/src/ride/transport/minature_railway.c +++ b/src/ride/transport/minature_railway.c @@ -1627,23 +1627,12 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS /** rct2: 0x008AD210 */ static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement) { - sint8 supportFunction = WOOD_B; - sint16 supportType = monorail_diag_support_types[direction][trackSequence]; - if (supportType == SUPPORT_PLAIN || supportType == SUPPORT_PLAIN_90_DEG) { - supportFunction = WOOD_A; - } - - sint8 heightDiffs[] = {+8, -8, +8, -8}; - sint8 heightDiff = heightDiffs[direction]; - if (trackSequence == 3) { - heightDiff = 8; - } - bool hasSupports = false; uint32 floorImage; rct_xy16 floorBoundSize, floorBoundOffset; + sint16 supportType = monorail_diag_support_types[direction][trackSequence]; if (supportType != -1) { floorImage = floors[supportType].image_id; floorBoundSize = floors[supportType].bound_size; From 40dbb9db1fad3fbfe496740447e1b373cb247499 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 19:23:13 +0200 Subject: [PATCH 23/24] Fix typo in filename --- OpenRCT2.xcodeproj/project.pbxproj | 12 ++++++------ openrct2.vcxproj | 2 +- .../{minature_railway.c => miniature_railway.c} | 0 test/testpaint/testpaint.vcxproj | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) rename src/ride/transport/{minature_railway.c => miniature_railway.c} (100%) diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index 5907902b16..5d7fb37586 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -91,7 +91,7 @@ C64FDAA11D6D9A2100F259B9 /* twist.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FB1CDBC3B7009F9BFC /* twist.c */; }; C64FDAA21D6D9A2100F259B9 /* chairlift.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FD1CDBC3B7009F9BFC /* chairlift.c */; }; C64FDAA31D6D9A2100F259B9 /* lift.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FE1CDBC3B7009F9BFC /* lift.c */; }; - C64FDAA41D6D9A2100F259B9 /* minature_railway.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FF1CDBC3B7009F9BFC /* minature_railway.c */; }; + C64FDAA41D6D9A2100F259B9 /* miniature_railway.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FF1CDBC3B7009F9BFC /* miniature_railway.c */; }; C64FDAA51D6D9A2100F259B9 /* monorail.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F9001CDBC3B7009F9BFC /* monorail.c */; }; C64FDAA61D6D9A2100F259B9 /* suspended_monorail.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F9011CDBC3B7009F9BFC /* suspended_monorail.c */; }; C64FDAA71D6D9A2100F259B9 /* boat_ride.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F9031CDBC3B7009F9BFC /* boat_ride.c */; }; @@ -194,7 +194,7 @@ C686F9481CDBC3B7009F9BFC /* twist.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FB1CDBC3B7009F9BFC /* twist.c */; }; C686F9491CDBC3B7009F9BFC /* chairlift.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FD1CDBC3B7009F9BFC /* chairlift.c */; }; C686F94A1CDBC3B7009F9BFC /* lift.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FE1CDBC3B7009F9BFC /* lift.c */; }; - C686F94B1CDBC3B7009F9BFC /* minature_railway.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FF1CDBC3B7009F9BFC /* minature_railway.c */; }; + C686F94B1CDBC3B7009F9BFC /* miniature_railway.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8FF1CDBC3B7009F9BFC /* miniature_railway.c */; }; C686F94C1CDBC3B7009F9BFC /* monorail.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F9001CDBC3B7009F9BFC /* monorail.c */; }; C686F94D1CDBC3B7009F9BFC /* suspended_monorail.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F9011CDBC3B7009F9BFC /* suspended_monorail.c */; }; C686F94E1CDBC3B7009F9BFC /* boat_ride.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F9031CDBC3B7009F9BFC /* boat_ride.c */; }; @@ -600,7 +600,7 @@ C686F8FB1CDBC3B7009F9BFC /* twist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = twist.c; sourceTree = ""; }; C686F8FD1CDBC3B7009F9BFC /* chairlift.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chairlift.c; sourceTree = ""; }; C686F8FE1CDBC3B7009F9BFC /* lift.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lift.c; sourceTree = ""; }; - C686F8FF1CDBC3B7009F9BFC /* minature_railway.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = minature_railway.c; sourceTree = ""; }; + C686F8FF1CDBC3B7009F9BFC /* miniature_railway.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = miniature_railway.c; sourceTree = ""; }; C686F9001CDBC3B7009F9BFC /* monorail.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = monorail.c; sourceTree = ""; }; C686F9011CDBC3B7009F9BFC /* suspended_monorail.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = suspended_monorail.c; sourceTree = ""; }; C686F9031CDBC3B7009F9BFC /* boat_ride.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = boat_ride.c; sourceTree = ""; }; @@ -1334,7 +1334,7 @@ children = ( C686F8FD1CDBC3B7009F9BFC /* chairlift.c */, C686F8FE1CDBC3B7009F9BFC /* lift.c */, - C686F8FF1CDBC3B7009F9BFC /* minature_railway.c */, + C686F8FF1CDBC3B7009F9BFC /* miniature_railway.c */, C686F9001CDBC3B7009F9BFC /* monorail.c */, C686F9011CDBC3B7009F9BFC /* suspended_monorail.c */, ); @@ -2456,7 +2456,7 @@ C64FDAA11D6D9A2100F259B9 /* twist.c in Sources */, C64FDAA21D6D9A2100F259B9 /* chairlift.c in Sources */, C64FDAA31D6D9A2100F259B9 /* lift.c in Sources */, - C64FDAA41D6D9A2100F259B9 /* minature_railway.c in Sources */, + C64FDAA41D6D9A2100F259B9 /* miniature_railway.c in Sources */, C64FDAA51D6D9A2100F259B9 /* monorail.c in Sources */, C64FDAA61D6D9A2100F259B9 /* suspended_monorail.c in Sources */, 85B468FD1D96822F000F1DB5 /* paint_helpers.c in Sources */, @@ -2731,7 +2731,7 @@ D44271FB1CC81B3200D84D28 /* ScreenshotCommands.cpp in Sources */, D464FEBB1D31A65300CBABAC /* IStream.cpp in Sources */, D442729E1CC81B3200D84D28 /* fountain.c in Sources */, - C686F94B1CDBC3B7009F9BFC /* minature_railway.c in Sources */, + C686F94B1CDBC3B7009F9BFC /* miniature_railway.c in Sources */, C686F94D1CDBC3B7009F9BFC /* suspended_monorail.c in Sources */, D44272131CC81B3200D84D28 /* editor.c in Sources */, D442729F1CC81B3200D84D28 /* map.c in Sources */, diff --git a/openrct2.vcxproj b/openrct2.vcxproj index 2c6d64f5d7..3f96bcf768 100644 --- a/openrct2.vcxproj +++ b/openrct2.vcxproj @@ -248,7 +248,7 @@ - + diff --git a/src/ride/transport/minature_railway.c b/src/ride/transport/miniature_railway.c similarity index 100% rename from src/ride/transport/minature_railway.c rename to src/ride/transport/miniature_railway.c diff --git a/test/testpaint/testpaint.vcxproj b/test/testpaint/testpaint.vcxproj index 16162b45f2..76e617c82a 100644 --- a/test/testpaint/testpaint.vcxproj +++ b/test/testpaint/testpaint.vcxproj @@ -171,7 +171,7 @@ - + From c063c4dccf8bf9025d8f250aebc6cc91e05fb0f5 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 15 Oct 2016 19:26:43 +0200 Subject: [PATCH 24/24] Initialize variable for gcc --- src/ride/transport/miniature_railway.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ride/transport/miniature_railway.c b/src/ride/transport/miniature_railway.c index e1a36bd12e..451c5f6a4b 100644 --- a/src/ride/transport/miniature_railway.c +++ b/src/ride/transport/miniature_railway.c @@ -1507,7 +1507,7 @@ static void miniature_railway_track_diag_flat(uint8 rideIndex, uint8 trackSequen sint16 supportType = monorail_diag_support_types[direction][trackSequence]; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; if (supportType != -1) { floorImage = floors[supportType].image_id; @@ -1580,7 +1580,7 @@ static void miniature_railway_track_diag_25_deg_up(uint8 rideIndex, uint8 trackS bool hasSupports = false; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; if (supportType != -1) { floorImage = floors[supportType].image_id; @@ -1630,7 +1630,7 @@ static void miniature_railway_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint bool hasSupports = false; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; sint16 supportType = monorail_diag_support_types[direction][trackSequence]; if (supportType != -1) { @@ -1685,7 +1685,7 @@ static void miniature_railway_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint sint16 supportType = monorail_diag_support_types[direction][trackSequence]; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; if (supportType != -1) { floorImage = floors[supportType].image_id; @@ -1748,7 +1748,7 @@ static void miniature_railway_track_diag_25_deg_down(uint8 rideIndex, uint8 trac bool hasSupports = false; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; sint16 supportType = monorail_diag_support_types[direction][trackSequence]; if (supportType != -1) { @@ -1810,7 +1810,7 @@ static void miniature_railway_track_diag_flat_to_25_deg_down(uint8 rideIndex, ui bool hasSupports = false; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; sint16 supportType = monorail_diag_support_types[direction][trackSequence]; if (supportType != -1) { @@ -1859,7 +1859,7 @@ static void miniature_railway_track_diag_25_deg_down_to_flat(uint8 rideIndex, ui { bool hasSupports = false; uint32 floorImage; - rct_xy16 floorBoundSize, floorBoundOffset; + rct_xy16 floorBoundSize, floorBoundOffset = {0, 0}; sint16 supportType = monorail_diag_support_types[direction][trackSequence]; if (supportType != -1) {