From 47e2dfb318e1d65d6e8af54b330d78f0f323b9bd Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 1 Jan 2007 15:04:35 +0000 Subject: (svn r7718) -Fix (runknown): When pathfinding onto a bridge or tunnel end from previous tile (but not warping from the opposite end) check the enter direction. This fixes signal setting if a rail ends on the top of a tunnel end. --- pathfind.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pathfind.c b/pathfind.c index c4703026d..81ccc699c 100644 --- a/pathfind.c +++ b/pathfind.c @@ -301,6 +301,22 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi if (IsTileDepotType(tile, TRANSPORT_ROAD) && ReverseDiagDir(GetRoadDepotDirection(tile)) != direction) return; } + /* Check if the new tile is a tunnel or bridge head and that the direction + * and transport type match */ + if (IsTileType(tile, MP_TUNNELBRIDGE)) { + if (IsTunnel(tile)) { + if (GetTunnelDirection(tile) != direction || + GetTunnelTransportType(tile) != tpf->tracktype) { + return; + } + } else if (IsBridge(tile)) { + if (GetBridgeRampDirection(tile) != direction || + GetBridgeTransportType(tile) != tpf->tracktype) { + return; + } + } + } + tpf->rd.cur_length++; bits = GetTileTrackStatus(tile, tpf->tracktype); -- cgit v1.2.3-70-g09d2