diff options
author | peter1138 <peter1138@openttd.org> | 2010-02-07 22:22:54 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2010-02-07 22:22:54 +0000 |
commit | 898e879bd90e34505cd7083acecf341fd798d02c (patch) | |
tree | f9c016c9dcb7d2e78726296e15aceb6adf4a0e2c /src/road_cmd.cpp | |
parent | 01474412fc95b69ea6595a94eeb8baa0db575e16 (diff) | |
download | openttd-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.cpp | 32 |
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++; |