changeset 14633:31e99b467d35 draft

(svn r19210) -Fix: GetDestination() is invalid for nearest-depot orders.
author frosch <frosch@openttd.org>
date Mon, 22 Feb 2010 20:08:16 +0000
parents a13fe04c7234
children bea83d45c292
files src/order_cmd.cpp
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -415,7 +415,9 @@
 		default: NOT_REACHED();
 		case OT_GOTO_WAYPOINT: return Waypoint::Get(o.GetDestination())->xy;
 		case OT_GOTO_STATION:  return Station::Get(o.GetDestination())->xy;
-		case OT_GOTO_DEPOT:    return Depot::Get(o.GetDestination())->xy;
+		case OT_GOTO_DEPOT:
+			if ((o.GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) return INVALID_TILE;
+			return Depot::Get(o.GetDestination())->xy;
 	}
 }
 
@@ -433,7 +435,10 @@
 		return max(dist1, dist2);
 	}
 
-	return DistanceManhattan(GetOrderLocation(*prev), GetOrderLocation(*cur));
+	TileIndex prev_tile = GetOrderLocation(*prev);
+	TileIndex cur_tile = GetOrderLocation(*cur);
+	if (prev_tile == INVALID_TILE || cur_tile == INVALID_TILE) return 0;
+	return DistanceManhattan(prev_tile, cur_tile);
 }
 
 /** Add an order to the orderlist of a vehicle.