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