private void LaunchItem(ItemBoard itemBoard) { var nextGameLogic = specialGenerator.Generate(Game, this, textureScale); var scene = new SpecialLaunchScene(Game, itemBoard) { SpecialName = nextGameLogic.SpecialName }; scene.AnimationFinished += (sender, e) => { gameLogic = nextGameLogic; specialRemainTime = new TimeSpan(0, 0, 7); MediaPlayer.Play(specialBgm); }; Game.SceneManager.Push(scene); }
public override void Initialize() { base.Initialize(); // load resources font = Game.Content.Load<SpriteFont>("PixelFont" + Game.DefaultFontSize); bigFont = Game.Content.Load<SpriteFont>("PixelFont" + 36); background = Game.Content.Load<Texture2D>("background"); hitSound = Game.Content.Load<SoundEffect>("hit"); missSound = Game.Content.Load<SoundEffect>("miss"); bgm = Game.Content.Load<Song>("bgm"); specialBgm = Game.Content.Load<Song>("special_bgm"); // setup components player = new Player(Game); components.Add(player); indicator = new Indicator(Game); indicators.Add(indicator); textureScale = Math.Max( Game.ScreenWidth / (double)background.Width, Game.ScreenHeight / (double)background.Height); gameLogic = new GameLogic(Game, this, textureScale); normalGameLogic = gameLogic; // launch countdown scene var countdownScene = new CountdownScene(Game); countdownScene.Started += (sender, e) => { MediaPlayer.Play(bgm); }; Game.SceneManager.Push(countdownScene); }
public override void Update(GameTime gameTime) { base.Update(gameTime); animProvider.Update(gameTime.ElapsedGameTime.TotalMilliseconds); passers.Update(gameTime); waterdrops.Update(gameTime); components.Update(gameTime); indicators.Update(gameTime); // move player player.X = Game.Input.X; if (itemboardAddTiming.Count > 0 && remainTime < itemboardAddTiming[0]) { AddItemBoard(); } if (gameLogic.IsGeneratePasserFrame(gameTime.ElapsedGameTime)) { gameLogic.GeneratePasser(); } if (Game.Input.IsPressKeeped && waterdropElapsed.TotalMilliseconds > gameLogic.WaterdropTimeSpan) { gameLogic.GenerateWaterdrop(player.X, player.Y); waterdropElapsed = new TimeSpan(); } waterdropElapsed += gameTime.ElapsedGameTime; HittestWithWaterdrops(); // decrease time limit remainTime -= gameTime.ElapsedGameTime.TotalSeconds; indicator.RemainTime = remainTime; // deactivate spacial if (specialRemainTime.TotalMilliseconds < 0 && gameLogic != normalGameLogic) { gameLogic = normalGameLogic; MediaPlayer.Play(bgm); } else { specialRemainTime -= gameTime.ElapsedGameTime; } // gameover if (remainTime < 0) { MediaPlayer.Stop(); var timeupScene = new TimeupScene(Game); timeupScene.ScenePopped += delegate { SwitchToResultScene(); }; Game.SceneManager.Push(timeupScene); } }