public void Update() { //We iterate backwards here so that we can remove from the list more intuitvley and avoid concurent modifications. for (int i = Screens.Count() - 1; i >= 0; i--) { BaseScreen foundScreen = Screens[i]; if (foundScreen.State == ScreenState.Shutdown) { Screens.RemoveAt(i); } else { foundScreen.Focused = false; } } //Find the screen to focus on if (Screens.Count > 0) { for (int i = 0; i < Screens.Count; i++) { if (Screens[i].GrabFocus) { Screens[i].Focused = true; break; } } } PollInput(); //Update the appropriate screens for (int i = Screens.Count() - 1; i >= 0; i--) { BaseScreen foundScreen = Screens[i]; switch (foundScreen.State) { case ScreenState.Active: foundScreen.Update(); foundScreen.HandleInput(); break; case ScreenState.Frozen: foundScreen.Update(); break; case ScreenState.Background: foundScreen.Update(); break; case ScreenState.Hiding: foundScreen.Update(); foundScreen.HandleInput(); break; } } }
public static void Update() { PollInput(); if (currentScreen != null) { currentScreen.Update(); currentScreen.HandleInput(); } }