From c19b8c72b7514751fd3470908fbd047e1a63862b Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 31 Aug 2007 12:45:21 +0000 Subject: (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 | 4 +++- src/station_cmd.cpp | 14 +++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/station.h b/src/station.h index 71abc5750..bbae591d6 100644 --- a/src/station.h +++ b/src/station.h @@ -222,7 +222,9 @@ enum CatchmentArea { 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); diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 6f4e3cbc8..06a41a24c 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2597,9 +2597,9 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount) 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 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount) ((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); -- cgit v1.2.3-54-g00ecf