servicepoint-tanks/tanks-backend/TanksServer/Interactivity/ClientScreenServer.cs

29 lines
875 B
C#
Raw Normal View History

2024-04-06 16:38:26 +02:00
using System.Net.WebSockets;
2024-05-13 01:23:34 +02:00
using ServicePoint2;
using TanksServer.Graphics;
2024-04-06 16:38:26 +02:00
2024-04-10 19:25:45 +02:00
namespace TanksServer.Interactivity;
2024-04-06 16:38:26 +02:00
2024-04-06 20:32:54 +02:00
internal sealed class ClientScreenServer(
ILogger<ClientScreenServer> logger,
2024-05-03 14:45:41 +02:00
ILoggerFactory loggerFactory,
BufferPool bufferPool
2024-05-02 21:27:56 +02:00
) : WebsocketServer<ClientScreenServerConnection>(logger),
IFrameConsumer
2024-04-06 16:38:26 +02:00
{
public Task HandleClientAsync(WebSocket socket, Player? player)
2024-05-03 14:45:41 +02:00
{
var connection = new ClientScreenServerConnection(
socket,
loggerFactory.CreateLogger<ClientScreenServerConnection>(),
2024-05-03 14:45:41 +02:00
player,
bufferPool
);
return base.HandleClientAsync(connection);
}
2024-05-03 14:45:41 +02:00
public Task OnFrameDoneAsync(GamePixelGrid gamePixelGrid, PixelGrid observerPixels)
=> Connections.Select(c => c.OnGameTickAsync(observerPixels, gamePixelGrid))
.WhenAll();
2024-04-13 12:33:08 +02:00
}