changeset 6070:444de8263ea4 draft

(svn r8800) -Fix Simplify MoveGoodsToSation() under the assumption that 0 is less or equal than 0
author tron <tron@openttd.org>
date Sun, 18 Feb 2007 11:45:56 +0000
parents 9a52b6496f79
children 0364a445b332
files src/station_cmd.cpp
diffstat 1 files changed, 7 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2382,7 +2382,6 @@
 uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount)
 {
 	Station* around[8];
-	int rad = 0;
 
 	for (uint i = 0; i < lengthof(around); i++) around[i] = NULL;
 
@@ -2417,9 +2416,6 @@
 						(!_patches.selectgoods || st->goods[type].last_speed > 0) && // if last_speed is 0, no vehicle has been there.
 						((st->facilities & ~FACIL_BUS_STOP)   != 0 || type == CT_PASSENGERS) && // if we have other fac. than a bus stop, or the cargo is passengers
 						((st->facilities & ~FACIL_TRUCK_STOP) != 0 || type != CT_PASSENGERS)) { // if we have other fac. than a cargo bay or the cargo is not passengers
-					int x_dist;
-					int y_dist;
-
 					if (_patches.modified_catchment) {
 						// min and max coordinates of the producer relative
 						const int x_min_prod = 9;
@@ -2427,27 +2423,26 @@
 						const int y_min_prod = 9;
 						const int y_max_prod = 8 + h_prod;
 
-						rad = FindCatchmentRadius(st);
-
-						x_dist = min(w_cur - x_min_prod, x_max_prod - w_cur);
+						int rad = FindCatchmentRadius(st);
+
+						int x_dist = min(w_cur - x_min_prod, x_max_prod - w_cur);
 						if (w_cur < x_min_prod) {
 							x_dist = x_min_prod - w_cur;
 						} else if (w_cur > x_max_prod) {
 							x_dist = w_cur - x_max_prod;
 						}
 
-						y_dist = min(h_cur - y_min_prod, y_max_prod - h_cur);
+						int y_dist = min(h_cur - y_min_prod, y_max_prod - h_cur);
 						if (h_cur < y_min_prod) {
 							y_dist = y_min_prod - h_cur;
 						} else if (h_cur > y_max_prod) {
 							y_dist = h_cur - y_max_prod;
 						}
-					} else {
-						x_dist = 0;
-						y_dist = 0;
+
+						if (x_dist > rad || y_dist > rad) break;
 					}
 
-					if (x_dist <= rad && y_dist <= rad) around[i] = st;
+					around[i] = st;
 				}
 				break;
 			} else if (around[i] == st) {