protected override void Update(GameTime gameTime) { Random rng = new Random(); if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } if (spawnCooldown > 0) { spawnCooldown -= (float)gameTime.ElapsedGameTime.TotalSeconds; } else if (playerSprite.playerLives > 0 && missileList.Count < 5) { missileList.Add(new MissileSprite(missileTxr, new Vector2(screenSize.X, rng.Next(0, screenSize.Y - missileTxr.Height)), (Math.Min(playTime, 60f) / 60) * 20000f + 200f)); spawnCooldown = (float)rng.NextDouble() + 0.5f; } if (playerSprite.playerLives > 0) { playerSprite.Update(gameTime, screenSize); playTime += (float)gameTime.ElapsedGameTime.TotalSeconds; } foreach (MissileSprite missile in missileList) { missile.Update(gameTime, screenSize); playerSprite.IsColliding(missile); if (playerSprite.playerLives > 0 && playerSprite.IsColliding(missile)) { for (int i = 0; i < 16; i++) { particleList.Add(new ParticleSprite(particleTxr, new Vector2(missile.spritePos.X + (missileTxr.Width / 2) - (particleTxr.Width / 2), missile.spritePos.Y + (missileTxr.Height / 2) - (particleTxr.Height / 2)))); } missile.dead = true; playerSprite.playerLives--; missileExplode.Play(); if (playerSprite.playerLives == 0) { for (int i = 0; i < 32; i++) { particleList.Add(new ParticleSprite(particleTxr, new Vector2(playerSprite.spritePos.X + (saucerTxr.Width / 2) - (particleTxr.Width / 2), playerSprite.spritePos.Y + (saucerTxr.Height / 2) - (particleTxr.Height / 2)))); } } shipExplode.Play(); } } foreach (ParticleSprite particle in particleList) { particle.Update(gameTime, screenSize); } missileList.RemoveAll(missile => missile.dead); particleList.RemoveAll(particle => particle.currentLife <= 0); base.Update(gameTime); }
protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } if (!musicPlaying) { MediaPlayer.Volume = volume; MediaPlayer.IsRepeating = true; MediaPlayer.Play(music); musicPlaying = true; } if (spawnCooldown > 0) { spawnCooldown -= (float)gameTime.ElapsedGameTime.TotalSeconds; } else if (playerSprite.playerLives > 0 && missiles.Count < (Math.Min(playTime, 120f) / 120f) * 8 + 2) { missiles.Add(new MissileSprite(missileTex, new Vector2(rand.Next(750, 1000), rand.Next(450 - missileTex.Height)))); spawnCooldown = (float)(rand.NextDouble() + 0.5); } if (playerSprite.playerLives > 0) { playerSprite.Update(gameTime, screenSize); playTime += (float)gameTime.ElapsedGameTime.TotalSeconds; } foreach (MissileSprite missile in missiles) { missile.Update(gameTime, screenSize); if (playerSprite.playerLives > 0 && playerSprite.isColliding(missile)) { for (int i = 0; i < 16; i++) { particleList.Add(new ParticleSprite(particleTex, new Vector2( missile.spritePos.X + (missileTex.Width / 2) - (particleTex.Width / 2), missile.spritePos.Y + (missileTex.Height / 2) - (particleTex.Width / 2) ) )); } missile.dead = true; playerSprite.playerLives--; missileBoom.Play(); if (playerSprite.playerLives == 0) { for (int i = 0; i < 32; i++) { particleList.Add(new ParticleSprite(particleTex, new Vector2( missile.spritePos.X + (missileTex.Width / 2) - (particleTex.Width / 2), missile.spritePos.Y + (missileTex.Height / 2) - (particleTex.Width / 2) ) )); } shipBoom.Play(); } } } foreach (ParticleSprite particle in particleList) { particle.Update(gameTime, screenSize); } missiles.RemoveAll(missile => missile.dead); particleList.RemoveAll(particle => particle.currentLife <= 0); //Debug.Write(missiles.Count); base.Update(gameTime); }