From 99aabeffc96480a6c71db7d4837308850ea848f5 Mon Sep 17 00:00:00 2001 From: Sanae Date: Sun, 8 May 2022 16:04:57 -0600 Subject: [PATCH] Add init packet --- Server/Server.cs | 3 +++ Server/Settings.cs | 2 +- Shared/Packet/PacketType.cs | 1 + Shared/Packet/Packets/InitPacket.cs | 19 +++++++++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 Shared/Packet/Packets/InitPacket.cs diff --git a/Server/Server.cs b/Server/Server.cs index 94c7044..4280621 100644 --- a/Server/Server.cs +++ b/Server/Server.cs @@ -123,6 +123,9 @@ public class Server { private async void HandleSocket(Socket socket) { Client client = new Client(socket) {Server = this}; IMemoryOwner memory = null!; + await client.Send(new InitPacket { + MaxPlayers = Settings.Instance.Server.MaxPlayers + }); bool first = true; try { while (true) { diff --git a/Server/Settings.cs b/Server/Settings.cs index 710aef0..3d32fff 100644 --- a/Server/Settings.cs +++ b/Server/Settings.cs @@ -46,7 +46,7 @@ public class Settings { public class ServerTable { public string Address { get; set; } = IPAddress.Any.ToString(); public ushort Port { get; set; } = 1027; - public byte MaxPlayers { get; set; } = 8; + public ushort MaxPlayers { get; set; } = 8; } public class ScenarioTable { diff --git a/Shared/Packet/PacketType.cs b/Shared/Packet/PacketType.cs index 016ceb7..6ccf020 100644 --- a/Shared/Packet/PacketType.cs +++ b/Shared/Packet/PacketType.cs @@ -2,6 +2,7 @@ public enum PacketType : short { Unknown, + Init, Player, Cap, Game, diff --git a/Shared/Packet/Packets/InitPacket.cs b/Shared/Packet/Packets/InitPacket.cs new file mode 100644 index 0000000..dd92201 --- /dev/null +++ b/Shared/Packet/Packets/InitPacket.cs @@ -0,0 +1,19 @@ +using System.Runtime.InteropServices; + +namespace Shared.Packet.Packets; + +[Packet(PacketType.Init)] +public struct InitPacket : IPacket { + public short Size { get; } = 2; + public ushort MaxPlayers = 0; + + public InitPacket() { } + + public void Serialize(Span data) { + MemoryMarshal.Write(data, ref MaxPlayers); + } + + public void Deserialize(ReadOnlySpan data) { + MaxPlayers = MemoryMarshal.Read(data); + } +} \ No newline at end of file