private void SwitchToNewState(MainMenuStates nextState) { CurentState?.ExitState(); CurentState = _availableStates[nextState]; CurentState?.EnterState(); OnStateChanged?.Invoke(CurentState); }
private void Update() { if (CurentState == null) { CurentState = _availableStates.Values.First(); CurentState.EnterState(); } MainMenuStates nextState = CurentState.Tick(); Debug.Log(CurentState); PreviousState = CurentState; if (nextState != MainMenuStates.Null && _availableStates[nextState]?.GetType() != CurentState?.GetType()) { SwitchToNewState(nextState); } }