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); } }