Exemplo n.º 1
0
 //set all screens back to their original state
 public static void ResumeAll()
 {
     for (int i = Screens.Count() - 1; i >= 0; i--)
     {
         BaseScreen foundScreen = Screens[i];
         if (foundScreen.Overridable)
         {
             foundScreen.State = foundScreen.LastState;
         }
     }
 }
Exemplo n.º 2
0
 //Find if a screen is loaded
 public static bool Find(string name)
 {
     for (int i = Screens.Count() - 1; i >= 0; i--)
     {
         BaseScreen foundScreen = Screens[i];
         if (name == foundScreen.Name)
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 3
0
 //remove a screen
 public static void RemoveScreen(string screen)
 {
     for (int i = Screens.Count() - 1; i >= 0; i--)
     {
         BaseScreen foundScreen = Screens[i];
         if (foundScreen.Name == screen)
         {
             foundScreen.Remove();
             break;
         }
     }
 }
Exemplo n.º 4
0
 //Manually set the state of a screen from another screen
 public static void SetState(ScreenState State, string name)
 {
     for (int i = Screens.Count() - 1; i >= 0; i--)
     {
         BaseScreen foundScreen = Screens[i];
         if (name.Equals(foundScreen.Name))
         {
             foundScreen.State = State;
             foundScreen.OnStateChange();
         }
     }
 }
Exemplo n.º 5
0
        //Manually set the state of a screen from another screen
        public static void SetActive(string id)
        {
            BaseScreen nextScreen = Find(id);

            if (nextScreen != null)
            {
                if (currentScreen != null)
                {
                    currentScreen.Unload();
                }
                currentScreen = nextScreen;
                currentScreen.Load();
            }
        }
Exemplo n.º 6
0
 //set all screens to frozen if overridable, exception for focused screen
 public static void FreezeAll(string exception)
 {
     for (int i = Screens.Count() - 1; i >= 0; i--)
     {
         BaseScreen foundScreen = Screens[i];
         if (foundScreen.Name != exception)
         {
             if (foundScreen.Overridable)
             {
                 foundScreen.LastState = foundScreen.State;
                 foundScreen.State     = ScreenState.Frozen;
             }
         }
     }
 }
Exemplo n.º 7
0
 //MURDER all screens, option to force if overridable doesn't matter(ex. game over), also option for exception so you don't delete all your screens
 public static void KillAll(bool force, string exception)
 {
     for (int i = Screens.Count() - 1; i >= 0; i--)
     {
         BaseScreen foundScreen = Screens[i];
         if (foundScreen.Name != exception)
         {
             if (force)
             {
                 foundScreen.State = ScreenState.Shutdown;
             }
             else
             {
                 if (foundScreen.Overridable)
                 {
                     foundScreen.State = ScreenState.Shutdown;
                 }
             }
         }
     }
 }
Exemplo n.º 8
0
        public static void PollInput()
        {
            MouseState mouseState = Mouse.GetState();

            if (mouseState.LeftButton == ButtonState.Pressed && !lmbClicked)
            {
                lmbClicked = true;
                for (int i = Screens.Count() - 1; i >= 0; i--)
                {
                    BaseScreen foundScreen = Screens[i];
                    if (foundScreen.State == ScreenState.Active)
                    {
                        foundScreen.OnClick(true, mouseState.X, mouseState.Y);
                    }
                }
            }
            else if (mouseState.LeftButton != ButtonState.Pressed && lmbClicked)
            {
                lmbClicked = false;
            }

            if (mouseState.RightButton == ButtonState.Pressed && !rmbClicked)
            {
                rmbClicked = true;
                for (int i = Screens.Count() - 1; i >= 0; i--)
                {
                    BaseScreen foundScreen = Screens[i];
                    if (foundScreen.State == ScreenState.Active)
                    {
                        foundScreen.OnClick(false, mouseState.X, mouseState.Y);
                    }
                }
            }
            else if (mouseState.RightButton != ButtonState.Pressed && rmbClicked)
            {
                rmbClicked = false;
            }
        }
Exemplo n.º 9
0
 //Add a new screen
 public static void AddScreen(BaseScreen screen)
 {
     Screens.Add(screen);
 }
Exemplo n.º 10
0
 //Add a new screen
 public static void RegisterScreen(BaseScreen screen)
 {
     Screens.Add(screen);
 }
Exemplo n.º 11
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;

                case ScreenState.Paused:
                    foundScreen.HandleInput();
                    break;
                }
            }
        }