diff options
-rw-r--r-- | engine.h | 3 | ||||
-rw-r--r-- | newgrf.c | 10 | ||||
-rw-r--r-- | newgrf_station.c | 4 |
3 files changed, 10 insertions, 7 deletions
@@ -156,8 +156,9 @@ enum GlobalCargo { GC_UNDEFINED = 28, // undefined; unused slot in arctic climate GC_DEFAULT = 29, GC_PURCHASE = 30, + GC_DEFAULT_NA = 31, // New stations only GC_INVALID = 255, - NUM_GLOBAL_CID = 31 + NUM_GLOBAL_CID = 32 }; VARDEF const uint32 _default_refitmasks[NUM_VEHICLE_TYPES]; @@ -1582,12 +1582,10 @@ static void NewVehicle_SpriteGroupMapping(byte *buf, int len) return; } - if (ctype != 0xFF) { - /* TODO: No support for any other cargo. */ - continue; - } + if (ctype == 0xFE) ctype = GC_DEFAULT_NA; + if (ctype == 0xFF) ctype = GC_PURCHASE; - statspec->spritegroup[1] = _cur_grffile->spritegroups[groupid]; + statspec->spritegroup[ctype] = _cur_grffile->spritegroups[groupid]; } } @@ -1605,7 +1603,7 @@ static void NewVehicle_SpriteGroupMapping(byte *buf, int len) uint8 stid = buf[3 + i]; StationSpec *statspec = &_cur_grffile->stations[stid]; - statspec->spritegroup[0] = _cur_grffile->spritegroups[groupid]; + statspec->spritegroup[GC_DEFAULT] = _cur_grffile->spritegroups[groupid]; statspec->grfid = _cur_grffile->grfid; statspec->localidx = stid; SetCustomStationSpec(statspec); diff --git a/newgrf_station.c b/newgrf_station.c index 361f93033..ab6d2fc59 100644 --- a/newgrf_station.c +++ b/newgrf_station.c @@ -327,10 +327,14 @@ SpriteID GetCustomStationRelocation(const StationSpec *statspec, const Station * { const SpriteGroup *group; ResolverObject object; + ctype = (st == NULL) ? GC_PURCHASE : GC_DEFAULT_NA; NewStationResolver(&object, statspec, st, tile); group = Resolve(statspec->spritegroup[ctype], &object); + if ((group == NULL || group->type != SGT_RESULT) && ctype != GC_DEFAULT_NA) { + group = Resolve(statspec->spritegroup[GC_DEFAULT_NA], &object); + } if ((group == NULL || group->type != SGT_RESULT) && ctype != GC_DEFAULT) { group = Resolve(statspec->spritegroup[GC_DEFAULT], &object); } |