using System.Net.WebSockets; using ServicePoint2; using TanksServer.Graphics; namespace TanksServer.Interactivity; internal sealed class ClientScreenServer( ILogger logger, ILoggerFactory loggerFactory, BufferPool bufferPool ) : WebsocketServer(logger), IFrameConsumer { public Task HandleClientAsync(WebSocket socket, Player? player) { var connection = new ClientScreenServerConnection( socket, loggerFactory.CreateLogger(), player, bufferPool ); return base.HandleClientAsync(connection); } public Task OnFrameDoneAsync(GamePixelGrid gamePixelGrid, PixelGrid observerPixels) => Connections.Select(c => c.OnGameTickAsync(observerPixels, gamePixelGrid)) .WhenAll(); }