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); }