move a bunch of stuff into subfolders
This commit is contained in:
parent
8f281d65b2
commit
151cad4cee
|
@ -1,6 +1,8 @@
|
|||
using System.Net.WebSockets;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using TanksServer.Helpers;
|
||||
using TanksServer.Services;
|
||||
|
||||
namespace TanksServer;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System.Net.WebSockets;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using TanksServer.Helpers;
|
||||
|
||||
namespace TanksServer;
|
||||
|
||||
|
@ -55,22 +56,19 @@ internal sealed class ControlsServer(ILogger<ControlsServer> logger, ILoggerFact
|
|||
|
||||
protected override Task ReceiveAsync(ArraySegment<byte> buffer)
|
||||
{
|
||||
logger.LogDebug("player input {} {}", buffer[0], buffer[1]);
|
||||
var type = (MessageType)buffer[0];
|
||||
var control = (InputType)buffer[1];
|
||||
|
||||
logger.LogTrace("player input {} {} {}", player.Id, type, control);
|
||||
|
||||
bool isEnable;
|
||||
switch ((MessageType)buffer[0])
|
||||
var isEnable = type switch
|
||||
{
|
||||
case MessageType.Enable:
|
||||
isEnable = true;
|
||||
break;
|
||||
case MessageType.Disable:
|
||||
isEnable = false;
|
||||
break;
|
||||
default:
|
||||
return CloseAsync(WebSocketCloseStatus.InvalidPayloadData, "invalid state");
|
||||
}
|
||||
MessageType.Enable => true,
|
||||
MessageType.Disable => false,
|
||||
_ => throw new ArgumentException("invalid message type")
|
||||
};
|
||||
|
||||
switch ((InputType)buffer[1])
|
||||
switch (control)
|
||||
{
|
||||
case InputType.Forward:
|
||||
player.Controls.Forward = isEnable;
|
||||
|
@ -88,7 +86,7 @@ internal sealed class ControlsServer(ILogger<ControlsServer> logger, ILoggerFact
|
|||
player.Controls.Shoot = isEnable;
|
||||
break;
|
||||
default:
|
||||
return CloseAsync(WebSocketCloseStatus.InvalidPayloadData, "invalid control");
|
||||
throw new ArgumentException("invalid control type");
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
using TanksServer.Helpers;
|
||||
|
||||
namespace TanksServer;
|
||||
|
||||
internal sealed class DisplayPixelBuffer(byte[] data)
|
|
@ -1,8 +1,11 @@
|
|||
using System.Net.WebSockets;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace TanksServer;
|
||||
namespace TanksServer.Helpers;
|
||||
|
||||
/// <summary>
|
||||
/// Hacky class for easier semantics
|
||||
/// </summary>
|
||||
internal abstract class EasyWebSocket
|
||||
{
|
||||
private readonly TaskCompletionSource _completionSource = new();
|
|
@ -1,6 +1,6 @@
|
|||
using System.Collections;
|
||||
|
||||
namespace TanksServer;
|
||||
namespace TanksServer.Helpers;
|
||||
|
||||
internal sealed class FixedSizeBitFieldView(Memory<byte> data) : IList<bool>
|
||||
{
|
|
@ -4,11 +4,16 @@ using Microsoft.Extensions.Logging;
|
|||
|
||||
namespace TanksServer;
|
||||
|
||||
internal sealed class PlayerService(ILogger<PlayerService> logger)
|
||||
internal sealed class PlayerServer(ILogger<PlayerServer> logger)
|
||||
{
|
||||
private readonly ConcurrentDictionary<string, Player> _players = new();
|
||||
|
||||
public Player GetOrAdd(string name) => _players.GetOrAdd(name, _ => new Player(name));
|
||||
public Player GetOrAdd(string name)
|
||||
{
|
||||
var player = _players.GetOrAdd(name, _ => new Player(name));
|
||||
logger.LogInformation("player {} (re)joined", player.Id);
|
||||
return player;
|
||||
}
|
||||
|
||||
public bool TryGet(Guid? playerId, [MaybeNullWhen(false)] out Player foundPlayer)
|
||||
{
|
|
@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Http;
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
using TanksServer.Services;
|
||||
|
||||
namespace TanksServer;
|
||||
|
||||
|
@ -17,7 +18,7 @@ internal static class Program
|
|||
app.UseWebSockets();
|
||||
|
||||
var clientScreenServer = app.Services.GetRequiredService<ClientScreenServer>();
|
||||
var playerService = app.Services.GetRequiredService<PlayerService>();
|
||||
var playerService = app.Services.GetRequiredService<PlayerServer>();
|
||||
var controlsServer = app.Services.GetRequiredService<ControlsServer>();
|
||||
|
||||
var clientFileProvider = new PhysicalFileProvider(Path.Combine(app.Environment.ContentRootPath, "client"));
|
||||
|
@ -84,7 +85,7 @@ internal static class Program
|
|||
|
||||
builder.Services.AddHostedService<GameTickService>();
|
||||
|
||||
builder.Services.AddSingleton<PlayerService>();
|
||||
builder.Services.AddSingleton<PlayerServer>();
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace TanksServer;
|
||||
namespace TanksServer.Services;
|
||||
|
||||
public class GameTickService(IEnumerable<ITickStep> steps) : IHostedService
|
||||
internal sealed class GameTickService(IEnumerable<ITickStep> steps) : IHostedService
|
||||
{
|
||||
private readonly CancellationTokenSource _cancellation = new();
|
||||
private readonly List<ITickStep> _steps = steps.ToList();
|
|
@ -1,4 +1,4 @@
|
|||
namespace TanksServer;
|
||||
namespace TanksServer.Services;
|
||||
|
||||
internal class MapDrawer(MapService map):ITickStep
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace TanksServer;
|
||||
namespace TanksServer.Services;
|
||||
|
||||
internal class MapService
|
||||
{
|
|
@ -1,9 +1,9 @@
|
|||
using System.Net.Sockets;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace TanksServer;
|
||||
namespace TanksServer.Services;
|
||||
|
||||
internal class ServicePointDisplay(IOptions<ServicePointDisplayConfiguration> options)
|
||||
internal sealed class ServicePointDisplay(IOptions<ServicePointDisplayConfiguration> options)
|
||||
{
|
||||
private readonly UdpClient _udpClient = new(options.Value.Hostname, options.Value.Port);
|
||||
|
||||
|
@ -13,7 +13,7 @@ internal class ServicePointDisplay(IOptions<ServicePointDisplayConfiguration> op
|
|||
}
|
||||
}
|
||||
|
||||
internal class ServicePointDisplayConfiguration
|
||||
internal sealed class ServicePointDisplayConfiguration
|
||||
{
|
||||
public string Hostname { get; set; } = string.Empty;
|
||||
public int Port { get; set; }
|
|
@ -14,5 +14,11 @@
|
|||
<Link>.dockerignore</Link>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<AnalysisMode>Recommended</AnalysisMode>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<NoWarn>CA1805,CA1848</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
Loading…
Reference in a new issue