OpenTTD Source 20250312-master-gcdcc6b491d
railtypes.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
13#ifndef RAILTYPES_H
14#define RAILTYPES_H
15
21 { // Main Sprites
22 { SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_Y,
23 SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST,
24 SPR_TRACKS_FOR_SLOPES_RAIL_BASE,
25 SPR_CROSSING_OFF_X_RAIL,
26 SPR_TUNNEL_ENTRY_REAR_RAIL
27 },
28
29 /* GUI sprites */
30 { 0x4E3, 0x4E4, 0x4E5, 0x4E6,
31 SPR_IMG_AUTORAIL,
32 SPR_IMG_DEPOT_RAIL,
33 SPR_IMG_TUNNEL_RAIL,
34 SPR_IMG_CONVERT_RAIL,
35 {}
36 },
37
38 {
39 SPR_CURSOR_NS_TRACK,
40 SPR_CURSOR_SWNE_TRACK,
41 SPR_CURSOR_EW_TRACK,
42 SPR_CURSOR_NWSE_TRACK,
43 SPR_CURSOR_AUTORAIL,
44 SPR_CURSOR_RAIL_DEPOT,
45 SPR_CURSOR_TUNNEL_RAIL,
46 SPR_CURSOR_CONVERT_RAIL
47 },
48
49 /* strings */
50 {
51 STR_RAIL_NAME_RAILROAD,
52 STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION,
53 STR_RAIL_MENU_RAILROAD_CONSTRUCTION,
54 STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION,
55 STR_REPLACE_RAIL_VEHICLES,
56 STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE,
57 },
58
59 /* Offset of snow tiles */
60 SPR_RAIL_SNOW_OFFSET,
61
62 /* Powered railtypes */
64
65 /* Compatible railtypes */
67
68 /* bridge offset */
69 0,
70
71 /* fallback_railtype */
72 0,
73
74 /* curve speed advantage (multiplier) */
75 0,
76
77 /* flags */
78 {},
79
80 /* cost multiplier */
81 8,
82
83 /* maintenance cost multiplier */
84 8,
85
86 /* acceleration type */
87 0,
88
89 /* max speed */
90 0,
91
92 /* rail type label */
93 RAILTYPE_LABEL_RAIL,
94
95 /* alternate labels */
97
98 /* map colour */
99 0x0A,
100
101 /* introduction date */
103
104 /* railtypes required for this to be introduced */
106
107 /* introduction rail types */
109
110 /* sort order */
111 0 << 4 | 7,
112
113 { nullptr },
114 { nullptr },
115 {},
116 },
117
119 { // Main Sprites
120 { SPR_RAIL_TRACK_Y, SPR_RAIL_TRACK_N_S, SPR_RAIL_TRACK_BASE, SPR_RAIL_SINGLE_X, SPR_RAIL_SINGLE_Y,
121 SPR_RAIL_SINGLE_NORTH, SPR_RAIL_SINGLE_SOUTH, SPR_RAIL_SINGLE_EAST, SPR_RAIL_SINGLE_WEST,
122 SPR_TRACKS_FOR_SLOPES_RAIL_BASE,
123 SPR_CROSSING_OFF_X_RAIL,
124 SPR_TUNNEL_ENTRY_REAR_RAIL
125 },
126
127 /* GUI sprites */
128 {
129 SPR_BUILD_NS_ELRAIL,
130 SPR_BUILD_X_ELRAIL,
131 SPR_BUILD_EW_ELRAIL,
132 SPR_BUILD_Y_ELRAIL,
133 SPR_IMG_AUTOELRAIL,
134 SPR_IMG_DEPOT_ELRAIL,
135 SPR_BUILD_TUNNEL_ELRAIL,
136 SPR_IMG_CONVERT_ELRAIL,
137 {}
138 },
139
140 {
141 SPR_CURSOR_NS_ELRAIL,
142 SPR_CURSOR_SWNE_ELRAIL,
143 SPR_CURSOR_EW_ELRAIL,
144 SPR_CURSOR_NWSE_ELRAIL,
145 SPR_CURSOR_AUTOELRAIL,
146 SPR_CURSOR_ELRAIL_DEPOT,
147 SPR_CURSOR_TUNNEL_ELRAIL,
148 SPR_CURSOR_CONVERT_ELRAIL
149 },
150
151 /* strings */
152 {
153 STR_RAIL_NAME_ELRAIL,
154 STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION,
155 STR_RAIL_MENU_ELRAIL_CONSTRUCTION,
156 STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION,
157 STR_REPLACE_ELRAIL_VEHICLES,
158 STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE,
159 },
160
161 /* Offset of snow tiles */
162 SPR_RAIL_SNOW_OFFSET,
163
164 /* Powered railtypes */
166
167 /* Compatible railtypes */
169
170 /* bridge offset */
171 0,
172
173 /* fallback_railtype */
174 0,
175
176 /* curve speed advantage (multiplier) */
177 0,
178
179 /* flags */
181
182 /* cost multiplier */
183 12,
184
185 /* maintenance cost multiplier */
186 12,
187
188 /* acceleration type */
189 0,
190
191 /* max speed */
192 0,
193
194 /* rail type label */
195 RAILTYPE_LABEL_ELECTRIC,
196
197 /* alternate labels */
199
200 /* map colour */
201 0x0A,
202
203 /* introduction date */
205
206 /* railtypes required for this to be introduced */
208
209 /* introduction rail types */
211
212 /* sort order */
213 1 << 4 | 7,
214
215 { nullptr },
216 { nullptr },
217 {},
218 },
219
221 { // Main Sprites
222 { SPR_MONO_TRACK_Y, SPR_MONO_TRACK_N_S, SPR_MONO_TRACK_BASE, SPR_MONO_SINGLE_X, SPR_MONO_SINGLE_Y,
223 SPR_MONO_SINGLE_NORTH, SPR_MONO_SINGLE_SOUTH, SPR_MONO_SINGLE_EAST, SPR_MONO_SINGLE_WEST,
224 SPR_TRACKS_FOR_SLOPES_MONO_BASE,
225 SPR_CROSSING_OFF_X_MONO,
226 SPR_TUNNEL_ENTRY_REAR_MONO
227 },
228
229 /* GUI sprites */
230 { 0x4E7, 0x4E8, 0x4E9, 0x4EA,
231 SPR_IMG_AUTOMONO,
232 SPR_IMG_DEPOT_MONO,
233 SPR_IMG_TUNNEL_MONO,
234 SPR_IMG_CONVERT_MONO,
235 {}
236 },
237
238 {
239 SPR_CURSOR_NS_MONO,
240 SPR_CURSOR_SWNE_MONO,
241 SPR_CURSOR_EW_MONO,
242 SPR_CURSOR_NWSE_MONO,
243 SPR_CURSOR_AUTOMONO,
244 SPR_CURSOR_MONO_DEPOT,
245 SPR_CURSOR_TUNNEL_MONO,
246 SPR_CURSOR_CONVERT_MONO
247 },
248
249 /* strings */
250 {
251 STR_RAIL_NAME_MONORAIL,
252 STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION,
253 STR_RAIL_MENU_MONORAIL_CONSTRUCTION,
254 STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION,
255 STR_REPLACE_MONORAIL_VEHICLES,
256 STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE,
257 },
258
259 /* Offset of snow tiles */
260 SPR_MONO_SNOW_OFFSET,
261
262 /* Powered railtypes */
264
265 /* Compatible Railtypes */
267
268 /* bridge offset */
269 16,
270
271 /* fallback_railtype */
272 1,
273
274 /* curve speed advantage (multiplier) */
275 1,
276
277 /* flags */
278 {},
279
280 /* cost multiplier */
281 16,
282
283 /* maintenance cost multiplier */
284 16,
285
286 /* acceleration type */
287 1,
288
289 /* max speed */
290 0,
291
292 /* rail type label */
293 RAILTYPE_LABEL_MONO,
294
295 /* alternate labels */
297
298 /* map colour */
299 0x0A,
300
301 /* introduction date */
303
304 /* railtypes required for this to be introduced */
306
307 /* introduction rail types */
309
310 /* sort order */
311 2 << 4 | 7,
312
313 { nullptr },
314 { nullptr },
315 {},
316 },
317
319 { // Main sprites
320 { SPR_MGLV_TRACK_Y, SPR_MGLV_TRACK_N_S, SPR_MGLV_TRACK_BASE, SPR_MGLV_SINGLE_X, SPR_MGLV_SINGLE_Y,
321 SPR_MGLV_SINGLE_NORTH, SPR_MGLV_SINGLE_SOUTH, SPR_MGLV_SINGLE_EAST, SPR_MGLV_SINGLE_WEST,
322 SPR_TRACKS_FOR_SLOPES_MAGLEV_BASE,
323 SPR_CROSSING_OFF_X_MAGLEV,
324 SPR_TUNNEL_ENTRY_REAR_MAGLEV
325 },
326
327 /* GUI sprites */
328 { 0x4EB, 0x4EC, 0x4EE, 0x4ED,
329 SPR_IMG_AUTOMAGLEV,
330 SPR_IMG_DEPOT_MAGLEV,
331 SPR_IMG_TUNNEL_MAGLEV,
332 SPR_IMG_CONVERT_MAGLEV,
333 {}
334 },
335
336 {
337 SPR_CURSOR_NS_MAGLEV,
338 SPR_CURSOR_SWNE_MAGLEV,
339 SPR_CURSOR_EW_MAGLEV,
340 SPR_CURSOR_NWSE_MAGLEV,
341 SPR_CURSOR_AUTOMAGLEV,
342 SPR_CURSOR_MAGLEV_DEPOT,
343 SPR_CURSOR_TUNNEL_MAGLEV,
344 SPR_CURSOR_CONVERT_MAGLEV
345 },
346
347 /* strings */
348 {
349 STR_RAIL_NAME_MAGLEV,
350 STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION,
351 STR_RAIL_MENU_MAGLEV_CONSTRUCTION,
352 STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION,
353 STR_REPLACE_MAGLEV_VEHICLES,
354 STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE,
355 },
356
357 /* Offset of snow tiles */
358 SPR_MGLV_SNOW_OFFSET,
359
360 /* Powered railtypes */
362
363 /* Compatible Railtypes */
365
366 /* bridge offset */
367 24,
368
369 /* fallback_railtype */
370 2,
371
372 /* curve speed advantage (multiplier) */
373 2,
374
375 /* flags */
376 {},
377
378 /* cost multiplier */
379 24,
380
381 /* maintenance cost multiplier */
382 24,
383
384 /* acceleration type */
385 2,
386
387 /* max speed */
388 0,
389
390 /* rail type label */
391 RAILTYPE_LABEL_MAGLEV,
392
393 /* alternate labels */
395
396 /* map colour */
397 0x0A,
398
399 /* introduction date */
401
402 /* railtypes required for this to be introduced */
404
405 /* introduction rail types */
407
408 /* sort order */
409 3 << 4 | 7,
410
411 { nullptr },
412 { nullptr },
413 {},
414 },
415};
416
417#endif /* RAILTYPES_H */
This struct contains all the info that is needed to draw and construct tracks.
Definition rail.h:118
static constexpr TimerGame< struct Calendar >::Date INVALID_DATE
Representation of an invalid date.
std::vector< RailTypeLabel > RailTypeLabelList
List of rail type labels.
Definition rail.h:113
@ Catenary
Bit number for drawing a catenary.
@ RAILTYPES_ELECTRIC
Electrified rails.
Definition rail_type.h:47
@ RAILTYPES_MAGLEV
Ever fast maglev.
Definition rail_type.h:49
@ RAILTYPES_RAIL
Non-electrified rails.
Definition rail_type.h:46
@ RAILTYPES_NONE
No rail types.
Definition rail_type.h:45
@ RAILTYPES_MONO
Monorail!
Definition rail_type.h:48
static const RailTypeInfo _original_railtypes[]
Global Railtype definition.
Definition railtypes.h:19