summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2008-11-22 15:48:43 +0000
committerfrosch <frosch@openttd.org>2008-11-22 15:48:43 +0000
commitb759ccd0324cbb5aed606fffb5bcf8f1b494bbe5 (patch)
tree13043892b449620aed1491b560632b769676dba1
parent6e93e611c8f64c38d83e5ebd45abb59913c22dcc (diff)
downloadopenttd-b759ccd0324cbb5aed606fffb5bcf8f1b494bbe5.tar.xz
(svn r14604) -Codechange: Simplify a function and rename it, and fix some comments.
-rw-r--r--src/industry_cmd.cpp2
-rw-r--r--src/station_cmd.cpp52
-rw-r--r--src/station_func.h2
3 files changed, 22 insertions, 34 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
index a9e73e270..28049348b 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -1966,7 +1966,7 @@ static void CanCargoServiceIndustry(CargoID cargo, Industry *ind, bool *c_accept
int WhoCanServiceIndustry(Industry* ind)
{
/* Find all stations within reach of the industry */
- StationSet stations = FindStationsAroundIndustryTile(ind->xy, ind->width, ind->height);
+ StationSet stations = FindStationsAroundTiles(ind->xy, ind->width, ind->height);
if (stations.size() == 0) return 0; // No stations found at all => nobody services
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 95ea6e750..13b0bd8a2 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -453,11 +453,11 @@ static void ShowRejectOrAcceptNews(const Station *st, uint num_items, CargoID *c
/**
* Get a list of the cargo types being produced around the tile (in a rectangle).
- * @param produced: Destination array of produced cargo
- * @param tile: Center of the search area
- * @param w: Width of the center
- * @param h: Height of the center
- * @param rad: Radius of the search area
+ * @param produced Destination array of produced cargo
+ * @param tile Northtile of area
+ * @param w X extent of the area
+ * @param h Y extent of the area
+ * @param rad Search radius in addition to the given area
*/
void GetProductionAroundTiles(AcceptedCargo produced, TileIndex tile,
int w, int h, int rad)
@@ -502,11 +502,11 @@ void GetProductionAroundTiles(AcceptedCargo produced, TileIndex tile,
/**
* Get a list of the cargo types that are accepted around the tile.
- * @param accepts: Destination array of accepted cargo
- * @param tile: Center of the search area
- * @param w: Width of the center
- * @param h: Height of the center
- * @param rad: Radius of the rectangular search area
+ * @param accepts Destination array of accepted cargo
+ * @param tile Center of the search area
+ * @param w X extent of area
+ * @param h Y extent of area
+ * @param rad Search radius in addition to given area
*/
void GetAcceptanceAroundTiles(AcceptedCargo accepts, TileIndex tile,
int w, int h, int rad)
@@ -2899,34 +2899,22 @@ CommandCost CmdRenameStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
}
/**
- * Find all (non-buoy) stations around an industry tile
+ * Find all (non-buoy) stations around a rectangular producer (industry, house, headquarter, ...)
*
- * @param tile: Center tile to search from
- * @param w: Width of the center
- * @param h: Height of the center
+ * @param tile North tile of producer
+ * @param w_prod X extent of producer
+ * @param h_prod Y extent of producer
*
* @return: Set of found stations
*/
-StationSet FindStationsAroundIndustryTile(TileIndex tile, int w, int h)
+StationSet FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod)
{
StationSet station_set;
- int w_prod; // width and height of the "producer" of the cargo
- int h_prod;
- int max_rad;
- if (_settings_game.station.modified_catchment) {
- w_prod = w;
- h_prod = h;
- w += 2 * MAX_CATCHMENT;
- h += 2 * MAX_CATCHMENT;
- max_rad = MAX_CATCHMENT;
- } else {
- w_prod = 0;
- h_prod = 0;
- w += 8;
- h += 8;
- max_rad = CA_UNMODIFIED;
- }
+ /* area to search = producer plus station catchment radius */
+ int max_rad = (_settings_game.station.modified_catchment ? MAX_CATCHMENT : CA_UNMODIFIED);
+ int w = w_prod + 2 * max_rad;
+ int h = h_prod + 2 * max_rad;
BEGIN_TILE_LOOP(cur_tile, w, h, tile - TileDiffXY(max_rad, max_rad))
cur_tile = TILE_MASK(cur_tile);
@@ -2982,7 +2970,7 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount)
uint best_rating1 = 0; // rating of st1
uint best_rating2 = 0; // rating of st2
- StationSet all_stations = FindStationsAroundIndustryTile(tile, w, h);
+ StationSet all_stations = FindStationsAroundTiles(tile, w, h);
for (StationSet::iterator st_iter = all_stations.begin(); st_iter != all_stations.end(); ++st_iter) {
Station *st = *st_iter;
diff --git a/src/station_func.h b/src/station_func.h
index 12f045d15..ebb41a40d 100644
--- a/src/station_func.h
+++ b/src/station_func.h
@@ -20,7 +20,7 @@ void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint rad
/** A set of stations (\c const \c Station* ) */
typedef std::set<Station*, PoolItemIndexLess<Station> > StationSet;
-StationSet FindStationsAroundIndustryTile(TileIndex tile, int w, int h);
+StationSet FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod);
void ShowStationViewWindow(StationID station);
void UpdateAllStationVirtCoord();