Beispiel #1
0
        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);
        }
Beispiel #4
0
        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();
            }
        }
Beispiel #5
0
        public void ChangeScreen(IScreen screen)
        {
            _screen?.Close();
            _world.Clear();

            _screen = screen;
            _screen.Initialize();
        }
Beispiel #6
0
        /// <inheritdoc />
        public void ChangeScreen <T>()
            where T : IScreen
        {
            IScreen screen = _screenFactory.Create(typeof(T));

            _screen?.Close();
            _world.Clear();

            _screen = screen;
            _screen.Initialize();
        }
Beispiel #7
0
        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;
            }
        }
Beispiel #8
0
 protected override void OnUnload(EventArgs e)
 {
     base.OnUnload(e);
     currentScreen.Close();
 }