diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 8092a953fe..91a1fd068c 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -843,10 +843,16 @@ bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID SpriteID image = sprites->ground.sprite; PaletteID pal = sprites->ground.pal; - image += HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE) ? ground_relocation : total_offset; - if (HasBit(pal, SPRITE_MODIFIER_CUSTOM_SPRITE)) pal += ground_relocation; - - DrawSprite(image, GroundSpritePaletteTransform(image, pal, palette), x, y); + RailTrackOffset overlay_offset; + if (rti != NULL && rti->UsesOverlay() && SplitGroundSpriteForOverlay(NULL, &image, &overlay_offset)) { + SpriteID ground = GetCustomRailSprite(rti, INVALID_TILE, RTSG_GROUND); + DrawSprite(image, PAL_NONE, x, y); + DrawSprite(ground + overlay_offset, PAL_NONE, x, y); + } else { + image += HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE) ? ground_relocation : total_offset; + if (HasBit(pal, SPRITE_MODIFIER_CUSTOM_SPRITE)) pal += ground_relocation; + DrawSprite(image, GroundSpritePaletteTransform(image, pal, palette), x, y); + } DrawRailTileSeqInGUI(x, y, sprites, total_offset, relocation, palette); diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 94d03b3027..9377009ea0 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2559,7 +2559,7 @@ const DrawTileSprites *GetStationTileLayout(StationType st, byte gfx) * @param [out] overlay_offset Overlay to draw. * @return true if overlay can be drawn. */ -static bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset) +bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset) { bool snow_desert; switch (*ground) { diff --git a/src/station_func.h b/src/station_func.h index 233ffee30a..000bd19ba9 100644 --- a/src/station_func.h +++ b/src/station_func.h @@ -16,6 +16,7 @@ #include "rail_type.h" #include "road_type.h" #include "economy_func.h" +#include "rail.h" void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius); @@ -44,6 +45,8 @@ bool CanStationTileHaveWires(TileIndex tile); void UpdateAirportsNoise(); +bool SplitGroundSpriteForOverlay(const TileInfo *ti, SpriteID *ground, RailTrackOffset *overlay_offset); + /** * Calculates the maintenance cost of a number of station tiles. * @param num Number of station tiles.