summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newgrf.c13
-rw-r--r--newgrf_station.h1
2 files changed, 11 insertions, 3 deletions
diff --git a/newgrf.c b/newgrf.c
index 59965bb6a..7a50859f0 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 a5a45d9a0..a133fb3d7 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.