public void RemoveScreen(gameScreen s) { if (isInitialized) { s.UnloadContent(); } screens.Remove(s); screensToUpdate.Remove(s); }
public void AddScreen(gameScreen s, PlayerIndex?thisPlayerr) { s.thisPlayer = thisPlayerr; s.SManager = this; s.exiting = false; if (isInitialized) { s.LoadContent(); } screens.Add(s); }
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(); } }