OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

sprites.h
Go to the documentation of this file.
1 /* $Id: sprites.h 27020 2014-10-15 18:31:37Z rubidium $ */
2
3 /*
4 * This file is part of OpenTTD.
5 * 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.
6 * 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.
7 * 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/>.
8 */
9
40 #ifndef SPRITES_H
41 #define SPRITES_H
42
43 #include "../gfx_type.h"
44
45 static const SpriteID SPR_SELECT_TILE = 752;
46 static const SpriteID SPR_DOT = 774; // corner marker for lower/raise land
47 static const SpriteID SPR_DOT_SMALL = 4078;
48 static const SpriteID SPR_WHITE_POINT = 4079;
49
50 /* ASCII */
51 static const SpriteID SPR_ASCII_SPACE = 2;
52 static const SpriteID SPR_ASCII_SPACE_SMALL = 226;
53 static const SpriteID SPR_ASCII_SPACE_BIG = 450;
54
55 static const SpriteID SPR_LARGE_SMALL_WINDOW = 682;
56
58 static const SpriteID SPR_OPENTTD_BASE = 4896;
59 static const uint16 OPENTTD_SPRITE_COUNT = 175;
60
61 /* Halftile-selection sprites */
62 static const SpriteID SPR_HALFTILE_SELECTION_FLAT = SPR_OPENTTD_BASE;
63 static const SpriteID SPR_HALFTILE_SELECTION_DOWN = SPR_OPENTTD_BASE + 4;
64 static const SpriteID SPR_HALFTILE_SELECTION_UP = SPR_OPENTTD_BASE + 8;
65
66 static const SpriteID SPR_SQUARE = SPR_OPENTTD_BASE + 38; // coloured square (used for newgrf compatibility)
67 static const SpriteID SPR_BLOT = SPR_OPENTTD_BASE + 39; // coloured circle (used for server compatibility and installed content)
68 static const SpriteID SPR_LOCK = SPR_OPENTTD_BASE + 40; // lock icon (for password protected servers)
69 static const SpriteID SPR_BOX_EMPTY = SPR_OPENTTD_BASE + 41;
70 static const SpriteID SPR_BOX_CHECKED = SPR_OPENTTD_BASE + 42;
71 static const SpriteID SPR_WARNING_SIGN = SPR_OPENTTD_BASE + 43; // warning sign (shown if there are any newgrf errors)
72 static const SpriteID SPR_WINDOW_RESIZE_RIGHT= SPR_OPENTTD_BASE + 44; // resize icon to the right
73 static const SpriteID SPR_WINDOW_RESIZE_LEFT = SPR_OPENTTD_BASE + 149; // resize icon to the left
74 static const SpriteID SPR_WINDOW_SHADE = SPR_OPENTTD_BASE + 151; // shade the window icon
75 static const SpriteID SPR_WINDOW_UNSHADE = SPR_OPENTTD_BASE + 152; // unshade the window icon
76 static const SpriteID SPR_WINDOW_DEBUG = SPR_OPENTTD_BASE + 153; // NewGRF debug window icon
77 static const SpriteID SPR_IMG_PLAY_MUSIC_RTL = SPR_OPENTTD_BASE + 150; // play music button, but then for RTL users
78 /* Arrow icons pointing in all 4 directions */
79 static const SpriteID SPR_ARROW_DOWN = SPR_OPENTTD_BASE + 45;
80 static const SpriteID SPR_ARROW_UP = SPR_OPENTTD_BASE + 46;
81 static const SpriteID SPR_ARROW_LEFT = SPR_OPENTTD_BASE + 47;
82 static const SpriteID SPR_ARROW_RIGHT = SPR_OPENTTD_BASE + 48;
83 static const SpriteID SPR_HOUSE_ICON = SPR_OPENTTD_BASE + 49;
84 static const SpriteID SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 50;
85 static const SpriteID SPR_PIN_UP = SPR_OPENTTD_BASE + 51; // pin icon
86 static const SpriteID SPR_PIN_DOWN = SPR_OPENTTD_BASE + 52;
87
88 static const SpriteID SPR_CLOSEBOX = 143;
89
90 static const SpriteID SPR_CIRCLE_FOLDED = SPR_OPENTTD_BASE + 147; // (+) icon
91 static const SpriteID SPR_CIRCLE_UNFOLDED = SPR_OPENTTD_BASE + 148; // (-) icon
92
93 /* on screen keyboard icons */
94 static const SpriteID SPR_OSK_LEFT = SPR_OPENTTD_BASE + 138;
95 static const SpriteID SPR_OSK_RIGHT = SPR_OPENTTD_BASE + 139;
96 static const SpriteID SPR_OSK_CAPS = SPR_OPENTTD_BASE + 140;
97 static const SpriteID SPR_OSK_SHIFT = SPR_OPENTTD_BASE + 141;
98 static const SpriteID SPR_OSK_BACKSPACE = SPR_OPENTTD_BASE + 142;
99 static const SpriteID SPR_OSK_SPECIAL = SPR_OPENTTD_BASE + 143;
100
102 static const SpriteID SPR_CLONE_TRAIN = SPR_OPENTTD_BASE + 106;
103 static const SpriteID SPR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 107;
104 static const SpriteID SPR_CLONE_SHIP = SPR_OPENTTD_BASE + 108;
105 static const SpriteID SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 109;
106
107 static const SpriteID SPR_SELL_TRAIN = SPR_OPENTTD_BASE + 93;
108 static const SpriteID SPR_SELL_ROADVEH = SPR_OPENTTD_BASE + 94;
109 static const SpriteID SPR_SELL_SHIP = SPR_OPENTTD_BASE + 95;
110 static const SpriteID SPR_SELL_AIRCRAFT = SPR_OPENTTD_BASE + 96;
111 static const SpriteID SPR_SELL_ALL_TRAIN = SPR_OPENTTD_BASE + 97;
112 static const SpriteID SPR_SELL_ALL_ROADVEH = SPR_OPENTTD_BASE + 98;
113 static const SpriteID SPR_SELL_ALL_SHIP = SPR_OPENTTD_BASE + 99;
114 static const SpriteID SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 100;
115 static const SpriteID SPR_REPLACE_TRAIN = SPR_OPENTTD_BASE + 101;
116 static const SpriteID SPR_REPLACE_ROADVEH = SPR_OPENTTD_BASE + 102;
117 static const SpriteID SPR_REPLACE_SHIP = SPR_OPENTTD_BASE + 103;
118 static const SpriteID SPR_REPLACE_AIRCRAFT = SPR_OPENTTD_BASE + 104;
119 static const SpriteID SPR_SELL_CHAIN_TRAIN = SPR_OPENTTD_BASE + 105;
120
121 static const SpriteID SPR_PROFIT_NA = SPR_OPENTTD_BASE + 154;
122 static const SpriteID SPR_PROFIT_NEGATIVE = SPR_OPENTTD_BASE + 155;
123 static const SpriteID SPR_PROFIT_SOME = SPR_OPENTTD_BASE + 156;
124 static const SpriteID SPR_PROFIT_LOT = SPR_OPENTTD_BASE + 157;
125
126 static const SpriteID SPR_UNREAD_NEWS = SPR_OPENTTD_BASE + 158;
127 static const SpriteID SPR_EXCLUSIVE_TRANSPORT = SPR_OPENTTD_BASE + 159;
128 static const SpriteID SPR_GROUP_REPLACE_PROTECT = SPR_OPENTTD_BASE + 160;
129 static const SpriteID SPR_GROUP_REPLACE_ACTIVE = SPR_OPENTTD_BASE + 161;
130
131 static const SpriteID SPR_GROUP_CREATE_TRAIN = SPR_OPENTTD_BASE + 114;
132 static const SpriteID SPR_GROUP_CREATE_ROADVEH = SPR_OPENTTD_BASE + 115;
133 static const SpriteID SPR_GROUP_CREATE_SHIP = SPR_OPENTTD_BASE + 116;
134 static const SpriteID SPR_GROUP_CREATE_AIRCRAFT = SPR_OPENTTD_BASE + 117;
135 static const SpriteID SPR_GROUP_DELETE_TRAIN = SPR_OPENTTD_BASE + 118;
136 static const SpriteID SPR_GROUP_DELETE_ROADVEH = SPR_OPENTTD_BASE + 119;
137 static const SpriteID SPR_GROUP_DELETE_SHIP = SPR_OPENTTD_BASE + 120;
138 static const SpriteID SPR_GROUP_DELETE_AIRCRAFT = SPR_OPENTTD_BASE + 121;
139 static const SpriteID SPR_GROUP_RENAME_TRAIN = SPR_OPENTTD_BASE + 122;
140 static const SpriteID SPR_GROUP_RENAME_ROADVEH = SPR_OPENTTD_BASE + 123;
141 static const SpriteID SPR_GROUP_RENAME_SHIP = SPR_OPENTTD_BASE + 124;
142 static const SpriteID SPR_GROUP_RENAME_AIRCRAFT = SPR_OPENTTD_BASE + 125;
143 static const SpriteID SPR_GROUP_REPLACE_ON_TRAIN = SPR_OPENTTD_BASE + 126;
144 static const SpriteID SPR_GROUP_REPLACE_ON_ROADVEH = SPR_OPENTTD_BASE + 127;
145 static const SpriteID SPR_GROUP_REPLACE_ON_SHIP = SPR_OPENTTD_BASE + 128;
146 static const SpriteID SPR_GROUP_REPLACE_ON_AIRCRAFT = SPR_OPENTTD_BASE + 129;
147 static const SpriteID SPR_GROUP_REPLACE_OFF_TRAIN = SPR_OPENTTD_BASE + 130;
148 static const SpriteID SPR_GROUP_REPLACE_OFF_ROADVEH = SPR_OPENTTD_BASE + 131;
149 static const SpriteID SPR_GROUP_REPLACE_OFF_SHIP = SPR_OPENTTD_BASE + 132;
150 static const SpriteID SPR_GROUP_REPLACE_OFF_AIRCRAFT = SPR_OPENTTD_BASE + 133;
151
152 static const SpriteID SPR_TOWN_RATING_NA = SPR_OPENTTD_BASE + 162;
153 static const SpriteID SPR_TOWN_RATING_APALLING = SPR_OPENTTD_BASE + 163;
154 static const SpriteID SPR_TOWN_RATING_MEDIOCRE = SPR_OPENTTD_BASE + 164;
155 static const SpriteID SPR_TOWN_RATING_GOOD = SPR_OPENTTD_BASE + 165;
156
157 static const SpriteID SPR_IMG_SWITCH_TOOLBAR = SPR_OPENTTD_BASE + 144;
158
159 static const SpriteID SPR_IMG_DELETE_LEFT = SPR_OPENTTD_BASE + 166;
160 static const SpriteID SPR_IMG_DELETE_RIGHT = SPR_OPENTTD_BASE + 167;
161
162 static const SpriteID SPR_WINDOW_DEFSIZE = SPR_OPENTTD_BASE + 168;
163
164 static const SpriteID SPR_IMG_CARGOFLOW = SPR_OPENTTD_BASE + 174;
165
166 static const SpriteID SPR_SIGNALS_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITE_COUNT;
167 static const uint16 PRESIGNAL_SPRITE_COUNT = 48;
168 static const uint16 PRESIGNAL_AND_SEMAPHORE_SPRITE_COUNT = 112;
169 static const uint16 PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT = 240;
170
171 static const SpriteID SPR_CANALS_BASE = SPR_SIGNALS_BASE + PRESIGNAL_SEMAPHORE_AND_PBS_SPRITE_COUNT;
172 static const uint16 CANALS_SPRITE_COUNT = 65;
173
175 static const SpriteID SPR_AQUEDUCT_BASE = SPR_CANALS_BASE + CANALS_SPRITE_COUNT;
176 static const SpriteID SPR_AQUEDUCT_RAMP_SW = SPR_AQUEDUCT_BASE + 0;
177 static const SpriteID SPR_AQUEDUCT_RAMP_SE = SPR_AQUEDUCT_BASE + 1;
178 static const SpriteID SPR_AQUEDUCT_RAMP_NE = SPR_AQUEDUCT_BASE + 2;
179 static const SpriteID SPR_AQUEDUCT_RAMP_NW = SPR_AQUEDUCT_BASE + 3;
180 static const SpriteID SPR_AQUEDUCT_MIDDLE_X = SPR_AQUEDUCT_BASE + 4;
181 static const SpriteID SPR_AQUEDUCT_MIDDLE_Y = SPR_AQUEDUCT_BASE + 5;
182 static const SpriteID SPR_AQUEDUCT_PILLAR_X = SPR_AQUEDUCT_BASE + 6;
183 static const SpriteID SPR_AQUEDUCT_PILLAR_Y = SPR_AQUEDUCT_BASE + 7;
184 static const uint16 AQUEDUCT_SPRITE_COUNT = 8;
185
187 static const SpriteID SPR_TRACKS_FOR_SLOPES_BASE = SPR_AQUEDUCT_BASE + AQUEDUCT_SPRITE_COUNT;
188 static const SpriteID SPR_TRACKS_FOR_SLOPES_RAIL_BASE = SPR_TRACKS_FOR_SLOPES_BASE + 0;
189 static const SpriteID SPR_TRACKS_FOR_SLOPES_MONO_BASE = SPR_TRACKS_FOR_SLOPES_BASE + 4;
190 static const SpriteID SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE = SPR_TRACKS_FOR_SLOPES_BASE + 8;
191 static const uint16 TRACKS_FOR_SLOPES_SPRITE_COUNT = 12;
192
193 static const SpriteID SPR_SLOPES_BASE = SPR_TRACKS_FOR_SLOPES_BASE + TRACKS_FOR_SLOPES_SPRITE_COUNT;
194 static const SpriteID SPR_SLOPES_INCLINED_OFFSET = 15;
195 static const SpriteID SPR_SLOPES_VIRTUAL_BASE = SPR_SLOPES_BASE - SPR_SLOPES_INCLINED_OFFSET; // The original foundations (see SPR_FOUNDATION_BASE below) are mapped before the additional foundations.
196 static const SpriteID SPR_TRKFOUND_BLOCK_SIZE = 22; // The normal track foundation sprites are organized in blocks of 22.
197 static const uint16 NORMAL_FOUNDATION_SPRITE_COUNT = 74;
199 static const SpriteID SPR_HALFTILE_FOUNDATION_BASE = SPR_SLOPES_BASE + NORMAL_FOUNDATION_SPRITE_COUNT;
200 static const SpriteID SPR_HALFTILE_BLOCK_SIZE = 4; // The half tile foundation sprites are organized in blocks of 4.
201 static const uint16 NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT = 90;
202
203 static const SpriteID SPR_AUTORAIL_BASE = SPR_HALFTILE_FOUNDATION_BASE + NORMAL_AND_HALFTILE_FOUNDATION_SPRITE_COUNT;
204 static const uint16 AUTORAIL_SPRITE_COUNT = 55;
205
206 static const SpriteID SPR_ELRAIL_BASE = SPR_AUTORAIL_BASE + AUTORAIL_SPRITE_COUNT;
207 static const uint16 ELRAIL_SPRITE_COUNT = 48;
208
209 static const SpriteID SPR_2CCMAP_BASE = SPR_ELRAIL_BASE + ELRAIL_SPRITE_COUNT;
210 static const uint16 TWOCCMAP_SPRITE_COUNT = 256;
211
213 static const SpriteID SPR_SHORE_BASE = SPR_2CCMAP_BASE + TWOCCMAP_SPRITE_COUNT;
214 static const SpriteID SPR_SHORE_SPRITE_COUNT = 18;
215 static const SpriteID SPR_ORIGINALSHORE_START = 4062;
216 static const SpriteID SPR_ORIGINALSHORE_END = 4069;
217
218 static const SpriteID SPR_AIRPORTX_BASE = SPR_SHORE_BASE + SPR_SHORE_SPRITE_COUNT; // The sprites used for other airport angles
219 static const SpriteID SPR_NEWAIRPORT_TARMAC = SPR_AIRPORTX_BASE;
220 static const SpriteID SPR_NSRUNWAY1 = SPR_AIRPORTX_BASE + 1;
221 static const SpriteID SPR_NSRUNWAY2 = SPR_AIRPORTX_BASE + 2;
222 static const SpriteID SPR_NSRUNWAY3 = SPR_AIRPORTX_BASE + 3;
223 static const SpriteID SPR_NSRUNWAY4 = SPR_AIRPORTX_BASE + 4;
224 static const SpriteID SPR_NSRUNWAY_END = SPR_AIRPORTX_BASE + 5;
225 static const SpriteID SPR_NEWHANGAR_S = SPR_AIRPORTX_BASE + 6;
226 static const SpriteID SPR_NEWHANGAR_S_WALL = SPR_AIRPORTX_BASE + 7;
227 static const SpriteID SPR_NEWHANGAR_W = SPR_AIRPORTX_BASE + 8;
228 static const SpriteID SPR_NEWHANGAR_W_WALL = SPR_AIRPORTX_BASE + 9;
229 static const SpriteID SPR_NEWHANGAR_N = SPR_AIRPORTX_BASE + 10;
230 static const SpriteID SPR_NEWHANGAR_E = SPR_AIRPORTX_BASE + 11;
231 static const SpriteID SPR_NEWHELIPAD = SPR_AIRPORTX_BASE + 12;
232 static const SpriteID SPR_GRASS_RIGHT = SPR_AIRPORTX_BASE + 13;
233 static const SpriteID SPR_GRASS_LEFT = SPR_AIRPORTX_BASE + 14;
234 static const uint16 AIRPORTX_SPRITE_COUNT = 15;
235
237 static const SpriteID SPR_AIRPORT_PREVIEW_BASE = SPR_AIRPORTX_BASE + AIRPORTX_SPRITE_COUNT;
238 static const SpriteID SPR_AIRPORT_PREVIEW_SMALL = SPR_AIRPORT_PREVIEW_BASE;
239 static const SpriteID SPR_AIRPORT_PREVIEW_LARGE = SPR_AIRPORT_PREVIEW_BASE + 1;
240 static const SpriteID SPR_AIRPORT_PREVIEW_HELIPORT = SPR_AIRPORT_PREVIEW_BASE + 2;
241 static const SpriteID SPR_AIRPORT_PREVIEW_METROPOLITAN = SPR_AIRPORT_PREVIEW_BASE + 3;
242 static const SpriteID SPR_AIRPORT_PREVIEW_INTERNATIONAL = SPR_AIRPORT_PREVIEW_BASE + 4;
243 static const SpriteID SPR_AIRPORT_PREVIEW_COMMUTER = SPR_AIRPORT_PREVIEW_BASE + 5;
244 static const SpriteID SPR_AIRPORT_PREVIEW_HELIDEPOT = SPR_AIRPORT_PREVIEW_BASE + 6;
245 static const SpriteID SPR_AIRPORT_PREVIEW_INTERCONTINENTAL = SPR_AIRPORT_PREVIEW_BASE + 7;
246 static const SpriteID SPR_AIRPORT_PREVIEW_HELISTATION = SPR_AIRPORT_PREVIEW_BASE + 8;
247 static const SpriteID SPR_AIRPORT_PREVIEW_COUNT = 9;
248
249 static const SpriteID SPR_ROADSTOP_BASE = SPR_AIRPORT_PREVIEW_BASE + SPR_AIRPORT_PREVIEW_COUNT; // The sprites used for drive-through road stops
250 static const SpriteID SPR_BUS_STOP_DT_Y_W = SPR_ROADSTOP_BASE;
251 static const SpriteID SPR_BUS_STOP_DT_Y_E = SPR_ROADSTOP_BASE + 1;
252 static const SpriteID SPR_BUS_STOP_DT_X_W = SPR_ROADSTOP_BASE + 2;
253 static const SpriteID SPR_BUS_STOP_DT_X_E = SPR_ROADSTOP_BASE + 3;
254 static const SpriteID SPR_TRUCK_STOP_DT_Y_W = SPR_ROADSTOP_BASE + 4;
255 static const SpriteID SPR_TRUCK_STOP_DT_Y_E = SPR_ROADSTOP_BASE + 5;
256 static const SpriteID SPR_TRUCK_STOP_DT_X_W = SPR_ROADSTOP_BASE + 6;
257 static const SpriteID SPR_TRUCK_STOP_DT_X_E = SPR_ROADSTOP_BASE + 7;
258 static const uint16 ROADSTOP_SPRITE_COUNT = 8;
259
261 static const SpriteID SPR_TRAMWAY_BASE = SPR_ROADSTOP_BASE + ROADSTOP_SPRITE_COUNT;
262 static const SpriteID SPR_TRAMWAY_OVERLAY = SPR_TRAMWAY_BASE + 4;
263 static const SpriteID SPR_TRAMWAY_TRAM = SPR_TRAMWAY_BASE + 27;
264 static const SpriteID SPR_TRAMWAY_SLOPED_OFFSET = 11;
265 static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_Y_W = SPR_TRAMWAY_BASE + 25;
266 static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_Y_E = SPR_TRAMWAY_BASE + 23;
267 static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_X_W = SPR_TRAMWAY_BASE + 24;
268 static const SpriteID SPR_TRAMWAY_BUS_STOP_DT_X_E = SPR_TRAMWAY_BASE + 26;
269 static const SpriteID SPR_TRAMWAY_PAVED_STRAIGHT_Y = SPR_TRAMWAY_BASE + 46;
270 static const SpriteID SPR_TRAMWAY_PAVED_STRAIGHT_X = SPR_TRAMWAY_BASE + 47;
271 static const SpriteID SPR_TRAMWAY_BACK_WIRES_STRAIGHT = SPR_TRAMWAY_BASE + 55;
272 static const SpriteID SPR_TRAMWAY_FRONT_WIRES_STRAIGHT = SPR_TRAMWAY_BASE + 56;
273 static const SpriteID SPR_TRAMWAY_BACK_WIRES_SLOPED = SPR_TRAMWAY_BASE + 72;
274 static const SpriteID SPR_TRAMWAY_FRONT_WIRES_SLOPED = SPR_TRAMWAY_BASE + 68;
275 static const SpriteID SPR_TRAMWAY_TUNNEL_WIRES = SPR_TRAMWAY_BASE + 80;
276 static const SpriteID SPR_TRAMWAY_BRIDGE = SPR_TRAMWAY_BASE + 107;
277 static const uint16 TRAMWAY_SPRITE_COUNT = 113;
278
280 static const SpriteID SPR_ONEWAY_BASE = SPR_TRAMWAY_BASE + TRAMWAY_SPRITE_COUNT;
281 static const uint16 ONEWAY_SPRITE_COUNT = 6;
282
284 static const SpriteID SPR_FLAGS_BASE = SPR_ONEWAY_BASE + ONEWAY_SPRITE_COUNT;
285 static const uint16 FLAGS_SPRITE_COUNT = 36;
286
288 static const SpriteID SPR_RAILTYPE_TUNNEL_BASE = SPR_FLAGS_BASE + FLAGS_SPRITE_COUNT;
289 static const uint16 RAILTYPE_TUNNEL_BASE_COUNT = 16;
290
291 /* Not really a sprite, but an empty bounding box. Used to construct bounding boxes that help sorting the sprites, but do not have a sprite associated. */
292 static const SpriteID SPR_EMPTY_BOUNDING_BOX = SPR_RAILTYPE_TUNNEL_BASE + RAILTYPE_TUNNEL_BASE_COUNT;
293 static const uint16 EMPTY_BOUNDING_BOX_SPRITE_COUNT = 1;
294
295 /* Black palette sprite, needed for painting (fictive) tiles outside map */
296 static const SpriteID SPR_PALETTE_BASE = SPR_EMPTY_BOUNDING_BOX + EMPTY_BOUNDING_BOX_SPRITE_COUNT;
297 static const uint16 PALETTE_SPRITE_COUNT = 1;
298
299 /* From where can we start putting NewGRFs? */
300 static const SpriteID SPR_NEWGRFS_BASE = SPR_PALETTE_BASE + PALETTE_SPRITE_COUNT;
301
302 /* Manager face sprites */
303 static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face
304
305 /* Icon showing company colour. */
306 static const SpriteID SPR_COMPANY_ICON = 747;
307
308 /* is itself no foundation sprite, because tileh 0 has no foundation */
309 static const SpriteID SPR_FOUNDATION_BASE = 989;
310
311 /* Shadow cell */
312 static const SpriteID SPR_SHADOW_CELL = 1004;
313
314 /* Objects spritenumbers */
315 static const SpriteID SPR_TRANSMITTER = 2601;
316 static const SpriteID SPR_LIGHTHOUSE = 2602;
317 static const SpriteID SPR_TINYHQ_NORTH = 2603;
318 static const SpriteID SPR_TINYHQ_EAST = 2604;
319 static const SpriteID SPR_TINYHQ_WEST = 2605;
320 static const SpriteID SPR_TINYHQ_SOUTH = 2606;
321 static const SpriteID SPR_SMALLHQ_NORTH = 2607;
322 static const SpriteID SPR_SMALLHQ_EAST = 2608;
323 static const SpriteID SPR_SMALLHQ_WEST = 2609;
324 static const SpriteID SPR_SMALLHQ_SOUTH = 2610;
325 static const SpriteID SPR_MEDIUMHQ_NORTH = 2611;
326 static const SpriteID SPR_MEDIUMHQ_NORTH_WALL = 2612;
327 static const SpriteID SPR_MEDIUMHQ_EAST = 2613;
328 static const SpriteID SPR_MEDIUMHQ_EAST_WALL = 2614;
329 static const SpriteID SPR_MEDIUMHQ_WEST = 2615;
330 static const SpriteID SPR_MEDIUMHQ_WEST_WALL = 2616; // very tiny piece of wall
331 static const SpriteID SPR_MEDIUMHQ_SOUTH = 2617;
332 static const SpriteID SPR_LARGEHQ_NORTH_GROUND = 2618;
333 static const SpriteID SPR_LARGEHQ_NORTH_BUILD = 2619;
334 static const SpriteID SPR_LARGEHQ_EAST_GROUND = 2620;
335 static const SpriteID SPR_LARGEHQ_EAST_BUILD = 2621;
336 static const SpriteID SPR_LARGEHQ_WEST_GROUND = 2622;
337 static const SpriteID SPR_LARGEHQ_WEST_BUILD = 2623;
338 static const SpriteID SPR_LARGEHQ_SOUTH = 2624;
339 static const SpriteID SPR_HUGEHQ_NORTH_GROUND = 2625;
340 static const SpriteID SPR_HUGEHQ_NORTH_BUILD = 2626;
341 static const SpriteID SPR_HUGEHQ_EAST_GROUND = 2627;
342 static const SpriteID SPR_HUGEHQ_EAST_BUILD = 2628;
343 static const SpriteID SPR_HUGEHQ_WEST_GROUND = 2629;
344 static const SpriteID SPR_HUGEHQ_WEST_BUILD = 2630;
345 static const SpriteID SPR_HUGEHQ_SOUTH = 2631;
346 static const SpriteID SPR_CONCRETE_GROUND = 1420;
347 static const SpriteID SPR_STATUE_COMPANY = 2632;
348 static const SpriteID SPR_BOUGHT_LAND = 4790;
349
350 /* sprites for rail and rail stations*/
351 static const SpriteID SPR_RAIL_SNOW_OFFSET = 26;
352 static const SpriteID SPR_MONO_SNOW_OFFSET = 26;
353 static const SpriteID SPR_MGLV_SNOW_OFFSET = 26;
354
355 static const SpriteID SPR_ORIGINAL_SIGNALS_BASE = 1275;
356
357 static const SpriteID SPR_RAIL_SINGLE_X = 1005;
358 static const SpriteID SPR_RAIL_SINGLE_Y = 1006;
359 static const SpriteID SPR_RAIL_SINGLE_NORTH = 1007;
360 static const SpriteID SPR_RAIL_SINGLE_SOUTH = 1008;
361 static const SpriteID SPR_RAIL_SINGLE_EAST = 1009;
362 static const SpriteID SPR_RAIL_SINGLE_WEST = 1010;
363 static const SpriteID SPR_RAIL_TRACK_Y = 1011;
364 static const SpriteID SPR_RAIL_TRACK_X = 1012;
365 static const SpriteID SPR_RAIL_TRACK_BASE = 1018;
366 static const SpriteID SPR_RAIL_TRACK_N_S = 1035;
367 static const SpriteID SPR_RAIL_TRACK_Y_SNOW = 1037;
368 static const SpriteID SPR_RAIL_TRACK_X_SNOW = 1038;
369 static const SpriteID SPR_RAIL_DEPOT_SE_1 = 1063;
370 static const SpriteID SPR_RAIL_DEPOT_SE_2 = 1064;
371 static const SpriteID SPR_RAIL_DEPOT_SW_1 = 1065;
372 static const SpriteID SPR_RAIL_DEPOT_SW_2 = 1066;
373 static const SpriteID SPR_RAIL_DEPOT_NE = 1067;
374 static const SpriteID SPR_RAIL_DEPOT_NW = 1068;
375 static const SpriteID SPR_RAIL_PLATFORM_Y_FRONT = 1069;
376 static const SpriteID SPR_RAIL_PLATFORM_X_REAR = 1070;
377 static const SpriteID SPR_RAIL_PLATFORM_Y_REAR = 1071;
378 static const SpriteID SPR_RAIL_PLATFORM_X_FRONT = 1072;
379 static const SpriteID SPR_RAIL_PLATFORM_BUILDING_X = 1073;
380 static const SpriteID SPR_RAIL_PLATFORM_BUILDING_Y = 1074;
381 static const SpriteID SPR_RAIL_PLATFORM_PILLARS_Y_FRONT = 1075;
382 static const SpriteID SPR_RAIL_PLATFORM_PILLARS_X_REAR = 1076;
383 static const SpriteID SPR_RAIL_PLATFORM_PILLARS_Y_REAR = 1077;
384 static const SpriteID SPR_RAIL_PLATFORM_PILLARS_X_FRONT = 1078;
385 static const SpriteID SPR_RAIL_ROOF_STRUCTURE_X_TILE_A = 1079; // First half of the roof structure
386 static const SpriteID SPR_RAIL_ROOF_STRUCTURE_Y_TILE_A = 1080;
387 static const SpriteID SPR_RAIL_ROOF_STRUCTURE_X_TILE_B = 1081; // Second half of the roof structure
388 static const SpriteID SPR_RAIL_ROOF_STRUCTURE_Y_TILE_B = 1082;
389 static const SpriteID SPR_RAIL_ROOF_GLASS_X_TILE_A = 1083; // First half of the roof glass
390 static const SpriteID SPR_RAIL_ROOF_GLASS_Y_TILE_A = 1084;
391 static const SpriteID SPR_RAIL_ROOF_GLASS_X_TILE_B = 1085; // second half of the roof glass
392 static const SpriteID SPR_RAIL_ROOF_GLASS_Y_TILE_B = 1086;
393 static const SpriteID SPR_MONO_SINGLE_X = 1087;
394 static const SpriteID SPR_MONO_SINGLE_Y = 1088;
395 static const SpriteID SPR_MONO_SINGLE_NORTH = 1089;
396 static const SpriteID SPR_MONO_SINGLE_SOUTH = 1090;
397 static const SpriteID SPR_MONO_SINGLE_EAST = 1091;
398 static const SpriteID SPR_MONO_SINGLE_WEST = 1092;
399 static const SpriteID SPR_MONO_TRACK_Y = 1093;
400 static const SpriteID SPR_MONO_TRACK_BASE = 1100;
401 static const SpriteID SPR_MONO_TRACK_N_S = 1117;
402 static const SpriteID SPR_MGLV_SINGLE_X = 1169;
403 static const SpriteID SPR_MGLV_SINGLE_Y = 1170;
404 static const SpriteID SPR_MGLV_SINGLE_NORTH = 1171;
405 static const SpriteID SPR_MGLV_SINGLE_SOUTH = 1172;
406 static const SpriteID SPR_MGLV_SINGLE_EAST = 1173;
407 static const SpriteID SPR_MGLV_SINGLE_WEST = 1174;
408 static const SpriteID SPR_MGLV_TRACK_Y = 1175;
409 static const SpriteID SPR_MGLV_TRACK_BASE = 1182;
410 static const SpriteID SPR_MGLV_TRACK_N_S = 1199;
411 static const SpriteID SPR_WAYPOINT_X_1 = SPR_OPENTTD_BASE + 78;
412 static const SpriteID SPR_WAYPOINT_X_2 = SPR_OPENTTD_BASE + 79;
413 static const SpriteID SPR_WAYPOINT_Y_1 = SPR_OPENTTD_BASE + 80;
414 static const SpriteID SPR_WAYPOINT_Y_2 = SPR_OPENTTD_BASE + 81;
415 /* see _track_sloped_sprites in rail_cmd.cpp for slope offsets */
416
417 /* Track fences */
418 static const SpriteID SPR_TRACK_FENCE_FLAT_X = 1301;
419 static const SpriteID SPR_TRACK_FENCE_FLAT_Y = 1302;
420 static const SpriteID SPR_TRACK_FENCE_FLAT_VERT = 1303;
421 static const SpriteID SPR_TRACK_FENCE_FLAT_HORZ = 1304;
422 static const SpriteID SPR_TRACK_FENCE_SLOPE_SW = 1305;
423 static const SpriteID SPR_TRACK_FENCE_SLOPE_SE = 1306;
424 static const SpriteID SPR_TRACK_FENCE_SLOPE_NE = 1307;
425 static const SpriteID SPR_TRACK_FENCE_SLOPE_NW = 1308;
426
427 /* Base sprites for elrail.
428 * Offsets via an enum are used so a complete list of absolute
429 * sprite numbers is unnecessary.
430 */
431 static const SpriteID SPR_WIRE_BASE = SPR_ELRAIL_BASE + 0;
432 static const SpriteID SPR_PYLON_BASE = SPR_ELRAIL_BASE + 28;
433
434 /* sprites for roads */
435 static const SpriteID SPR_ROAD_PAVED_STRAIGHT_Y = 1313;
436 static const SpriteID SPR_ROAD_PAVED_STRAIGHT_X = 1314;
437
438 /* sprites for airports and airfields*/
439 /* Small airports are AIRFIELD, everything else is AIRPORT */
440 static const SpriteID SPR_HELIPORT = 2633;
441 static const SpriteID SPR_AIRPORT_APRON = 2634;
442 static const SpriteID SPR_AIRPORT_AIRCRAFT_STAND = 2635;
443 static const SpriteID SPR_AIRPORT_TAXIWAY_NS_WEST = 2636;
444 static const SpriteID SPR_AIRPORT_TAXIWAY_EW_SOUTH = 2637;
445 static const SpriteID SPR_AIRPORT_TAXIWAY_XING_SOUTH = 2638;
446 static const SpriteID SPR_AIRPORT_TAXIWAY_XING_WEST = 2639;
447 static const SpriteID SPR_AIRPORT_TAXIWAY_NS_CTR = 2640;
448 static const SpriteID SPR_AIRPORT_TAXIWAY_XING_EAST = 2641;
449 static const SpriteID SPR_AIRPORT_TAXIWAY_NS_EAST = 2642;
450 static const SpriteID SPR_AIRPORT_TAXIWAY_EW_NORTH = 2643;
451 static const SpriteID SPR_AIRPORT_TAXIWAY_EW_CTR = 2644;
452 static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_A = 2645;
453 static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_B = 2646;
454 static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_C = 2647;
455 static const SpriteID SPR_AIRPORT_RUNWAY_EXIT_D = 2648;
456 static const SpriteID SPR_AIRPORT_RUNWAY_END = 2649; // We should have different ends
457 static const SpriteID SPR_AIRPORT_TERMINAL_A = 2650;
458 static const SpriteID SPR_AIRPORT_TOWER = 2651;
459 static const SpriteID SPR_AIRPORT_CONCOURSE = 2652;
460 static const SpriteID SPR_AIRPORT_TERMINAL_B = 2653;
461 static const SpriteID SPR_AIRPORT_TERMINAL_C = 2654;
462 static const SpriteID SPR_AIRPORT_HANGAR_FRONT = 2655;
463 static const SpriteID SPR_AIRPORT_HANGAR_REAR = 2656;
464 static const SpriteID SPR_AIRFIELD_HANGAR_FRONT = 2657;
465 static const SpriteID SPR_AIRFIELD_HANGAR_REAR = 2658;
466 static const SpriteID SPR_AIRPORT_JETWAY_1 = 2659;
467 static const SpriteID SPR_AIRPORT_JETWAY_2 = 2660;
468 static const SpriteID SPR_AIRPORT_JETWAY_3 = 2661;
469 static const SpriteID SPR_AIRPORT_PASSENGER_TUNNEL = 2662;
470 static const SpriteID SPR_AIRPORT_FENCE_Y = 2663;
471 static const SpriteID SPR_AIRPORT_FENCE_X = 2664;
472 static const SpriteID SPR_AIRFIELD_TERM_A = 2665;
473 static const SpriteID SPR_AIRFIELD_TERM_B = 2666;
474 static const SpriteID SPR_AIRFIELD_TERM_C_GROUND = 2667;
475 static const SpriteID SPR_AIRFIELD_TERM_C_BUILD = 2668;
476 static const SpriteID SPR_AIRFIELD_APRON_A = 2669;
477 static const SpriteID SPR_AIRFIELD_APRON_B = 2670;
478 static const SpriteID SPR_AIRFIELD_APRON_C = 2671;
479 static const SpriteID SPR_AIRFIELD_APRON_D = 2672;
480 static const SpriteID SPR_AIRFIELD_RUNWAY_NEAR_END = 2673;
481 static const SpriteID SPR_AIRFIELD_RUNWAY_MIDDLE = 2674;
482 static const SpriteID SPR_AIRFIELD_RUNWAY_FAR_END = 2675;
483 static const SpriteID SPR_AIRFIELD_WIND_1 = 2676;
484 static const SpriteID SPR_AIRFIELD_WIND_2 = 2677;
485 static const SpriteID SPR_AIRFIELD_WIND_3 = 2678;
486 static const SpriteID SPR_AIRFIELD_WIND_4 = 2679;
487 static const SpriteID SPR_AIRPORT_RADAR_1 = 2680;
488 static const SpriteID SPR_AIRPORT_RADAR_2 = 2681;
489 static const SpriteID SPR_AIRPORT_RADAR_3 = 2682;
490 static const SpriteID SPR_AIRPORT_RADAR_4 = 2683;
491 static const SpriteID SPR_AIRPORT_RADAR_5 = 2684;
492 static const SpriteID SPR_AIRPORT_RADAR_6 = 2685;
493 static const SpriteID SPR_AIRPORT_RADAR_7 = 2686;
494 static const SpriteID SPR_AIRPORT_RADAR_8 = 2687;
495 static const SpriteID SPR_AIRPORT_RADAR_9 = 2688;
496 static const SpriteID SPR_AIRPORT_RADAR_A = 2689;
497 static const SpriteID SPR_AIRPORT_RADAR_B = 2690;
498 static const SpriteID SPR_AIRPORT_RADAR_C = 2691;
499 static const SpriteID SPR_AIRPORT_HELIPAD = SPR_OPENTTD_BASE + 86;
500 static const SpriteID SPR_AIRPORT_HELIDEPOT_OFFICE = 2095;
501
502 /* Road Stops
503 * Road stops have a ground tile and 3 buildings, one on each side
504 * (except the side where the entry is). These are marked _A _B and _C */
505 static const SpriteID SPR_BUS_STOP_NE_GROUND = 2692;
506 static const SpriteID SPR_BUS_STOP_SE_GROUND = 2693;
507 static const SpriteID SPR_BUS_STOP_SW_GROUND = 2694;
508 static const SpriteID SPR_BUS_STOP_NW_GROUND = 2695;
509 static const SpriteID SPR_BUS_STOP_NE_BUILD_A = 2696;
510 static const SpriteID SPR_BUS_STOP_SE_BUILD_A = 2697;
511 static const SpriteID SPR_BUS_STOP_SW_BUILD_A = 2698;
512 static const SpriteID SPR_BUS_STOP_NW_BUILD_A = 2699;
513 static const SpriteID SPR_BUS_STOP_NE_BUILD_B = 2700;
514 static const SpriteID SPR_BUS_STOP_SE_BUILD_B = 2701;
515 static const SpriteID SPR_BUS_STOP_SW_BUILD_B = 2702;
516 static const SpriteID SPR_BUS_STOP_NW_BUILD_B = 2703;
517 static const SpriteID SPR_BUS_STOP_NE_BUILD_C = 2704;
518 static const SpriteID SPR_BUS_STOP_SE_BUILD_C = 2705;
519 static const SpriteID SPR_BUS_STOP_SW_BUILD_C = 2706;
520 static const SpriteID SPR_BUS_STOP_NW_BUILD_C = 2707;
521 static const SpriteID SPR_TRUCK_STOP_NE_GROUND = 2708;
522 static const SpriteID SPR_TRUCK_STOP_SE_GROUND = 2709;
523 static const SpriteID SPR_TRUCK_STOP_SW_GROUND = 2710;
524 static const SpriteID SPR_TRUCK_STOP_NW_GROUND = 2711;
525 static const SpriteID SPR_TRUCK_STOP_NE_BUILD_A = 2712;
526 static const SpriteID SPR_TRUCK_STOP_SE_BUILD_A = 2713;
527 static const SpriteID SPR_TRUCK_STOP_SW_BUILD_A = 2714;
528 static const SpriteID SPR_TRUCK_STOP_NW_BUILD_A = 2715;
529 static const SpriteID SPR_TRUCK_STOP_NE_BUILD_B = 2716;
530 static const SpriteID SPR_TRUCK_STOP_SE_BUILD_B = 2717;
531 static const SpriteID SPR_TRUCK_STOP_SW_BUILD_B = 2718;
532 static const SpriteID SPR_TRUCK_STOP_NW_BUILD_B = 2719;
533 static const SpriteID SPR_TRUCK_STOP_NE_BUILD_C = 2720;
534 static const SpriteID SPR_TRUCK_STOP_SE_BUILD_C = 2721;
535 static const SpriteID SPR_TRUCK_STOP_SW_BUILD_C = 2722;
536 static const SpriteID SPR_TRUCK_STOP_NW_BUILD_C = 2723;
537
538 /* Sprites for docks
539 * Docks consist of two tiles, the sloped one and the flat one */
540 static const SpriteID SPR_DOCK_SLOPE_NE = 2727;
541 static const SpriteID SPR_DOCK_SLOPE_SE = 2728;
542 static const SpriteID SPR_DOCK_SLOPE_SW = 2729;
543 static const SpriteID SPR_DOCK_SLOPE_NW = 2730;
544 static const SpriteID SPR_DOCK_FLAT_X = 2731; // for NE and SW
545 static const SpriteID SPR_DOCK_FLAT_Y = 2732; // for NW and SE
546 static const SpriteID SPR_BUOY = 4076; // XXX this sucks, because it displays wrong stuff on canals
547
548 /* Sprites for road */
549 static const SpriteID SPR_ROAD_Y = 1332;
550 static const SpriteID SPR_ROAD_X = 1333;
551 static const SpriteID SPR_ROAD_SLOPE_START = 1343;
552 static const SpriteID SPR_ROAD_Y_SNOW = 1351;
553 static const SpriteID SPR_ROAD_X_SNOW = 1352;
554 /* see _road_sloped_sprites_offset in road_cmd.cpp for offsets for sloped road tiles */
555
556 static const SpriteID SPR_EXCAVATION_X = 1414;
557 static const SpriteID SPR_EXCAVATION_Y = 1415;
558
559 /* Landscape sprites */
560 static const SpriteID SPR_FLAT_BARE_LAND = 3924;
561 static const SpriteID SPR_FLAT_1_THIRD_GRASS_TILE = 3943;
562 static const SpriteID SPR_FLAT_2_THIRD_GRASS_TILE = 3962;
563 static const SpriteID SPR_FLAT_GRASS_TILE = 3981;
564 static const SpriteID SPR_FLAT_ROUGH_LAND = 4000;
565 static const SpriteID SPR_FLAT_ROUGH_LAND_1 = 4019;
566 static const SpriteID SPR_FLAT_ROUGH_LAND_2 = 4020;
567 static const SpriteID SPR_FLAT_ROUGH_LAND_3 = 4021;
568 static const SpriteID SPR_FLAT_ROUGH_LAND_4 = 4022;
569 static const SpriteID SPR_FLAT_ROCKY_LAND_1 = 4023;
570 static const SpriteID SPR_FLAT_ROCKY_LAND_2 = 4042;
571 static const SpriteID SPR_FLAT_WATER_TILE = 4061;
572 static const SpriteID SPR_FLAT_1_QUART_SNOW_DESERT_TILE = 4493;
573 static const SpriteID SPR_FLAT_2_QUART_SNOW_DESERT_TILE = 4512;
574 static const SpriteID SPR_FLAT_3_QUART_SNOW_DESERT_TILE = 4531;
575 static const SpriteID SPR_FLAT_SNOW_DESERT_TILE = 4550;
576
577 /* Hedge, Farmland-fence sprites */
578 static const SpriteID SPR_HEDGE_BUSHES = 4090;
579 static const SpriteID SPR_HEDGE_BUSHES_WITH_GATE = 4096;
580 static const SpriteID SPR_HEDGE_FENCE = 4102;
581 static const SpriteID SPR_HEDGE_BLOOMBUSH_YELLOW = 4108;
582 static const SpriteID SPR_HEDGE_BLOOMBUSH_RED = 4114;
583 static const SpriteID SPR_HEDGE_STONE = 4120;
584
585 /* Farmland sprites, only flat tiles listed, various stages */
586 static const SpriteID SPR_FARMLAND_BARE = 4126;
587 static const SpriteID SPR_FARMLAND_STATE_1 = 4145;
588 static const SpriteID SPR_FARMLAND_STATE_2 = 4164;
589 static const SpriteID SPR_FARMLAND_STATE_3 = 4183;
590 static const SpriteID SPR_FARMLAND_STATE_4 = 4202;
591 static const SpriteID SPR_FARMLAND_STATE_5 = 4221;
592 static const SpriteID SPR_FARMLAND_STATE_6 = 4240;
593 static const SpriteID SPR_FARMLAND_STATE_7 = 4259;
594 static const SpriteID SPR_FARMLAND_HAYPACKS = 4278;
595
596 /* Water-related sprites */
597 static const SpriteID SPR_SHIP_DEPOT_SE_FRONT = 4070;
598 static const SpriteID SPR_SHIP_DEPOT_SW_FRONT = 4071;
599 static const SpriteID SPR_SHIP_DEPOT_NW = 4072;
600 static const SpriteID SPR_SHIP_DEPOT_NE = 4073;
601 static const SpriteID SPR_SHIP_DEPOT_SE_REAR = 4074;
602 static const SpriteID SPR_SHIP_DEPOT_SW_REAR = 4075;
603 /* here come sloped water sprites */
604 static const SpriteID SPR_WATER_SLOPE_Y_UP = SPR_CANALS_BASE + 0; // Water flowing negative Y direction
605 static const SpriteID SPR_WATER_SLOPE_X_DOWN = SPR_CANALS_BASE + 1; // positive X
606 static const SpriteID SPR_WATER_SLOPE_X_UP = SPR_CANALS_BASE + 2; // negative X
607 static const SpriteID SPR_WATER_SLOPE_Y_DOWN = SPR_CANALS_BASE + 3; // positive Y
608 /* sprites for the locks
609 * there are 4 kinds of locks, each of them is 3 tiles long.
610 * the four kinds are running in the X and Y direction and
611 * are "lowering" either in the "+" or the "-" direction.
612 * the three tiles are the center tile (where the slope is)
613 * and a bottom and a top tile */
614 static const SpriteID SPR_LOCK_BASE = SPR_CANALS_BASE + 4;
615 static const SpriteID SPR_LOCK_Y_UP_CENTER_REAR = SPR_CANALS_BASE + 4;
616 static const SpriteID SPR_LOCK_X_DOWN_CENTER_REAR = SPR_CANALS_BASE + 5;
617 static const SpriteID SPR_LOCK_X_UP_CENTER_REAR = SPR_CANALS_BASE + 6;
618 static const SpriteID SPR_LOCK_Y_DOWN_CENTER_REAR = SPR_CANALS_BASE + 7;
619 static const SpriteID SPR_LOCK_Y_UP_CENTER_FRONT = SPR_CANALS_BASE + 8;
620 static const SpriteID SPR_LOCK_X_DOWN_CENTER_FRONT = SPR_CANALS_BASE + 9;
621 static const SpriteID SPR_LOCK_X_UP_CENTER_FRONT = SPR_CANALS_BASE + 10;
622 static const SpriteID SPR_LOCK_Y_DOWN_CENTER_FRONT = SPR_CANALS_BASE + 11;
623 static const SpriteID SPR_LOCK_Y_UP_BOTTOM_REAR = SPR_CANALS_BASE + 12;
624 static const SpriteID SPR_LOCK_X_DOWN_BOTTOM_REAR = SPR_CANALS_BASE + 13;
625 static const SpriteID SPR_LOCK_X_UP_BOTTOM_REAR = SPR_CANALS_BASE + 14;
626 static const SpriteID SPR_LOCK_Y_DOWN_BOTTOM_REAR = SPR_CANALS_BASE + 15;
627 static const SpriteID SPR_LOCK_Y_UP_BOTTOM_FRONT = SPR_CANALS_BASE + 16;
628 static const SpriteID SPR_LOCK_X_DOWN_BOTTOM_FRONT = SPR_CANALS_BASE + 17;
629 static const SpriteID SPR_LOCK_X_UP_BOTTOM_FRONT = SPR_CANALS_BASE + 18;
630 static const SpriteID SPR_LOCK_Y_DOWN_BOTTOM_FRONT = SPR_CANALS_BASE + 19;
631 static const SpriteID SPR_LOCK_Y_UP_TOP_REAR = SPR_CANALS_BASE + 20;
632 static const SpriteID SPR_LOCK_X_DOWN_TOP_REAR = SPR_CANALS_BASE + 21;
633 static const SpriteID SPR_LOCK_X_UP_TOP_REAR = SPR_CANALS_BASE + 22;
634 static const SpriteID SPR_LOCK_Y_DOWN_TOP_REAR = SPR_CANALS_BASE + 23;
635 static const SpriteID SPR_LOCK_Y_UP_TOP_FRONT = SPR_CANALS_BASE + 24;
636 static const SpriteID SPR_LOCK_X_DOWN_TOP_FRONT = SPR_CANALS_BASE + 25;
637 static const SpriteID SPR_LOCK_X_UP_TOP_FRONT = SPR_CANALS_BASE + 26;
638 static const SpriteID SPR_LOCK_Y_DOWN_TOP_FRONT = SPR_CANALS_BASE + 27;
639 static const SpriteID SPR_CANAL_DIKES_BASE = SPR_CANALS_BASE + 52;
640
641 /* Sprites for tunnels and bridges */
642 static const SpriteID SPR_TUNNEL_ENTRY_REAR_RAIL = 2365;
643 static const SpriteID SPR_TUNNEL_ENTRY_REAR_MONO = 2373;
644 static const SpriteID SPR_TUNNEL_ENTRY_REAR_MAGLEV = 2381;
645 static const SpriteID SPR_TUNNEL_ENTRY_REAR_ROAD = 2389;
646
647 /* Level crossings */
648 static const SpriteID SPR_CROSSING_OFF_X_RAIL = 1370;
649 static const SpriteID SPR_CROSSING_OFF_X_MONO = 1382;
650 static const SpriteID SPR_CROSSING_OFF_X_MAGLEV = 1394;
651
652 /* bridge type sprites */
653 static const SpriteID SPR_PILLARS_BASE = SPR_OPENTTD_BASE + 14;
654
655 /* Wooden bridge (type 0) */
656 static const SpriteID SPR_BTWDN_RAIL_Y_REAR = 2545;
657 static const SpriteID SPR_BTWDN_RAIL_X_REAR = 2546;
658 static const SpriteID SPR_BTWDN_ROAD_Y_REAR = 2547;
659 static const SpriteID SPR_BTWDN_ROAD_X_REAR = 2548;
660 static const SpriteID SPR_BTWDN_Y_FRONT = 2549;
661 static const SpriteID SPR_BTWDN_X_FRONT = 2550;
662 static const SpriteID SPR_BTWDN_Y_PILLAR = 2551;
663 static const SpriteID SPR_BTWDN_X_PILLAR = 2552;
664 static const SpriteID SPR_BTWDN_MONO_Y_REAR = 4360;
665 static const SpriteID SPR_BTWDN_MONO_X_REAR = 4361;
666 static const SpriteID SPR_BTWDN_MGLV_Y_REAR = 4400;
667 static const SpriteID SPR_BTWDN_MGLV_X_REAR = 4401;
668 /* ramps */
669 static const SpriteID SPR_BTWDN_ROAD_RAMP_Y_DOWN = 2529;
670 static const SpriteID SPR_BTWDN_ROAD_RAMP_X_DOWN = 2530;
671 static const SpriteID SPR_BTWDN_ROAD_RAMP_X_UP = 2531; // for some weird reason the order is swapped
672 static const SpriteID SPR_BTWDN_ROAD_RAMP_Y_UP = 2532; // between X and Y.
673 static const SpriteID SPR_BTWDN_ROAD_Y_SLOPE_UP = 2533;
674 static const SpriteID SPR_BTWDN_ROAD_X_SLOPE_UP = 2534;
675 static const SpriteID SPR_BTWDN_ROAD_Y_SLOPE_DOWN = 2535;
676 static const SpriteID SPR_BTWDN_ROAD_X_SLOPE_DOWN = 2536;
677 static const SpriteID SPR_BTWDN_RAIL_RAMP_Y_DOWN = 2537;
678 static const SpriteID SPR_BTWDN_RAIL_RAMP_X_DOWN = 2538;
679 static const SpriteID SPR_BTWDN_RAIL_RAMP_X_UP = 2539; // for some weird reason the order is swapped
680 static const SpriteID SPR_BTWDN_RAIL_RAMP_Y_UP = 2540; // between X and Y.
681 static const SpriteID SPR_BTWDN_RAIL_Y_SLOPE_UP = 2541;
682 static const SpriteID SPR_BTWDN_RAIL_X_SLOPE_UP = 2542;
683 static const SpriteID SPR_BTWDN_RAIL_Y_SLOPE_DOWN = 2543;
684 static const SpriteID SPR_BTWDN_RAIL_X_SLOPE_DOWN = 2544;
685 static const SpriteID SPR_BTWDN_MONO_RAMP_Y_DOWN = 4352;
686 static const SpriteID SPR_BTWDN_MONO_RAMP_X_DOWN = 4353;
687 static const SpriteID SPR_BTWDN_MONO_RAMP_X_UP = 4354; // for some weird reason the order is swapped
688 static const SpriteID SPR_BTWDN_MONO_RAMP_Y_UP = 4355; // between X and Y.
689 static const SpriteID SPR_BTWDN_MONO_Y_SLOPE_UP = 4356;
690 static const SpriteID SPR_BTWDN_MONO_X_SLOPE_UP = 4357;
691 static const SpriteID SPR_BTWDN_MONO_Y_SLOPE_DOWN = 4358;
692 static const SpriteID SPR_BTWDN_MONO_X_SLOPE_DOWN = 4359;
693 static const SpriteID SPR_BTWDN_MGLV_RAMP_Y_DOWN = 4392;
694 static const SpriteID SPR_BTWDN_MGLV_RAMP_X_DOWN = 4393;
695 static const SpriteID SPR_BTWDN_MGLV_RAMP_X_UP = 4394; // for some weird reason the order is swapped
696 static const SpriteID SPR_BTWDN_MGLV_RAMP_Y_UP = 4395; // between X and Y.
697 static const SpriteID SPR_BTWDN_MGLV_Y_SLOPE_UP = 4396;
698 static const SpriteID SPR_BTWDN_MGLV_X_SLOPE_UP = 4397;
699 static const SpriteID SPR_BTWDN_MGLV_Y_SLOPE_DOWN = 4398;
700 static const SpriteID SPR_BTWDN_MGLV_X_SLOPE_DOWN = 4399;
701
702 /* Steel Girder with arches
703 * BTSGA == Bridge Type Steel Girder Arched
704 * This is bridge type number 2 */
705 static const SpriteID SPR_BTSGA_RAIL_X_REAR = 2499;
706 static const SpriteID SPR_BTSGA_RAIL_Y_REAR = 2500;
707 static const SpriteID SPR_BTSGA_ROAD_X_REAR = 2501;
708 static const SpriteID SPR_BTSGA_ROAD_Y_REAR = 2502;
709 static const SpriteID SPR_BTSGA_X_FRONT = 2503;
710 static const SpriteID SPR_BTSGA_Y_FRONT = 2504;
711 static const SpriteID SPR_BTSGA_X_PILLAR = 2505;
712 static const SpriteID SPR_BTSGA_Y_PILLAR = 2506;
713 static const SpriteID SPR_BTSGA_MONO_X_REAR = 4324;
714 static const SpriteID SPR_BTSGA_MONO_Y_REAR = 4325;
715 static const SpriteID SPR_BTSGA_MGLV_X_REAR = 4364;
716 static const SpriteID SPR_BTSGA_MGLV_Y_REAR = 4365;
717
718 /* BTSUS == Suspension bridge
719 * TILE_* denotes the different tiles a suspension bridge
720 * can have
721 * TILE_A and TILE_B are the "beginnings" and "ends" of the
722 * suspension system. They have small rectangular endcaps
723 * TILE_C and TILE_D look almost identical to TILE_A and
724 * TILE_B, but they do not have the "endcaps". They form the
725 * middle part
726 * TILE_E is a condensed configuration of two pillars. while they
727 * are usually 2 pillars apart, they only have 1 pillar separation
728 * here
729 * TILE_F is an extended configuration of pillars. They are
730 * plugged in when pillars should be 3 tiles apart
731 */
732 static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_A = 2453;
733 static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_B = 2454;
734 static const SpriteID SPR_BTSUS_Y_FRONT_TILE_A = 2455;
735 static const SpriteID SPR_BTSUS_Y_FRONT_TILE_B = 2456;
736 static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_D = 2457;
737 static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_C = 2458;
738 static const SpriteID SPR_BTSUS_Y_FRONT_TILE_D = 2459;
739 static const SpriteID SPR_BTSUS_Y_FRONT_TILE_C = 2460;
740 static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_A = 2461;
741 static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_B = 2462;
742 static const SpriteID SPR_BTSUS_X_FRONT_TILE_A = 2463;
743 static const SpriteID SPR_BTSUS_X_FRONT_TILE_B = 2464;
744 static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_D = 2465;
745 static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_C = 2466;
746 static const SpriteID SPR_BTSUS_X_FRONT_TILE_D = 2467;
747 static const SpriteID SPR_BTSUS_X_FRONT_TILE_C = 2468;
748 static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_A = 2469;
749 static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_B = 2470;
750 static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_D = 2471;
751 static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_C = 2472;
752 static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_A = 2473;
753 static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_B = 2474;
754 static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_D = 2475;
755 static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_C = 2476;
756 static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_A = 2477;
757 static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_B = 2478;
758 static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_D = 2479;
759 static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_C = 2480;
760 static const SpriteID SPR_BTSUS_X_PILLAR_TILE_A = 2481;
761 static const SpriteID SPR_BTSUS_X_PILLAR_TILE_B = 2482;
762 static const SpriteID SPR_BTSUS_X_PILLAR_TILE_D = 2483;
763 static const SpriteID SPR_BTSUS_X_PILLAR_TILE_C = 2484;
764 static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_E = 2485;
765 static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_E = 2486;
766 static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_E = 2487;
767 static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_E = 2488;
768 static const SpriteID SPR_BTSUS_Y_FRONT_TILE_E = 2489;
769 static const SpriteID SPR_BTSUS_X_FRONT_TILE_E = 2490;
770 static const SpriteID SPR_BTSUS_Y_PILLAR_TILE_E = 2491;
771 static const SpriteID SPR_BTSUS_X_PILLAR_TILE_E = 2492;
772 static const SpriteID SPR_BTSUS_RAIL_X_REAR_TILE_F = 2493;
773 static const SpriteID SPR_BTSUS_RAIL_Y_REAR_TILE_F = 2494;
774 static const SpriteID SPR_BTSUS_ROAD_X_REAR_TILE_F = 2495;
775 static const SpriteID SPR_BTSUS_ROAD_Y_REAR_TILE_F = 2496;
776 static const SpriteID SPR_BTSUS_X_FRONT = 2497;
777 static const SpriteID SPR_BTSUS_Y_FRONT = 2498;
778 static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_A = 4334;
779 static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_B = 4335;
780 static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_D = 4336;
781 static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_C = 4337;
782 static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_A = 4338;
783 static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_B = 4339;
784 static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_D = 4340;
785 static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_C = 4341;
786 static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_E = 4342;
787 static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_E = 4343;
788 static const SpriteID SPR_BTSUS_MONO_X_REAR_TILE_F = 4344;
789 static const SpriteID SPR_BTSUS_MONO_Y_REAR_TILE_F = 4345;
790 static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_A = 4374;
791 static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_B = 4375;
792 static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_D = 4376;
793 static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_C = 4377;
794 static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_A = 4378;
795 static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_B = 4379;
796 static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_D = 4380;
797 static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_C = 4381;
798 static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_E = 4382;
799 static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_E = 4383;
800 static const SpriteID SPR_BTSUS_MGLV_X_REAR_TILE_F = 4384;
801 static const SpriteID SPR_BTSUS_MGLV_Y_REAR_TILE_F = 4385;
802
803 /* cantilever bridges
804 * They have three different kinds of tiles:
805 * END(ing), MID(dle), BEG(ginning) */
806 static const SpriteID SPR_BTCAN_RAIL_X_BEG = 2507;
807 static const SpriteID SPR_BTCAN_RAIL_X_MID = 2508;
808 static const SpriteID SPR_BTCAN_RAIL_X_END = 2509;
809 static const SpriteID SPR_BTCAN_RAIL_Y_END = 2510;
810 static const SpriteID SPR_BTCAN_RAIL_Y_MID = 2511;
811 static const SpriteID SPR_BTCAN_RAIL_Y_BEG = 2512;
812 static const SpriteID SPR_BTCAN_ROAD_X_BEG = 2513;
813 static const SpriteID SPR_BTCAN_ROAD_X_MID = 2514;
814 static const SpriteID SPR_BTCAN_ROAD_X_END = 2515;
815 static const SpriteID SPR_BTCAN_ROAD_Y_END = 2516;
816 static const SpriteID SPR_BTCAN_ROAD_Y_MID = 2517;
817 static const SpriteID SPR_BTCAN_ROAD_Y_BEG = 2518;
818 static const SpriteID SPR_BTCAN_X_FRONT_BEG = 2519;
819 static const SpriteID SPR_BTCAN_X_FRONT_MID = 2520;
820 static const SpriteID SPR_BTCAN_X_FRONT_END = 2521;
821 static const SpriteID SPR_BTCAN_Y_FRONT_END = 2522;
822 static const SpriteID SPR_BTCAN_Y_FRONT_MID = 2523;
823 static const SpriteID SPR_BTCAN_Y_FRONT_BEG = 2524;
824 static const SpriteID SPR_BTCAN_X_PILLAR_BEG = 2525;
825 static const SpriteID SPR_BTCAN_X_PILLAR_MID = 2526;
826 static const SpriteID SPR_BTCAN_Y_PILLAR_MID = 2527;
827 static const SpriteID SPR_BTCAN_Y_PILLAR_BEG = 2528;
828 static const SpriteID SPR_BTCAN_MONO_X_BEG = 4346;
829 static const SpriteID SPR_BTCAN_MONO_X_MID = 4347;
830 static const SpriteID SPR_BTCAN_MONO_X_END = 4348;
831 static const SpriteID SPR_BTCAN_MONO_Y_END = 4349;
832 static const SpriteID SPR_BTCAN_MONO_Y_MID = 4350;
833 static const SpriteID SPR_BTCAN_MONO_Y_BEG = 4351;
834 static const SpriteID SPR_BTCAN_MGLV_X_BEG = 4386;
835 static const SpriteID SPR_BTCAN_MGLV_X_MID = 4387;
836 static const SpriteID SPR_BTCAN_MGLV_X_END = 4388;
837 static const SpriteID SPR_BTCAN_MGLV_Y_END = 4389;
838 static const SpriteID SPR_BTCAN_MGLV_Y_MID = 4390;
839 static const SpriteID SPR_BTCAN_MGLV_Y_BEG = 4391;
840
841 /* little concrete bridge */
842 static const SpriteID SPR_BTCON_RAIL_X = 2493;
843 static const SpriteID SPR_BTCON_RAIL_Y = 2494;
844 static const SpriteID SPR_BTCON_ROAD_X = 2495;
845 static const SpriteID SPR_BTCON_ROAD_Y = 2496;
846 static const SpriteID SPR_BTCON_X_FRONT = 2497;
847 static const SpriteID SPR_BTCON_Y_FRONT = 2498;
848 static const SpriteID SPR_BTCON_X_PILLAR = 2505;
849 static const SpriteID SPR_BTCON_Y_PILLAR = 2506;
850 static const SpriteID SPR_BTCON_MONO_X = 4344;
851 static const SpriteID SPR_BTCON_MONO_Y = 4345;
852 static const SpriteID SPR_BTCON_MGLV_X = 4384;
853 static const SpriteID SPR_BTCON_MGLV_Y = 4385;
854
855 /* little steel girder bridge */
856 static const SpriteID SPR_BTGIR_RAIL_X = 2553;
857 static const SpriteID SPR_BTGIR_RAIL_Y = 2554;
858 static const SpriteID SPR_BTGIR_ROAD_X = 2555;
859 static const SpriteID SPR_BTGIR_ROAD_Y = 2556;
860 static const SpriteID SPR_BTGIR_X_FRONT = 2557;
861 static const SpriteID SPR_BTGIR_Y_FRONT = 2558;
862 static const SpriteID SPR_BTGIR_X_PILLAR = 2505;
863 static const SpriteID SPR_BTGIR_Y_PILLAR = 2506;
864 static const SpriteID SPR_BTGIR_MONO_X = 4362;
865 static const SpriteID SPR_BTGIR_MONO_Y = 4363;
866 static const SpriteID SPR_BTGIR_MGLV_X = 4402;
867 static const SpriteID SPR_BTGIR_MGLV_Y = 4403;
868
869 /* tubular bridges
870 * tubular bridges have 3 kinds of tiles:
871 * a start tile (with only half a tube on the far side, marked _BEG
872 * a middle tile (full tunnel), marked _MID
873 * and an end tile (half a tube on the near side, marked _END
874 */
875 static const SpriteID SPR_BTTUB_X_FRONT_BEG = 2559;
876 static const SpriteID SPR_BTTUB_X_FRONT_MID = 2560;
877 static const SpriteID SPR_BTTUB_X_FRONT_END = 2561;
878 static const SpriteID SPR_BTTUB_Y_FRONT_END = 2562;
879 static const SpriteID SPR_BTTUB_Y_FRONT_MID = 2563;
880 static const SpriteID SPR_BTTUB_Y_FRONT_BEG = 2564;
881 static const SpriteID SPR_BTTUB_X_PILLAR_BEG = 2565;
882 static const SpriteID SPR_BTTUB_X_PILLAR_MID = 2566;
883 static const SpriteID SPR_BTTUB_Y_PILLAR_MID = 2567;
884 static const SpriteID SPR_BTTUB_Y_PILLAR_BEG = 2568;
885 static const SpriteID SPR_BTTUB_X_RAIL_REAR_BEG = 2569;
886 static const SpriteID SPR_BTTUB_X_RAIL_REAR_MID = 2570;
887 static const SpriteID SPR_BTTUB_X_RAIL_REAR_END = 2571;
888 static const SpriteID SPR_BTTUB_Y_RAIL_REAR_BEG = 2572;
889 static const SpriteID SPR_BTTUB_Y_RAIL_REAR_MID = 2573;
890 static const SpriteID SPR_BTTUB_Y_RAIL_REAR_END = 2574;
891 static const SpriteID SPR_BTTUB_X_ROAD_REAR_BEG = 2575;
892 static const SpriteID SPR_BTTUB_X_ROAD_REAR_MID = 2576;
893 static const SpriteID SPR_BTTUB_X_ROAD_REAR_END = 2577;
894 static const SpriteID SPR_BTTUB_Y_ROAD_REAR_BEG = 2578;
895 static const SpriteID SPR_BTTUB_Y_ROAD_REAR_MID = 2579;
896 static const SpriteID SPR_BTTUB_Y_ROAD_REAR_END = 2580;
897 static const SpriteID SPR_BTTUB_X_MONO_REAR_BEG = 2581;
898 static const SpriteID SPR_BTTUB_X_MONO_REAR_MID = 2582;
899 static const SpriteID SPR_BTTUB_X_MONO_REAR_END = 2583;
900 static const SpriteID SPR_BTTUB_Y_MONO_REAR_BEG = 2584;
901 static const SpriteID SPR_BTTUB_Y_MONO_REAR_MID = 2585;
902 static const SpriteID SPR_BTTUB_Y_MONO_REAR_END = 2586;
903 static const SpriteID SPR_BTTUB_X_MGLV_REAR_BEG = 2587;
904 static const SpriteID SPR_BTTUB_X_MGLV_REAR_MID = 2588;
905 static const SpriteID SPR_BTTUB_X_MGLV_REAR_END = 2589;
906 static const SpriteID SPR_BTTUB_Y_MGLV_REAR_BEG = 2590;
907 static const SpriteID SPR_BTTUB_Y_MGLV_REAR_MID = 2591;
908 static const SpriteID SPR_BTTUB_Y_MGLV_REAR_END = 2592;
909
910
911 /* ramps (for all bridges except wood and tubular?)*/
912 static const SpriteID SPR_BTGEN_RAIL_X_SLOPE_DOWN = 2437;
913 static const SpriteID SPR_BTGEN_RAIL_X_SLOPE_UP = 2438;
914 static const SpriteID SPR_BTGEN_RAIL_Y_SLOPE_DOWN = 2439;
915 static const SpriteID SPR_BTGEN_RAIL_Y_SLOPE_UP = 2440;
916 static const SpriteID SPR_BTGEN_RAIL_RAMP_X_UP = 2441;
917 static const SpriteID SPR_BTGEN_RAIL_RAMP_X_DOWN = 2442;
918 static const SpriteID SPR_BTGEN_RAIL_RAMP_Y_UP = 2443;
919 static const SpriteID SPR_BTGEN_RAIL_RAMP_Y_DOWN = 2444;
920 static const SpriteID SPR_BTGEN_ROAD_X_SLOPE_DOWN = 2445;
921 static const SpriteID SPR_BTGEN_ROAD_X_SLOPE_UP = 2446;
922 static const SpriteID SPR_BTGEN_ROAD_Y_SLOPE_DOWN = 2447;
923 static const SpriteID SPR_BTGEN_ROAD_Y_SLOPE_UP = 2448;
924 static const SpriteID SPR_BTGEN_ROAD_RAMP_X_UP = 2449;
925 static const SpriteID SPR_BTGEN_ROAD_RAMP_X_DOWN = 2450;
926 static const SpriteID SPR_BTGEN_ROAD_RAMP_Y_UP = 2451;
927 static const SpriteID SPR_BTGEN_ROAD_RAMP_Y_DOWN = 2452;
928 static const SpriteID SPR_BTGEN_MONO_X_SLOPE_DOWN = 4326;
929 static const SpriteID SPR_BTGEN_MONO_X_SLOPE_UP = 4327;
930 static const SpriteID SPR_BTGEN_MONO_Y_SLOPE_DOWN = 4328;
931 static const SpriteID SPR_BTGEN_MONO_Y_SLOPE_UP = 4329;
932 static const SpriteID SPR_BTGEN_MONO_RAMP_X_UP = 4330;
933 static const SpriteID SPR_BTGEN_MONO_RAMP_X_DOWN = 4331;
934 static const SpriteID SPR_BTGEN_MONO_RAMP_Y_UP = 4332;
935 static const SpriteID SPR_BTGEN_MONO_RAMP_Y_DOWN = 4333;
936 static const SpriteID SPR_BTGEN_MGLV_X_SLOPE_DOWN = 4366;
937 static const SpriteID SPR_BTGEN_MGLV_X_SLOPE_UP = 4367;
938 static const SpriteID SPR_BTGEN_MGLV_Y_SLOPE_DOWN = 4368;
939 static const SpriteID SPR_BTGEN_MGLV_Y_SLOPE_UP = 4369;
940 static const SpriteID SPR_BTGEN_MGLV_RAMP_X_UP = 4370;
941 static const SpriteID SPR_BTGEN_MGLV_RAMP_X_DOWN = 4371;
942 static const SpriteID SPR_BTGEN_MGLV_RAMP_Y_UP = 4372;
943 static const SpriteID SPR_BTGEN_MGLV_RAMP_Y_DOWN = 4373;
944
945 /* Vehicle view sprites */
946 static const SpriteID SPR_CENTRE_VIEW_VEHICLE = 683;
947 static const SpriteID SPR_SEND_TRAIN_TODEPOT = 685;
948 static const SpriteID SPR_SEND_ROADVEH_TODEPOT = 686;
949 static const SpriteID SPR_SEND_AIRCRAFT_TODEPOT = 687;
950 static const SpriteID SPR_SEND_SHIP_TODEPOT = 688;
951
952 static const SpriteID SPR_IGNORE_SIGNALS = 689;
953 static const SpriteID SPR_SHOW_ORDERS = 690;
954 static const SpriteID SPR_SHOW_VEHICLE_DETAILS = 691;
955 static const SpriteID SPR_REFIT_VEHICLE = 692;
956 static const SpriteID SPR_FORCE_VEHICLE_TURN = 715;
957
958 /* Vehicle sprite-flags (red/green) */
959 static const SpriteID SPR_FLAG_VEH_STOPPED = 3090;
960 static const SpriteID SPR_FLAG_VEH_RUNNING = 3091;
961
962 static const SpriteID SPR_VEH_BUS_SW_VIEW = 3097;
963 static const SpriteID SPR_VEH_BUS_SIDE_VIEW = 3098;
964
965 /* Rotor sprite numbers */
966 static const SpriteID SPR_ROTOR_STOPPED = 3901;
967 static const SpriteID SPR_ROTOR_MOVING_1 = 3902;
968 static const SpriteID SPR_ROTOR_MOVING_3 = 3904;
969
970 /* Town/house sprites */
971 static const SpriteID SPR_LIFT = 1443;
972
973 /* used in town_land.h
974 * CNST1..3 = Those are the different stages of construction
975 * The last 2 hexas correspond to the type of building it represent, if any */
976 static const SpriteID SPR_CNST1_TALLOFFICE_00 = 1421;
977 static const SpriteID SPR_CNST2_TALLOFFICE_00 = 1422;
978 static const SpriteID SPR_CNST3_TALLOFFICE_00 = 1423;
979 static const SpriteID SPR_GROUND_TALLOFFICE_00 = 1424;
980 static const SpriteID SPR_BUILD_TALLOFFICE_00 = 1425; // temperate
981 static const SpriteID SPR_CNST1_OFFICE_01 = 1426;
982 static const SpriteID SPR_CNST2_OFFICE_01 = 1427;
983 static const SpriteID SPR_BUILD_OFFICE_01 = 1428; // temperate
984 static const SpriteID SPR_GROUND_OFFICE_01 = 1429;
985 static const SpriteID SPR_CNST1_SMLBLCKFLATS_02 = 1430; // Small Block of Flats
986 static const SpriteID SPR_CNST2_SMLBLCKFLATS_02 = 1431;
987 static const SpriteID SPR_BUILD_SMLBLCKFLATS_02 = 1432; // temperate
988 static const SpriteID SPR_GROUND_SMLBLCKFLATS_02 = 1433;
989 static const SpriteID SPR_CNST1_TEMPCHURCH = 1434;
990 static const SpriteID SPR_CNST2_TEMPCHURCH = 1435;
991 static const SpriteID SPR_BUILD_TEMPCHURCH = 1436;
992 static const SpriteID SPR_GROUND_TEMPCHURCH = 1437;
993 static const SpriteID SPR_CNST1_LARGEOFFICE_04 = 1440;
994 static const SpriteID SPR_CNST2_LARGEOFFICE_04 = 1441;
995 static const SpriteID SPR_BUILD_LARGEOFFICE_04 = 1442; // temperate, sub-arctic, subtropical
996 static const SpriteID SPR_BUILD_LARGEOFFICE_04_SNOW = 4569; // same, with snow
997 /* These are in fact two houses for the same houseID. so V1 and V2 */
998 static const SpriteID SPR_CNST1_TOWNHOUSE_06_V1 = 1444;
999 static const SpriteID SPR_CNST2_TOWNHOUSE_06_V1 = 1445;
1000 static const SpriteID SPR_BUILD_TOWNHOUSE_06_V1 = 1446; // 1st variation
1001 static const SpriteID SPR_GRND_TOWNHOUSE_06_V1 = 1447;
1002 static const SpriteID SPR_GRND_STADIUM_N = 1479; // stadium ground at north
1003 static const SpriteID SPR_GRND_STADIUM_E = 1480; // stadium ground at east
1004 static const SpriteID SPR_GRND_STADIUM_W = 1481; // stadium ground at west
1005 static const SpriteID SPR_GRND_STADIUM_S = 1482; // stadium ground at south
1006 static const SpriteID SPR_CNST1_TOWNHOUSE_06_V2 = 1501; // used as ground, but is stage1
1007 static const SpriteID SPR_CNST1_TOWNHOUSE_06_V2_P = 1502; // pipes extensions for previous
1008 static const SpriteID SPR_CNST2_TOWNHOUSE_06_V2_G = 1503; // Ground of cnst stage 2
1009 static const SpriteID SPR_CNST2_TOWNHOUSE_06_V2 = 1504; // real cnst stage 2
1010 static const SpriteID SPR_GRND_TOWNHOUSE_06_V2 = 1505;
1011 static const SpriteID SPR_BUILD_TOWNHOUSE_06_V2 = 1506; // 2nd variation
1012 static const SpriteID SPR_CNST1_HOTEL_07_NW = 1448;
1013 static const SpriteID SPR_CNST2_HOTEL_07_NW = 1449;
1014 static const SpriteID SPR_BUILD_HOTEL_07_NW = 1450;
1015 static const SpriteID SPR_CNST1_HOTEL_07_SE = 1451;
1016 static const SpriteID SPR_CNST2_HOTEL_07_SE = 1452;
1017 static const SpriteID SPR_BUILD_HOTEL_07_SE = 1453;
1018 static const SpriteID SPR_STATUE_HORSERIDER_09 = 1454;
1019 static const SpriteID SPR_FOUNTAIN_0A = 1455;
1020 static const SpriteID SPR_PARKSTATUE_0B = 1456;
1021 static const SpriteID SPR_PARKALLEY_0C = 1457;
1022 static const SpriteID SPR_CNST1_OFFICE_0D = 1458;
1023 static const SpriteID SPR_CNST2_OFFICE_0D = 1459;
1024 static const SpriteID SPR_BUILD_OFFICE_0D = 1460;
1025 static const SpriteID SPR_CNST1_SHOPOFFICE_0E = 1461;
1026 static const SpriteID SPR_CNST2_SHOPOFFICE_0E = 1462;
1027 static const SpriteID SPR_BUILD_SHOPOFFICE_0E = 1463;
1028 static const SpriteID SPR_CNST1_SHOPOFFICE_0F = 1464;
1029 static const SpriteID SPR_CNST2_SHOPOFFICE_0F = 1465;
1030 static const SpriteID SPR_BUILD_SHOPOFFICE_0F = 1466;
1031 static const SpriteID SPR_GRND_HOUSE_TOY1 = 4675;
1032 static const SpriteID SPR_GRND_HOUSE_TOY2 = 4676;
1033
1034 /* Easter egg/disaster sprites */
1035 static const SpriteID SPR_BLIMP = 3905; // Zeppelin
1036 static const SpriteID SPR_BLIMP_CRASHING = 3906;
1037 static const SpriteID SPR_BLIMP_CRASHED = 3907;
1038 static const SpriteID SPR_UFO_SMALL_SCOUT = 3908; // XCOM - UFO Defense
1039 static const SpriteID SPR_UFO_SMALL_SCOUT_DARKER = 3909;
1040 static const SpriteID SPR_SUB_SMALL_NE = 3910; // Silent Service
1041 static const SpriteID SPR_SUB_SMALL_SE = 3911;
1042 static const SpriteID SPR_SUB_SMALL_SW = 3912;
1043 static const SpriteID SPR_SUB_SMALL_NW = 3913;
1044 static const SpriteID SPR_SUB_LARGE_NE = 3914;
1045 static const SpriteID SPR_SUB_LARGE_SE = 3915;
1046 static const SpriteID SPR_SUB_LARGE_SW = 3916;
1047 static const SpriteID SPR_SUB_LARGE_NW = 3917;
1048 static const SpriteID SPR_F_15 = 3918; // F-15 Strike Eagle
1049 static const SpriteID SPR_F_15_FIRING = 3919;
1050 static const SpriteID SPR_UFO_HARVESTER = 3920; // XCOM - UFO Defense
1051 static const SpriteID SPR_XCOM_SKYRANGER = 3921;
1052 static const SpriteID SPR_AH_64A = 3922; // Gunship
1053 static const SpriteID SPR_AH_64A_FIRING = 3923;
1054
1055 /* main_gui.cpp */
1056 static const SpriteID SPR_IMG_TERRAFORM_UP = 694;
1057 static const SpriteID SPR_IMG_TERRAFORM_DOWN = 695;
1058 static const SpriteID SPR_IMG_DYNAMITE = 703;
1059 static const SpriteID SPR_IMG_ROCKS = 4084;
1060 static const SpriteID SPR_IMG_DESERT = 4085;
1061 static const SpriteID SPR_IMG_TRANSMITTER = 4086;
1062 static const SpriteID SPR_IMG_LEVEL_LAND = SPR_OPENTTD_BASE + 91;
1063 static const SpriteID SPR_IMG_BUILD_CANAL = SPR_OPENTTD_BASE + 88;
1064 static const SpriteID SPR_IMG_BUILD_RIVER = SPR_OPENTTD_BASE + 136;
1065 static const SpriteID SPR_IMG_BUILD_LOCK = SPR_CANALS_BASE + 64;
1066 static const SpriteID SPR_IMG_PAUSE = 726;
1067 static const SpriteID SPR_IMG_FASTFORWARD = SPR_OPENTTD_BASE + 90;
1068 static const SpriteID SPR_IMG_SETTINGS = 751;
1069 static const SpriteID SPR_IMG_SAVE = 724;
1070 static const SpriteID SPR_IMG_SMALLMAP = 708;
1071 static const SpriteID SPR_IMG_TOWN = 4077;
1072 static const SpriteID SPR_IMG_SUBSIDIES = 679;
1073 static const SpriteID SPR_IMG_COMPANY_LIST = 1299;
1074 static const SpriteID SPR_IMG_COMPANY_FINANCE = 737;
1075 static const SpriteID SPR_IMG_COMPANY_GENERAL = 743;
1076 static const SpriteID SPR_IMG_GRAPHS = 745;
1077 static const SpriteID SPR_IMG_COMPANY_LEAGUE = 684;
1078 static const SpriteID SPR_IMG_SHOW_COUNTOURS = 738;
1079 static const SpriteID SPR_IMG_SHOW_VEHICLES = 739;
1080 static const SpriteID SPR_IMG_SHOW_ROUTES = 740;
1081 static const SpriteID SPR_IMG_INDUSTRY = 741;
1082 static const SpriteID SPR_IMG_PLANTTREES = 742;
1083 static const SpriteID SPR_IMG_TRAINLIST = 731;
1084 static const SpriteID SPR_IMG_TRUCKLIST = 732;
1085 static const SpriteID SPR_IMG_SHIPLIST = 733;
1086 static const SpriteID SPR_IMG_AIRPLANESLIST = 734;
1087 static const SpriteID SPR_IMG_ZOOMIN = 735;
1088 static const SpriteID SPR_IMG_ZOOMOUT = 736;
1089 static const SpriteID SPR_IMG_BUILDRAIL = 727;
1090 static const SpriteID SPR_IMG_BUILDROAD = 728;
1091 static const SpriteID SPR_IMG_BUILDWATER = 729;
1092 static const SpriteID SPR_IMG_BUILDAIR = 730;
1093 static const SpriteID SPR_IMG_LANDSCAPING = 4083;
1094 static const SpriteID SPR_IMG_MUSIC = 713;
1095 static const SpriteID SPR_IMG_MESSAGES = 680;
1096 static const SpriteID SPR_IMG_QUERY = 723;
1097 static const SpriteID SPR_IMG_SIGN = 4082;
1098 static const SpriteID SPR_IMG_BUY_LAND = 4791;
1099 static const SpriteID SPR_IMG_STORY_BOOK = SPR_OPENTTD_BASE + 169;
1100
1101 /* OpenTTD in gamescreen */
1102 static const SpriteID SPR_OTTD_O = 4842;
1103 static const SpriteID SPR_OTTD_P = 4841;
1104 static const SpriteID SPR_OTTD_E = SPR_OPENTTD_BASE + 12;
1105 static const SpriteID SPR_OTTD_D = SPR_OPENTTD_BASE + 13;
1106 static const SpriteID SPR_OTTD_N = 4839;
1107 static const SpriteID SPR_OTTD_T = 4836;
1108 /* Letters not used: R,A,S,Y,C (4837, 4838, 4840, 4843, 4844) */
1109
1110 static const SpriteID SPR_HIGHSCORE_CHART_BEGIN = 4804;
1111 static const SpriteID SPR_TYCOON_IMG1_BEGIN = 4814;
1112 static const SpriteID SPR_TYCOON_IMG2_BEGIN = 4824;
1113
1114 /* Industry sprites */
1115 static const SpriteID SPR_IT_SUGAR_MINE_SIEVE = 4775;
1116 static const SpriteID SPR_IT_SUGAR_MINE_CLOUDS = 4784;
1117 static const SpriteID SPR_IT_SUGAR_MINE_PILE = 4780;
1118 static const SpriteID SPR_IT_TOFFEE_QUARRY_TOFFEE = 4766;
1119 static const SpriteID SPR_IT_TOFFEE_QUARRY_SHOVEL = 4767;
1120 static const SpriteID SPR_IT_BUBBLE_GENERATOR_SPRING = 4746;
1121 static const SpriteID SPR_IT_BUBBLE_GENERATOR_BUBBLE = 4747;
1122 static const SpriteID SPR_IT_TOY_FACTORY_STAMP_HOLDER = 4717;
1123 static const SpriteID SPR_IT_TOY_FACTORY_STAMP = 4718;
1124 static const SpriteID SPR_IT_TOY_FACTORY_CLAY = 4719;
1125 static const SpriteID SPR_IT_TOY_FACTORY_ROBOT = 4720;
1126 static const SpriteID SPR_IT_POWER_PLANT_TRANSFORMERS = 2054;
1127
1128 /* small icons of cargo available in station waiting*/
1129 static const SpriteID SPR_CARGO_PASSENGER = 4297;
1130 static const SpriteID SPR_CARGO_COAL = 4298;
1131 static const SpriteID SPR_CARGO_MAIL = 4299;
1132 static const SpriteID SPR_CARGO_OIL = 4300;
1133 static const SpriteID SPR_CARGO_LIVESTOCK = 4301;
1134 static const SpriteID SPR_CARGO_GOODS = 4302;
1135 static const SpriteID SPR_CARGO_GRAIN = 4303;
1136 static const SpriteID SPR_CARGO_WOOD = 4304;
1137 static const SpriteID SPR_CARGO_IRON_ORE = 4305;
1138 static const SpriteID SPR_CARGO_STEEL = 4306;
1139 static const SpriteID SPR_CARGO_VALUES_GOLD = 4307; // shared between temperate and arctic
1140 static const SpriteID SPR_CARGO_FRUIT = 4308;
1141 static const SpriteID SPR_CARGO_COPPER_ORE = 4309;
1142 static const SpriteID SPR_CARGO_WATERCOLA = 4310; // shared between desert and toyland
1143 static const SpriteID SPR_CARGO_DIAMONDS = 4311;
1144 static const SpriteID SPR_CARGO_FOOD = 4312;
1145 static const SpriteID SPR_CARGO_PAPER = 4313;
1146 static const SpriteID SPR_CARGO_RUBBER = 4314;
1147 static const SpriteID SPR_CARGO_CANDY = 4315;
1148 static const SpriteID SPR_CARGO_SUGAR = 4316;
1149 static const SpriteID SPR_CARGO_TOYS = 4317;
1150 static const SpriteID SPR_CARGO_COTTONCANDY = 4318;
1151 static const SpriteID SPR_CARGO_FIZZYDRINK = 4319;
1152 static const SpriteID SPR_CARGO_TOFFEE = 4320;
1153 static const SpriteID SPR_CARGO_BUBBLES = 4321;
1154 static const SpriteID SPR_CARGO_PLASTIC = 4322;
1155 static const SpriteID SPR_CARGO_BATTERIES = 4323;
1156
1157 /* Effect vehicles */
1158 static const SpriteID SPR_BULLDOZER_NE = 1416;
1159 static const SpriteID SPR_BULLDOZER_SE = 1417;
1160 static const SpriteID SPR_BULLDOZER_SW = 1418;
1161 static const SpriteID SPR_BULLDOZER_NW = 1419;
1162
1163 static const SpriteID SPR_SMOKE_0 = 2040;
1164 static const SpriteID SPR_SMOKE_1 = 2041;
1165 static const SpriteID SPR_SMOKE_2 = 2042;
1166 static const SpriteID SPR_SMOKE_3 = 2043;
1167 static const SpriteID SPR_SMOKE_4 = 2044;
1168
1169 static const SpriteID SPR_DIESEL_SMOKE_0 = 3073;
1170 static const SpriteID SPR_DIESEL_SMOKE_1 = 3074;
1171 static const SpriteID SPR_DIESEL_SMOKE_2 = 3075;
1172 static const SpriteID SPR_DIESEL_SMOKE_3 = 3076;
1173 static const SpriteID SPR_DIESEL_SMOKE_4 = 3077;
1174 static const SpriteID SPR_DIESEL_SMOKE_5 = 3078;
1175
1176 static const SpriteID SPR_STEAM_SMOKE_0 = 3079;
1177 static const SpriteID SPR_STEAM_SMOKE_1 = 3080;
1178 static const SpriteID SPR_STEAM_SMOKE_2 = 3081;
1179 static const SpriteID SPR_STEAM_SMOKE_3 = 3082;
1180 static const SpriteID SPR_STEAM_SMOKE_4 = 3083;
1181
1182 static const SpriteID SPR_ELECTRIC_SPARK_0 = 3084;
1183 static const SpriteID SPR_ELECTRIC_SPARK_1 = 3085;
1184 static const SpriteID SPR_ELECTRIC_SPARK_2 = 3086;
1185 static const SpriteID SPR_ELECTRIC_SPARK_3 = 3087;
1186 static const SpriteID SPR_ELECTRIC_SPARK_4 = 3088;
1187 static const SpriteID SPR_ELECTRIC_SPARK_5 = 3089;
1188
1189 static const SpriteID SPR_CHIMNEY_SMOKE_0 = 3701;
1190 static const SpriteID SPR_CHIMNEY_SMOKE_1 = 3702;
1191 static const SpriteID SPR_CHIMNEY_SMOKE_2 = 3703;
1192 static const SpriteID SPR_CHIMNEY_SMOKE_3 = 3704;
1193 static const SpriteID SPR_CHIMNEY_SMOKE_4 = 3705;
1194 static const SpriteID SPR_CHIMNEY_SMOKE_5 = 3706;
1195 static const SpriteID SPR_CHIMNEY_SMOKE_6 = 3707;
1196 static const SpriteID SPR_CHIMNEY_SMOKE_7 = 3708;
1197
1198 static const SpriteID SPR_EXPLOSION_LARGE_0 = 3709;
1199 static const SpriteID SPR_EXPLOSION_LARGE_1 = 3710;
1200 static const SpriteID SPR_EXPLOSION_LARGE_2 = 3711;
1201 static const SpriteID SPR_EXPLOSION_LARGE_3 = 3712;
1202 static const SpriteID SPR_EXPLOSION_LARGE_4 = 3713;
1203 static const SpriteID SPR_EXPLOSION_LARGE_5 = 3714;
1204 static const SpriteID SPR_EXPLOSION_LARGE_6 = 3715;
1205 static const SpriteID SPR_EXPLOSION_LARGE_7 = 3716;
1206 static const SpriteID SPR_EXPLOSION_LARGE_8 = 3717;
1207 static const SpriteID SPR_EXPLOSION_LARGE_9 = 3718;
1208 static const SpriteID SPR_EXPLOSION_LARGE_A = 3719;
1209 static const SpriteID SPR_EXPLOSION_LARGE_B = 3720;
1210 static const SpriteID SPR_EXPLOSION_LARGE_C = 3721;
1211 static const SpriteID SPR_EXPLOSION_LARGE_D = 3722;
1212 static const SpriteID SPR_EXPLOSION_LARGE_E = 3723;
1213 static const SpriteID SPR_EXPLOSION_LARGE_F = 3724;
1214
1215 static const SpriteID SPR_EXPLOSION_SMALL_0 = 3725;
1216 static const SpriteID SPR_EXPLOSION_SMALL_1 = 3726;
1217 static const SpriteID SPR_EXPLOSION_SMALL_2 = 3727;
1218 static const SpriteID SPR_EXPLOSION_SMALL_3 = 3728;
1219 static const SpriteID SPR_EXPLOSION_SMALL_4 = 3729;
1220 static const SpriteID SPR_EXPLOSION_SMALL_5 = 3730;
1221 static const SpriteID SPR_EXPLOSION_SMALL_6 = 3731;
1222 static const SpriteID SPR_EXPLOSION_SMALL_7 = 3732;
1223 static const SpriteID SPR_EXPLOSION_SMALL_8 = 3733;
1224 static const SpriteID SPR_EXPLOSION_SMALL_9 = 3734;
1225 static const SpriteID SPR_EXPLOSION_SMALL_A = 3735;
1226 static const SpriteID SPR_EXPLOSION_SMALL_B = 3736;
1227
1228 static const SpriteID SPR_BREAKDOWN_SMOKE_0 = 3737;
1229 static const SpriteID SPR_BREAKDOWN_SMOKE_1 = 3738;
1230 static const SpriteID SPR_BREAKDOWN_SMOKE_2 = 3739;
1231 static const SpriteID SPR_BREAKDOWN_SMOKE_3 = 3740;
1232
1233 static const SpriteID SPR_BUBBLE_0 = 4748;
1234 static const SpriteID SPR_BUBBLE_1 = 4749;
1235 static const SpriteID SPR_BUBBLE_2 = 4750;
1236 static const SpriteID SPR_BUBBLE_GENERATE_0 = 4751;
1237 static const SpriteID SPR_BUBBLE_GENERATE_1 = 4752;
1238 static const SpriteID SPR_BUBBLE_GENERATE_2 = 4753;
1239 static const SpriteID SPR_BUBBLE_GENERATE_3 = 4754;
1240 static const SpriteID SPR_BUBBLE_BURST_0 = 4755;
1241 static const SpriteID SPR_BUBBLE_BURST_1 = 4756;
1242 static const SpriteID SPR_BUBBLE_BURST_2 = 4757;
1243 static const SpriteID SPR_BUBBLE_ABSORB_0 = 4758;
1244 static const SpriteID SPR_BUBBLE_ABSORB_1 = 4759;
1245 static const SpriteID SPR_BUBBLE_ABSORB_2 = 4760;
1246 static const SpriteID SPR_BUBBLE_ABSORB_3 = 4761;
1247 static const SpriteID SPR_BUBBLE_ABSORB_4 = 4762;
1248
1249 /* Electrified rail build menu */
1250 static const SpriteID SPR_BUILD_NS_ELRAIL = SPR_ELRAIL_BASE + 36;
1251 static const SpriteID SPR_BUILD_X_ELRAIL = SPR_ELRAIL_BASE + 37;
1252 static const SpriteID SPR_BUILD_EW_ELRAIL = SPR_ELRAIL_BASE + 38;
1253 static const SpriteID SPR_BUILD_Y_ELRAIL = SPR_ELRAIL_BASE + 39;
1254 static const SpriteID SPR_BUILD_TUNNEL_ELRAIL = SPR_ELRAIL_BASE + 44;
1255
1256 /* airport_gui.cpp */
1257 static const SpriteID SPR_IMG_AIRPORT = 744;
1258
1259 /* dock_gui.cpp */
1260 static const SpriteID SPR_IMG_SHIP_DEPOT = 748;
1261 static const SpriteID SPR_IMG_SHIP_DOCK = 746;
1262 static const SpriteID SPR_IMG_BUOY = 693;
1263 static const SpriteID SPR_IMG_AQUEDUCT = SPR_OPENTTD_BASE + 145;
1264
1265 /* music_gui.cpp */
1266 static const SpriteID SPR_IMG_SKIP_TO_PREV = 709;
1267 static const SpriteID SPR_IMG_SKIP_TO_NEXT = 710;
1268 static const SpriteID SPR_IMG_STOP_MUSIC = 711;
1269 static const SpriteID SPR_IMG_PLAY_MUSIC = 712;
1270
1271 /* road_gui.cpp */
1272 static const SpriteID SPR_IMG_ROAD_Y_DIR = 1309;
1273 static const SpriteID SPR_IMG_ROAD_X_DIR = 1310;
1274 static const SpriteID SPR_IMG_AUTOROAD = SPR_OPENTTD_BASE + 82;
1275 static const SpriteID SPR_IMG_ROAD_DEPOT = 1295;
1276 static const SpriteID SPR_IMG_BUS_STATION = 749;
1277 static const SpriteID SPR_IMG_TRUCK_BAY = 750;
1278 static const SpriteID SPR_IMG_BRIDGE = 2594;
1279 static const SpriteID SPR_IMG_ROAD_TUNNEL = 2429;
1280 static const SpriteID SPR_IMG_REMOVE = 714;
1281 static const SpriteID SPR_IMG_ROAD_ONE_WAY = SPR_OPENTTD_BASE + 134;
1282 static const SpriteID SPR_IMG_TRAMWAY_Y_DIR = SPR_TRAMWAY_BASE + 0;
1283 static const SpriteID SPR_IMG_TRAMWAY_X_DIR = SPR_TRAMWAY_BASE + 1;
1284 static const SpriteID SPR_IMG_AUTOTRAM = SPR_OPENTTD_BASE + 84;
1285
1286 /* rail_gui.cpp */
1287 static const SpriteID SPR_IMG_RAIL_NS = 1251;
1288 static const SpriteID SPR_IMG_RAIL_NE = 1252;
1289 static const SpriteID SPR_IMG_RAIL_EW = 1253;
1290 static const SpriteID SPR_IMG_RAIL_NW = 1254;
1291 static const SpriteID SPR_IMG_AUTORAIL = SPR_OPENTTD_BASE + 53;
1292 static const SpriteID SPR_IMG_AUTOELRAIL = SPR_OPENTTD_BASE + 57;
1293 static const SpriteID SPR_IMG_AUTOMONO = SPR_OPENTTD_BASE + 63;
1294 static const SpriteID SPR_IMG_AUTOMAGLEV = SPR_OPENTTD_BASE + 69;
1295
1296 static const SpriteID SPR_IMG_WAYPOINT = SPR_OPENTTD_BASE + 76;
1297
1298 static const SpriteID SPR_IMG_DEPOT_RAIL = 1294;
1299 static const SpriteID SPR_IMG_DEPOT_ELRAIL = SPR_OPENTTD_BASE + 61;
1300 static const SpriteID SPR_IMG_DEPOT_MONO = SPR_OPENTTD_BASE + 67;
1301 static const SpriteID SPR_IMG_DEPOT_MAGLEV = SPR_OPENTTD_BASE + 73;
1302
1303 static const SpriteID SPR_IMG_RAIL_STATION = 1298;
1304 static const SpriteID SPR_IMG_RAIL_SIGNALS = 1291;
1305
1306 static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_NORM = 1287;
1307 static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_ENTRY = SPR_SIGNALS_BASE + 12;
1308 static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_EXIT = SPR_SIGNALS_BASE + 28;
1309 static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_COMBO = SPR_SIGNALS_BASE + 44;
1310 static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_PBS = SPR_SIGNALS_BASE + 124;
1311 static const SpriteID SPR_IMG_SIGNAL_ELECTRIC_PBS_OWAY = SPR_SIGNALS_BASE + 140;
1312 static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_NORM = SPR_SIGNALS_BASE + 60;
1313 static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_ENTRY = SPR_SIGNALS_BASE + 76;
1314 static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_EXIT = SPR_SIGNALS_BASE + 92;
1315 static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_COMBO = SPR_SIGNALS_BASE + 108;
1316 static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_PBS = SPR_SIGNALS_BASE + 188;
1317 static const SpriteID SPR_IMG_SIGNAL_SEMAPHORE_PBS_OWAY= SPR_SIGNALS_BASE + 204;
1318 static const SpriteID SPR_IMG_SIGNAL_CONVERT = SPR_OPENTTD_BASE + 135;
1319
1320 static const SpriteID SPR_IMG_TUNNEL_RAIL = 2430;
1321 static const SpriteID SPR_IMG_TUNNEL_MONO = 2431;
1322 static const SpriteID SPR_IMG_TUNNEL_MAGLEV = 2432;
1323
1324 static const SpriteID SPR_IMG_CONVERT_RAIL = SPR_OPENTTD_BASE + 55;
1325 static const SpriteID SPR_IMG_CONVERT_ELRAIL = SPR_OPENTTD_BASE + 59;
1326 static const SpriteID SPR_IMG_CONVERT_MONO = SPR_OPENTTD_BASE + 65;
1327 static const SpriteID SPR_IMG_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 71;
1328
1329 /* story_gui.cpp */
1330 static const SpriteID SPR_IMG_VIEW_LOCATION = SPR_OPENTTD_BASE + 170;
1331 static const SpriteID SPR_IMG_GOAL = SPR_OPENTTD_BASE + 171;
1332 static const SpriteID SPR_IMG_GOAL_COMPLETED = SPR_OPENTTD_BASE + 172;
1333 static const SpriteID SPR_IMG_GOAL_BROKEN_REF= SPR_OPENTTD_BASE + 173;
1334
1335 /* intro_gui.cpp, genworld_gui.cpp */
1336 static const SpriteID SPR_SELECT_TEMPERATE = 4882;
1337 static const SpriteID SPR_SELECT_TEMPERATE_PUSHED = 4883;
1338 static const SpriteID SPR_SELECT_SUB_ARCTIC = 4884;
1339 static const SpriteID SPR_SELECT_SUB_ARCTIC_PUSHED = 4885;
1340 static const SpriteID SPR_SELECT_SUB_TROPICAL = 4886;
1341 static const SpriteID SPR_SELECT_SUB_TROPICAL_PUSHED = 4887;
1342 static const SpriteID SPR_SELECT_TOYLAND = 4888;
1343 static const SpriteID SPR_SELECT_TOYLAND_PUSHED = 4889;
1344
1347 /* Terraform
1348 * Cursors */
1349 static const CursorID SPR_CURSOR_MOUSE = 0;
1350 static const CursorID SPR_CURSOR_ZZZ = 1;
1351 static const CursorID SPR_CURSOR_BUOY = 702;
1352 static const CursorID SPR_CURSOR_QUERY = 719;
1353 static const CursorID SPR_CURSOR_HQ = 720;
1354 static const CursorID SPR_CURSOR_SHIP_DEPOT = 721;
1355 static const CursorID SPR_CURSOR_SIGN = 722;
1356
1357 static const CursorID SPR_CURSOR_TREE = 2010;
1358 static const CursorID SPR_CURSOR_BUY_LAND = 4792;
1359 static const CursorID SPR_CURSOR_LEVEL_LAND = SPR_OPENTTD_BASE + 92;
1360
1361 static const CursorID SPR_CURSOR_TOWN = 4080;
1362 static const CursorID SPR_CURSOR_INDUSTRY = 4081;
1363 static const CursorID SPR_CURSOR_ROCKY_AREA = 4087;
1364 static const CursorID SPR_CURSOR_DESERT = 4088;
1365 static const CursorID SPR_CURSOR_TRANSMITTER = 4089;
1366
1367 /* airport cursors */
1368 static const CursorID SPR_CURSOR_AIRPORT = 2724;
1369
1370 /* dock cursors */
1371 static const CursorID SPR_CURSOR_DOCK = 3668;
1372 static const CursorID SPR_CURSOR_CANAL = SPR_OPENTTD_BASE + 89;
1373 static const CursorID SPR_CURSOR_LOCK = SPR_OPENTTD_BASE + 87;
1374 static const CursorID SPR_CURSOR_RIVER = SPR_OPENTTD_BASE + 137;
1375 static const CursorID SPR_CURSOR_AQUEDUCT = SPR_OPENTTD_BASE + 146;
1376
1377 /* shared road & rail cursors */
1378 static const CursorID SPR_CURSOR_BRIDGE = 2593;
1379
1380 /* rail cursors */
1381 static const CursorID SPR_CURSOR_NS_TRACK = 1263;
1382 static const CursorID SPR_CURSOR_SWNE_TRACK = 1264;
1383 static const CursorID SPR_CURSOR_EW_TRACK = 1265;
1384 static const CursorID SPR_CURSOR_NWSE_TRACK = 1266;
1385
1386 static const CursorID SPR_CURSOR_NS_MONO = 1267;
1387 static const CursorID SPR_CURSOR_SWNE_MONO = 1268;
1388 static const CursorID SPR_CURSOR_EW_MONO = 1269;
1389 static const CursorID SPR_CURSOR_NWSE_MONO = 1270;
1390
1391 static const CursorID SPR_CURSOR_NS_MAGLEV = 1271;
1392 static const CursorID SPR_CURSOR_SWNE_MAGLEV = 1272;
1393 static const CursorID SPR_CURSOR_EW_MAGLEV = 1273;
1394 static const CursorID SPR_CURSOR_NWSE_MAGLEV = 1274;
1395
1396 static const CursorID SPR_CURSOR_NS_ELRAIL = SPR_ELRAIL_BASE + 40;
1397 static const CursorID SPR_CURSOR_SWNE_ELRAIL = SPR_ELRAIL_BASE + 41;
1398 static const CursorID SPR_CURSOR_EW_ELRAIL = SPR_ELRAIL_BASE + 42;
1399 static const CursorID SPR_CURSOR_NWSE_ELRAIL = SPR_ELRAIL_BASE + 43;
1400
1401 static const CursorID SPR_CURSOR_RAIL_STATION = 1300;
1402
1403 static const CursorID SPR_CURSOR_TUNNEL_RAIL = 2434;
1404 static const CursorID SPR_CURSOR_TUNNEL_ELRAIL = SPR_ELRAIL_BASE + 45;
1405 static const CursorID SPR_CURSOR_TUNNEL_MONO = 2435;
1406 static const CursorID SPR_CURSOR_TUNNEL_MAGLEV = 2436;
1407
1408 static const CursorID SPR_CURSOR_AUTORAIL = SPR_OPENTTD_BASE + 54;
1409 static const CursorID SPR_CURSOR_AUTOELRAIL = SPR_OPENTTD_BASE + 58;
1410 static const CursorID SPR_CURSOR_AUTOMONO = SPR_OPENTTD_BASE + 64;
1411 static const CursorID SPR_CURSOR_AUTOMAGLEV = SPR_OPENTTD_BASE + 70;
1412
1413 static const CursorID SPR_CURSOR_WAYPOINT = SPR_OPENTTD_BASE + 77;
1414
1415 static const CursorID SPR_CURSOR_RAIL_DEPOT = 1296;
1416 static const CursorID SPR_CURSOR_ELRAIL_DEPOT = SPR_OPENTTD_BASE + 62;
1417 static const CursorID SPR_CURSOR_MONO_DEPOT = SPR_OPENTTD_BASE + 68;
1418 static const CursorID SPR_CURSOR_MAGLEV_DEPOT = SPR_OPENTTD_BASE + 74;
1419
1420 static const CursorID SPR_CURSOR_CONVERT_RAIL = SPR_OPENTTD_BASE + 56;
1421 static const CursorID SPR_CURSOR_CONVERT_ELRAIL = SPR_OPENTTD_BASE + 60;
1422 static const CursorID SPR_CURSOR_CONVERT_MONO = SPR_OPENTTD_BASE + 66;
1423 static const CursorID SPR_CURSOR_CONVERT_MAGLEV = SPR_OPENTTD_BASE + 72;
1424
1425 /* road cursors */
1426 static const CursorID SPR_CURSOR_ROAD_NESW = 1311;
1427 static const CursorID SPR_CURSOR_ROAD_NWSE = 1312;
1428 static const CursorID SPR_CURSOR_AUTOROAD = SPR_OPENTTD_BASE + 83;
1429 static const CursorID SPR_CURSOR_TRAMWAY_NESW = SPR_TRAMWAY_BASE + 2;
1430 static const CursorID SPR_CURSOR_TRAMWAY_NWSE = SPR_TRAMWAY_BASE + 3;
1431 static const CursorID SPR_CURSOR_AUTOTRAM = SPR_OPENTTD_BASE + 85;
1432
1433 static const CursorID SPR_CURSOR_ROAD_DEPOT = 1297;
1434 static const CursorID SPR_CURSOR_BUS_STATION = 2725;
1435 static const CursorID SPR_CURSOR_TRUCK_STATION = 2726;
1436 static const CursorID SPR_CURSOR_ROAD_TUNNEL = 2433;
1437
1438 static const CursorID SPR_CURSOR_CLONE_TRAIN = SPR_OPENTTD_BASE + 110;
1439 static const CursorID SPR_CURSOR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 111;
1440 static const CursorID SPR_CURSOR_CLONE_SHIP = SPR_OPENTTD_BASE + 112;
1441 static const CursorID SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 113;
1442
1445 static const CursorID SPR_CURSOR_DEMOLISH_FIRST = 704;
1446 static const CursorID SPR_CURSOR_DEMOLISH_1 = 705;
1447 static const CursorID SPR_CURSOR_DEMOLISH_2 = 706;
1448 static const CursorID SPR_CURSOR_DEMOLISH_LAST = 707;
1449
1450 static const CursorID SPR_CURSOR_LOWERLAND_FIRST = 699;
1451 static const CursorID SPR_CURSOR_LOWERLAND_1 = 700;
1452 static const CursorID SPR_CURSOR_LOWERLAND_LAST = 701;
1453
1454 static const CursorID SPR_CURSOR_RAISELAND_FIRST = 696;
1455 static const CursorID SPR_CURSOR_RAISELAND_1 = 697;
1456 static const CursorID SPR_CURSOR_RAISELAND_LAST = 698;
1457
1458 static const CursorID SPR_CURSOR_PICKSTATION_FIRST = 716;
1459 static const CursorID SPR_CURSOR_PICKSTATION_1 = 717;
1460 static const CursorID SPR_CURSOR_PICKSTATION_LAST = 718;
1461
1462 static const CursorID SPR_CURSOR_BUILDSIGNALS_FIRST = 1292;
1463 static const CursorID SPR_CURSOR_BUILDSIGNALS_LAST = 1293;
1464
1466 static const CursorID ANIMCURSOR_FLAG = 1U << 31;
1467 static const CursorID ANIMCURSOR_DEMOLISH = ANIMCURSOR_FLAG | 0;
1468 static const CursorID ANIMCURSOR_LOWERLAND = ANIMCURSOR_FLAG | 1;
1469 static const CursorID ANIMCURSOR_RAISELAND = ANIMCURSOR_FLAG | 2;
1470 static const CursorID ANIMCURSOR_PICKSTATION = ANIMCURSOR_FLAG | 3;
1471 static const CursorID ANIMCURSOR_BUILDSIGNALS = ANIMCURSOR_FLAG | 4;
1472
1483 enum SpriteSetup {
1484 /* These bits are applied to sprite ID */
1485 TRANSPARENT_BIT = 31,
1486 RECOLOUR_BIT = 30,
1487 CUSTOM_BIT = 29,
1488 OPAQUE_BIT = 28,
1489
1490 /* This bit is applied to palette ID */
1491 PALETTE_TEXT_RECOLOUR = 31,
1492
1493 PALETTE_WIDTH = 24,
1494 SPRITE_WIDTH = 24,
1495 };
1496
1505 enum Modifiers {
1506 SPRITE_MODIFIER_CUSTOM_SPRITE = CUSTOM_BIT,
1507 SPRITE_MODIFIER_OPAQUE = OPAQUE_BIT,
1508 PALETTE_MODIFIER_TRANSPARENT = TRANSPARENT_BIT,
1509 PALETTE_MODIFIER_COLOUR = RECOLOUR_BIT,
1510 };
1511
1517 enum SpriteMasks {
1518 MAX_SPRITES = 1 << SPRITE_WIDTH,
1519 SPRITE_MASK = MAX_SPRITES - 1,
1520
1521 MAX_PALETTES = 1 << PALETTE_WIDTH,
1522 PALETTE_MASK = MAX_PALETTES - 1,
1523 };
1524
1525 assert_compile( (1 << TRANSPARENT_BIT & SPRITE_MASK) == 0 );
1526 assert_compile( (1 << RECOLOUR_BIT & SPRITE_MASK) == 0 );
1527 assert_compile( TRANSPARENT_BIT != RECOLOUR_BIT );
1528 assert_compile( (1 << TRANSPARENT_BIT & PALETTE_MASK) == 0);
1529 assert_compile( (1 << RECOLOUR_BIT & PALETTE_MASK) == 0 );
1530
1531
1532 static const PaletteID PAL_NONE = 0;
1533 static const PaletteID PALETTE_TILE_RED_PULSATING = 771;
1534 static const PaletteID PALETTE_SEL_TILE_RED = 772;
1535 static const PaletteID PALETTE_SEL_TILE_BLUE = 773;
1536
1537 /* Company re-colour sprites */
1538 static const PaletteID PALETTE_RECOLOUR_START = 775;
1539 static const PaletteID PALETTE_TO_DARK_BLUE = 775;
1540 static const PaletteID PALETTE_TO_PALE_GREEN = 776;
1541 static const PaletteID PALETTE_TO_PINK = 777;
1542 static const PaletteID PALETTE_TO_YELLOW = 778;
1543 static const PaletteID PALETTE_TO_RED = 779;
1544 static const PaletteID PALETTE_TO_LIGHT_BLUE = 780;
1545 static const PaletteID PALETTE_TO_GREEN = 781;
1546 static const PaletteID PALETTE_TO_DARK_GREEN = 782;
1547 static const PaletteID PALETTE_TO_BLUE = 783;
1548 static const PaletteID PALETTE_TO_CREAM = 784;
1549 /* maybe don't use as company colour because it doesn't display in the graphs? */
1550 static const PaletteID PALETTE_TO_MAUVE = 785;
1551 static const PaletteID PALETTE_TO_PURPLE = 786;
1552 static const PaletteID PALETTE_TO_ORANGE = 787;
1553 static const PaletteID PALETTE_TO_BROWN = 788;
1554 static const PaletteID PALETTE_TO_GREY = 789;
1555 static const PaletteID PALETTE_TO_WHITE = 790;
1556
1557 static const PaletteID PALETTE_TO_BARE_LAND = 791;
1558 /* recolour sprites 792-794 are not used */
1559 static const PaletteID PALETTE_TO_STRUCT_BLUE = 795;
1560 static const PaletteID PALETTE_TO_STRUCT_BROWN = 796;
1561 static const PaletteID PALETTE_TO_STRUCT_WHITE = 797;
1562 static const PaletteID PALETTE_TO_STRUCT_RED = 798;
1563 static const PaletteID PALETTE_TO_STRUCT_GREEN = 799;
1564 static const PaletteID PALETTE_TO_STRUCT_CONCRETE = 800;
1565 static const PaletteID PALETTE_TO_STRUCT_YELLOW = 801;
1566 static const PaletteID PALETTE_TO_TRANSPARENT = 802;
1567
1568 static const PaletteID PALETTE_NEWSPAPER = 803;
1569 static const PaletteID PALETTE_CRASH = 804;
1570
1571 /* Two recolourings only used by the church */
1572 static const PaletteID PALETTE_CHURCH_RED = 1438;
1573 static const PaletteID PALETTE_CHURCH_CREAM = 1439;
1574
1575 static const PaletteID PALETTE_ALL_BLACK = SPR_PALETTE_BASE;
1576
1577 #endif /* SPRITES_H */