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

@ -3,4 +3,6 @@ using System.Text.Json.Serialization;
namespace TanksServer.Interactivity;
[JsonSerializable(typeof(Player))]
[JsonSerializable(typeof(IEnumerable<Player>))]
[JsonSerializable(typeof(Guid))]
internal sealed partial class AppSerializerContext : JsonSerializerContext;

View file

@ -7,9 +7,19 @@ internal sealed class PlayerServer(ILogger<PlayerServer> logger, SpawnQueue spaw
{
private readonly ConcurrentDictionary<string, Player> _players = new();
public Player GetOrAdd(string name)
public Player? GetOrAdd(string name, Guid id)
{
var player = _players.GetOrAdd(name, AddAndSpawn);
Player AddAndSpawn()
{
var player = new Player(name, id);
spawnQueue.EnqueueForImmediateSpawn(player);
return player;
}
var player = _players.GetOrAdd(name, _ => AddAndSpawn());
if (player.Id != id)
return null;
logger.LogInformation("player {} (re)joined", player.Id);
return player;
}
@ -29,11 +39,4 @@ internal sealed class PlayerServer(ILogger<PlayerServer> logger, SpawnQueue spaw
}
public IEnumerable<Player> GetAll() => _players.Values;
private Player AddAndSpawn(string name)
{
var player = new Player(name);
spawnQueue.EnqueueForImmediateSpawn(player);
return player;
}
}

View file

@ -71,13 +71,13 @@ internal sealed class SendToServicePointDisplay : ITickStep
private void RefreshScores()
{
var playersToDisplay = _players.GetAll()
.OrderByDescending(p => p.Kills)
.OrderByDescending(p => p.Scores.Kills)
.Take(ScoresPlayerRows);
ushort row = 2;
foreach (var p in playersToDisplay)
{
var score = p.Kills.ToString();
var score = p.Scores.Kills.ToString();
var nameLength = Math.Min(p.Name.Length, ScoresWidth - score.Length - 1);
var name = p.Name[..nameLength];