From 164423a42429bfb1bda27f18879faa2d02c3e43c Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Fri, 13 Jun 2025 21:19:34 +0200 Subject: [PATCH] Add: [NewGRF] Train property to set multiple track types for an engine. --- src/newgrf/newgrf_act0_trains.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/newgrf/newgrf_act0_trains.cpp b/src/newgrf/newgrf_act0_trains.cpp index cc550130d1..8f8a4c4121 100644 --- a/src/newgrf/newgrf_act0_trains.cpp +++ b/src/newgrf/newgrf_act0_trains.cpp @@ -328,6 +328,22 @@ ChangeInfoResult RailVehicleChangeInfo(uint first, uint last, int prop, ByteRead e->badges = ReadBadgeList(buf, GSF_TRAINS); break; + case 0x34: { // List of track types + uint8_t count = buf.ReadByte(); + + _gted[e->index].railtypelabels.clear(); + while (count--) { + uint8_t tracktype = buf.ReadByte(); + + if (tracktype < _cur_gps.grffile->railtype_list.size()) { + _gted[e->index].railtypelabels.push_back(_cur_gps.grffile->railtype_list[tracktype]); + } else { + GrfMsg(1, "RailVehicleChangeInfo: Invalid track type {} specified, ignoring", tracktype); + } + } + break; + } + default: ret = CommonVehicleChangeInfo(ei, prop, buf); break;