diff options
author | peter1138 <peter1138@openttd.org> | 2012-12-23 15:38:54 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2012-12-23 15:38:54 +0000 |
commit | fb58c42aa07679fba72a76e9c01d01de6fb69e3b (patch) | |
tree | 11139528802009848d5ef41ee15965a1e499bafe | |
parent | 245e32a10efb0dc924289a8cdec089cd13f3b47d (diff) | |
download | openttd-fb58c42aa07679fba72a76e9c01d01de6fb69e3b.tar.xz |
(svn r24840) -Fix: Draw NewGRF railtypes in NewGRF station previews.
-rw-r--r-- | src/newgrf_station.cpp | 14 | ||||
-rw-r--r-- | src/station_cmd.cpp | 2 | ||||
-rw-r--r-- | src/station_func.h | 3 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 8092a953f..91a1fd068 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 94d03b302..9377009ea 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 233ffee30..000bd19ba 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. |