private void DetectCollisions() { var bulletCollisionDetector = new AABBCollisionDetector <BulletSprite, ChopperSprite>(_bulletList); var missileCollisionDetector = new AABBCollisionDetector <MissileSprite, ChopperSprite>(_missileList); var playerCollisionDetector = new AABBCollisionDetector <ChopperSprite, PlayerSprite>(_enemyList); bulletCollisionDetector.DetectCollisions(_enemyList, (bullet, chopper) => { var hitEvent = new GameplayEvents.ChopperHitBy(bullet); chopper.OnNotify(hitEvent); _soundManager.OnNotify(hitEvent); bullet.Destroy(); }); missileCollisionDetector.DetectCollisions(_enemyList, (missile, chopper) => { var hitEvent = new GameplayEvents.ChopperHitBy(missile); chopper.OnNotify(hitEvent); _soundManager.OnNotify(hitEvent); missile.Destroy(); }); if (!_playerDead) { playerCollisionDetector.DetectCollisions(_playerSprite, (chopper, player) => { KillPlayer(); }); } }
private void DetectCollisions() { var bulletCollisionDetector = new AABBCollisionDetector <BulletSprite, BaseGameObject>(_bulletList); var missileCollisionDetector = new AABBCollisionDetector <MissileSprite, BaseGameObject>(_missileList); var playerCollisionDetector = new AABBCollisionDetector <ChopperSprite, PlayerSprite>(_enemyList); var turretBulletCollisionDetector = new SegmentAABBCollisionDetector <PlayerSprite>(_playerSprite); bulletCollisionDetector.DetectCollisions(_enemyList, (bullet, chopper) => { var hitEvent = new GameplayEvents.ObjectHitBy(bullet); chopper.OnNotify(hitEvent); _soundManager.OnNotify(hitEvent); bullet.Destroy(); }); missileCollisionDetector.DetectCollisions(_enemyList, (missile, chopper) => { var hitEvent = new GameplayEvents.ObjectHitBy(missile); chopper.OnNotify(hitEvent); _soundManager.OnNotify(hitEvent); missile.Destroy(); }); bulletCollisionDetector.DetectCollisions(_turretList, (bullet, turret) => { var hitEvent = new GameplayEvents.ObjectHitBy(bullet); turret.OnNotify(hitEvent); _soundManager.OnNotify(hitEvent); bullet.Destroy(); }); missileCollisionDetector.DetectCollisions(_turretList, (missile, turret) => { var hitEvent = new GameplayEvents.ObjectHitBy(missile); turret.OnNotify(hitEvent); _soundManager.OnNotify(hitEvent); missile.Destroy(); }); if (!_playerDead) { var segments = new List <Segment>(); foreach (var bullet in _turretBulletList) { segments.Add(bullet.CollisionSegment); } turretBulletCollisionDetector.DetectCollisions(segments, _ => { KillPlayer(); }); playerCollisionDetector.DetectCollisions(_playerSprite, (chopper, player) => { KillPlayer(); }); } }