private void ApplyGroupingToAdjacents(OccupiedGridSquare square, IEnumerable <OccupiedGridSquare> usedSquares) { var adjacents = usedSquares.Where(other => other.Group == 0 && square.IsAdjacentTo(other)) .ToList(); adjacents.ForEach(sq => sq.Group = square.Group); adjacents.ForEach(sq => ApplyGroupingToAdjacents(sq, usedSquares)); }
public bool IsAdjacentTo(OccupiedGridSquare square) { var rowDistance = Math.Abs(square.Row - Row); if (rowDistance > 1) { return(false); } var columnDistance = Math.Abs(square.Column - Column); if (columnDistance > 1) { return(false); } return(rowDistance + columnDistance == 1); }