From 7bc45d1d58fbe8d75b01389206b2835b2ad11ee5 Mon Sep 17 00:00:00 2001 From: Vinzenz Schroeter Date: Mon, 22 Apr 2024 20:13:31 +0200 Subject: [PATCH] controls string on server side --- tank-frontend/src/PlayerInfo.tsx | 27 ++----------------- .../Interactivity/PlayerInfoConnection.cs | 20 +++++++++++++- .../TanksServer/Models/PlayerInfo.cs | 2 +- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/tank-frontend/src/PlayerInfo.tsx b/tank-frontend/src/PlayerInfo.tsx index 441f2d9..92935d9 100644 --- a/tank-frontend/src/PlayerInfo.tsx +++ b/tank-frontend/src/PlayerInfo.tsx @@ -22,14 +22,6 @@ function ScoreRow({name, value}: { ; } -type Controls = { - readonly forward: boolean; - readonly backward: boolean; - readonly turnLeft: boolean; - readonly turnRight: boolean; - readonly shoot: boolean; -} - type TankInfo = { readonly explosiveBullets: number; readonly position: { x: number; y: number }; @@ -41,25 +33,10 @@ type TankInfo = { type PlayerInfoMessage = { readonly name: string; readonly scores: Scores; - readonly controls: Controls; + readonly controls: string; readonly tank?: TankInfo; } -function controlsString(controls: Controls) { - let str = ''; - if (controls.forward) - str += '▲'; - if (controls.backward) - str += '▼'; - if (controls.turnLeft) - str += '◄'; - if (controls.turnRight) - str += '►'; - if (controls.shoot) - str += '•'; - return str; -} - export default function PlayerInfo({playerId}: { playerId: Guid }) { const [shouldSendMessage, setShouldSendMessage] = useState(false); @@ -87,7 +64,7 @@ export default function PlayerInfo({playerId}: { playerId: Guid }) { - + diff --git a/tanks-backend/TanksServer/Interactivity/PlayerInfoConnection.cs b/tanks-backend/TanksServer/Interactivity/PlayerInfoConnection.cs index 4e06987..d3109b7 100644 --- a/tanks-backend/TanksServer/Interactivity/PlayerInfoConnection.cs +++ b/tanks-backend/TanksServer/Interactivity/PlayerInfoConnection.cs @@ -1,4 +1,5 @@ using System.Net.WebSockets; +using System.Text; using System.Text.Json; using TanksServer.GameLogic; @@ -51,7 +52,7 @@ internal sealed class PlayerInfoConnection( var tankInfo = tank != null ? new TankInfo(tank.Orientation, tank.ExplosiveBullets, tank.Position.ToPixelPosition(), tank.Moving) : null; - var info = new PlayerInfo(player.Name, player.Scores, player.Controls, tankInfo); + var info = new PlayerInfo(player.Name, player.Scores, ControlsToString(player.Controls), tankInfo); var response = JsonSerializer.SerializeToUtf8Bytes(info, _context.PlayerInfo); if (response.SequenceEqual(_lastMessage)) @@ -60,5 +61,22 @@ internal sealed class PlayerInfoConnection( return _lastMessage = response; } + private static string ControlsToString(PlayerControls controls) + { + var str = new StringBuilder("[ "); + if (controls.Forward) + str.Append("▲ "); + if (controls.Backward) + str.Append("▼ "); + if (controls.TurnLeft) + str.Append("◄ "); + if (controls.TurnRight) + str.Append("► "); + if (controls.Shoot) + str.Append("• "); + str.Append(']'); + return str.ToString(); + } + public void Dispose() => _wantedFrames.Dispose(); } diff --git a/tanks-backend/TanksServer/Models/PlayerInfo.cs b/tanks-backend/TanksServer/Models/PlayerInfo.cs index ece5955..be46707 100644 --- a/tanks-backend/TanksServer/Models/PlayerInfo.cs +++ b/tanks-backend/TanksServer/Models/PlayerInfo.cs @@ -10,6 +10,6 @@ internal sealed record class TankInfo( internal sealed record class PlayerInfo( string Name, Scores Scores, - PlayerControls Controls, + string Controls, TankInfo? Tank );