27#define MT(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, TimerGameCalendar::Year{c}, TimerGameCalendar::Year{d}, b, 5, f, INVALID_CARGO, e, 0, 8, EngineMiscFlags{}, VehicleCallbackMasks{}, 0, {}, STR_EMPTY, Ticks::CARGO_AGING_TICKS, EngineID::Invalid() }
40#define MM(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, TimerGameCalendar::Year{c}, TimerGameCalendar::Year{d}, b, 5, f, INVALID_CARGO, e, 0, 8, EngineMiscFlags{EngineMiscFlag::RailIsMU}, VehicleCallbackMasks{}, 0, {}, STR_EMPTY, Ticks::CARGO_AGING_TICKS, EngineID::Invalid() }
53#define MW(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, TimerGameCalendar::Year{c}, TimerGameCalendar::Year{d}, b, 5, f, INVALID_CARGO, e, 0, 8, EngineMiscFlags{}, VehicleCallbackMasks{}, 0, {}, STR_EMPTY, Ticks::CARGO_AGING_TICKS, EngineID::Invalid() }
66#define MR(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, TimerGameCalendar::Year{c}, TimerGameCalendar::Year{d}, b, 5, f, INVALID_CARGO, e, 0, 8, EngineMiscFlags{}, VehicleCallbackMasks{}, 0, {}, STR_EMPTY, Ticks::CARGO_AGING_TICKS, EngineID::Invalid() }
78#define MS(a, b, c, d, e, f) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, TimerGameCalendar::Year{c}, TimerGameCalendar::Year{d}, b, 10, f, INVALID_CARGO, e, 0, 8, EngineMiscFlags{}, VehicleCallbackMasks{}, 0, {}, STR_EMPTY, Ticks::CARGO_AGING_TICKS, EngineID::Invalid() }
89#define MA(a, b, c, d, e) { CalendarTime::DAYS_TILL_ORIGINAL_BASE_YEAR + a, TimerGameCalendar::Year{c}, TimerGameCalendar::Year{d}, b, 20, e, INVALID_CARGO, CT_INVALID, 0, 8, EngineMiscFlags{}, VehicleCallbackMasks{}, 0, {}, STR_EMPTY, Ticks::CARGO_AGING_TICKS, EngineID::Invalid() }
96#define T LandscapeType::Temperate
97#define A LandscapeType::Arctic
98#define S LandscapeType::Tropic
99#define Y LandscapeType::Toyland
100static constexpr EngineInfo _orig_engine_info[] = {
389#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, j, j, 0, d, e, f, g, h, k, i, 0, 0, VE_DEFAULT, 0, 76, 0, 0, 0 }
390#define M RAILVEH_MULTIHEAD
391#define W RAILVEH_WAGON
392#define G RAILVEH_SINGLEHEAD
401#define R RAILTYPE_RAIL
402#define C RAILTYPE_ELECTRIC
403#define O RAILTYPE_MONO
404#define L RAILTYPE_MAGLEV
406#define RC_S PR_RUNNING_TRAIN_STEAM
407#define RC_D PR_RUNNING_TRAIN_DIESEL
408#define RC_E PR_RUNNING_TRAIN_ELECTRIC
409#define RC_W INVALID_PRICE
418 RVI( 2, G, 7, 64, 300, 47, 50, RC_S, 0, R, S),
419 RVI(19, G, 8, 80, 600, 65, 65, RC_D, 0, R, D),
420 RVI( 2, G, 10, 72, 400, 85, 90, RC_S, 0, R, S),
421 RVI( 0, G, 15, 96, 900, 130, 130, RC_S, 0, R, S),
422 RVI( 1, G, 19, 112, 1000, 140, 145, RC_S, 0, R, S),
423 RVI(12, G, 16, 120, 1400, 95, 125, RC_D, 0, R, D),
424 RVI(14, G, 20, 152, 2000, 120, 135, RC_D, 0, R, D),
425 RVI( 3, G, 14, 88, 1100, 145, 130, RC_S, 0, R, S),
426 RVI( 0, G, 13, 112, 1000, 131, 120, RC_S, 0, R, S),
427 RVI( 1, G, 19, 128, 1200, 162, 140, RC_S, 0, R, S),
428 RVI( 0, G, 22, 144, 1600, 170, 130, RC_S, 0, R, S),
429 RVI( 8,
M, 11, 112, 600, 32, 85, RC_D, 38, R, D),
430 RVI(10,
M, 14, 120, 700, 38, 70, RC_D, 40, R, D),
431 RVI( 4, G, 15, 128, 1250, 72, 95, RC_D, 0, R, D),
432 RVI( 5, G, 17, 144, 1750, 101, 120, RC_D, 0, R, D),
433 RVI( 4, G, 18, 160, 2580, 112, 140, RC_D, 0, R, D),
434 RVI(14, G, 23, 96, 4000, 150, 135, RC_D, 0, R, D),
435 RVI(12, G, 16, 112, 2400, 120, 105, RC_D, 0, R, D),
436 RVI(13, G, 30, 112, 6600, 207, 155, RC_D, 0, R, D),
437 RVI(15, G, 18, 104, 1500, 110, 105, RC_D, 0, R, D),
438 RVI(16,
M, 35, 160, 3500, 95, 205, RC_D, 0, R, D),
439 RVI(18, G, 21, 104, 2200, 120, 145, RC_D, 0, R, D),
440 RVI( 6,
M, 20, 200, 4500, 70, 190, RC_D, 4, R, D),
441 RVI(20, G, 26, 160, 3600, 84, 180, RC_E, 0, C, E),
442 RVI(20, G, 30, 176, 5000, 82, 205, RC_E, 0, C, E),
443 RVI(21,
M, 40, 240, 7000, 90, 240, RC_E, 0, C, E),
444 RVI(23,
M, 43, 264, 8000, 95, 250, RC_E, 0, C, E),
445 RVI(33, W, 247, 0, 0, 25, 0, RC_W, 40, R, A),
446 RVI(35, W, 228, 0, 0, 21, 0, RC_W, 30, R, A),
447 RVI(34, W, 176, 0, 0, 18, 0, RC_W, 30, R, A),
448 RVI(36, W, 200, 0, 0, 24, 0, RC_W, 30, R, A),
449 RVI(37, W, 192, 0, 0, 20, 0, RC_W, 25, R, A),
450 RVI(38, W, 190, 0, 0, 21, 0, RC_W, 25, R, A),
451 RVI(39, W, 182, 0, 0, 19, 0, RC_W, 30, R, A),
452 RVI(40, W, 181, 0, 0, 16, 0, RC_W, 30, R, A),
453 RVI(41, W, 179, 0, 0, 19, 0, RC_W, 30, R, A),
454 RVI(42, W, 196, 0, 0, 18, 0, RC_W, 20, R, A),
455 RVI(43, W, 255, 0, 0, 30, 0, RC_W, 20, R, A),
456 RVI(44, W, 191, 0, 0, 22, 0, RC_W, 25, R, A),
457 RVI(45, W, 196, 0, 0, 18, 0, RC_W, 20, R, A),
458 RVI(46, W, 179, 0, 0, 19, 0, RC_W, 30, R, A),
459 RVI(47, W, 199, 0, 0, 25, 0, RC_W, 25, R, A),
460 RVI(48, W, 182, 0, 0, 18, 0, RC_W, 25, R, A),
461 RVI(49, W, 185, 0, 0, 19, 0, RC_W, 21, R, A),
462 RVI(50, W, 176, 0, 0, 19, 0, RC_W, 30, R, A),
463 RVI(51, W, 178, 0, 0, 20, 0, RC_W, 30, R, A),
464 RVI(52, W, 192, 0, 0, 20, 0, RC_W, 30, R, A),
465 RVI(53, W, 190, 0, 0, 21, 0, RC_W, 20, R, A),
466 RVI(54, W, 182, 0, 0, 24, 0, RC_W, 25, R, A),
467 RVI(55, W, 181, 0, 0, 21, 0, RC_W, 25, R, A),
468 RVI(56, W, 183, 0, 0, 21, 0, RC_W, 20, R, A),
469 RVI(57, W, 196, 0, 0, 18, 0, RC_W, 22, R, A),
470 RVI(58, W, 193, 0, 0, 18, 0, RC_W, 25, R, A),
471 RVI(59, W, 191, 0, 0, 18, 0, RC_W, 30, R, A),
473 RVI(25, G, 52, 304, 9000, 95, 230, RC_E, 0, O, N),
474 RVI(26,
M, 60, 336, 10000, 85, 240, RC_E, 25, O, N),
475 RVI(26, G, 53, 320, 5000, 95, 230, RC_E, 0, O, N),
476 RVI(60, W, 247, 0, 0, 25, 0, RC_W, 45, O, A),
477 RVI(62, W, 228, 0, 0, 21, 0, RC_W, 35, O, A),
478 RVI(61, W, 176, 0, 0, 18, 0, RC_W, 35, O, A),
479 RVI(63, W, 200, 0, 0, 24, 0, RC_W, 35, O, A),
480 RVI(64, W, 192, 0, 0, 20, 0, RC_W, 30, O, A),
481 RVI(65, W, 190, 0, 0, 21, 0, RC_W, 30, O, A),
482 RVI(66, W, 182, 0, 0, 19, 0, RC_W, 35, O, A),
483 RVI(67, W, 181, 0, 0, 16, 0, RC_W, 35, O, A),
484 RVI(68, W, 179, 0, 0, 19, 0, RC_W, 35, O, A),
485 RVI(69, W, 196, 0, 0, 18, 0, RC_W, 25, O, A),
486 RVI(70, W, 255, 0, 0, 30, 0, RC_W, 25, O, A),
487 RVI(71, W, 191, 0, 0, 22, 0, RC_W, 30, O, A),
488 RVI(72, W, 196, 0, 0, 18, 0, RC_W, 25, O, A),
489 RVI(73, W, 179, 0, 0, 19, 0, RC_W, 35, O, A),
490 RVI(47, W, 199, 0, 0, 25, 0, RC_W, 30, O, A),
491 RVI(48, W, 182, 0, 0, 18, 0, RC_W, 30, O, A),
492 RVI(49, W, 185, 0, 0, 19, 0, RC_W, 26, O, A),
493 RVI(50, W, 176, 0, 0, 19, 0, RC_W, 35, O, A),
494 RVI(51, W, 178, 0, 0, 20, 0, RC_W, 35, O, A),
495 RVI(52, W, 192, 0, 0, 20, 0, RC_W, 35, O, A),
496 RVI(53, W, 190, 0, 0, 21, 0, RC_W, 25, O, A),
497 RVI(54, W, 182, 0, 0, 24, 0, RC_W, 30, O, A),
498 RVI(55, W, 181, 0, 0, 21, 0, RC_W, 30, O, A),
499 RVI(56, W, 183, 0, 0, 21, 0, RC_W, 25, O, A),
500 RVI(57, W, 196, 0, 0, 18, 0, RC_W, 27, O, A),
501 RVI(58, W, 193, 0, 0, 18, 0, RC_W, 30, O, A),
502 RVI(59, W, 191, 0, 0, 18, 0, RC_W, 35, O, A),
504 RVI(28, G, 70, 400, 10000, 105, 250, RC_E, 0, L, V),
505 RVI(29, G, 74, 448, 12000, 120, 253, RC_E, 0, L, V),
506 RVI(30, G, 82, 480, 15000, 130, 254, RC_E, 0, L, V),
507 RVI(31,
M, 95, 640, 20000, 150, 255, RC_E, 0, L, V),
508 RVI(28, G, 70, 480, 10000, 120, 250, RC_E, 0, L, V),
509 RVI(60, W, 247, 0, 0, 25, 0, RC_W, 47, L, A),
510 RVI(62, W, 228, 0, 0, 21, 0, RC_W, 37, L, A),
511 RVI(61, W, 176, 0, 0, 18, 0, RC_W, 37, L, A),
512 RVI(63, W, 200, 0, 0, 24, 0, RC_W, 37, L, A),
513 RVI(64, W, 192, 0, 0, 20, 0, RC_W, 32, L, A),
514 RVI(65, W, 190, 0, 0, 21, 0, RC_W, 32, L, A),
515 RVI(66, W, 182, 0, 0, 19, 0, RC_W, 37, L, A),
516 RVI(67, W, 181, 0, 0, 16, 0, RC_W, 37, L, A),
517 RVI(68, W, 179, 0, 0, 19, 0, RC_W, 37, L, A),
518 RVI(69, W, 196, 0, 0, 18, 0, RC_W, 27, L, A),
519 RVI(70, W, 255, 0, 0, 30, 0, RC_W, 27, L, A),
520 RVI(71, W, 191, 0, 0, 22, 0, RC_W, 32, L, A),
521 RVI(72, W, 196, 0, 0, 18, 0, RC_W, 27, L, A),
522 RVI(73, W, 179, 0, 0, 19, 0, RC_W, 37, L, A),
523 RVI(47, W, 199, 0, 0, 25, 0, RC_W, 32, L, A),
524 RVI(48, W, 182, 0, 0, 18, 0, RC_W, 32, L, A),
525 RVI(49, W, 185, 0, 0, 19, 0, RC_W, 28, L, A),
526 RVI(50, W, 176, 0, 0, 19, 0, RC_W, 37, L, A),
527 RVI(51, W, 178, 0, 0, 20, 0, RC_W, 37, L, A),
528 RVI(52, W, 192, 0, 0, 20, 0, RC_W, 37, L, A),
529 RVI(53, W, 190, 0, 0, 21, 0, RC_W, 27, L, A),
530 RVI(54, W, 182, 0, 0, 24, 0, RC_W, 32, L, A),
531 RVI(55, W, 181, 0, 0, 21, 0, RC_W, 32, L, A),
532 RVI(56, W, 183, 0, 0, 21, 0, RC_W, 27, L, A),
533 RVI(57, W, 196, 0, 0, 18, 0, RC_W, 29, L, A),
534 RVI(58, W, 193, 0, 0, 18, 0, RC_W, 32, L, A),
535 RVI(59, W, 191, 0, 0, 18, 0, RC_W, 37, L, A),
567#define SVI(a, b, c, d, e, f, g, h) { a, b, f, c, d, e, g, h, VE_DEFAULT, 0, 0 }
600#define AVI(a, b, c, d, e, f, g, h, i) { a, b, c, d, e, (g * 128) / 10, f, h, i, 0 }
603#define J AIR_CTOL | AIR_FAST
671#define ROV(a, b, c, d, e, f, g, h) { a, b, c, PR_RUNNING_ROADVEH, d, e, f, g, h, 76, 0, VE_DEFAULT, 0, ROADTYPE_ROAD }
static constexpr CargoLabel CT_NONE
Dummy label for engines that carry no cargo; they actually carry 0 passengers.
@ MCT_GRAIN_WHEAT_MAIZE
Cargo can be grain, wheat or maize.
@ MCT_VALUABLES_GOLD_DIAMONDS
Cargo can be valuables, gold or diamonds.
static constexpr CargoLabel CT_PASSENGERS
Available types of cargo Labels may be re-used between different climates.
#define MA(a, b, c, d, e)
Writes the properties of an aeroplane into the EngineInfo struct.
#define MT(a, b, c, d, e, f)
Writes the properties of a train into the EngineInfo struct.
#define AVI(a, b, c, d, e, f, g, h, i)
Writes the properties of an aircraft into the AircraftVehicleInfo struct.
#define MS(a, b, c, d, e, f)
Writes the properties of a ship into the EngineInfo struct.
#define MR(a, b, c, d, e, f)
Writes the properties of a road vehicle into the EngineInfo struct.
#define SVI(a, b, c, d, e, f, g, h)
Writes the properties of a ship into the ShipVehicleInfo struct.
#define ROV(a, b, c, d, e, f, g, h)
Writes the properties of a road vehicle into the RoadVehicleInfo struct.
#define MM(a, b, c, d, e, f)
Writes the properties of a multiple-unit train into the EngineInfo struct.
#define RVI(a, b, c, d, e, f, g, h, i, j, k)
Writes the properties of a rail vehicle into the RailVehicleInfo struct.
#define MW(a, b, c, d, e, f)
Writes the properties of a train carriage into the EngineInfo struct.
#define M(x)
Helper for creating a bitset of slopes.
@ SND_1B_DEPARTURE_MODERN_BUS
25 == 0x19 Station departure: modern bus (non-toyland)
@ SND_08_TAKEOFF_PROPELLER
6 == 0x06 Takeoff: propeller plane (non-toyland)
@ SND_19_DEPARTURE_OLD_RV_1
23 == 0x17 Station departure: truck and old bus (1) (non-toyland)
@ SND_3F_DEPARTURE_TRUCK_TOYLAND_1
63 == 0x3F Station departure: truck (1) (toyland)
@ SND_40_DEPARTURE_TRUCK_TOYLAND_2
64 == 0x40 Station departure: truck (2) (toyland)
@ SND_1C_DEPARTURE_OLD_BUS
26 == 0x1A Station departure: old bus (non-toyland)
@ SND_3E_DEPARTURE_BUS_TOYLAND_2
62 == 0x3E Station departure: bus (2) (toyland)
@ SND_07_DEPARTURE_FERRY
5 == 0x05 Station departure: passenger ships
@ SND_45_TAKEOFF_PROPELLER_TOYLAND_1
69 == 0x45 Takeoff: propeller plane (1) (toyland)
@ SND_3B_TAKEOFF_JET_FAST
59 == 0x3B Takeoff: supersonic plane (fast)
@ SND_06_DEPARTURE_CARGO_SHIP
4 == 0x04 Station departure: cargo ships
@ SND_3C_DEPARTURE_BUS_TOYLAND_1
60 == 0x3C Station departure: bus (1) (toyland)
@ SND_46_TAKEOFF_PROPELLER_TOYLAND_2
70 == 0x46 Takeoff: propeller plane (2) (toyland)
@ SND_09_TAKEOFF_JET
7 == 0x07 Takeoff: regular jet plane
@ SND_3D_TAKEOFF_JET_BIG
61 == 0x3D Takeoff: huge jet plane (high capacity)
Information about a aircraft vehicle.
Information about a vehicle.
Information about a rail vehicle.
Information about a road vehicle.
Information about a ship vehicle.