/// <summary> /// Konstruktor zur Erstellung einer Singletoninstanz. /// </summary> private ScreenManager() { Dimensions = new Vector2(640, 480); currentScreen = new GameplayScreen(); lastScreens = new Stack<Screen>(); ScreenChanged = false; }
public void LoadContent(ContentManager content) { this.Content = new ContentManager(content.ServiceProvider, "Content"); XmlManager<Screen> screenLoader = new XmlManager<Screen>(); currentScreen = screenLoader.Load("Load/Screens/TitleMenuScreen.xml"); currentScreen.LoadContent(); }
/// <summary> /// Ändert den aktuelle Screen zu einem anderen. Ist der Pfad leer wird der letzte Screen vor dem jetzigen genutzt. /// </summary> /// <param name="path">der Pfad zum neuen Screen</param> public void ChangeScreen(string path = "") { // Wenn der Pfad leer ist, wird der letzte Screen genommen if(path == String.Empty && lastScreens.Count != 0) { currentScreen.UnloadContent(); currentScreen = lastScreens.Pop(); } else if(path != String.Empty) { // Ob der Bildschirm in den Stack kann. if(currentScreen.Stackable) lastScreens.Push(currentScreen); else currentScreen.UnloadContent(); XmlManager<Screen> screenLoader = new XmlManager<Screen>(); currentScreen = screenLoader.Load(path); currentScreen.LoadContent(); ScreenChanged = true; // Ob der Bildschirm nur alleine existieren kann. if(currentScreen.SinglyScreen) { foreach(Screen screen in lastScreens) screen.UnloadContent(); lastScreens.Clear(); } } }