예제 #1
0
        public override void Update(GameTime gameTime)
        {
            // for managing the scenes
            var keyState = Keyboard.GetState();

            if (keyState.IsKeyDown(Keys.J))
            {
                _showEndScene();
            }
            if (_endScene)
            {
                _timeElapsed += (float)gameTime.ElapsedGameTime.TotalSeconds;
                if (_timeElapsed > TimeToUpdate)
                {
                    State = 1;
                }
                return;
            }

            // check if a player can aim
            if ((!Rocket.RocketFlying) && (_explosion.ParticleList.Count == 0))
            {
                ProcessKeyboard();
            }

            if (Rocket.RocketFlying)
            {
                var terrainCollisionPoint = _rocket.CheckTerrainCollision(gameTime, _textureCenter.ForegroundColorArray);
                var playerCollisionPoint  = CheckPlayersCollision();
                CheckBirdsCollision(gameTime);

                if (terrainCollisionPoint.X > -1)
                {
                    Debug.WriteLine("Rocket hit terrain");
                    AddExplosion(terrainCollisionPoint, terrainExplosionParticles, terrainExplosionSize,
                                 terrainExplosionMaxAge, gameTime);
                    SoundCenter.HitTerrain.Play();
                    NextPlayer();
                }
                else if (playerCollisionPoint.X > -1)
                {
                    Debug.WriteLine("Rocket hit player");
                    AddExplosion(playerCollisionPoint, playerExplosionParticles, playerExplosionSize,
                                 playerExplosionMaxAge, gameTime);
                    SoundCenter.HitCannon.Play();
                    NextPlayer();
                }
                else if (_rocket.CheckOutOfScreen())
                {
                    NextPlayer();
                }
            }

            base.Update(gameTime);
        }