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); }