summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2012-12-23 15:38:54 +0000
committerpeter1138 <peter1138@openttd.org>2012-12-23 15:38:54 +0000
commitfb58c42aa07679fba72a76e9c01d01de6fb69e3b (patch)
tree11139528802009848d5ef41ee15965a1e499bafe
parent245e32a10efb0dc924289a8cdec089cd13f3b47d (diff)
downloadopenttd-fb58c42aa07679fba72a76e9c01d01de6fb69e3b.tar.xz
(svn r24840) -Fix: Draw NewGRF railtypes in NewGRF station previews.
-rw-r--r--src/newgrf_station.cpp14
-rw-r--r--src/station_cmd.cpp2
-rw-r--r--src/station_func.h3
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.