예제 #1
0
    // Update is called once per frame
    void Update()
    {
        if (destroy)
        {
            RemoveUnit();
            return;
        }


        if (!turn)
        {
            return;
        }

        switch (state)
        {
        case UnitState.SelectingDestination:
            //animator.speed = 1;
            //cursor.state = CursorState.SelectingUnit;
            break;

        case UnitState.Moving:
            //animator.speed = 2;
            cursor.state = CursorState.Inactive;
            Move();
            break;

        case UnitState.AwaitingChoice:
            //animator.speed = 1;
            cursor.state = CursorState.AwaitingChoice;
            break;

        case UnitState.SelectingTarget:
            //animator.speed = 1;
            if (cursor.state == CursorState.AwaitingChoice)
            {
                TurnToFace(combatTarget.pos);
            }
            break;

        case UnitState.Attacking:
            switch (currentAttack)
            {
            case AttackType.Cripple:

                combatTarget.TakeDamage(currentAttack, Strength);
                break;

            case AttackType.Impair:

                combatTarget.TakeDamage(currentAttack, Energy);
                break;

            case AttackType.Weaken:

                combatTarget.TakeDamage(currentAttack, Energy);
                break;
            }
            //TODO: add delay
            state = UnitState.EndingPhase;

            break;

        case UnitState.EndingPhase:
            //animator.speed = 1;
            cursor.ResetCursor();
            combatTarget = null;
            state        = UnitState.SelectingDestination;
            UpdatePosition();
            done = false;
            TempTurnManager.EndPhase();
            break;
        }
    }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        if (destroy)
        {
            RemoveUnit();
            return;
        }


        if (!turn)
        {
            return;
        }

        switch (state)
        {
        case UnitState.SelectingDestination:
            //animator.speed = 1;
            if (!done)
            {
                StartCoroutine(SelectingDestinationCoroutine());
            }

            break;

        case UnitState.Moving:
            //animator.speed = 2;
            Move();

            break;

        case UnitState.AwaitingChoice:
            //animator.speed = 1;
            if (!done)
            {
                StartCoroutine(AwaitingChoiceCoroutine());
            }
            break;

        case UnitState.SelectingTarget:
            //animator.speed = 1;
            //combatTarget = GetCombatTarget();

            if (combatTarget != null)
            {
                TurnToFace(combatTarget.pos);
                currentAttack = Utilities.Choose <AttackType>(attackTypes);
                state         = UnitState.Attacking;
            }
            else
            {
                state = UnitState.EndingPhase;
            }
            break;

        case UnitState.Attacking:

            if (combatTarget != null)
            {
                switch (currentAttack)
                {
                case AttackType.Cripple:

                    combatTarget.TakeDamage(currentAttack, Strength);
                    break;

                case AttackType.Impair:

                    combatTarget.TakeDamage(currentAttack, Energy);
                    break;

                case AttackType.Weaken:

                    combatTarget.TakeDamage(currentAttack, Energy);
                    break;
                }
                combatTarget = null;
            }

            if (!done)
            {
                StartCoroutine(AttackingCoroutine());
            }

            break;

        case UnitState.EndingPhase:
            //animator.speed = 1;
            combatTarget = null;
            state        = UnitState.SelectingDestination;
            UpdatePosition();
            done = false;
            TempTurnManager.EndPhase();
            break;
        }
    }