public void AddScreen(Data.UI.Interfaces.IGameScreen screen, bool loaded = false)
 {
     screen.StateManager = this;
     if (_ready && !loaded)
     {
         screen.Initialize();
         screen.LoadContent();
     }
     if (screen.GetsInput)
     {
         screen.HasFocus = true;
         InputManager.RegisterScreen(screen);
         if (_gameScreens.Count > 0)
         {
             var oldScreen = _gameScreens.First;
             do
             {
                 oldScreen.Value.HasFocus = false;
                 oldScreen = oldScreen.Next;
             } while (oldScreen != null);
         }
     }
     if (screen.CoversOthers)
     {
         screen.HasFocus = true;
         if (_gameScreens.Count > 0)
         {
             var oldScreen = _gameScreens.First;
             do
             {
                 oldScreen.Value.IsCovered = true;
                 oldScreen = oldScreen.Next;
             } while (oldScreen != null);
         }
         _gameScreens.AddLast(screen);
     }
     else
         _gameScreens.AddBefore(_gameScreens.Last,screen);
 }