protected void EndDialog() { CurrentHandler?.End(); CurrentHandler = null; CurrentState = null; CurrentDialog.OnDialogEnd.Invoke(); CurrentDialog.CleanUp(); CurrentDialog = null; }
public void SwitchState(DialogState state) { if (state == null) { Debug.LogError("Theres no state to switch to", CurrentState); Exit(); } NextState = state; }
protected override void OnTick() { if (IsExiting) { ReturnToPreviousState(); return; } if (NextState) { CurrentHandler?.End(); CurrentHandler = null; var handler = AllHandlers.FirstOrDefault(h => h.Supports(NextState)); if (handler != null) { CurrentState = NextState; CurrentHandler = handler; NextState = null; CurrentHandler.Begin(); } else { Debug.LogError("Unable to handle state", CurrentState); ReturnToPreviousState(); } } else { if (CurrentHandler != null) { CurrentHandler.Tick(); } } }
public override bool Supports(DialogState state) { return(state is TState); }
public abstract bool Supports(DialogState state);