diff --git a/Server/Client.cs b/Server/Client.cs index c999289..ce161ef 100644 --- a/Server/Client.cs +++ b/Server/Client.cs @@ -34,11 +34,9 @@ public class Client : IDisposable { public delegate IPacket PacketTransformerDel(Client? sender, IPacket packet); - public event PacketTransformerDel? PacketTransformer; 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, @@ -56,13 +54,6 @@ 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); - // } await Socket!.SendAsync(data[..(Constants.HeaderSize + packetSize)], SocketFlags.None); } diff --git a/Server/Program.cs b/Server/Program.cs index a3eb314..5ad82e6 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -7,7 +7,6 @@ using Timer = System.Timers.Timer; Server.Server server = new Server.Server(); HashSet shineBag = new HashSet(); -// int shineTx = 0; // used for logging CancellationTokenSource cts = new CancellationTokenSource(); Task listenTask = server.Listen(cts.Token); Logger consoleLogger = new Logger("Console"); @@ -26,15 +25,6 @@ server.ClientJoined += (c, _) => { // lol who gives a fuck } } - - c.PacketTransformer += (_, packet) => { - if (Settings.Instance.Scenario.MergeEnabled && packet is GamePacket gamePacket) { - gamePacket.ScenarioNum = (byte?) c.Metadata["scenario"] ?? 200; - return gamePacket; - } - - return packet; - }; }; async Task ClientSyncShineBag(Client client) { @@ -97,7 +87,12 @@ server.PacketHandler = (c, p) => { }); break; } - break; + server.BroadcastReplace(gamePacket, c, (from, to, gp) => { + gp.ScenarioNum = (byte?) from.Metadata["scenario"] ?? 200; + + to.Send(gp, from); + }); + return false; } case TagPacket tagPacket: { if ((tagPacket.UpdateType & TagPacket.TagUpdate.State) != 0) c.Metadata["seeking"] = tagPacket.IsIt; @@ -113,7 +108,7 @@ server.PacketHandler = (c, p) => { ConcurrentBag playerBag = (ConcurrentBag) c.Metadata["shineSync"]; shineBag.Add(shinePacket.ShineId); if (playerBag.Contains(shinePacket.ShineId)) break; - c.Logger.Info($"Got shine {shinePacket.ShineId}"); + c.Logger.Info($"Got moon {shinePacket.ShineId}"); playerBag.Add(shinePacket.ShineId); SyncShineBag(); break;