Esempio n. 1
0
 public void MoveTo(DirectionType direction)
 {
     for (int i = 0; i < currentTile.Neighbors.Count; i++)
     {
         if (currentTile.Neighbors[i].direction == direction && currentTile.Neighbors[i].tile.content != TileContentType.Character)
         {
             currentTile.content   = TileContentType.Empty;
             currentTile.character = null;
             currentTile           = currentTile.Neighbors[i].tile;
             state = CharacterSate.Moving;
             onMove.Invoke();
             break;
         }
     }
 }
Esempio n. 2
0
    //[Button]
    void Update()
    {
        if (isTurn && !isLocked)
        {
            if (state == CharacterSate.Moving)
            {
                if (currentTile.transform.position != transform.position)
                {
                    Move();
                    arrows.HideArrows();
                    hasMoved = true;
                }
                else
                {
                    CollectPickUp();
                    WaitIfNotAttack();
                }
            }
            else if (state == CharacterSate.Waiting)
            {
                WaitIfNotAttack();

                if (type == CharacterType.Player)
                {
                    arrows.ShowArrows(currentTile);
                }
                else if (type == CharacterType.IA)
                {
                    MoveTo((DirectionType)Random.Range(0, 4));
                }
            }
            else if (state == CharacterSate.Fighting)
            {
                arrows.HideArrows();
            }
        }
        else
        {
            transform.position = currentTile.transform.position;
            state = CharacterSate.Waiting;
            arrows.HideArrows();
            enemy    = null;
            attack   = settings.Attack;
            hasMoved = false;
        }
    }
Esempio n. 3
0
    void WaitIfNotAttack()
    {
        state = CharacterSate.Waiting;

        if (hasMoved)
        {
            enemy = EnemyNear();

            if (enemy != null)
            {
                state    = CharacterSate.Fighting;
                hasMoved = false;
                onAttack.Invoke();
            }
        }
        else
        {
            enemy = null;
        }
    }