From 31c3240227b3d0159c49ca0a88bf20b30414e525 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Fri, 21 Apr 2006 17:02:51 +0000 Subject: [PATCH] (svn r4500) - NewGRF: When running a callback with no vehicle, use the purchase list 'cargo' type first, and then fallback to the default if needed. --- newgrf_engine.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/newgrf_engine.c b/newgrf_engine.c index f30c7ebbab..679a88cbd9 100644 --- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -481,11 +481,10 @@ bool UsesWagonOverride(const Vehicle* v) uint16 GetVehicleCallback(byte callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v) { const SpriteGroup *group; - CargoID cargo = GC_DEFAULT; + CargoID cargo; uint16 callback_info = callback | (param1 << 8); // XXX Temporary conversion between new and old format. - if (v != NULL) - cargo = _global_cargo_id[_opt.landscape][v->cargo_type]; + cargo = (v == NULL) ? GC_PURCHASE : _global_cargo_id[_opt.landscape][v->cargo_type]; group = engine_custom_sprites[engine][cargo]; @@ -497,7 +496,7 @@ uint16 GetVehicleCallback(byte callback, uint32 param1, uint32 param2, EngineID group = ResolveVehicleSpriteGroup(group, v, callback_info, (resolve_callback) ResolveVehicleSpriteGroup); - if (group == NULL && cargo != GC_DEFAULT) { + if ((group == NULL || group->type != SGT_CALLBACK) && cargo != GC_DEFAULT) { // This group is empty but perhaps there'll be a default one. group = ResolveVehicleSpriteGroup(engine_custom_sprites[engine][GC_DEFAULT], v, callback_info, (resolve_callback) ResolveVehicleSpriteGroup);