(svn r4738) - Newstations: attach all sprite group cargo types, not just the default and purchase pseudo types, to a station spec.
--- a/engine.h Thu May 04 18:10:17 2006 +0000
+++ b/engine.h Thu May 04 19:15:02 2006 +0000
@@ -156,8 +156,9 @@
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];
--- a/newgrf.c Thu May 04 18:10:17 2006 +0000
+++ b/newgrf.c Thu May 04 19:15:02 2006 +0000
@@ -1582,12 +1582,10 @@
return;
}
- if (ctype != 0xFF) {
- /* TODO: No support for any other cargo. */
- continue;
- }
-
- statspec->spritegroup[1] = _cur_grffile->spritegroups[groupid];
+ if (ctype == 0xFE) ctype = GC_DEFAULT_NA;
+ if (ctype == 0xFF) ctype = GC_PURCHASE;
+
+ statspec->spritegroup[ctype] = _cur_grffile->spritegroups[groupid];
}
}
@@ -1605,7 +1603,7 @@
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);
--- a/newgrf_station.c Thu May 04 18:10:17 2006 +0000
+++ b/newgrf_station.c Thu May 04 19:15:02 2006 +0000
@@ -327,10 +327,14 @@
{
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);
}