From a55ac6efac979b9276faae4c71e965dd6a1b35c3 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Thu, 4 May 2006 19:15:02 +0000 Subject: [PATCH] (svn r4738) - Newstations: attach all sprite group cargo types, not just the default and purchase pseudo types, to a station spec. --- engine.h | 3 ++- newgrf.c | 10 ++++------ newgrf_station.c | 4 ++++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/engine.h b/engine.h index b0293efe19..0e3ee1a1c7 100644 --- a/engine.h +++ b/engine.h @@ -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]; diff --git a/newgrf.c b/newgrf.c index 12b6e304a6..a50070b754 100644 --- a/newgrf.c +++ b/newgrf.c @@ -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 361f930331..ab6d2fc591 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); }