diff -r c1cddeb8511c -r 383a632de666 src/rail_cmd.cpp --- a/src/rail_cmd.cpp Mon Feb 18 14:59:30 2008 +0000 +++ b/src/rail_cmd.cpp Mon Feb 18 16:11:31 2008 +0000 @@ -2083,17 +2083,14 @@ } -static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode) +static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { if (mode != TRANSPORT_RAIL) return 0; switch (GetRailTileType(tile)) { default: NOT_REACHED(); - case RAIL_TILE_NORMAL: { - TrackBits rails = GetTrackBits(tile); - uint32 ret = rails * 0x101; - return (rails == TRACK_BIT_CROSS) ? ret | 0x40 : ret; - } + case RAIL_TILE_NORMAL: + return GetTrackBits(tile) * 0x101; case RAIL_TILE_SIGNALS: { uint32 ret = GetTrackBits(tile) * 0x101; @@ -2117,8 +2114,16 @@ return ret; } - case RAIL_TILE_DEPOT: return AxisToTrackBits(DiagDirToAxis(GetRailDepotDirection(tile))) * 0x101; - case RAIL_TILE_WAYPOINT: return GetRailWaypointBits(tile) * 0x101; + case RAIL_TILE_DEPOT: { + DiagDirection dir = GetRailDepotDirection(tile); + + if (side != INVALID_DIAGDIR && side != dir) return 0; + + return AxisToTrackBits(DiagDirToAxis(dir)) * 0x101; + } + + case RAIL_TILE_WAYPOINT: + return GetRailWaypointBits(tile) * 0x101; } }