Example #1
0
 public void RemoveScreen(Data.UI.Interfaces.IGameScreen screen)
 {
     _gameScreens.Remove(screen);
     if (screen is IDrawable)
     {
         var dScreen = screen as IDrawable;
         dScreen.UnloadContent();
         if (dScreen.CoversOthers)
         {
             foreach (IDrawable oScreen in _gameScreens)
             {
                 oScreen.IsCovered = false;
                 oScreen.OnTop     = false;
             }
             if (_gameScreens.Last.Value is IDrawable)
             {
                 (_gameScreens.Last.Value as IDrawable).OnTop = true;
             }
         }
     }
     if (screen is IInputReciever)
     {
         if (_gameScreens.Count > 0)
         {
             if (_gameScreens.Last.Value is IInputReciever)
             {
                 (_gameScreens.Last.Value as IInputReciever).HasFocus = true;
             }
         }
     }
 }
 public void RemoveScreen(Data.UI.Interfaces.IGameScreen screen)
 {
     screen.UnloadContent();
     _gameScreens.Remove(screen);
     if (_gameScreens.Count > 1)
     {
         if (screen.CoversOthers)
         {
             var oldScreen = _gameScreens.Last;
             if (_gameScreens.Count > 1)
             {
                 do
                 {
                     if (oldScreen.Value.CoversOthers)
                     {
                         oldScreen.Value.IsCovered = false;
                         break;
                     }
                     oldScreen = oldScreen.Previous;
                 } while (oldScreen.Previous != null);
             }
         }
         if (screen.HasFocus)
         {
             var oldScreen = _gameScreens.Last;
             do
             {
                 if (oldScreen.Value.GetsInput)
                 {
                     oldScreen.Value.HasFocus = true;
                     break;
                 }
                 oldScreen = oldScreen.Previous;
             } while (oldScreen.Previous != null);
         }
     }
     else
     {
         var temp = _gameScreens.First;
         temp.Value.IsCovered = false;
         if (temp.Value.GetsInput)
         {
             temp.Value.HasFocus = true;
         }
     }
 }