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