Example #1
0
    void ConstructStateMachine()
    {
        // States.
        _fsm.AddState(States.Playing, new State()
        {
            enter = () => {
                Cursor.visible   = false;
                Cursor.lockState = CursorLockMode.Locked;

                _ambiance.FadeIn(_fadeTime);
                Time.timeScale = 1f;
            },
            exit = () => {
                Cursor.visible   = true;
                Cursor.lockState = CursorLockMode.None;
            }
        });

        _fsm.AddState(States.Paused, new State()
        {
            enter = () => {
                Time.timeScale = 0f;
                _gameUI.ShowPause();
                _ambiance.FadeTo(0.4f, _fadeTime);
            },
            exit = () => {
                _gameUI.HidePause();
                _ambiance.FadeIn(_fadeTime);
            },
        });

        _fsm.AddState(States.End, new State()
        {
            enter = () => {
                _gameUI.DropInWinScren();
                _ambiance.FadeTo(0.7f, _fadeTime);
            },
        });

        _fsm.AddTransition(States.Playing, States.Paused, Triggers.PausePressed);
        _fsm.AddTransition(States.Playing, States.End, Triggers.EndHappened);

        _fsm.AddTransition(States.Paused, States.Playing, Triggers.PausePressed);
        _fsm.AddTransition(States.Paused, States.End, Triggers.EndHappened);
    }