1
0
Fork 0

(svn r12348) -Fix (r7573): NTP skipped junction just after bridge end

release/0.6
smatz 2008-03-07 00:47:42 +00:00
parent 08f0179916
commit 2c74f39273
1 changed files with 15 additions and 30 deletions

View File

@ -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, /* 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. */ * need to find the exit of the tunnel. */
if (IsTileType(tile, MP_TUNNELBRIDGE)) { if (IsTileType(tile, MP_TUNNELBRIDGE)) {
if (IsTunnel(tile)) { if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) {
if (GetTunnelBridgeDirection(tile) != ReverseDiagDir(direction)) { /* We are not just driving out of the tunnel/bridge */
/* We are not just driving out of the tunnel */ if (GetTunnelBridgeDirection(tile) != direction ||
if (GetTunnelBridgeDirection(tile) != direction || GetTunnelBridgeTransportType(tile) != tpf->tracktype) {
GetTunnelBridgeTransportType(tile) != tpf->tracktype) { /* We are not driving into the tunnel/bridge, or it is an invalid tunnel/bridge */
/* We are not driving into the tunnel, or it is an invalid tunnel */ continue;
continue; }
} if (!HasBit(tpf->railtypes, GetRailType(tile))) {
if (!HasBit(tpf->railtypes, GetRailType(tile))) { bits = TRACK_BIT_NONE;
bits = TRACK_BIT_NONE; break;
break; }
}
TileIndex endtile = GetOtherTunnelEnd(tile); TileIndex endtile = GetOtherTunnelBridgeEnd(tile);
si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, endtile) + 1); si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, endtile) + 1);
tile = endtile; tile = endtile;
/* tile now points to the exit tile of the tunnel */ /* tile now points to the exit tile of the tunnel/bridge */
}
} 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;
}
}
tile_end = GetOtherBridgeEnd(tile);
si.cur_length += DIAG_FACTOR * (GetTunnelBridgeLength(tile, tile_end) + 1);
tile = tile_end;
} }
} }