private void ChangeScreen(IScreen screen) { if (screen == null) { throw new ArgumentNullException(nameof(screen)); } current.Close(); current = screen; current.Resize(App.Window.ClientSize); current.Show(); }
public IScreen Pop() { if (m_ActiveScreens.Count == 0) { return(null); } IScreen screen = m_ActiveScreens.Pop(); if (screen != null) { screen.Close(); screen.GetGameObject().SetActive(false); } if (m_ActiveScreens.Count > 0) { IScreen currentScreen = m_ActiveScreens.Peek(); if (currentScreen != null) { currentScreen.Open(); currentScreen.GetGameObject().SetActive(true); } } return(screen); }
public T Push <T>() where T : IScreen { T screen = default(T); for (int i = 0; i < m_AvailableScreens.Length; i++) { if (m_AvailableScreens[i].GetType() == typeof(T)) { screen = (T)m_AvailableScreens[i]; if (!m_ActiveScreens.Contains(screen)) { if (m_ActiveScreens.Count > 0) { IScreen currentScreen = m_ActiveScreens.Peek(); if (currentScreen != null) { currentScreen.Close(); currentScreen.GetGameObject().SetActive(false); } } m_ActiveScreens.Push(screen); screen.GetGameObject().SetActive(true); screen.Open(); } else { Debug.LogWarning("ScreenManager.Push(): The screen is already in the stack: " + screen); } break; } } return(screen); }
public virtual void Close(IScreen screenToBeClosed) { //Debug.LogError("Close last screen"); if (m_screenStack.Count == 0 || m_screenStack.Peek() != screenToBeClosed) { if (!m_screenStack.Contains(screenToBeClosed)) { screenToBeClosed.Close(); } return; } if (m_screenStack.Count > 0) { var screen = m_screenStack.Pop(); screen.Close(); } if (m_screenStack.Count > 0) { var screen = m_screenStack.Peek(); screen.Reopen(); if (!(screen is IForm)) { m_uiEngine.RefreshDesktopMode(); } //Debug.LogError("opening: " + screen.Gameobject.name); } else { m_uiEngine.RefreshDesktopMode(); } }
public void ChangeScreen(IScreen screen) { _screen?.Close(); _world.Clear(); _screen = screen; _screen.Initialize(); }
/// <inheritdoc /> public void ChangeScreen <T>() where T : IScreen { IScreen screen = _screenFactory.Create(typeof(T)); _screen?.Close(); _world.Clear(); _screen = screen; _screen.Initialize(); }
public virtual void Unblock() { m_screensRoot.localScale = m_screenRootScale; if (m_blocker != null) { m_blocker.Close(); } m_blocker = null; if (m_screenStack.Count > 0) { m_screenStack.Peek().Reopen(); } if (m_screenStack.Count == 0) { m_menuOff = true; } }
protected override void OnUnload(EventArgs e) { base.OnUnload(e); currentScreen.Close(); }