Changeset - r23626:1b725faf28d7
[Not reviewed]
master
0 2 0
PeterN - 5 years ago 2019-04-16 19:30:07
peter@fuzzle.org
Fix #7235: Ensure catchment area of neutral station covers entire industry. (#7518)
2 files changed with 13 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/bitmap_type.h
Show inline comments
 
@@ -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.
src/station.cpp
Show inline comments
 
@@ -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) {
0 comments (0 inline, 0 general)