diff --git a/CoroutineUtils.cs b/CoroutineUtils.cs index a8f88ce..a91c31c 100644 --- a/CoroutineUtils.cs +++ b/CoroutineUtils.cs @@ -27,6 +27,7 @@ namespace NEG.Utils action?.Invoke(); } + public static void ActionAfterEndOfFrame(this MonoBehaviour mono, Action action) => mono.StartCoroutine(ActionAtNextFrame(action)); public static IEnumerator ActionAfterEndOfFrame(Action action) { yield return WaitForEndOfFrame; diff --git a/NEG/UI/UiManager.cs b/NEG/UI/UiManager.cs index 1be26f6..68d7efe 100644 --- a/NEG/UI/UiManager.cs +++ b/NEG/UI/UiManager.cs @@ -150,19 +150,13 @@ namespace NEG.UI public virtual void Dispose() => Instance = null; - public void SetMainWindow(IWindow window) => mainWindows.Add(window); + public void SetMainWindow(IWindow window) => mainWindows.Add(window); public void MainWindowClosed(IWindow window) => mainWindows.Remove(window); - public void OnWindowClosed(IWindow window) - { - if(CurrentMainWindow != window) - return; - - MainWindowClosed(window); - //TODO: select new main window - } + public void OnWindowClosed(IWindow window) => MainWindowClosed(window); + //TODO: select new main window protected void PopupClosed(PopupData data) { if (currentShownPopup.data != data) diff --git a/NEG/UI/UnityUi/Area/CloseMainWindowOnBack.cs b/NEG/UI/UnityUi/Area/CloseMainWindowOnBack.cs index 1334558..b7211c5 100644 --- a/NEG/UI/UnityUi/Area/CloseMainWindowOnBack.cs +++ b/NEG/UI/UnityUi/Area/CloseMainWindowOnBack.cs @@ -12,7 +12,7 @@ namespace NEG.UI.Area protected override void OnBackUsed(IControllable.BackUsed backUsed) { base.OnBackUsed(backUsed); - UiManager.Instance.CurrentMainWindow.Close(); + UiManager.Instance.CurrentMainWindow?.Close(); backUsed.Used = true; } } diff --git a/NEG/UI/UnityUi/Area/MonoArea.cs.meta b/NEG/UI/UnityUi/Area/MonoArea.cs.meta index 958b733..883d00d 100644 --- a/NEG/UI/UnityUi/Area/MonoArea.cs.meta +++ b/NEG/UI/UnityUi/Area/MonoArea.cs.meta @@ -1,3 +1,11 @@ -fileFormatVersion: 2 +fileFormatVersion: 2 guid: 39eb59ca1ef60934abb3f0c64169be65 -timeCreated: 1670707479 \ No newline at end of file +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 10 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NEG/UI/UnityUi/MonoUiInputManger.cs b/NEG/UI/UnityUi/MonoUiInputManger.cs index 202a724..dfff504 100644 --- a/NEG/UI/UnityUi/MonoUiInputManger.cs +++ b/NEG/UI/UnityUi/MonoUiInputManger.cs @@ -22,6 +22,8 @@ namespace NEG.UI.UnityUi { var defaultActions = new DefaultInputActions(); InputActionReference.Create(defaultActions.UI.Navigate).action.performed += (ctx) => OnSelectionChangeStarted(); + InputActionReference.Create(defaultActions.UI.Cancel).action.performed += + (_) => UiManager.Instance.UseBack(); defaultActions.Enable(); if (Gamepad.current != null) diff --git a/NEG/UI/UnityUi/Window/MonoWindow.cs b/NEG/UI/UnityUi/Window/MonoWindow.cs index e1f0dfc..6536f7c 100644 --- a/NEG/UI/UnityUi/Window/MonoWindow.cs +++ b/NEG/UI/UnityUi/Window/MonoWindow.cs @@ -23,6 +23,8 @@ namespace NEG.UI.UnityUi.Window public IWindowSlot Parent { get; private set; } public bool IsMainWindow { get; private set; } + + public bool IsOpened { get; protected set; } private IWindowSlot DefaultWindowSlot => windowSlots[0]; public GameObject DefaultSelectedItem => defaultSelectedItem; @@ -34,6 +36,7 @@ namespace NEG.UI.UnityUi.Window public void SetOpenedState(IWindowSlot parentSlot, object data) { gameObject.SetActive(true); + IsOpened = true; Parent = parentSlot; EventSystem.current.SetSelectedGameObject(defaultSelectedItem); if (parentSlot.OpenWindowAsMain) @@ -44,6 +47,7 @@ namespace NEG.UI.UnityUi.Window public void SetClosedState() { gameObject.SetActive(false); + IsOpened = false; Parent = null; ((ISlotsHolder)this).CloseAllWindows(); UiManager.Instance.OnWindowClosed(this); @@ -58,8 +62,10 @@ namespace NEG.UI.UnityUi.Window private void OnDestroy() { - if(gameObject.activeSelf) + if (IsOpened) + { UiManager.Instance.OnWindowClosed(this); + } } private void OnValidate() diff --git a/NEG/UI/UnityUi/Window/MonoWindow.cs.meta b/NEG/UI/UnityUi/Window/MonoWindow.cs.meta index d50bd3d..2e55018 100644 --- a/NEG/UI/UnityUi/Window/MonoWindow.cs.meta +++ b/NEG/UI/UnityUi/Window/MonoWindow.cs.meta @@ -4,7 +4,7 @@ MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] - executionOrder: 10 + executionOrder: 11 icon: {instanceID: 0} userData: assetBundleName: