(svn r11013) -Fix [FS#1171]: MoveGoodsToStation's search area is too small as it assumed a lower maximum catchment area than the real maximum catchment area. Based on a patch by PhilSophus.
authorrubidium
Fri, 31 Aug 2007 12:45:21 +0000
changeset 7994 d5e8a6a01c4d
parent 7993 76b0eb3e19c9
child 7995 6c22a5f9e281
(svn r11013) -Fix [FS#1171]: MoveGoodsToStation's search area is too small as it assumed a lower maximum catchment area than the real maximum catchment area. Based on a patch by PhilSophus.
src/station.h
src/station_cmd.cpp
--- a/src/station.h	Thu Aug 30 21:11:12 2007 +0000
+++ b/src/station.h	Fri Aug 31 12:45:21 2007 +0000
@@ -222,7 +222,9 @@
 	CA_BUS             =  3,
 	CA_TRUCK           =  3,
 	CA_TRAIN           =  4,
-	CA_DOCK            =  5
+	CA_DOCK            =  5,
+
+	MAX_CATCHMENT      = 10, ///< Airports have a catchment up to this number.
 };
 
 void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint radius);
--- a/src/station_cmd.cpp	Thu Aug 30 21:11:12 2007 +0000
+++ b/src/station_cmd.cpp	Fri Aug 31 12:45:21 2007 +0000
@@ -2597,9 +2597,9 @@
 	if (_patches.modified_catchment) {
 		w_prod = w;
 		h_prod = h;
-		w += 16;
-		h += 16;
-		max_rad = 8;
+		w += 2 * MAX_CATCHMENT;
+		h += 2 * MAX_CATCHMENT;
+		max_rad = MAX_CATCHMENT;
 	} else {
 		w_prod = 0;
 		h_prod = 0;
@@ -2624,10 +2624,10 @@
 						((st->facilities & ~FACIL_TRUCK_STOP) != 0 || !IsCargoInClass(type, CC_PASSENGERS))) { // if we have other fac. than a cargo bay or the cargo is not passengers
 					if (_patches.modified_catchment) {
 						// min and max coordinates of the producer relative
-						const int x_min_prod = 9;
-						const int x_max_prod = 8 + w_prod;
-						const int y_min_prod = 9;
-						const int y_max_prod = 8 + h_prod;
+						const int x_min_prod = max_rad + 1;
+						const int x_max_prod = max_rad + w_prod;
+						const int y_min_prod = max_rad + 1;
+						const int y_max_prod = max_rad + h_prod;
 
 						int rad = FindCatchmentRadius(st);