private List <GridTile> GetAllowedSpawnTiles() { List <GridTile> candidateTiles = _currentGridInfo.GetEmptyTiles(); List <GridTile> anomalyTiles = _currentGridInfo.GetAnomalyTiles(); List <GridTile> neighbours1 = new List <GridTile>(); List <GridTile> neighbours2 = new List <GridTile>(); List <GridTile> allNeighbours = new List <GridTile>(); foreach (var tile in anomalyTiles) { foreach (var emptyNeighbour in tile.EmptyNeighbours) { neighbours1.Add(emptyNeighbour); allNeighbours.Add(emptyNeighbour); } } foreach (var tile in neighbours1) { foreach (var emptyNeighbour in tile.EmptyNeighbours) { neighbours2.Add(emptyNeighbour); allNeighbours.Add(emptyNeighbour); } } foreach (var tile in allNeighbours) { if (candidateTiles.Contains(tile)) { candidateTiles.Remove(tile); } } if (DeployManager.instance != null) { foreach (var tile in DeployManager.instance.GetAllDeployTouchingTiles()) { if (candidateTiles.Contains(tile)) { candidateTiles.Remove(tile); } } } else { Debug.LogError("WARNING : Could not find DeployManager"); } return(candidateTiles); }