From aa0459309cef7773c5ad493abfcf4a60414275a6 Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 13 May 2009 10:58:41 +0000 Subject: (svn r16291) -Fix [FS#2893]: RVs were unable to find a depot when turning around (in some cases), causing 'nearest depot' orders to be occasionally lost. --- src/vehicle.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 5dda6a93d..4e4572815 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1219,13 +1219,12 @@ Trackdir GetVehicleTrackdir(const Vehicle *v) if (IsStandardRoadStopTile(v->tile)) // We'll assume the road vehicle is facing outwards return DiagDirToDiagTrackdir(GetRoadStopDir(v->tile)); // Road vehicle in a station - if (IsDriveThroughStopTile(v->tile)) return DiagDirToDiagTrackdir(DirToDiagDir(v->direction)); + /* Drive through road stops / wormholes (tunnels) */ + if (v->u.road.state > RVSB_TRACKDIR_MASK) return DiagDirToDiagTrackdir(DirToDiagDir(v->direction)); - /* If vehicle's state is a valid track direction (vehicle is not turning around) return it */ - if (!IsReversingRoadTrackdir((Trackdir)v->u.road.state)) return (Trackdir)v->u.road.state; - - /* Vehicle is turning around, get the direction from vehicle's direction */ - return DiagDirToDiagTrackdir(DirToDiagDir(v->direction)); + /* If vehicle's state is a valid track direction (vehicle is not turning around) return it, + * otherwise transform it into a valid track direction */ + return (Trackdir)((IsReversingRoadTrackdir((Trackdir)v->u.road.state)) ? (v->u.road.state - 6) : v->u.road.state); /* case VEH_AIRCRAFT: case VEH_EFFECT: case VEH_DISASTER: */ default: return INVALID_TRACKDIR; -- cgit v1.2.3-70-g09d2