changeset 15239:7af339d59bab draft

(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
author rubidium <rubidium@openttd.org>
date Fri, 21 May 2010 15:53:02 +0000
parents 1cfb0b93d2c6
children 673afd3a2e81
files src/pathfinder/yapf/yapf_road.cpp
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/pathfinder/yapf/yapf_road.cpp
+++ b/src/pathfinder/yapf/yapf_road.cpp
@@ -326,8 +326,11 @@
 
 	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);
 		}