(svn r4738) - Newstations: attach all sprite group cargo types, not just the default and purchase pseudo types, to a station spec.
authorpeter1138
Thu, 04 May 2006 19:15:02 +0000
changeset 3750 ffe5ba5de494
parent 3749 b6c1a611d840
child 3751 ce6408fdb788
(svn r4738) - Newstations: attach all sprite group cargo types, not just the default and purchase pseudo types, to a station spec.
engine.h
newgrf.c
newgrf_station.c
--- 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);
 	}