예제 #1
0
        public override void Update()
        {
            switch (CurrentState)
            {
            case BattlePlayerState.Waiting:
                if (this.shouldAct)
                {
                    CurrentState = BattlePlayerState.FirstAction;
                }
                break;

            case BattlePlayerState.FirstAction:
                if (hasFinishedAction)
                {
                    CurrentState      = BattlePlayerState.SecondAction;
                    hasFinishedAction = false;
                }
                break;

            case BattlePlayerState.SecondAction:
                if (hasFinishedAction)
                {
                    CurrentState      = BattlePlayerState.Waiting;
                    hasFinishedAction = false;
                    if (FinishedTurn != null)
                    {
                        FinishedTurn.Invoke();
                    }
                    shouldAct = false;
                }
                break;
            }
        }
예제 #2
0
    private IEnumerator ProcessTurn()
    {
        while (actionPoints.CurrentActionPoints > 0)
        {
            // Debug.Log("Processing AI - " + name);
            if (lifeSystem.IsDead)
            {
                break;
            }

            bool hasAction = StartBestAction();

            if (hasAction)
            {
                yield return(new WaitWhile(() => { return ExecutingAction; }));
            }
            else
            {
                break;
            }
        }

        FinishedTurn?.Invoke(this);
    }
예제 #3
0
    IEnumerator WaitAndFinish()
    {
        yield return(new WaitForSeconds(3));

        FinishedTurn?.Invoke(this);
    }