changeset 8261:1cbd903f1000 draft

(svn r11825) -Fix (FS#1627): an articulated road vehicle could split up when it turned around at a corner and then would enter a drive through station at the next tile.
author rubidium <rubidium@openttd.org>
date Sat, 12 Jan 2008 22:10:00 +0000
parents 5b1a8515df51
children b3a92515b463
files src/roadveh_cmd.cpp
diffstat 1 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -1414,9 +1414,7 @@
 
 		if (diag_dir == INVALID_DIAGDIR) return INVALID_TRACKDIR;
 		dir = DiagdirToDiagTrackdir(diag_dir);
-	} else if (HasBit(prev_state, RVS_IN_DT_ROAD_STOP)) {
-		dir = (Trackdir)(prev_state & RVSB_ROAD_STOP_TRACKDIR_MASK);
-	} else if (prev_state < TRACKDIR_END) {
+	} else {
 		if (already_reversed && prev->tile != tile) {
 			/*
 			 * The vehicle has reversed, but did not go straight back.
@@ -1437,11 +1435,13 @@
 				{ TRACKDIR_UPPER_W, TRACKDIR_RIGHT_N, TRACKDIR_LEFT_N,  TRACKDIR_UPPER_E },
 				{ TRACKDIR_RIGHT_S, TRACKDIR_LOWER_W, TRACKDIR_LOWER_E, TRACKDIR_LEFT_S  }};
 			dir = reversed_turn_lookup[prev->tile < tile ? 0 : 1][ReverseDiagDir(entry_dir)];
+		} else if (HasBit(prev_state, RVS_IN_DT_ROAD_STOP)) {
+			dir = (Trackdir)(prev_state & RVSB_ROAD_STOP_TRACKDIR_MASK);
+		} else if (prev_state < TRACKDIR_END) {
+			dir = (Trackdir)prev_state;
 		} else {
-			dir = (Trackdir)prev_state;
+			return INVALID_TRACKDIR;
 		}
-	} else {
-		return INVALID_TRACKDIR;
 	}
 
 	/* Do some sanity checking. */