public void GetAttackableTiles() { foreach (GameObject tile in Tiles) { Tile t = tile.GetComponent <Tile>(); t.FindAttackNeighbors(JumpHeight); } if (!HasMoved && CurrentAction != SelectedAction.Attack) { if (AttackRange <= 1) { foreach (Tile tile in SelectableTiles) { tile.Reset(); tile.FindAttackNeighbors(JumpHeight); AttackableTiles.AddRange(tile.AdjacencyList); } } // Queue<Tile> process = new Queue<Tile>(); // process.Enqueue(CurrentTile); // CurrentTile.Visited = true; // while(process.Count > 0) // { // Tile t = process.Dequeue(); // AttackableTiles.Add(t); // if(t.Distance < (MoveDistance + AttackRange)) // { // foreach(Tile tile in t.AdjacencyList) // { // if(!tile.Visited) // { // tile.Parent = t; // tile.Visited = true; // tile.Distance = 1 + t.Distance; // process.Enqueue(tile); // } // } // } // } } else { Queue <Tile> process = new Queue <Tile>(); process.Enqueue(CurrentTile); CurrentTile.Visited = true; while (process.Count > 0) { Tile t = process.Dequeue(); AttackableTiles.Add(t); if (t.Distance < AttackRange) { foreach (Tile tile in t.AdjacencyList) { if (!tile.Visited) { tile.Parent = t; tile.Visited = true; tile.Distance = 1 + t.Distance; process.Enqueue(tile); } } } } } }