diff options
author | peter1138 <peter1138@openttd.org> | 2006-05-04 19:15:02 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-05-04 19:15:02 +0000 |
commit | a55ac6efac979b9276faae4c71e965dd6a1b35c3 (patch) | |
tree | 1dacf3fc68eb5387c9170bda89a62e0d8330f066 | |
parent | 0a16393ffe138bc9a9156e5c55ab3ea42e7c73d5 (diff) | |
download | openttd-a55ac6efac979b9276faae4c71e965dd6a1b35c3.tar.xz |
(svn r4738) - Newstations: attach all sprite group cargo types, not just the default and purchase pseudo types, to a station spec.
-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); } |