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; } }
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); }
IEnumerator WaitAndFinish() { yield return(new WaitForSeconds(3)); FinishedTurn?.Invoke(this); }