From d8d37466afe02034fef2447a81fe4fe2469d352b Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 21 May 2010 15:53:02 +0000 Subject: [PATCH] (svn r19873) -Fix [FS#3817]: if the (guessed initial) destination tile of a road stop wasn't a road stop but was a T-junction or turn, the road vehicles would jump around in circles --- src/pathfinder/yapf/yapf_road.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pathfinder/yapf/yapf_road.cpp b/src/pathfinder/yapf/yapf_road.cpp index 91a721da03..baed8d4140 100644 --- a/src/pathfinder/yapf/yapf_road.cpp +++ b/src/pathfinder/yapf/yapf_road.cpp @@ -326,8 +326,11 @@ public: FORCEINLINE Trackdir ChooseRoadTrack(const RoadVehicle *v, TileIndex tile, DiagDirection enterdir) { - /* handle special case - when next tile is destination tile */ - if (tile == v->dest_tile) { + /* Handle special case - when next tile is destination tile. + * However, when going to a station the (initial) destination + * tile might not be a station, but a junction, in which case + * this method forces the vehicle to jump in circles. */ + if (tile == v->dest_tile && !v->current_order.IsType(OT_GOTO_STATION)) { /* choose diagonal trackdir reachable from enterdir */ return DiagDirToDiagTrackdir(enterdir); }