summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bitmap_type.h11
-rw-r--r--src/station.cpp4
2 files changed, 13 insertions, 2 deletions
diff --git a/src/bitmap_type.h b/src/bitmap_type.h
index 3c9c4afbd..655c8f3ba 100644
--- a/src/bitmap_type.h
+++ b/src/bitmap_type.h
@@ -57,7 +57,7 @@ public:
* Initialize the BitmapTileArea with the specified Rect.
* @param rect Rect to use.
*/
- void Initialize(Rect r)
+ void Initialize(const Rect &r)
{
this->tile = TileXY(r.left, r.top);
this->w = r.right - r.left + 1;
@@ -66,6 +66,15 @@ public:
this->data.resize(Index(w, h));
}
+ void Initialize(const TileArea &ta)
+ {
+ this->tile = ta.tile;
+ this->w = ta.w;
+ this->h = ta.h;
+ this->data.clear();
+ this->data.resize(Index(w, h));
+ }
+
/**
* Add a tile as part of the tile area.
* @param tile Tile to add.
diff --git a/src/station.cpp b/src/station.cpp
index 85603a38c..e8ae1bc20 100644
--- a/src/station.cpp
+++ b/src/station.cpp
@@ -421,10 +421,10 @@ void Station::RecomputeCatchment()
this->catchment_tiles.Reset();
return;
}
- this->catchment_tiles.Initialize(GetCatchmentRect());
if (!_settings_game.station.serve_neutral_industries && this->industry != nullptr) {
/* Station is associated with an industry, so we only need to deliver to that industry. */
+ this->catchment_tiles.Initialize(this->industry->location);
TILE_AREA_LOOP(tile, this->industry->location) {
if (IsTileType(tile, MP_INDUSTRY) && GetIndustryIndex(tile) == this->industry->index) {
this->catchment_tiles.SetTile(tile);
@@ -440,6 +440,8 @@ void Station::RecomputeCatchment()
return;
}
+ this->catchment_tiles.Initialize(GetCatchmentRect());
+
/* Loop finding all station tiles */
TileArea ta(TileXY(this->rect.left, this->rect.top), TileXY(this->rect.right, this->rect.bottom));
TILE_AREA_LOOP(tile, ta) {