diff --git a/tanks-backend/TanksServer/GameLogic/GameRules.cs b/tanks-backend/TanksServer/GameLogic/GameRules.cs index 2284464..3660671 100644 --- a/tanks-backend/TanksServer/GameLogic/GameRules.cs +++ b/tanks-backend/TanksServer/GameLogic/GameRules.cs @@ -27,4 +27,6 @@ internal sealed class GameRules public int ReloadDelayMs { get; set; } = 3000; public double SmartBulletInertia { get; set; } = 1; + + public double FastBulletAcceleration { get; set; } = 0.25; } diff --git a/tanks-backend/TanksServer/GameLogic/MapEntityManager.cs b/tanks-backend/TanksServer/GameLogic/MapEntityManager.cs index e7b376d..3b1f4f6 100644 --- a/tanks-backend/TanksServer/GameLogic/MapEntityManager.cs +++ b/tanks-backend/TanksServer/GameLogic/MapEntityManager.cs @@ -17,7 +17,6 @@ internal sealed class MapEntityManager( public void SpawnBullet(Player tankOwner, FloatPosition position, double rotation, MagazineType type) { - var speed = _rules.BulletSpeed * (type.HasFlag(MagazineType.Fast) ? 2 : 1); _bullets.Add(new Bullet { Owner = tankOwner, @@ -26,8 +25,9 @@ internal sealed class MapEntityManager( IsExplosive = type.HasFlag(MagazineType.Explosive), Timeout = DateTime.Now + _bulletTimeout, OwnerCollisionAfter = DateTime.Now + TimeSpan.FromSeconds(1), - Speed = speed, - IsSmart = type.HasFlag(MagazineType.Smart) + Speed = _rules.BulletSpeed, + IsSmart = type.HasFlag(MagazineType.Smart), + Acceleration = type.HasFlag(MagazineType.Fast) ? _rules.FastBulletAcceleration : 0d }); } diff --git a/tanks-backend/TanksServer/GameLogic/MoveBullets.cs b/tanks-backend/TanksServer/GameLogic/MoveBullets.cs index 96bde60..d303d84 100644 --- a/tanks-backend/TanksServer/GameLogic/MoveBullets.cs +++ b/tanks-backend/TanksServer/GameLogic/MoveBullets.cs @@ -24,6 +24,8 @@ internal sealed class MoveBullets( bullet.Rotation += difference * inertiaFactor; } + bullet.Speed *= 1 + (bullet.Acceleration * delta.TotalSeconds); + var speed = bullet.Speed * delta.TotalSeconds; var angle = bullet.Rotation * 2 * Math.PI; bullet.Position = new FloatPosition( diff --git a/tanks-backend/TanksServer/Models/Bullet.cs b/tanks-backend/TanksServer/Models/Bullet.cs index 9e17066..c5f8d1d 100644 --- a/tanks-backend/TanksServer/Models/Bullet.cs +++ b/tanks-backend/TanksServer/Models/Bullet.cs @@ -16,7 +16,9 @@ internal sealed class Bullet : IMapEntity internal required DateTime OwnerCollisionAfter { get; init; } - public required double Speed { get; init; } + public required double Speed { get; set; } + + public required double Acceleration { get; init; } public required bool IsSmart { get; init; } } diff --git a/tanks-backend/TanksServer/appsettings.json b/tanks-backend/TanksServer/appsettings.json index 37f8c7b..0eaa26e 100644 --- a/tanks-backend/TanksServer/appsettings.json +++ b/tanks-backend/TanksServer/appsettings.json @@ -33,7 +33,7 @@ "SmartBulletHomingSpeed": 1.5 }, "Host": { - "EnableServicePointDisplay": false, + "EnableServicePointDisplay": true, "ServicePointDisplayMinFrameTimeMs": 28, "ClientScreenMinFrameTime": 5 }