diff --git a/rail_cmd.c b/rail_cmd.c index 107b5bc17f..f882678418 100644 --- a/rail_cmd.c +++ b/rail_cmd.c @@ -1336,7 +1336,12 @@ static void DrawTile_Track(TileInfo *ti) if (callback != CALLBACK_FAILED) tile = callback; } - cust = &statspec->renderdata[(tile < statspec->tiles ? tile : 0) + GetWaypointAxis(ti->tile)]; + if (statspec->renderdata == NULL) { + cust = GetStationTileLayout(tile); + relocation -= 0x42D; + } else { + cust = &statspec->renderdata[(tile < statspec->tiles ? tile : 0) + GetWaypointAxis(ti->tile)]; + } /* If there is no sprite layout, we fall back to the default waypoint graphics. */ if (cust != NULL && cust->seq != NULL) { diff --git a/station.h b/station.h index 46f3e3bf0a..09a6a80c5a 100644 --- a/station.h +++ b/station.h @@ -199,6 +199,7 @@ void GetAcceptanceAroundTiles(AcceptedCargo accepts, TileIndex tile, int w, int uint GetStationPlatforms(const Station *st, TileIndex tile); +const DrawTileSprites *GetStationTileLayout(byte gfx); void StationPickerDrawSprite(int x, int y, RailType railtype, int image); RoadStop * GetRoadStopByTile(TileIndex tile, RoadStopType type); diff --git a/station_cmd.c b/station_cmd.c index e523e491be..0d4160242a 100644 --- a/station_cmd.c +++ b/station_cmd.c @@ -1977,6 +1977,10 @@ static int32 RemoveDock(Station *st, uint32 flags) #include "table/station_land.h" +const DrawTileSprites *GetStationTileLayout(byte gfx) +{ + return &_station_display_datas[gfx]; +} extern uint16 _custom_sprites_base;