Пример #1
0
    /// <summary>
    /// Moves the permanent based on its movement stats
    /// </summary>
    /// <param name="permanent">Permanent to make move</param>
    private static void Move(CreatureStats permanent)
    {
        MapPosition from = permanent.GridPosition;

        permanentMap[permanent.GridPosition.x, permanent.GridPosition.y] = null;

        MapPosition to = permanent.GetForward();

        permanentMap[to.x, to.y] = permanent;
        permanent.GridPosition   = to;

        permanent.GetComponent <Animator>().SetBool("IsWalking", true);

        // Move it and set animating state
        LeanTween.move(permanent.gameObject, GridToWorld(to), AnimationMoveDuration).
        setOnComplete(() =>
        {
            if (!permanent)
            {
                return;
            }
            permanent.GetComponent <Animator>().SetBool("IsWalking", false);
        });

        StateManager.RegisterAnimation(AnimationMoveDuration);
        //permanent.transform.position = GridToWorld(to);

        EventManager.InvokePermanentMoved(permanent, from, to);
    }
Пример #2
0
    // Does a creature's combat turn
    private static void ActPermanent(CreatureStats permanent)
    {
        if (CanAttackAnything(permanent))
        {
            Attack(permanent);
            return;
        }


        if (permanent.CanMove())
        {
            int movesLeft = (int)permanent.Speed;

            for (int i = 0; i < movesLeft; i++)
            {
                if (CanAttackAnything(permanent))
                {
                    Attack(permanent);
                    return;
                }
                CreatureStats inFront = GetCreatureAt(permanent.GetForward());
                if (!inFront)
                {
                    Move(permanent);
                }
            }
        }
    }