From 2c74f39273144839b9381e1a1c62768f33e22810 Mon Sep 17 00:00:00 2001 From: smatz Date: Fri, 7 Mar 2008 00:47:42 +0000 Subject: (svn r12348) -Fix (r7573): NTP skipped junction just after bridge end --- src/pathfind.cpp | 43 ++++++++++++++----------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) (limited to 'src/pathfind.cpp') diff --git a/src/pathfind.cpp b/src/pathfind.cpp index 84569bbe0..ea84a76a2 100644 --- a/src/pathfind.cpp +++ b/src/pathfind.cpp @@ -611,37 +611,22 @@ start_at: /* If the tile is the entry tile of a tunnel, and we're not going out of the tunnel, * need to find the exit of the tunnel. */ if (IsTileType(tile, MP_TUNNELBRIDGE)) { - if (IsTunnel(tile)) { - if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) { - /* We are not just driving out of the tunnel */ - if (GetTunnelBridgeDirection(tile) != direction || - GetTunnelBridgeTransportType(tile) != tpf->tracktype) { - /* We are not driving into the tunnel, or it is an invalid tunnel */ - continue; - } - if (!HasBit(tpf->railtypes, GetRailType(tile))) { - bits = TRACK_BIT_NONE; - break; - } - - TileIndex endtile = GetOtherTunnelEnd(tile); - si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, endtile) + 1); - tile = endtile; - /* tile now points to the exit tile of the tunnel */ + if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) { + /* We are not just driving out of the tunnel/bridge */ + if (GetTunnelBridgeDirection(tile) != direction || + GetTunnelBridgeTransportType(tile) != tpf->tracktype) { + /* We are not driving into the tunnel/bridge, or it is an invalid tunnel/bridge */ + continue; } - } else { // IsBridge(tile) - TileIndex tile_end; - if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) { - /* We are not just leaving the bridge */ - if (GetTunnelBridgeDirection(tile) != direction || - GetTunnelBridgeTransportType(tile) != tpf->tracktype) { - /* Not entering the bridge or not compatible */ - continue; - } + if (!HasBit(tpf->railtypes, GetRailType(tile))) { + bits = TRACK_BIT_NONE; + break; } - tile_end = GetOtherBridgeEnd(tile); - si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, tile_end) + 1); - tile = tile_end; + + TileIndex endtile = GetOtherTunnelBridgeEnd(tile); + si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, endtile) + 1); + tile = endtile; + /* tile now points to the exit tile of the tunnel/bridge */ } } -- cgit v1.2.3-54-g00ecf