/// <summary> /// Exits and unloads /// </summary> internal void Exit(Action then) { _then = then; this._state = GameStageState.TransitionOff; //this.OutTransition = this.OutTransition ?? ImmediateTransition.Out(); //this.OutTransition.Start(() => //{ // this._state = GameStageState.Hidden; // this.UnloadContent(); //}); }
/// <summary> /// Performs initial load. /// </summary> internal void Load(object param) { this.Param = param; this.LoadContent(); this.Initialize(); this._state = GameStageState.TransitionOn; this.fader = new Texture2D(SpriteBatch.GraphicsDevice, 1, 1); Color[] texData = new Color[1]; texData[0] = Color.Black; this.fader.SetData <Color>(texData); //this.InTransition = this.InTransition ?? ImmediateTransition.In(); //this.InTransition.Start(() => //{ // this._state = GameStageState.Active; //}); }
/// <summary> /// Update GmeObjects. /// </summary> /// <param name="gameTime"></param> internal void Update(IGameTime gameTime) { if (_first) { _first = false; return; } PreUpdate(); switch (_state) { case GameStageState.Active: DoToAllGameObjects(go => go.Update(gameTime)); UpdatePhysics(gameTime); break; case GameStageState.TransitionOn: if (alpha > 0 && !SkipFade) { alpha -= 2; alpha = MathHelper.Clamp(alpha, 0, 255); } else { _state = GameStageState.Active; } //this.InTransition.Update(gameTime); break; case GameStageState.TransitionOff: if (alpha < 255 && !SkipFade) { alpha += 2; alpha = MathHelper.Clamp(alpha, 0, 255); } else { _then.Invoke(); _state = GameStageState.Hidden; } //this.OutTransition.Update(gameTime); break; } }