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