wip client "secret"

This commit is contained in:
Vinzenz Schroeter 2024-04-13 18:35:36 +02:00
parent 698271ae9f
commit b192cd7da0
15 changed files with 117 additions and 71 deletions

View file

@ -22,8 +22,8 @@ internal sealed class CollideBulletsWithTanks(
continue;
if (bullet.Owner != tank.Owner)
bullet.Owner.Kills++;
tank.Owner.Deaths++;
bullet.Owner.Scores.Kills++;
tank.Owner.Scores.Deaths++;
tanks.Remove(tank);
spawnQueue.EnqueueForDelayedSpawn(tank.Owner);

View file

@ -36,7 +36,7 @@ internal sealed class MoveTanks(
return false;
}
var angle = tank.Rotation * 2d * Math.PI;
var angle = tank.Orientation / 16d * 2d * Math.PI;
var newX = tank.Position.X + Math.Sin(angle) * speed;
var newY = tank.Position.Y - Math.Cos(angle) * speed;

View file

@ -1,6 +1,10 @@
namespace TanksServer.GameLogic;
internal sealed class RotateTanks(TankManager tanks, IOptions<TanksConfiguration> options) : ITickStep
internal sealed class RotateTanks(
TankManager tanks,
IOptions<TanksConfiguration> options,
ILogger<RotateTanks> logger
) : ITickStep
{
private readonly TanksConfiguration _config = options.Value;
@ -10,10 +14,20 @@ internal sealed class RotateTanks(TankManager tanks, IOptions<TanksConfiguration
{
var player = tank.Owner;
if (player.Controls.TurnLeft)
tank.Rotation -= _config.TurnSpeed / 16d;
if (player.Controls.TurnRight)
tank.Rotation += _config.TurnSpeed / 16d;
switch (player.Controls)
{
case { TurnRight: true, TurnLeft: true }:
case { TurnRight: false, TurnLeft: false }:
continue;
case { TurnLeft: true }:
tank.Rotation -= _config.TurnSpeed;
break;
case { TurnRight: true }:
tank.Rotation += _config.TurnSpeed;
break;
}
logger.LogTrace("rotated tank to {}", tank.Rotation);
}
return Task.CompletedTask;

View file

@ -25,12 +25,13 @@ internal sealed class ShootFromTanks(
tank.NextShotAfter = DateTime.Now.AddMilliseconds(_config.ShootDelayMs);
var angle = tank.Rotation * 2 * Math.PI;
var rotation = tank.Orientation / 16d;
var angle = rotation * 2d * Math.PI;
var position = new FloatPosition(
tank.Position.X + Math.Sin(angle) * _config.BulletSpeed,
tank.Position.Y - Math.Cos(angle) * _config.BulletSpeed
);
bulletManager.Spawn(new Bullet(tank.Owner, position, tank.Rotation));
bulletManager.Spawn(new Bullet(tank.Owner, position, rotation));
}
}