public bool Trigger(MenuStateTransition triggerType, Dictionary <string, object> payload = null) { switch (triggerType) { case MenuStateTransition.ShowOptions: if (currentState == MenuState.Menu) { TransitionTo(MenuState.Option, payload); return(true); } return(false); case MenuStateTransition.ShowMenu: if (currentState == MenuState.Option || currentState == MenuState.HighScore) { TransitionTo(MenuState.Menu, payload); return(true); } return(false); case MenuStateTransition.ShowHighScore: if (currentState == MenuState.Menu) { TransitionTo(MenuState.HighScore, payload); return(true); } return(false); default: throw new ArgumentOutOfRangeException(nameof(triggerType), triggerType, null); } }
public static async Task <int> Main(string[] args) { var defaultTransition = new MenuStateTransition(); var stateMachine = await FiniteStateMachine.Create(defaultTransition).ConfigureAwait(false); int exitCode = await stateMachine.StartLoop().ConfigureAwait(false); return(exitCode); }