Beispiel #1
0
        public override void Update(GameTime gameTime)
        {
            _spaceship.Update(gameTime);
            _asteroidSpawner.Update(gameTime);

            _asteroids.ForEach(a => a?.Update(gameTime));
            _bullets.ForEach(b => b?.Update(gameTime));

            foreach (var a in _asteroids)
            {
                if (a._boundingBox.Intersects(_spaceship._boundingBox))
                {
                    _spaceship.Hit();
                }
            }

            foreach (var bullet in _bullets)
            {
                foreach (var asteroid in _asteroids)
                {
                    if (bullet._boundingBox.Intersects(asteroid._boundingBox))
                    {
                        asteroid.Hit();
                        _deletBulletList.Add(bullet);
                    }
                }
            }

            if (Keyboard.GetState().IsKeyDown(Keys.Space) && !_shootPressed)
            {
                _shootPressed = true;
                Bullet bul = new Bullet(_spaceship._position, _spaceship.Angle);
                bul.destroy += bullet => _deletBulletList.Add(bullet);
                bul.Start();
                _bullets.Add(bul);
            }

            if (Keyboard.GetState().IsKeyUp(Keys.Space))
            {
                _shootPressed = false;
            }

            foreach (var ass in _deletAsteroidList)
            {
                _asteroids.Remove(ass);
                _score += 10;
            }
            _deletAsteroidList.Clear();

            foreach (var bull in _deletBulletList)
            {
                _bullets.Remove(bull);
            }
            _deletAsteroidList.Clear();

            base.Update(gameTime);
        }