From b5a0840621d291ed384f2abac305a850bf1eeea3 Mon Sep 17 00:00:00 2001 From: truelight Date: Fri, 3 Sep 2004 16:03:17 +0000 Subject: (svn r149) -Fix: [997703] Junction after tunnel bug (blathijs) --- pathfind.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'pathfind.c') diff --git a/pathfind.c b/pathfind.c index 718268a5d..5a6ed2890 100644 --- a/pathfind.c +++ b/pathfind.c @@ -594,11 +594,17 @@ void NTPEnum(NewTrackPathFinder *tpf, uint tile, uint direction) restart: if (IS_TILETYPE(tile, MP_TUNNELBRIDGE) && (_map5[tile] & 0xF0)==0) { - if ( (uint)(_map5[tile] & 3) != direction || ((_map5[tile]>>1)&6) != tpf->tracktype) + /* This is a tunnel tile */ + if ( (uint)(_map5[tile] & 3) != (direction ^ 2)) { /* ^ 2 is reversing the direction */ + /* We are not just driving out of the tunnel */ + if ( (uint)(_map5[tile] & 3) != direction || ((_map5[tile]>>1)&6) != tpf->tracktype) + /* We are not driving into the tunnel, or it + * is an invalid tunnel */ goto popnext; - flotr = FindLengthOfTunnel(tile, direction, tpf->tracktype); - si.cur_length += flotr.length; - tile = flotr.tile; + flotr = FindLengthOfTunnel(tile, direction, tpf->tracktype); + si.cur_length += flotr.length; + tile = flotr.tile; + } } // remember the start tile so we know if we're in an inf loop. -- cgit v1.2.3-54-g00ecf