Mercurial > hg > openttd
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. */