diff --git a/TanksServer/Models/Tank.cs b/TanksServer/Models/Tank.cs index 5b63cf9..c7549ba 100644 --- a/TanksServer/Models/Tank.cs +++ b/TanksServer/Models/Tank.cs @@ -25,10 +25,9 @@ internal sealed class Tank(Player player, FloatPosition spawnPosition) public (FloatPosition TopLeft, FloatPosition BottomRight) GetBounds() { - const int halfTile = MapService.TileSize / 2; return ( - new FloatPosition(Position.X - halfTile, Position.Y - halfTile), - new FloatPosition(Position.X + halfTile, Position.Y + halfTile) + Position, + new FloatPosition(Position.X + MapService.TileSize , Position.Y + MapService.TileSize ) ); } } diff --git a/TanksServer/TickSteps/CollideBulletsWithTanks.cs b/TanksServer/TickSteps/CollideBulletsWithTanks.cs index f477cea..4f6b185 100644 --- a/TanksServer/TickSteps/CollideBulletsWithTanks.cs +++ b/TanksServer/TickSteps/CollideBulletsWithTanks.cs @@ -3,7 +3,9 @@ using TanksServer.Services; namespace TanksServer.TickSteps; -internal sealed class CollideBulletsWithTanks(BulletManager bullets, TankManager tanks) : ITickStep +internal sealed class CollideBulletsWithTanks( + BulletManager bullets, TankManager tanks, SpawnQueueProvider spawnQueueProvider +) : ITickStep { public Task TickAsync() { @@ -16,15 +18,17 @@ internal sealed class CollideBulletsWithTanks(BulletManager bullets, TankManager foreach (var tank in tanks) { var (topLeft, bottomRight) = tank.GetBounds(); - if (bullet.Position.X <= topLeft.X || bullet.Position.X >= bottomRight.X || - bullet.Position.Y <= topLeft.Y || bullet.Position.Y >= bottomRight.Y) + if (bullet.Position.X < topLeft.X || bullet.Position.X > bottomRight.X || + bullet.Position.Y < topLeft.Y || bullet.Position.Y > bottomRight.Y) continue; if (bullet.Owner != tank.Owner) bullet.Owner.Kills++; tank.Owner.Deaths++; - + tanks.Remove(tank); + spawnQueueProvider.Queue.Enqueue(tank.Owner); + return true; }