1
0
Fork 0

(svn r611) -newgrf: Change GetCustomEngineSprite() calling convention (invisible to users of GetCustomVehicle*() wrappers). Needed for deterministic spritegroups support (pasky).

release/0.4.5
darkvater 2004-11-14 20:53:34 +00:00
parent ec434b208e
commit 051e094921
3 changed files with 80 additions and 73 deletions

View File

@ -243,14 +243,26 @@ void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group)
_engine_custom_sprites[engine][cargo] = *group;
}
int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo,
byte loaded, byte in_motion, byte direction)
int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction)
{
struct SpriteGroup *group = &_engine_custom_sprites[engine][cargo];
struct SpriteGroup *group;
struct RealSpriteGroup *rsg;
uint16 overriding_engine = -1;
byte cargo = CID_PURCHASE;
byte loaded = 0;
byte in_motion = 0;
int totalsets, spriteset;
int r;
if (v != NULL) {
overriding_engine = v->type == VEH_Train ? v->u.rail.first_engine : -1;
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
loaded = ((v->cargo_count + 1) * 100) / (v->cargo_cap + 1);
in_motion = !!v->cur_speed;
}
group = &_engine_custom_sprites[engine][cargo];
if (overriding_engine != 0xffff) {
struct SpriteGroup *overset;

View File

@ -97,14 +97,9 @@ extern byte _engine_original_sprites[256];
void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains);
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group);
// loaded is in percents, overriding_engine 0xffff is none
int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo, byte loaded, byte in_motion, byte direction);
#define GetCustomVehicleSprite(v, direction) \
GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \
_global_cargo_id[_opt.landscape][v->cargo_type], \
((v->cargo_count + 1) * 100) / (v->cargo_cap + 1), \
!!v->cur_speed, direction)
#define GetCustomVehicleIcon(v, direction) \
GetCustomEngineSprite(v, -1, CID_PURCHASE, 0, 0, direction)
int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction);
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction)
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
void SetCustomEngineName(int engine, char *name);
StringID GetCustomEngineName(int engine);