77 enum { |
77 enum { |
78 RVI_MULTIHEAD = 1, |
78 RVI_MULTIHEAD = 1, |
79 RVI_WAGON = 2, |
79 RVI_WAGON = 2, |
80 }; |
80 }; |
81 |
81 |
|
82 enum { |
|
83 NUM_VEHICLE_TYPES = 6 |
|
84 }; |
82 |
85 |
83 void AddTypeToEngines(void); |
86 void AddTypeToEngines(void); |
84 void StartupEngines(void); |
87 void StartupEngines(void); |
85 |
88 |
86 |
89 enum GlobalCargo { |
87 extern byte _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO]; |
90 GC_PASSENGERS = 0, |
88 enum { |
91 GC_COAL = 1, |
89 CID_DEFAULT = 29, |
92 GC_MAIL = 2, |
90 CID_PURCHASE = 30, |
93 GC_OIL = 3, |
91 NUM_CID = 31, |
94 GC_LIVESTOCK = 4, |
92 }; |
95 GC_GOODS = 5, |
93 extern byte _local_cargo_id_ctype[NUM_CID]; |
96 GC_GRAIN = 6, // GC_WHEAT / GC_MAIZE |
94 extern byte _local_cargo_id_landscape[NUM_CID]; |
97 GC_WOOD = 7, |
95 |
98 GC_IRON_ORE = 8, |
96 extern uint32 _engine_refit_masks[256]; |
99 GC_STEEL = 9, |
97 |
100 GC_VALUABLES = 10, // GC_GOLD / GC_DIAMONDS |
98 extern byte _engine_original_sprites[256]; |
101 GC_PAPER = 11, |
|
102 GC_FOOD = 12, |
|
103 GC_FRUIT = 13, |
|
104 GC_COPPER_ORE = 14, |
|
105 GC_WATER = 15, |
|
106 GC_RUBBER = 16, |
|
107 GC_SUGAR = 17, |
|
108 GC_TOYS = 18, |
|
109 GC_BATTERIES = 19, |
|
110 GC_CANDY = 20, |
|
111 GC_TOFFEE = 21, |
|
112 GC_COLA = 22, |
|
113 GC_COTTON_CANDY = 23, |
|
114 GC_BUBBLES = 24, |
|
115 GC_PLASTIC = 25, |
|
116 GC_FIZZY_DRINKS = 26, |
|
117 GC_PAPER_TEMP = 27, |
|
118 GC_UNDEFINED = 28, // undefined; unused slot in arctic climate |
|
119 GC_DEFAULT = 29, |
|
120 GC_PURCHASE = 30, |
|
121 GC_INVALID = 255, |
|
122 NUM_GLOBAL_CID = 31 |
|
123 }; |
|
124 |
|
125 VARDEF const uint32 _default_refitmasks[NUM_VEHICLE_TYPES]; |
|
126 VARDEF const CargoID _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO]; |
|
127 VARDEF const uint32 _landscape_global_cargo_mask[NUM_LANDSCAPE]; |
|
128 VARDEF const CargoID _local_cargo_id_ctype[NUM_GLOBAL_CID]; |
|
129 |
|
130 VARDEF uint32 _engine_refit_masks[256]; |
|
131 VARDEF byte _engine_original_sprites[256]; |
99 void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains); |
132 void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains); |
100 void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group); |
133 void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group); |
101 // loaded is in percents, overriding_engine 0xffff is none |
134 // loaded is in percents, overriding_engine 0xffff is none |
102 int GetCustomEngineSprite(byte engine, const Vehicle *v, byte direction); |
135 int GetCustomEngineSprite(byte engine, const Vehicle *v, byte direction); |
103 #define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction) |
136 #define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction) |