summaryrefslogtreecommitdiff
path: root/src/road_cmd.cpp
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2010-02-07 22:22:54 +0000
committerpeter1138 <peter1138@openttd.org>2010-02-07 22:22:54 +0000
commit898e879bd90e34505cd7083acecf341fd798d02c (patch)
treef9c016c9dcb7d2e78726296e15aceb6adf4a0e2c /src/road_cmd.cpp
parent01474412fc95b69ea6595a94eeb8baa0db575e16 (diff)
downloadopenttd-898e879bd90e34505cd7083acecf341fd798d02c.tar.xz
(svn r19056) -Add: [NewGRF] Action 3/2/1 (i.e. new graphics) support for rail types. (To be documented...)
Diffstat (limited to 'src/road_cmd.cpp')
-rw-r--r--src/road_cmd.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp
index 8b7643cc1..c877bf0ef 100644
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
@@ -35,6 +35,7 @@
#include "town.h"
#include "company_base.h"
#include "core/random_func.hpp"
+#include "newgrf_railtype.h"
#include "table/strings.h"
@@ -1164,7 +1165,36 @@ static void DrawTile_Road(TileInfo *ti)
case ROAD_TILE_CROSSING: {
if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED);
- SpriteID image = GetRailTypeInfo(GetRailType(ti->tile))->base_sprites.crossing;
+ const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
+
+ if (rti->UsesOverlay()) {
+ Axis axis = GetCrossingRailAxis(ti->tile);
+ SpriteID road = SPR_ROAD_Y + axis;
+ PaletteID pal = PAL_NONE;
+
+ Roadside roadside = GetRoadside(ti->tile);
+
+ if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) {
+ road += 19;
+ } else {
+ switch (roadside) {
+ case ROADSIDE_BARREN: pal = PALETTE_TO_BARE_LAND; break;
+ case ROADSIDE_GRASS: break;
+ default: road -= 19; break; // Paved
+ }
+ }
+
+ DrawGroundSprite(road, pal);
+
+ SpriteID rail = GetCustomRailSprite(rti, ti->tile, RTSG_CROSSING) + axis;
+ DrawGroundSprite(rail, PAL_NONE);
+ DrawRailTileSeq(ti, &_crossing_layout, TO_CATENARY, rail, 0, PAL_NONE);
+
+ if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti);
+ break;
+ }
+
+ SpriteID image = rti->base_sprites.crossing;
PaletteID pal = PAL_NONE;
if (GetCrossingRoadAxis(ti->tile) == AXIS_X) image++;