From 0aa8c0123a827e6aa74dc9f88824aa810a1e1df9 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Wed, 8 Nov 2006 12:17:14 +0000 Subject: [PATCH] (svn r7113) -Codechange: [NewStations] Add support for copying custom station layouts --- newgrf.c | 13 ++++++++++--- newgrf_station.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/newgrf.c b/newgrf.c index 59965bb6a8..7a50859f0c 100644 --- a/newgrf.c +++ b/newgrf.c @@ -952,6 +952,8 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int FOR_EACH_OBJECT { StationSpec *statspec = _cur_grffile->stations[stid + i]; + statspec->copied_layouts = false; + while (buf < *bufp + len) { byte length = grf_load_byte(&buf); byte number = grf_load_byte(&buf); @@ -1001,11 +1003,16 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int break; case 0x0F: /* Copy custom layout */ - /* TODO */ FOR_EACH_OBJECT { - grf_load_byte(&buf); + StationSpec *statspec = _cur_grffile->stations[stid + i]; + byte srcid = grf_load_byte(&buf); + const StationSpec *srcstatspec = _cur_grffile->stations[srcid]; + + statspec->lengths = srcstatspec->lengths; + statspec->platforms = srcstatspec->platforms; + statspec->layouts = srcstatspec->layouts; + statspec->copied_layouts = true; } - ret = true; break; case 0x10: /* Little/lots cargo threshold */ diff --git a/newgrf_station.h b/newgrf_station.h index a5a45d9a00..a133fb3d70 100644 --- a/newgrf_station.h +++ b/newgrf_station.h @@ -67,6 +67,7 @@ typedef struct StationSpec { byte lengths; byte *platforms; StationLayout **layouts; + bool copied_layouts; /** * NUM_GLOBAL_CID sprite groups.