public override void Update(GameTime gameTime) { if (!_game.IsActive) return; Input.Update(); Timers.Update(gameTime.ElapsedGameTime); foreach (GameScreen s in _screens) { if (s==_updateSkip) continue; s.UpdateAlways(gameTime); /*if (s.Enabled) s.Update(gameTime);*/ } int i=_screens.Count-1; while (!_screens[i].Enabled&&i>0){ i--; } _screens[i].Update(gameTime); _updateSkip=null; base.Update(gameTime); }
/// <summary> /// Add a new screen /// </summary> /// <param name="screen">GameScreen to add</param> /// <param name="name">Name for the screen</param> public void AddScreen(GameScreen screen,string name) { AddScreen(screen,name,false); }
/// <summary> /// Enable a GameScreen /// </summary> /// <param name="name">Screen name</param> public void EnableScreen(string name) { _updateSkip=_screens[_screenRef[name]]; _screens[_screenRef[name]].Enable(); }
/// <summary> /// Add a new screen /// </summary> /// <param name="screen">GameScreen to add</param> /// <param name="name">Name for the screen</param> /// <param name="enable">Enable the screen</param> public void AddScreen(GameScreen screen,string name,bool enable) { screen.spriteBatch=spriteBatch; screen.Manager=this; _screens.Add(screen); _screenRef[name]=_screens.Count-1; screen.Initialise(); if (_contentLoaded) screen.LoadContent(); if (!enable) screen.Disable(); }