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);
            }
        }
Exemplo n.º 2
0
        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);
        }