57 |
57 |
58 |
58 |
59 void StartupEngines(); |
59 void StartupEngines(); |
60 |
60 |
61 |
61 |
62 struct SpriteSuperSet { |
62 struct SpriteGroup { |
63 // XXX: Would anyone ever need more than 16 spritesets? Maybe we should |
63 // XXX: Would anyone ever need more than 16 spritesets? Maybe we should |
64 // use even less, now we take whole 8kb for custom sprites table, oh my! |
64 // use even less, now we take whole 8kb for custom sprites table, oh my! |
65 byte sprites_per_set; // means number of directions - 4 or 8 |
65 byte sprites_per_set; // means number of directions - 4 or 8 |
66 // Loaded = in motion, loading = not moving |
66 // Loaded = in motion, loading = not moving |
67 // Each superset contains several spritesets, for various loading stages |
67 // Each group contains several spritesets, for various loading stages |
68 byte loaded_count; |
68 byte loaded_count; |
69 uint16 loaded[16]; // sprite ids |
69 uint16 loaded[16]; // sprite ids |
70 byte loading_count; |
70 byte loading_count; |
71 uint16 loading[16]; // sprite ids |
71 uint16 loading[16]; // sprite ids |
72 }; |
72 }; |
81 extern byte _local_cargo_id_landscape[NUM_CID]; |
81 extern byte _local_cargo_id_landscape[NUM_CID]; |
82 |
82 |
83 extern uint32 _engine_refit_masks[256]; |
83 extern uint32 _engine_refit_masks[256]; |
84 |
84 |
85 extern byte _engine_original_sprites[256]; |
85 extern byte _engine_original_sprites[256]; |
86 void SetWagonOverrideSprites(byte engine, struct SpriteSuperSet *superset, byte *train_id, int trains); |
86 void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains); |
87 void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteSuperSet *superset); |
87 void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group); |
88 // loaded is in percents, overriding_engine 0xffff is none |
88 // loaded is in percents, overriding_engine 0xffff is none |
89 int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo, byte loaded, byte in_motion, byte direction); |
89 int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo, byte loaded, byte in_motion, byte direction); |
90 #define GetCustomVehicleSprite(v, direction) \ |
90 #define GetCustomVehicleSprite(v, direction) \ |
91 GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \ |
91 GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \ |
92 _global_cargo_id[_opt.landscape][v->cargo_type], \ |
92 _global_cargo_id[_opt.landscape][v->cargo_type], \ |