コード例 #1
0
ファイル: Unit.cs プロジェクト: JMOatey/CapstoneProject
    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);
                        }
                    }
                }
            }
        }
    }