OpenRA.Map.FindTilesInAnnulus C# (CSharp) Method

FindTilesInAnnulus() public method

public FindTilesInAnnulus ( OpenRA.CPos center, int minRange, int maxRange, bool allowOutsideBounds = false ) : IEnumerable
center OpenRA.CPos
minRange int
maxRange int
allowOutsideBounds bool
return IEnumerable
        public IEnumerable<CPos> FindTilesInAnnulus(CPos center, int minRange, int maxRange, bool allowOutsideBounds = false)
        {
            if (maxRange < minRange)
                throw new ArgumentOutOfRangeException("maxRange", "Maximum range is less than the minimum range.");

            if (maxRange >= Grid.TilesByDistance.Length)
                throw new ArgumentOutOfRangeException("maxRange",
                    "The requested range ({0}) cannot exceed the value of MaximumTileSearchRange ({1})".F(maxRange, Grid.MaximumTileSearchRange));

            Func<CPos, bool> valid = Contains;
            if (allowOutsideBounds)
                valid = Tiles.Contains;

            for (var i = minRange; i <= maxRange; i++)
            {
                foreach (var offset in Grid.TilesByDistance[i])
                {
                    var t = offset + center;
                    if (valid(t))
                        yield return t;
                }
            }
        }