/// <summary> /// Virtual method for performing the method. /// </summary> public virtual IEnumerator DoAction() { canGoToNextState = true; state = CombatantActionState.Waiting; while (state != CombatantActionState.Done) { if (canGoToNextState) { GoToNextState(); if (state == CombatantActionState.Done) { break; } } yield return StartCoroutine(StateUpdate()); } yield return null; }
void Start() { state = CombatantActionState.Waiting; StateUpdate = WaitingUpdate; }
protected void GoToNextState() { canGoToNextState = false; switch(state) { case CombatantActionState.Waiting: state = CombatantActionState.PrecastSetup; StateUpdate = PrecastSetupUpdate; break; case CombatantActionState.PrecastSetup: state = CombatantActionState.Precast; StateUpdate = PrecastUpdate; break; case CombatantActionState.Precast: state = CombatantActionState.Cast; StateUpdate = CastUpdate; break; case CombatantActionState.Cast: state = CombatantActionState.Done; break; default: break; } }