private void SetExplosion(ExplodableBase explodable) { var explosion = new Explosion { Center = explodable.Location, BlastLocations = GetExplosionLocations(explodable) }; _field.Explosions.Add(explosion); explodable.IsExploded = true; foreach (var explosionLocation in explosion.BlastLocations) { switch (_field.Board[explosionLocation.X, explosionLocation.Y]) { case BoardTile.Regular: _field.Board[explosionLocation.X, explosionLocation.Y] = BoardTile.Empty; break; case BoardTile.Fortified: _field.Board[explosionLocation.X, explosionLocation.Y] = BoardTile.Regular; break; } _field.Bots.ForEach(bot => { if (bot.Location == explosionLocation) { bot.IsDead = true; } }); } SetChainedExplosions(explosion); }
private void SetChainedExplosions(Explosion explosion) { foreach (var bomb in _field.Bombs) { if (explosion.BlastLocations.Any(point => point == bomb.Location) && !bomb.IsExploded) { SetExplosion(bomb); } } foreach (var missile in _field.Missiles) { if (explosion.BlastLocations.Any(point => point == missile.Location) && !missile.IsExploded) { SetExplosion(missile); } } }