private void _turret_OnTurretShoots(object sender, GameplayEvents.TurretShoots e)
        {
            var bulletPositions = new List <Vector2> {
                e.Bullet1Position, e.Bullet2Position
            };

            var bullet1 = _turretBulletList.GetOrCreate(() => new TurretBulletSprite(LoadTexture(TurretBulletTexture)));

            bullet1.Angle     = e.Angle;
            bullet1.Direction = e.Direction;
            bullet1.Direction.Normalize();

            var bullet2 = _turretBulletList.GetOrCreate(() => new TurretBulletSprite(LoadTexture(TurretBulletTexture)));

            bullet2.Angle     = e.Angle;
            bullet2.Direction = e.Direction;
            bullet2.Direction.Normalize();

            bullet1.Position = e.Bullet1Position;
            bullet1.zIndex   = -10;

            bullet2.Position = e.Bullet2Position;
            bullet2.zIndex   = -10;

            AddGameObject(bullet1);
            AddGameObject(bullet2);
        }
        private void _turret_OnTurretShoots(object sender, GameplayEvents.TurretShoots e)
        {
            var bullet1 = new TurretBulletSprite(LoadTexture(TurretBulletTexture), e.Direction, e.Angle);

            bullet1.Position = e.Bullet1Position;
            bullet1.zIndex   = -10;

            var bullet2 = new TurretBulletSprite(LoadTexture(TurretBulletTexture), e.Direction, e.Angle);

            bullet2.Position = e.Bullet2Position;
            bullet2.zIndex   = -10;

            AddGameObject(bullet1);
            AddGameObject(bullet2);

            _turretBulletList.Add(bullet1);
            _turretBulletList.Add(bullet2);
        }
        public void Shoot(GameTime gameTime)
        {
            if (!_isShootingBullets && _bulletsRemaining > 0)
            {
                var centerOfCannon = Vector2.Add(_position, _baseCenterPosition);

                // find perpendicular vectors to position bullets left and right of the center of the cannon
                var perpendicularClockwiseDirection        = new Vector2(_direction.Y, -_direction.X);
                var perpendicularCounterClockwiseDirection = new Vector2(-_direction.Y, _direction.X);

                var bullet1Pos = Vector2.Add(centerOfCannon, perpendicularClockwiseDirection * 10);
                var bullet2Pos = Vector2.Add(centerOfCannon, perpendicularCounterClockwiseDirection * 10);

                var bulletInfo = new GameplayEvents.TurretShoots(bullet1Pos, bullet2Pos, _angle, _direction);

                _bulletsRemaining--;
                _isShootingBullets = true;
                _lastBulletShotAt  = gameTime.TotalGameTime;

                OnTurretShoots?.Invoke(this, bulletInfo);
            }
        }