# HG changeset patch # User smatz # Date 2009-08-07 21:11:58 # Node ID 56107163608378478893e53aa4f9af33f8f93123 # Parent 28892ff3883e8eb737e71f7132773679a1cc0c71 (svn r17106) -Codechange: move computation of station's catchment rectagle to separate function diff --git a/src/station.cpp b/src/station.cpp --- a/src/station.cpp +++ b/src/station.cpp @@ -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(this->rect.left - catchment_radius, 0), + max(this->rect.top - catchment_radius, 0), + min(this->rect.right + catchment_radius, MapMaxX()), + min(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(this->rect.left - catchment_radius, 0), - max(this->rect.top - catchment_radius, 0), - min(this->rect.right + catchment_radius, MapMaxX()), - min(this->rect.bottom + catchment_radius, MapMaxY()) - }, + this->GetCatchmentRect(), &this->industries_near }; diff --git a/src/station_base.h b/src/station_base.h --- a/src/station_base.h +++ b/src/station_base.h @@ -101,6 +101,7 @@ public: static void RecomputeIndustriesNearForAll(); uint GetCatchmentRadius() const; + Rect GetCatchmentRect() const; /* virtual */ FORCEINLINE bool TileBelongsToRailStation(TileIndex tile) const {