summaryrefslogtreecommitdiff
path: root/src/rail_cmd.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2008-02-18 16:11:31 +0000
committersmatz <smatz@openttd.org>2008-02-18 16:11:31 +0000
commit29125c0e68ffc3d4627212f33bce39ba108cd341 (patch)
tree931c3875fce3f210d8676944d6ea635dac295fc7 /src/rail_cmd.cpp
parenta0a225ab021f4cbb65679c04898d6f3eb8eb3662 (diff)
downloadopenttd-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.cpp21
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;
}
}