(svn r17106) -Codechange: move computation of station's catchment rectagle to separate function

This commit is contained in:
smatz 2009-08-07 21:11:58 +00:00
parent 33288c9d50
commit 39e145e586
2 changed files with 23 additions and 9 deletions

View File

@ -239,6 +239,27 @@ uint Station::GetCatchmentRadius() const
return ret;
}
/**
* Determines catchment rectangle of this station
* @return clamped catchment rectangle
*/
Rect Station::GetCatchmentRect() const
{
assert(!this->rect.IsEmpty());
/* Compute acceptance rectangle */
int catchment_radius = this->GetCatchmentRadius();
Rect ret = {
max<int>(this->rect.left - catchment_radius, 0),
max<int>(this->rect.top - catchment_radius, 0),
min<int>(this->rect.right + catchment_radius, MapMaxX()),
min<int>(this->rect.bottom + catchment_radius, MapMaxY())
};
return ret;
}
/** Rect and pointer to IndustryVector */
struct RectAndIndustryVector {
Rect rect;
@ -290,16 +311,8 @@ void Station::RecomputeIndustriesNear()
this->industries_near.Clear();
if (this->rect.IsEmpty()) return;
/* Compute acceptance rectangle */
int catchment_radius = this->GetCatchmentRadius();
RectAndIndustryVector riv = {
{
max<int>(this->rect.left - catchment_radius, 0),
max<int>(this->rect.top - catchment_radius, 0),
min<int>(this->rect.right + catchment_radius, MapMaxX()),
min<int>(this->rect.bottom + catchment_radius, MapMaxY())
},
this->GetCatchmentRect(),
&this->industries_near
};

View File

@ -101,6 +101,7 @@ public:
static void RecomputeIndustriesNearForAll();
uint GetCatchmentRadius() const;
Rect GetCatchmentRect() const;
/* virtual */ FORCEINLINE bool TileBelongsToRailStation(TileIndex tile) const
{