Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }