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