From 6878a0ffd7e4613ae9cf45888529a6033375ed04 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 17 Nov 2010 23:07:53 +0000 Subject: (svn r21229) -Fix [FS#4130]: [YAPF] Road vehicles not finding the nearest depot in some (corner) cases --- src/pathfinder/follow_track.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/pathfinder/follow_track.hpp b/src/pathfinder/follow_track.hpp index d7d8569e9..8656a4f05 100644 --- a/src/pathfinder/follow_track.hpp +++ b/src/pathfinder/follow_track.hpp @@ -131,6 +131,18 @@ struct CFollowTrackT if (!CanEnterNewTile()) return false; m_new_td_bits &= DiagdirReachesTrackdirs(m_exitdir); if (m_new_td_bits == TRACKDIR_BIT_NONE) { + /* In case we can't enter the next tile, but are + * a normal road vehicle, then we can actually + * try to reverse as this is the end of the road. + * Trams can only turn on the appropriate bits in + * which case reaching this would mean a dead end + * near a building and in that case there would + * a "false" QueryNewTileTrackStatus result and + * as such reversing is already tried. The fact + * that function failed can have to do with a + * missing road bit, or inability to connect the + * different bits due to slopes. */ + if (IsRoadTT() && !IsTram() && TryReverse()) return true; m_err = EC_NO_WAY; return false; } -- cgit v1.2.3-70-g09d2