summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-05-04 19:15:02 +0000
committerpeter1138 <peter1138@openttd.org>2006-05-04 19:15:02 +0000
commita55ac6efac979b9276faae4c71e965dd6a1b35c3 (patch)
tree1dacf3fc68eb5387c9170bda89a62e0d8330f066
parent0a16393ffe138bc9a9156e5c55ab3ea42e7c73d5 (diff)
downloadopenttd-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.h3
-rw-r--r--newgrf.c10
-rw-r--r--newgrf_station.c4
3 files changed, 10 insertions, 7 deletions
diff --git a/engine.h b/engine.h
index b0293efe1..0e3ee1a1c 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 12b6e304a..a50070b75 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 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);
}