Exemple #1
0
        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;
                }
            }
        }
Exemple #2
0
 public static void Update()
 {
     PollInput();
     if (currentScreen != null)
     {
         currentScreen.Update();
         currentScreen.HandleInput();
     }
 }