diff options
-rw-r--r-- | src/tilearea.cpp | 19 | ||||
-rw-r--r-- | src/tilearea_type.h | 2 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/tilearea.cpp b/src/tilearea.cpp index 29a164351..e6efd0559 100644 --- a/src/tilearea.cpp +++ b/src/tilearea.cpp @@ -94,6 +94,25 @@ bool TileArea::Intersects(const TileArea &ta) const } /** + * Does this tile area contain a tile? + * @param tile Tile to test for. + * @return True if the tile is inside the area. + */ +bool TileArea::Contains(TileIndex tile) const +{ + if (this->w == 0) return false; + + assert(this->w != 0 && this->h != 0); + + uint left = TileX(this->tile); + uint top = TileY(this->tile); + uint tile_x = TileX(tile); + uint tile_y = TileY(tile); + + return IsInsideBS(tile_x, left, this->w) && IsInsideBS(tile_y, top, this->h); +} + +/** * Clamp the tile area to map borders. */ void TileArea::ClampToMap() diff --git a/src/tilearea_type.h b/src/tilearea_type.h index 46a093fc6..5826ce116 100644 --- a/src/tilearea_type.h +++ b/src/tilearea_type.h @@ -48,6 +48,8 @@ struct TileArea { bool Intersects(const TileArea &ta) const; + bool Contains(TileIndex tile) const; + void ClampToMap(); /** |