diff options
author | rubidium <rubidium@openttd.org> | 2008-07-19 10:10:21 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-07-19 10:10:21 +0000 |
commit | 39514a9d689f38ecff30593ce5128af4a219fcf0 (patch) | |
tree | ab80c285247fe78d45c50fe1f0832c82b34c4d8b | |
parent | 58c2e3e285c07fc51f8514b0f6ca7338347500e0 (diff) | |
download | openttd-39514a9d689f38ecff30593ce5128af4a219fcf0.tar.xz |
(svn r13734) -Fix: NewGRF rail continuation would always mark a tunnel on the same axis as connected, even when the tunnel faces the wrong direction.
-rw-r--r-- | src/newgrf_station.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 4f57699ab..6a978ac63 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -25,6 +25,7 @@ #include "player_func.h" #include "animated_tile_func.h" #include "functions.h" +#include "tunnelbridge_map.h" #include "table/sprites.h" #include "table/strings.h" @@ -294,11 +295,18 @@ static uint32 GetRailContinuationInfo(TileIndex tile) uint i; for (i = 0; i < lengthof(x_dir); i++, dir++, diagdir++) { - TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0)); + TileIndex neighbour_tile = tile + TileOffsByDir(*dir); + TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(neighbour_tile, TRANSPORT_RAIL, 0)); if (trackbits != TRACK_BIT_NONE) { /* If there is any track on the tile, set the bit in the second byte */ SetBit(res, i + 8); + /* With tunnels and bridges the tile has tracks, but they are not necessarily connected + * with the next tile because the ramp is not going in the right direction. */ + if (IsTileType(neighbour_tile, MP_TUNNELBRIDGE) && GetTunnelBridgeDirection(neighbour_tile) != *diagdir) { + continue; + } + /* If any track reaches our exit direction, set the bit in the lower byte */ if (trackbits & DiagdirReachesTracks(*diagdir)) SetBit(res, i); } |