(svn r3960) -Fix: Correctly implement minimum search, so road vehicles head twoards the closest station, not the last one in the list. Backport of r3751 from trunk 0.4.5
authorDarkvater
Sat, 18 Mar 2006 15:45:23 +0000
branch0.4.5
changeset 9930 0195dbfe67f1
parent 9929 9dc2b9d72d55
child 9931 d5c9cfd995d2
(svn r3960) -Fix: Correctly implement minimum search, so road vehicles head twoards the closest station, not the last one in the list. Backport of r3751 from trunk
roadveh_cmd.c
--- a/roadveh_cmd.c	Sat Mar 18 15:32:38 2006 +0000
+++ b/roadveh_cmd.c	Sat Mar 18 15:45:23 2006 +0000
@@ -634,7 +634,8 @@
 		st = GetStation(order->station);
 
 		{
-			uint mindist = 0xFFFFFFFF;
+			TileIndex dest;
+			uint mindist;
 			RoadStopType type;
 			RoadStop *rs;
 
@@ -649,12 +650,17 @@
 				return;
 			}
 
-			for (rs = GetPrimaryRoadStop(st, type); rs != NULL; rs = rs->next) {
-				if (DistanceManhattan(v->tile, rs->xy) < mindist) {
-					v->dest_tile = rs->xy;
+			dest = rs->xy;
+			mindist = DistanceManhattan(v->tile, rs->xy);
+			for (rs = rs->next; rs != NULL; rs = rs->next) {
+				uint dist = DistanceManhattan(v->tile, rs->xy);
+
+				if (dist < mindist) {
+					mindist = dist;
+					dest = rs->xy;
 				}
 			}
-
+			v->dest_tile = dest;
 		}
 	} else if (order->type == OT_GOTO_DEPOT) {
 		v->dest_tile = GetDepot(order->station)->xy;