public Bomb PlaceBomb(FigureImp figure) { var position = GetTilePositionFromWorld(figure.Position); if (!HasBomb(position)) { var b = new BombImp(PullId(), figure.ActiveBombType); _bombs.Add(b); b.Drop(figure, position); return(b); } return(null); }
private void RaiseExplosion(BombImp bomb) { var explosionFragment = (ExplosionFragmentImp)GetOverlayData(bomb.TilePosition); if (explosionFragment.IsActive) { return; } var range = bomb.ExplosionRange; explosionFragment.Activate(); HandleExplosionTrace(bomb, bomb.TilePosition, range, i => new Point(i, 0)); HandleExplosionTrace(bomb, bomb.TilePosition, range, i => new Point(-i, 0)); HandleExplosionTrace(bomb, bomb.TilePosition, range, i => new Point(0, i)); HandleExplosionTrace(bomb, bomb.TilePosition, range, i => new Point(0, -i)); }
private bool TryGetBomb(Point p, out BombImp bomb) { bomb = (BombImp)_bombs.FirstOrDefault(b => b.TilePosition == p); return(bomb != null); }