diff --git a/Server/Client.cs b/Server/Client.cs index 397fd42..c999289 100644 --- a/Server/Client.cs +++ b/Server/Client.cs @@ -38,6 +38,7 @@ public class Client : IDisposable { public async Task Send(T packet, Client? sender = null) where T : struct, IPacket { IMemoryOwner memory = MemoryPool.Shared.RentZero(Constants.HeaderSize + packet.Size); + packet = (T) (PacketTransformer?.Invoke(sender, packet) ?? packet); PacketHeader header = new PacketHeader { Id = sender?.Id ?? Id, Type = Constants.PacketMap[typeof(T)].Type, @@ -55,13 +56,13 @@ public class Client : IDisposable { } int packetSize = MemoryMarshal.Read(data.Span[18..]); - if (PacketTransformer != null) { - PacketType type = MemoryMarshal.Read(data.Span[16..]); - IPacket packet = (IPacket) Activator.CreateInstance(Constants.PacketIdMap[type])!; - packet.Deserialize(data.Span); - packet = PacketTransformer?.Invoke(sender, packet) ?? packet; - packet.Serialize(data.Span); - } + // if (PacketTransformer != null) { + // PacketType type = MemoryMarshal.Read(data.Span[16..]); + // IPacket packet = (IPacket) Activator.CreateInstance(Constants.PacketIdMap[type])!; + // packet.Deserialize(data.Span); + // packet = PacketTransformer?.Invoke(sender, packet) ?? packet; + // packet.Serialize(data.Span); + // } await Socket!.SendAsync(data[..(Constants.HeaderSize + packetSize)], SocketFlags.None); } diff --git a/Shared/Packet/Packets/GamePacket.cs b/Shared/Packet/Packets/GamePacket.cs index 62b68c6..3f35055 100644 --- a/Shared/Packet/Packets/GamePacket.cs +++ b/Shared/Packet/Packets/GamePacket.cs @@ -18,7 +18,7 @@ public struct GamePacket : IPacket { public short Size => 0x32; public void Serialize(Span data) { MemoryMarshal.Write(data[..0], ref Is2d); - MemoryMarshal.Write(data[1..1], ref ScenarioNum); + MemoryMarshal.Write(data[1..], ref ScenarioNum); Encoding.UTF8.GetBytes(Stage).CopyTo(data[2..(2 + StageSize)]); }