Example #1
0
        public void RemoveScreen(gameScreen s)
        {
            if (isInitialized)
            {
                s.UnloadContent();
            }

            screens.Remove(s);
            screensToUpdate.Remove(s);
        }
Example #2
0
        public void AddScreen(gameScreen s, PlayerIndex?thisPlayerr)
        {
            s.thisPlayer = thisPlayerr;
            s.SManager   = this;
            s.exiting    = false;

            if (isInitialized)
            {
                s.LoadContent();
            }

            screens.Add(s);
        }
Example #3
0
        public override void Update(GameTime gameTime)
        {
            input.Update();
            screensToUpdate.Clear();
            foreach (gameScreen s in screens)
            {
                screensToUpdate.Add(s);
            }

            bool otherScreenFocus   = !Game.IsActive;
            bool coveredOtherScreen = false;

            while (screensToUpdate.Count > 0)
            {
                gameScreen screen = screensToUpdate[screensToUpdate.Count - 1];

                screensToUpdate.RemoveAt(screensToUpdate.Count - 1);

                screen.Update(gameTime, otherScreenFocus, coveredOtherScreen);

                if (screen.state == screenState.On || screen.state == screenState.Active)
                {
                    if (!otherScreenFocus)
                    {
                        screen.HandleInput(input);

                        otherScreenFocus = true;
                    }

                    if (!screen.popsUp)
                    {
                        coveredOtherScreen = true;
                    }
                }
            }

            if (traceEnabled)
            {
                TraceScreens();
            }
        }