diff options
author | peter1138 <peter1138@openttd.org> | 2009-01-13 20:43:53 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2009-01-13 20:43:53 +0000 |
commit | 4585d9785da5d93e9b7d99daa02f4e6aa6dd21c3 (patch) | |
tree | 4f3979be8f4424ca7b44a2e80ec1de5621a609c9 /src | |
parent | f70b4c5ae448e8775883007af1baa32084957f73 (diff) | |
download | openttd-4585d9785da5d93e9b7d99daa02f4e6aa6dd21c3.tar.xz |
(svn r15073) -Fix (r15067) [FS#2532]: Default copy constructors don't necessarily do what you want. Instead of creating one, we now pass a pointer around as that avoids additional allocations.
Diffstat (limited to 'src')
-rw-r--r-- | src/ai/api/ai_industry.cpp | 4 | ||||
-rw-r--r-- | src/industry_cmd.cpp | 3 | ||||
-rw-r--r-- | src/station_cmd.cpp | 11 | ||||
-rw-r--r-- | src/station_func.h | 2 |
4 files changed, 10 insertions, 10 deletions
diff --git a/src/ai/api/ai_industry.cpp b/src/ai/api/ai_industry.cpp index 9a09d5ecd..068a92865 100644 --- a/src/ai/api/ai_industry.cpp +++ b/src/ai/api/ai_industry.cpp @@ -123,7 +123,9 @@ if (!IsValidIndustry(industry_id)) return -1; Industry *ind = ::GetIndustry(industry_id); - return (int32)::FindStationsAroundTiles(ind->xy, ind->width, ind->height).Length(); + StationList stations; + ::FindStationsAroundTiles(ind->xy, ind->width, ind->height, &stations); + return (int32)stations.Length(); } /* static */ int32 AIIndustry::GetDistanceManhattanToTile(IndustryID industry_id, TileIndex tile) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 5fd794275..3c3117095 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1992,7 +1992,8 @@ static void CanCargoServiceIndustry(CargoID cargo, Industry *ind, bool *c_accept int WhoCanServiceIndustry(Industry *ind) { /* Find all stations within reach of the industry */ - StationList stations = FindStationsAroundTiles(ind->xy, ind->width, ind->height); + StationList stations; + FindStationsAroundTiles(ind->xy, ind->width, ind->height, &stations); if (stations.Length() == 0) return 0; // No stations found at all => nobody services diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 9c3529390..8085af255 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2940,10 +2940,8 @@ CommandCost CmdRenameStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, * * @return: Set of found stations */ -StationList FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod) +void FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod, StationList *stations) { - StationList stations; - /* 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; @@ -2989,11 +2987,9 @@ StationList FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod) /* Insert the station in the set. This will fail if it has * already been added. */ - stations.Include(st); + stations->Include(st); END_TILE_LOOP(cur_tile, w, h, tile - TileDiffXY(max_rad, max_rad)) - - return stations; } uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount) @@ -3003,7 +2999,8 @@ 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 - StationList all_stations = FindStationsAroundTiles(tile, w, h); + StationList all_stations; + FindStationsAroundTiles(tile, w, h, &all_stations); for (Station **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 d65f0ff07..7e548835a 100644 --- a/src/station_func.h +++ b/src/station_func.h @@ -18,7 +18,7 @@ void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius); typedef SmallVector<Station*, 1> StationList; -StationList FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod); +void FindStationsAroundTiles(TileIndex tile, int w_prod, int h_prod, StationList *stations); void ShowStationViewWindow(StationID station); void UpdateAllStationVirtCoord(); |