diff options
author | smatz <smatz@openttd.org> | 2008-02-18 16:11:31 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-02-18 16:11:31 +0000 |
commit | 29125c0e68ffc3d4627212f33bce39ba108cd341 (patch) | |
tree | 931c3875fce3f210d8676944d6ea635dac295fc7 /src/rail_cmd.cpp | |
parent | a0a225ab021f4cbb65679c04898d6f3eb8eb3662 (diff) | |
download | openttd-29125c0e68ffc3d4627212f33bce39ba108cd341.tar.xz |
(svn r12177) -Codechange: use 'side' parameter in GetTileTrackStatus so there can be less checks in pathfinders for depots/stations/tunnels/bridges
Diffstat (limited to 'src/rail_cmd.cpp')
-rw-r--r-- | src/rail_cmd.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 2f6c003f1..f2ffaff89 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -2083,17 +2083,14 @@ set_ground: } -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 @@ static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint 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; } } |