OpenTTD Source: src/table/station_land.h Source File

OpenTTD Source 15.0-RC2

station_land.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
20#define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img) TILE_SEQ_LINE_PAL(dx, dy, dz, sx, sy, sz, img, PAL_NONE)
21
33#define TILE_SEQ_LINE_PAL(dx, dy, dz, sx, sy, sz, img, pal) { dx, dy, dz, sx, sy, sz, {img, pal} },
34
42#define TILE_SEQ_CHILD(dx, dy, img, pal) TILE_SEQ_LINE_PAL(dx, dy, (int8_t)0x80, 0, 0, 0, img, pal)
43
52#define TILE_SEQ_GROUND(dx, dy, dz, img) TILE_SEQ_CHILD(2 * (dy - dx), dx + dy - dz, img, PAL_NONE)
53
54static const DrawTileSeqStruct _station_display_datas_0[] = {
55 TILE_SEQ_LINE( 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_REAR | (1U << PALETTE_MODIFIER_COLOUR))
56 TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
57};
58
59static const DrawTileSeqStruct _station_display_datas_1[] = {
60 TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR))
61 TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
62};
63
64static const DrawTileSeqStruct _station_display_datas_2[] = {
65 TILE_SEQ_LINE( 0, 0, 0, 16, 5, 15, SPR_RAIL_PLATFORM_BUILDING_X | (1U << PALETTE_MODIFIER_COLOUR))
66 TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
67};
68
69static const DrawTileSeqStruct _station_display_datas_3[] = {
70 TILE_SEQ_LINE( 0, 0, 0, 5, 16, 15, SPR_RAIL_PLATFORM_BUILDING_Y | (1U << PALETTE_MODIFIER_COLOUR))
71 TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
72};
73
74static const DrawTileSeqStruct _station_display_datas_4[] = {
75 TILE_SEQ_LINE( 0, 0, 0, 16, 5, 7, SPR_RAIL_PLATFORM_PILLARS_X_REAR | (1U << PALETTE_MODIFIER_COLOUR))
76 TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
77 TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_A | (1U << PALETTE_MODIFIER_COLOUR))
78 TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_X_TILE_A | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
79};
80
81static const DrawTileSeqStruct _station_display_datas_5[] = {
82 TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_PILLARS_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR))
83 TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
84 TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A | (1U << PALETTE_MODIFIER_COLOUR))
85 TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_Y_TILE_A | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
86};
87
88static const DrawTileSeqStruct _station_display_datas_6[] = {
89 TILE_SEQ_LINE( 0, 0, 0, 16, 5, 2, SPR_RAIL_PLATFORM_X_REAR | (1U << PALETTE_MODIFIER_COLOUR))
90 TILE_SEQ_LINE( 0, 11, 0, 16, 5, 2, SPR_RAIL_PLATFORM_PILLARS_X_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
91 TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_X_TILE_B | (1U << PALETTE_MODIFIER_COLOUR))
92 TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_X_TILE_B | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
93};
94
95static const DrawTileSeqStruct _station_display_datas_7[] = {
96 TILE_SEQ_LINE( 0, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_Y_REAR | (1U << PALETTE_MODIFIER_COLOUR))
97 TILE_SEQ_LINE(11, 0, 0, 5, 16, 2, SPR_RAIL_PLATFORM_PILLARS_Y_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
98 TILE_SEQ_LINE( 0, 0, 16, 16, 16, 10, SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B | (1U << PALETTE_MODIFIER_COLOUR))
99 TILE_SEQ_CHILD( 0, 0, SPR_RAIL_ROOF_GLASS_Y_TILE_B | (1U << PALETTE_MODIFIER_TRANSPARENT), PALETTE_TO_TRANSPARENT)
100};
101
102static const DrawTileSeqStruct _station_display_fence_nw[] = {
103 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
104};
105
106static const DrawTileSeqStruct _station_display_fence_ne[] = {
107 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
108};
109
110static const DrawTileSeqStruct _station_display_fence_sw[] = {
111 TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
112};
113
114static const DrawTileSeqStruct _station_display_fence_se[] = {
115 TILE_SEQ_GROUND( 0, 15, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR))
116};
117
118static const DrawTileSeqStruct _station_display_terminal_a[] = {
119 TILE_SEQ_LINE( 2, 0, 0, 11, 16, 40, SPR_AIRPORT_TERMINAL_A | (1U << PALETTE_MODIFIER_COLOUR))
120};
121
122static const DrawTileSeqStruct _station_display_tower_fence_sw[] = {
123 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_TOWER | (1U << PALETTE_MODIFIER_COLOUR))
124 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
125};
126
127static const DrawTileSeqStruct _station_display_concourse[] = {
128 TILE_SEQ_LINE( 0, 1, 0, 14, 14, 30, SPR_AIRPORT_CONCOURSE | (1U << PALETTE_MODIFIER_COLOUR))
129};
130
131static const DrawTileSeqStruct _station_display_datas_terminal_b[] = {
132 TILE_SEQ_LINE( 3, 3, 0, 10, 11, 35, SPR_AIRPORT_TERMINAL_B | (1U << PALETTE_MODIFIER_COLOUR))
133};
134
135static const DrawTileSeqStruct _station_display_datas_terminal_c[] = {
136 TILE_SEQ_LINE( 0, 3, 0, 16, 11, 40, SPR_AIRPORT_TERMINAL_C | (1U << PALETTE_MODIFIER_COLOUR))
137};
138
139static const DrawTileSeqStruct _station_display_hangar_se[] = {
140 TILE_SEQ_LINE(14, 0, 0, 2, 17, 28, SPR_AIRPORT_HANGAR_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
141 TILE_SEQ_LINE( 0, 0, 0, 2, 17, 28, SPR_AIRPORT_HANGAR_REAR | (1U << PALETTE_MODIFIER_COLOUR))
142};
143
144static const DrawTileSeqStruct _station_display_jetway_1[] = {
145 TILE_SEQ_LINE( 7, 11, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_1 | (1U << PALETTE_MODIFIER_COLOUR))
146 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR))
147};
148
149static const DrawTileSeqStruct _station_display_jetway_2[] = {
150 TILE_SEQ_LINE( 2, 7, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_2 | (1U << PALETTE_MODIFIER_COLOUR))
151};
152
153static const DrawTileSeqStruct _station_display_jetway_3[] = {
154 TILE_SEQ_LINE( 3, 2, 0, 3, 3, 14, SPR_AIRPORT_JETWAY_3 | (1U << PALETTE_MODIFIER_COLOUR))
155};
156
157static const DrawTileSeqStruct _station_display_passenger_tunnel[] = {
158 TILE_SEQ_LINE( 0, 8, 0, 14, 3, 14, SPR_AIRPORT_PASSENGER_TUNNEL | (1U << PALETTE_MODIFIER_COLOUR))
159};
160
161static const DrawTileSeqStruct _station_display_radar_1_fence_sw[] = {
162 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1)
163 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
164};
165
166static const DrawTileSeqStruct _station_display_radar_2_fence_sw[] = {
167 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2)
168 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
169};
170
171static const DrawTileSeqStruct _station_display_radar_3_fence_sw[] = {
172 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3)
173 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
174};
175
176static const DrawTileSeqStruct _station_display_radar_4_fence_sw[] = {
177 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4)
178 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
179};
180
181static const DrawTileSeqStruct _station_display_radar_5_fence_sw[] = {
182 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5)
183 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
184};
185
186static const DrawTileSeqStruct _station_display_radar_6_fence_sw[] = {
187 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6)
188 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
189};
190
191static const DrawTileSeqStruct _station_display_radar_7_fence_sw[] = {
192 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7)
193 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
194};
195
196static const DrawTileSeqStruct _station_display_radar_8_fence_sw[] = {
197 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8)
198 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
199};
200
201static const DrawTileSeqStruct _station_display_radar_9_fence_sw[] = {
202 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9)
203 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
204};
205
206static const DrawTileSeqStruct _station_display_radar_10_fence_sw[] = {
207 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A)
208 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
209};
210
211static const DrawTileSeqStruct _station_display_radar_11_fence_sw[] = {
212 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B)
213 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
214};
215
216static const DrawTileSeqStruct _station_display_radar_12_fence_sw[] = {
217 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C)
218 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
219};
220
221static const DrawTileSeqStruct _station_display_transmitter_fence_ne[] = {
222 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 70, SPR_TRANSMITTER)
223 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
224};
225
226static const DrawTileSeqStruct _station_display_datas_terminal_c_2[] = {
227 TILE_SEQ_LINE( 0, 0, 0, 15, 15, 30, SPR_AIRFIELD_TERM_C_BUILD | (1U << PALETTE_MODIFIER_COLOUR))
228};
229
230static const DrawTileSeqStruct _station_display_flag_1_fence_ne[] = {
231 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
232 TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_1 | (1U << PALETTE_MODIFIER_COLOUR))
233};
234
235static const DrawTileSeqStruct _station_display_flag_2_fence_ne[] = {
236 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
237 TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_2 | (1U << PALETTE_MODIFIER_COLOUR))
238};
239
240static const DrawTileSeqStruct _station_display_flag_3_fence_ne[] = {
241 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
242 TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_3 | (1U << PALETTE_MODIFIER_COLOUR))
243};
244
245static const DrawTileSeqStruct _station_display_flag_4_fence_ne[] = {
246 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
247 TILE_SEQ_LINE( 4, 11, 0, 1, 1, 20, SPR_AIRFIELD_WIND_4 | (1U << PALETTE_MODIFIER_COLOUR))
248};
249
250static const DrawTileSeqStruct _station_display_small_depot_se[] = {
251 TILE_SEQ_LINE(14, 0, 0, 2, 17, 28, SPR_AIRFIELD_HANGAR_FRONT | (1U << PALETTE_MODIFIER_COLOUR))
252 TILE_SEQ_LINE( 0, 0, 0, 2, 17, 28, SPR_AIRFIELD_HANGAR_REAR | (1U << PALETTE_MODIFIER_COLOUR))
253};
254
255static const DrawTileSeqStruct _station_display_heliport[] = {
256 TILE_SEQ_LINE( 0, 0, 0, 16, 16, 60, SPR_HELIPORT | (1U << PALETTE_MODIFIER_COLOUR))
257};
258
259static const DrawTileSeqStruct _station_display_datas_67[] = {
260 TILE_SEQ_LINE( 0, 15, 0, 13, 1, 10, SPR_TRUCK_STOP_NE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
261 TILE_SEQ_LINE(13, 0, 0, 3, 16, 10, SPR_TRUCK_STOP_NE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
262 TILE_SEQ_LINE( 2, 0, 0, 11, 1, 10, SPR_TRUCK_STOP_NE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
263};
264
265static const DrawTileSeqStruct _station_display_datas_68[] = {
266 TILE_SEQ_LINE(15, 3, 0, 1, 13, 10, SPR_TRUCK_STOP_SE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
267 TILE_SEQ_LINE( 0, 0, 0, 16, 3, 10, SPR_TRUCK_STOP_SE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
268 TILE_SEQ_LINE( 0, 3, 0, 1, 11, 10, SPR_TRUCK_STOP_SE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
269};
270
271static const DrawTileSeqStruct _station_display_datas_69[] = {
272 TILE_SEQ_LINE( 3, 0, 0, 13, 1, 10, SPR_TRUCK_STOP_SW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
273 TILE_SEQ_LINE( 0, 0, 0, 3, 16, 10, SPR_TRUCK_STOP_SW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
274 TILE_SEQ_LINE( 3, 15, 0, 11, 1, 10, SPR_TRUCK_STOP_SW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
275};
276
277static const DrawTileSeqStruct _station_display_datas_70[] = {
278 TILE_SEQ_LINE( 0, 0, 0, 1, 13, 10, SPR_TRUCK_STOP_NW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
279 TILE_SEQ_LINE( 0, 13, 0, 16, 3, 10, SPR_TRUCK_STOP_NW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
280 TILE_SEQ_LINE(15, 2, 0, 1, 11, 10, SPR_TRUCK_STOP_NW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
281};
282
283static const DrawTileSeqStruct _station_display_datas_71[] = {
284 TILE_SEQ_LINE( 2, 0, 0, 11, 1, 10, SPR_BUS_STOP_NE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
285 TILE_SEQ_LINE(13, 0, 0, 3, 16, 10, SPR_BUS_STOP_NE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
286 TILE_SEQ_LINE( 0, 13, 0, 13, 3, 10, SPR_BUS_STOP_NE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
287};
288
289static const DrawTileSeqStruct _station_display_datas_72[] = {
290 TILE_SEQ_LINE( 0, 3, 0, 1, 11, 10, SPR_BUS_STOP_SE_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
291 TILE_SEQ_LINE( 0, 0, 0, 16, 3, 10, SPR_BUS_STOP_SE_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
292 TILE_SEQ_LINE(13, 3, 0, 3, 13, 10, SPR_BUS_STOP_SE_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
293};
294
295static const DrawTileSeqStruct _station_display_datas_73[] = {
296 TILE_SEQ_LINE( 3, 15, 0, 11, 1, 10, SPR_BUS_STOP_SW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
297 TILE_SEQ_LINE( 0, 0, 0, 3, 16, 10, SPR_BUS_STOP_SW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
298 TILE_SEQ_LINE( 3, 0, 0, 13, 3, 10, SPR_BUS_STOP_SW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
299};
300
301static const DrawTileSeqStruct _station_display_datas_74[] = {
302 TILE_SEQ_LINE(15, 2, 0, 1, 11, 10, SPR_BUS_STOP_NW_BUILD_A | (1U << PALETTE_MODIFIER_COLOUR))
303 TILE_SEQ_LINE( 0, 13, 0, 16, 3, 10, SPR_BUS_STOP_NW_BUILD_B | (1U << PALETTE_MODIFIER_COLOUR))
304 TILE_SEQ_LINE( 0, 0, 0, 3, 13, 10, SPR_BUS_STOP_NW_BUILD_C | (1U << PALETTE_MODIFIER_COLOUR))
305};
306
307static const DrawTileSeqStruct _station_display_datas_76[] = {
308 TILE_SEQ_LINE( 0, 4, 0, 16, 8, 8, SPR_DOCK_SLOPE_NE | (1U << PALETTE_MODIFIER_COLOUR))
309};
310
311static const DrawTileSeqStruct _station_display_datas_77[] = {
312 TILE_SEQ_LINE( 4, 0, 0, 8, 16, 8, SPR_DOCK_SLOPE_SE | (1U << PALETTE_MODIFIER_COLOUR))
313};
314
315static const DrawTileSeqStruct _station_display_datas_78[] = {
316 TILE_SEQ_LINE( 0, 4, 0, 16, 8, 8, SPR_DOCK_SLOPE_SW | (1U << PALETTE_MODIFIER_COLOUR))
317};
318
319static const DrawTileSeqStruct _station_display_datas_79[] = {
320 TILE_SEQ_LINE( 4, 0, 0, 8, 16, 8, SPR_DOCK_SLOPE_NW | (1U << PALETTE_MODIFIER_COLOUR))
321};
322
323static const DrawTileSeqStruct _station_display_datas_80[] = {
324 TILE_SEQ_LINE( 0, 4, 0, 16, 8, 8, SPR_DOCK_FLAT_X | (1U << PALETTE_MODIFIER_COLOUR))
325};
326
327static const DrawTileSeqStruct _station_display_datas_81[] = {
328 TILE_SEQ_LINE( 4, 0, 0, 8, 16, 8, SPR_DOCK_FLAT_Y | (1U << PALETTE_MODIFIER_COLOUR))
329};
330
331/* Buoy, which will _always_ drown under the ship */
332static const DrawTileSeqStruct _station_display_datas_82[] = {
333 TILE_SEQ_LINE( 4, -1, 0, 0, 0, 0, SPR_IMG_BUOY)
334};
335
336/* control tower without fence */
337static const DrawTileSeqStruct _station_display_tower[] = {
338 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_TOWER | (1U << PALETTE_MODIFIER_COLOUR)) // control tower
339};
340
341/* turning radar with fences on north -- needs 12 tiles
342 *BEGIN */
343static const DrawTileSeqStruct _station_display_radar_1_fence_ne[] = {
344 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1) // turning radar
345 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
346};
347
348static const DrawTileSeqStruct _station_display_radar_2_fence_ne[] = {
349 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2)
350 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
351};
352
353static const DrawTileSeqStruct _station_display_radar_3_fence_ne[] = {
354 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3)
355 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
356};
357
358static const DrawTileSeqStruct _station_display_radar_4_fence_ne[] = {
359 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4)
360 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
361};
362
363static const DrawTileSeqStruct _station_display_radar_5_fence_ne[] = {
364 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5)
365 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
366};
367
368static const DrawTileSeqStruct _station_display_radar_6_fence_ne[] = {
369 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6)
370 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
371};
372
373static const DrawTileSeqStruct _station_display_radar_7_fence_ne[] = {
374 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7)
375 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
376};
377
378static const DrawTileSeqStruct _station_display_radar_8_fence_ne[] = {
379 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8)
380 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
381};
382
383static const DrawTileSeqStruct _station_display_radar_9_fence_ne[] = {
384 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9)
385 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
386};
387
388static const DrawTileSeqStruct _station_display_radar_10_fence_ne[] = {
389 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A)
390 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
391};
392
393static const DrawTileSeqStruct _station_display_radar_11_fence_ne[] = {
394 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B)
395 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
396};
397
398static const DrawTileSeqStruct _station_display_radar_12_fence_ne[] = {
399 TILE_SEQ_LINE(7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C)
400 TILE_SEQ_LINE(0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
401};
402/* END */
403
404/* helipad for international airport */
405static const DrawTileSeqStruct _station_display_helipad_fence_sw[] = {
406 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
407 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences bottom
408};
409
410/* helipad for commuter airport */
411static const DrawTileSeqStruct _station_display_helipad_fence_nw[] = {
412 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
413 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences left
414};
415
416/* helipad for continental airport */
417static const DrawTileSeqStruct _station_display_helipad[] = {
418 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
419};
420
421/* asphalt tile with fences in north and south */
422static const DrawTileSeqStruct _station_display_fence_ne_sw[] = {
423 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
424 TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR))
425};
426
427/* runway tiles with 2 corner fences */
428static const DrawTileSeqStruct _station_display_fence_nw_sw[] = {
429 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
430 TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
431};
432
433/* runway tiles with 2 corner fences */
434static const DrawTileSeqStruct _station_display_fence_se_sw[] = {
435 TILE_SEQ_GROUND(15, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
436 TILE_SEQ_GROUND( 0, 15, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
437};
438
439/* runway tiles with 2 corner fences */
440static const DrawTileSeqStruct _station_display_fence_ne_nw[] = {
441 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
442 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
443};
444
445/* runway tiles with 2 corner fences */
446static const DrawTileSeqStruct _station_display_fence_ne_se[] = {
447 TILE_SEQ_GROUND( 0, 0, 0, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
448 TILE_SEQ_GROUND( 0, 15, 0, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
449};
450
451/* helipad tiles with 2 corner fences top+right */
452static const DrawTileSeqStruct _station_display_helipad_fence_NE_SE[] = {
453 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
454 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
455 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
456};
457
458/* helidepot office with fences top + left */
459static const DrawTileSeqStruct _station_display_low_building_fence_ne_nw[] = {
460 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences left
461 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
462 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office
463};
464
465/* West facing hangar */
466static const DrawTileSeqStruct _station_display_hangar_sw[] = {
467 TILE_SEQ_LINE(14, 0, 0, 2, 17, 28, SPR_NEWHANGAR_W | (1U << PALETTE_MODIFIER_COLOUR))
468 TILE_SEQ_LINE( 0, 0, 0, 2, 17, 28, SPR_NEWHANGAR_W_WALL | (1U << PALETTE_MODIFIER_COLOUR))
469};
470
471/* North facing hangar */
472static const DrawTileSeqStruct _station_display_hangar_nw[] = {
473 TILE_SEQ_LINE(14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_N | (1U << PALETTE_MODIFIER_COLOUR))
474};
475
476/* East facing hangar */
477static const DrawTileSeqStruct _station_display_hangar_ne[] = {
478 TILE_SEQ_LINE(14, 0, 0, 2, 16, 28, SPR_NEWHANGAR_E | (1U << PALETTE_MODIFIER_COLOUR))
479};
480
481/* helipad for district airport NS */
482static const DrawTileSeqStruct _station_display_helipad_fence_se_sw[] = {
483 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
484 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences bottom
485 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences right
486};
487
488/* helipad for district airport NS */
489static const DrawTileSeqStruct _station_display_helipad_fence_se[] = {
490 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
491 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
492};
493
494/* helidepot office with fence north */
495static const DrawTileSeqStruct _station_display_low_building_fence_nw[] = {
496 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
497 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office
498};
499
500/* helidepot office with fence east */
501static const DrawTileSeqStruct _station_display_low_building_fence_ne[] = {
502 TILE_SEQ_LINE( 0, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences east
503 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office
504};
505
506/* helidepot office with fence west */
507static const DrawTileSeqStruct _station_display_low_building_fence_sw[] = {
508 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
509 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office
510};
511
512/* helidepot office with fence south */
513static const DrawTileSeqStruct _station_display_low_building_fence_se[] = {
514 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
515 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office
516};
517
518/* helipad for district airport EW*/
519static const DrawTileSeqStruct _station_display_helipad_fence_nw_sw[] = {
520 TILE_SEQ_LINE(10, 6, 0, 0, 0, 0, SPR_AIRPORT_HELIPAD)
521 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
522 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
523};
524
525/* turning radar with fences on south -- needs 12 tiles
526 *BEGIN */
527static const DrawTileSeqStruct _station_display_radar_1_fence_se[] = {
528 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_1) // turning radar
529 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
530};
531
532static const DrawTileSeqStruct _station_display_radar_2_fence_se[] = {
533 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_2)
534 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
535};
536
537static const DrawTileSeqStruct _station_display_radar_3_fence_se[] = {
538 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_3)
539 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
540};
541
542static const DrawTileSeqStruct _station_display_radar_4_fence_se[] = {
543 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_4)
544 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
545};
546
547static const DrawTileSeqStruct _station_display_radar_5_fence_se[] = {
548 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_5)
549 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
550};
551
552static const DrawTileSeqStruct _station_display_radar_6_fence_se[] = {
553 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_6)
554 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
555};
556
557static const DrawTileSeqStruct _station_display_radar_7_fence_se[] = {
558 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_7)
559 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
560};
561
562static const DrawTileSeqStruct _station_display_radar_8_fence_se[] = {
563 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_8)
564 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
565};
566
567static const DrawTileSeqStruct _station_display_radar_9_fence_se[] = {
568 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_9)
569 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
570};
571
572static const DrawTileSeqStruct _station_display_radar_10_fence_se[] = {
573 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_A)
574 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
575};
576
577static const DrawTileSeqStruct _station_display_radar_11_fence_se[] = {
578 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_B)
579 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
580};
581
582static const DrawTileSeqStruct _station_display_radar_12_fence_se[] = {
583 TILE_SEQ_LINE( 7, 7, 0, 2, 2, 8, SPR_AIRPORT_RADAR_C)
584 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
585};
586/* END */
587
588/* helipad for helistation */
589static const DrawTileSeqStruct _station_display_newhelipad_fence_se_sw[] = {
590 TILE_SEQ_LINE( 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD)
591 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
592 TILE_SEQ_LINE( 0, 15, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences south
593};
594
595/* helipad for helistation */
596static const DrawTileSeqStruct _station_display_newhelipad_fence_nw_sw[] = {
597 TILE_SEQ_LINE( 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD)
598 TILE_SEQ_LINE(15, 0, 0, 1, 16, 6, SPR_AIRPORT_FENCE_Y | (1U << PALETTE_MODIFIER_COLOUR)) // fences west
599 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
600};
601
602/* helipad for helistation */
603static const DrawTileSeqStruct _station_display_newhelipad_fence_nw[] = {
604 TILE_SEQ_LINE( 0, 1, 2, 0, 0, 0, SPR_NEWHELIPAD)
605 TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, SPR_AIRPORT_FENCE_X | (1U << PALETTE_MODIFIER_COLOUR)) // fences north
606};
607
608/* helidepot office without fence */
609static const DrawTileSeqStruct _station_display_low_building[] = {
610 TILE_SEQ_LINE( 3, 3, 0, 10, 10, 60, SPR_AIRPORT_HELIDEPOT_OFFICE | (1U << PALETTE_MODIFIER_COLOUR)) // helidepot office
611};
612
613/* half grass half SPR_AIRPORT_APRON */
614static const DrawTileSeqStruct _station_display_grass_west[] = {
615 TILE_SEQ_LINE(0, 0, 0, 0, 0, 0, SPR_GRASS_LEFT)
616};
617
618/* half grass half SPR_AIRPORT_APRON */
619static const DrawTileSeqStruct _station_display_grass_east[] = {
620 TILE_SEQ_LINE(0, 0, 0, 0, 0, 0, SPR_GRASS_RIGHT)
621};
622
623/* drive-through truck stop X */
624static const DrawTileSeqStruct _station_display_datas_0168[] = {
625 TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_TRUCK_STOP_DT_X_W | (1U << PALETTE_MODIFIER_COLOUR))
626 TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_TRUCK_STOP_DT_X_E | (1U << PALETTE_MODIFIER_COLOUR))
627};
628
629/* drive-through truck stop Y */
630static const DrawTileSeqStruct _station_display_datas_0169[] = {
631 TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_TRUCK_STOP_DT_Y_W | (1U << PALETTE_MODIFIER_COLOUR))
632 TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_TRUCK_STOP_DT_Y_E | (1U << PALETTE_MODIFIER_COLOUR))
633};
634
635/* drive-through bus stop X */
636static const DrawTileSeqStruct _station_display_datas_0170[] = {
637 TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_BUS_STOP_DT_X_W | (1U << PALETTE_MODIFIER_COLOUR))
638 TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_BUS_STOP_DT_X_E | (1U << PALETTE_MODIFIER_COLOUR))
639};
640
641/* drive-through bus stop Y */
642static const DrawTileSeqStruct _station_display_datas_0171[] = {
643 TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_BUS_STOP_DT_Y_W | (1U << PALETTE_MODIFIER_COLOUR))
644 TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_BUS_STOP_DT_Y_E | (1U << PALETTE_MODIFIER_COLOUR))
645};
646
647/* road waypoint X */
648static const DrawTileSeqStruct _station_display_datas_road_waypoint_X[] = {
649 TILE_SEQ_LINE( 0, 0, 0, 16, 3, 16, SPR_ROAD_WAYPOINT_X_W | (1U << PALETTE_MODIFIER_COLOUR))
650 TILE_SEQ_LINE( 0, 13, 0, 16, 3, 16, SPR_ROAD_WAYPOINT_X_E | (1U << PALETTE_MODIFIER_COLOUR))
651};
652
653/* road waypoint Y */
654static const DrawTileSeqStruct _station_display_datas_road_waypoint_Y[] = {
655 TILE_SEQ_LINE(13, 0, 0, 3, 16, 16, SPR_ROAD_WAYPOINT_Y_W | (1U << PALETTE_MODIFIER_COLOUR))
656 TILE_SEQ_LINE( 0, 0, 0, 3, 16, 16, SPR_ROAD_WAYPOINT_Y_E | (1U << PALETTE_MODIFIER_COLOUR))
657};
658
659static const DrawTileSeqStruct _station_display_datas_waypoint_X[] = {
660 TILE_SEQ_LINE( 0, 0, 0, 16, 5, 16, SPR_WAYPOINT_X_1 | (1U << PALETTE_MODIFIER_COLOUR))
661 TILE_SEQ_LINE( 0, 11, 0, 16, 5, 16, SPR_WAYPOINT_X_2 | (1U << PALETTE_MODIFIER_COLOUR))
662};
663
664static const DrawTileSeqStruct _station_display_datas_waypoint_Y[] = {
665 TILE_SEQ_LINE( 0, 0, 0, 5, 16, 16, SPR_WAYPOINT_Y_1 | (1U << PALETTE_MODIFIER_COLOUR))
666 TILE_SEQ_LINE(11, 0, 0, 5, 16, 16, SPR_WAYPOINT_Y_2 | (1U << PALETTE_MODIFIER_COLOUR))
667};
668
669#undef TILE_SEQ_LINE
670#undef TILE_SEQ_LINE_PAL
671#undef TILE_SEQ_CHILD
672#undef TILE_SEQ_GROUND
673
679#define TILE_SPRITE_LINE(img, dtss) { {img, PAL_NONE}, dtss },
680#define TILE_SPRITE_LINE_NOTHING(img) { {img, PAL_NONE} },
681#define TILE_SPRITE_NULL() { {0, 0} },
682
683extern const DrawTileSpriteSpan _station_display_datas_rail[] = {
684 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_0)
685 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_1)
686 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_2)
687 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_3)
688 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_4)
689 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_5)
690 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_6)
691 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_7)
692};
693
694static const DrawTileSpriteSpan _station_display_datas_airport[] = {
695 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_APRON) // APT_APRON
696 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_nw) // APT_APRON_FENCE_NW
697 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_sw) // APT_APRON_FENCE_SW
698 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_AIRCRAFT_STAND) // APT_STAND
699 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_NS_WEST) // APT_APRON_W
700 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_EW_SOUTH) // APT_APRON_S
701 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_XING_SOUTH) // APT_APRON_VER_CROSSING_S
702 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_XING_WEST) // APT_APRON_HOR_CROSSING_W
703 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_NS_CTR) // APT_APRON_VER_CROSSING_N
704 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_XING_EAST) // APT_APRON_HOR_CROSSING_E
705 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_NS_EAST) // APT_APRON_E
706 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_EW_NORTH) // APT_ARPON_N
707 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_TAXIWAY_EW_CTR) // APT_APRON_HOR
708 TILE_SPRITE_LINE(SPR_AIRPORT_TAXIWAY_EW_NORTH, _station_display_fence_sw) // APT_APRON_N_FENCE_SW
709 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_A, _station_display_fence_se) // APT_RUNWAY_1
710 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_fence_se) // APT_RUNWAY_2
711 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_C, _station_display_fence_se) // APT_RUNWAY_3
712 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_D, _station_display_fence_se) // APT_RUNWAY_4
713 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_se) // APT_RUNWAY_END_FENCE_SE
714 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_terminal_a) // APT_BUILDING_2
715 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_tower_fence_sw) // APT_TOWER_FENCE_SW
716 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_concourse) // APT_ROUND_TERMINAL
717 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_datas_terminal_b) // APT_BUILDING_3
718 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_datas_terminal_c) // APT_BUILDING_1
719 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_hangar_se) // APT_DEPOT_SE
720 TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND, _station_display_jetway_1) // APT_STAND_1
721 TILE_SPRITE_LINE(SPR_AIRPORT_AIRCRAFT_STAND, _station_display_jetway_2) // APT_STAND_PIER_NE
722 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_jetway_3) // APT_PIER_NW_NE
723 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_passenger_tunnel) // APT_PIER
724 TILE_SPRITE_LINE_NOTHING(SPR_FLAT_GRASS_TILE) // APT_EMPTY
725 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_fence_ne) // APT_EMPTY_FENCE_NE
726 TILE_SPRITE_NULL() // APT_RADAR_GRASS_FENCE_SW
727 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_transmitter_fence_ne) // APT_RADIO_TOWER_FENCE_NE
728 TILE_SPRITE_LINE_NOTHING(SPR_AIRFIELD_TERM_A) // APT_SMALL_BUILDING_3
729 TILE_SPRITE_LINE_NOTHING(SPR_AIRFIELD_TERM_B) // APT_SMALL_BUILDING_2
730 TILE_SPRITE_LINE(SPR_AIRFIELD_TERM_C_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_terminal_c_2) // APT_SMALL_BUILDING_1
731 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_A, _station_display_fence_sw) // APT_GRASS_FENCE_SW
732 TILE_SPRITE_LINE_NOTHING(SPR_AIRFIELD_APRON_B) // APT_GRASS_2
733 TILE_SPRITE_LINE_NOTHING(SPR_AIRFIELD_APRON_C) // APT_GRASS_1
734 TILE_SPRITE_NULL() // APT_GRASS_FENCE_NE_FLAG
735 TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_NEAR_END, _station_display_fence_se) // APT_RUNWAY_SMALL_NEAR_END
736 TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_MIDDLE, _station_display_fence_se) // APT_RUNWAY_SMALL_MIDDLE
737 TILE_SPRITE_LINE(SPR_AIRFIELD_RUNWAY_FAR_END, _station_display_fence_se) // APT_RUNWAY_SMALL_FAR_END
738 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_small_depot_se) // APT_SMALL_DEPOT_SE
739 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_heliport) // APT_HELIPORT
740 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_RUNWAY_END) // APT_RUNWAY_END
741 TILE_SPRITE_LINE_NOTHING(SPR_AIRPORT_RUNWAY_EXIT_B) // APT_RUNWAY_5
742 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_tower) // APT_TOWER
743 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_ne) // APT_APRON_FENCE_NE
744 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_nw) // APT_RUNWAY_END_FENCE_NW
745 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_EXIT_B, _station_display_fence_nw) // APT_RUNWAY_FENCE_NW
746 TILE_SPRITE_NULL() // APT_RADAR_FENCE_SW
747 TILE_SPRITE_NULL() // APT_RADAR_FENCE_NE
748 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad_fence_sw) // APT_HELIPAD_1
749 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad_fence_nw) // APT_HELIPAD_2_FENCE_NW
750 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad) // APT_HELIPAD_2
751 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_ne_sw) // APT_APRON_FENCE_NE_SW
752 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_nw_sw) // APT_RUNWAY_END_FENCE_NW_SW
753 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_se_sw) // APT_RUNWAY_END_FENCE_SE_SW
754 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_ne_nw) // APT_RUNWAY_END_FENCE_NE_NW
755 TILE_SPRITE_LINE(SPR_AIRPORT_RUNWAY_END, _station_display_fence_ne_se) // APT_RUNWAY_END_FENCE_NE_SE
756 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_helipad_fence_NE_SE) // APT_HELIPAD_2_FENCE_NE_SE
757 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_se_sw) // APT_APRON_FENCE_SE_SW
758 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_low_building_fence_ne_nw) // APT_LOW_BUILDING_FENCE_N
759 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_low_building_fence_nw) // APT_LOW_BUILDING_FENCE_NW
760 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_se) // APT_APRON_FENCE_SE
761 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_newhelipad_fence_se_sw) // APT_HELIPAD_3_FENCE_SE_SW
762 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_newhelipad_fence_nw_sw) // APT_HELIPAD_3_FENCE_NW_SW
763 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_newhelipad_fence_nw) // APT_HELIPAD_3_FENCE_NW
764 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_low_building) // APT_LOW_BUILDING
765 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_fence_ne_se) // APT_APRON_FENCE_NE_SE
766 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_grass_west) // APT_APRON_HALF_EAST
767 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_grass_east) // APT_APRON_HALF_WEST
768 TILE_SPRITE_NULL() // APT_GRASS_FENCE_NE_FLAG_2
769};
770
771static const DrawTileSpriteSpan _station_display_datas_airport_radar_grass_fence_sw[] = {
772 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_1_fence_sw) // APT_RADAR_GRASS_FENCE_SW
773 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_2_fence_sw)
774 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_3_fence_sw)
775 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_4_fence_sw)
776 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_5_fence_sw)
777 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_6_fence_sw)
778 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_7_fence_sw)
779 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_8_fence_sw)
780 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_9_fence_sw)
781 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_10_fence_sw)
782 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_11_fence_sw)
783 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_radar_12_fence_sw)
784};
785
786static const DrawTileSpriteSpan _station_display_datas_airport_flag_grass_fence_ne[] = {
787 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_1_fence_ne) // APT_GRASS_FENCE_NE_FLAG
788 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_2_fence_ne)
789 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_3_fence_ne)
790 TILE_SPRITE_LINE(SPR_AIRFIELD_APRON_D, _station_display_flag_4_fence_ne)
791};
792
793static const DrawTileSpriteSpan _station_display_datas_airport_radar_fence_sw[] = {
794 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_1_fence_sw) // APT_RADAR_FENCE_SW
795 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_2_fence_sw)
796 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_3_fence_sw)
797 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_4_fence_sw)
798 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_5_fence_sw)
799 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_6_fence_sw)
800 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_7_fence_sw)
801 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_8_fence_sw)
802 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_9_fence_sw)
803 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_10_fence_sw)
804 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_11_fence_sw)
805 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_12_fence_sw)
806};
807
808static const DrawTileSpriteSpan _station_display_datas_airport_radar_fence_ne[] = {
809 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_1_fence_ne) // APT_RADAR_FENCE_NE
810 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_2_fence_ne)
811 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_3_fence_ne)
812 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_4_fence_ne)
813 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_5_fence_ne)
814 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_6_fence_ne)
815 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_7_fence_ne)
816 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_8_fence_ne)
817 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_9_fence_ne)
818 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_10_fence_ne)
819 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_11_fence_ne)
820 TILE_SPRITE_LINE(SPR_AIRPORT_APRON, _station_display_radar_12_fence_ne)
821};
822
823static const DrawTileSpriteSpan _station_display_datas_airport_flag_grass_fence_ne_2[] = {
824 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_1_fence_ne) // APT_GRASS_FENCE_NE_FLAG_2
825 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_2_fence_ne)
826 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_3_fence_ne)
827 TILE_SPRITE_LINE(SPR_FLAT_GRASS_TILE, _station_display_flag_4_fence_ne)
828};
829
830
831static const DrawTileSpriteSpan _station_display_datas_truck[] = {
832 TILE_SPRITE_LINE(SPR_TRUCK_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_67)
833 TILE_SPRITE_LINE(SPR_TRUCK_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_68)
834 TILE_SPRITE_LINE(SPR_TRUCK_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_69)
835 TILE_SPRITE_LINE(SPR_TRUCK_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_70)
836 TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0168)
837 TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0169)
838};
839
840static const DrawTileSpriteSpan _station_display_datas_bus[] = {
841 TILE_SPRITE_LINE(SPR_BUS_STOP_NE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_71)
842 TILE_SPRITE_LINE(SPR_BUS_STOP_SE_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_72)
843 TILE_SPRITE_LINE(SPR_BUS_STOP_SW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_73)
844 TILE_SPRITE_LINE(SPR_BUS_STOP_NW_GROUND | (1U << PALETTE_MODIFIER_COLOUR), _station_display_datas_74)
845 TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_0170)
846 TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_0171)
847};
848
849static const DrawTileSpriteSpan _station_display_datas_road_waypoint[] = {
850 TILE_SPRITE_NULL()
851 TILE_SPRITE_NULL()
852 TILE_SPRITE_NULL()
853 TILE_SPRITE_NULL()
854 TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_X, _station_display_datas_road_waypoint_X)
855 TILE_SPRITE_LINE(SPR_ROAD_PAVED_STRAIGHT_Y, _station_display_datas_road_waypoint_Y)
856};
857
858static const DrawTileSpriteSpan _station_display_datas_oilrig[] = {
859 TILE_SPRITE_LINE_NOTHING(SPR_FLAT_WATER_TILE)
860};
861
862static const DrawTileSpriteSpan _station_display_datas_dock[] = {
863 TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_SW, _station_display_datas_76)
864 TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_NW, _station_display_datas_77)
865 TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_NE, _station_display_datas_78)
866 TILE_SPRITE_LINE(SPR_SHORE_BASE + SLOPE_SE, _station_display_datas_79)
867 TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_datas_80)
868 TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_datas_81)
869};
870
871static const DrawTileSpriteSpan _station_display_datas_buoy[] = {
872 TILE_SPRITE_LINE(SPR_FLAT_WATER_TILE, _station_display_datas_82)
873};
874
875static const DrawTileSpriteSpan _station_display_datas_waypoint[] = {
876 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X)
877 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y)
878 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X)
879 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y)
880 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X)
881 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y)
882 TILE_SPRITE_LINE(SPR_RAIL_TRACK_X, _station_display_datas_waypoint_X)
883 TILE_SPRITE_LINE(SPR_RAIL_TRACK_Y, _station_display_datas_waypoint_Y)
884};
885
886#undef TILE_SPRITE_LINE
887#undef TILE_SPRITE_LINE_NOTHING
888#undef TILE_SPRITE_NULL
889
890/* Default waypoint is also drawn as fallback for NewGRF waypoints.
891 * As these are drawn/build like stations, they may use the same number of layouts. */
892static_assert(lengthof(_station_display_datas_rail) == lengthof(_station_display_datas_waypoint));
893
894static const std::array<std::span<const DrawTileSpriteSpan>, to_underlying(StationType::End)> _station_display_datas = {{
895 _station_display_datas_rail,
896 _station_display_datas_airport,
897 _station_display_datas_truck,
898 _station_display_datas_bus,
899 _station_display_datas_oilrig,
900 _station_display_datas_dock,
901 _station_display_datas_buoy,
902 _station_display_datas_waypoint,
903 _station_display_datas_road_waypoint,
904}};
905
906static const BridgeableTileInfo _station_bridgeable_info_rail[] = {
907 {2, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE}}, // X-axis empty platform.
908 {2, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE}}, // Y-axis empty platform.
909 {2, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE}}, // X-axis small building.
910 {2, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE}}, // Y-axis small building.
911 {5, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE, BridgePillarFlag::EdgeSE, BridgePillarFlag::CornerE, BridgePillarFlag::CornerS}}, // X large building north.
912 {5, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE, BridgePillarFlag::EdgeSW, BridgePillarFlag::CornerS, BridgePillarFlag::CornerW}}, // Y large building north.
913 {5, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE, BridgePillarFlag::EdgeNW, BridgePillarFlag::CornerN, BridgePillarFlag::CornerW}}, // X large building south.
914 {5, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE, BridgePillarFlag::EdgeNE, BridgePillarFlag::CornerN, BridgePillarFlag::CornerE}}, // Y large building south.
915};
916
917static const BridgeableTileInfo _station_bridgeable_info_waypoint[] = {
918 {2, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE}}, // X-axis waypoint.
919 {2, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE}}, // Y-axis waypoint.
920};
921
922static const BridgeableTileInfo _station_bridgeable_info_dock[] = {
923 {2, {}}, // Northeast slope.
924 {2, {}}, // Southeast slope.
925 {2, {}}, // Southwest slope.
926 {2, {}}, // Northwest slope.
927 {3, {}}, // X-axis part on water.
928 {3, {}}, // Y-axis part on water.
929};
930
931static const BridgeableTileInfo _station_bridgeable_info_buoy[] = {
932 {1, {}},
933};
934
935static const BridgeableTileInfo _station_bridgeable_info_roadstop[] = {
936 {2, {BridgePillarFlag::EdgeNE}}, // NE bay.
937 {2, {BridgePillarFlag::EdgeSE}}, // SE bay.
938 {2, {BridgePillarFlag::EdgeSW}}, // SW bay.
939 {2, {BridgePillarFlag::EdgeNW}}, // NW bay.
940 {2, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE}}, // X-axis drive-through.
941 {2, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE}}, // Y-axis drive-through.
942};
943
944static const BridgeableTileInfo _station_bridgeable_info_road_waypoint[] = {
945 {}, // NE bay (unused)
946 {}, // SE bay (unused)
947 {}, // SW bay (unused)
948 {}, // NW bay (unused)
949 {2, {BridgePillarFlag::EdgeSW, BridgePillarFlag::EdgeNE}}, // X-axis waypoint.
950 {2, {BridgePillarFlag::EdgeNW, BridgePillarFlag::EdgeSE}}, // Y-axis waypoint.
951};
952
953static const std::array<std::span<const BridgeableTileInfo>, to_underlying(StationType::End)> _station_bridgeable_info = {{
954 _station_bridgeable_info_rail, // Rail
955 {}, // Airport
956 _station_bridgeable_info_roadstop, // Truck
957 _station_bridgeable_info_roadstop, // Bus
958 {}, // Oilrig
959 _station_bridgeable_info_dock, // Dock
960 _station_bridgeable_info_buoy, // Buoy
961 _station_bridgeable_info_waypoint, // RailWaypoint
962 _station_bridgeable_info_road_waypoint, // RoadWaypoint
963}};
BridgePillarFlag::CornerN
@ CornerN
North corner is obstructed.
BridgePillarFlag::CornerS
@ CornerS
South corner is obstructed.
BridgePillarFlag::CornerE
@ CornerE
East corner is obstructed.
BridgePillarFlag::CornerW
@ CornerW
West corner is obstructed.
to_underlying
constexpr std::underlying_type_t< enum_type > to_underlying(enum_type e)
Implementation of std::to_underlying (from C++23)
Definition enum_type.hpp:17
SLOPE_SW
@ SLOPE_SW
south and west corner are raised
Definition slope_type.h:56
SLOPE_NE
@ SLOPE_NE
north and east corner are raised
Definition slope_type.h:58
SLOPE_SE
@ SLOPE_SE
south and east corner are raised
Definition slope_type.h:57
SLOPE_NW
@ SLOPE_NW
north and west corner are raised
Definition slope_type.h:55
PALETTE_MODIFIER_TRANSPARENT
static constexpr uint8_t PALETTE_MODIFIER_TRANSPARENT
when a sprite is to be displayed transparently, this bit needs to be set.
Definition sprites.h:1561
PALETTE_TO_TRANSPARENT
static const PaletteID PALETTE_TO_TRANSPARENT
This sets the sprite to transparent.
Definition sprites.h:1616
PALETTE_MODIFIER_COLOUR
static constexpr uint8_t PALETTE_MODIFIER_COLOUR
this bit is set when a recolouring process is in action
Definition sprites.h:1562
SPR_SHORE_BASE
static const SpriteID SPR_SHORE_BASE
shore tiles - action 05-0D
Definition sprites.h:226
TILE_SPRITE_LINE
#define TILE_SPRITE_LINE(img, dtss)
Constructor macro of a DrawTileSpriteSpan structure.
Definition station_land.h:679
TILE_SEQ_LINE
#define TILE_SEQ_LINE(dx, dy, dz, sx, sy, sz, img)
Constructor macro for an image without a palette in a DrawTileSeqStruct array.
Definition station_land.h:20
TILE_SEQ_CHILD
#define TILE_SEQ_CHILD(dx, dy, img, pal)
Constructor macro for an image without bounding box.
Definition station_land.h:42
TILE_SEQ_GROUND
#define TILE_SEQ_GROUND(dx, dy, dz, img)
Constructor macro for additional ground sprites.
Definition station_land.h:52
lengthof
#define lengthof(array)
Return the length of an fixed size array.
Definition stdafx.h:271
BridgeableTileInfo
Information about a tile structure that may have a bridge above.
Definition bridge_type.h:59
DrawTileSeqStruct
A tile child sprite and palette to draw for stations etc, with 3D bounding box.
Definition sprite.h:33
DrawTileSpriteSpan
Ground palette sprite of a tile, together with its sprite layout.
Definition sprite.h:67