public MainMenuState() { files = Enumerable.Range(0, 3).Select((i) => new FileSubstate(i)).ToArray(); _selector = new MenuSelector(); _selector.Play("enabledRight"); _lastState = _menuState; UpdateEntities = false; _state = new StateMachineBuilder() .State("Normal") .Enter((state) => { SetLabels(); StateChanged(); }) .Update((state, t) => { if (!_inSubstate && KeyInput.JustPressedRebindableKey(KeyFunctions.Cancel)) { SoundManager.PlayPitchedSoundEffect("pause_sound", -0.1f); ChangeStateEvent(AnodyneGame.GameState.TitleScreen); } else if (!_inSubstate) { BrowseInput(); } else { _substate.HandleInput(); } if (_lastState != _menuState) { StateChanged(); } }) .Condition(() => _substate.Exit, (state) => { if (_substate is FileSubstate s) { if (s.LoadedSave) { SoundManager.PlaySoundEffect("menu_select"); isNewSave = s.NewSave; _state.ChangeState("FadeOut"); return; } else if (s.RefreshSaves) { files = Enumerable.Range(0, 3).Select((i) => new FileSubstate(i)).ToArray(); } } _inSubstate = false; _substate.Exit = false; _selector.Play("enabledRight"); }) .End() .State("FadeOut") .Update((state, t) => GlobalState.black_overlay.ChangeAlpha(0.72f)) .Condition(() => GlobalState.black_overlay.alpha == 1, (state) => ChangeStateEvent(isNewSave ? AnodyneGame.GameState.Intro : AnodyneGame.GameState.Game)) .End() .Build(); _state.ChangeState("Normal"); }