mirror of
https://git.lewd.wtf/PGR/ascnet
synced 2025-12-13 15:54:38 +01:00
working tcp (kinda), send still brokey
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using MessagePack;
|
||||
using System.Reflection;
|
||||
using AscNet.Common.Util;
|
||||
using MessagePack;
|
||||
|
||||
namespace AscNet.GameServer
|
||||
{
|
||||
@@ -73,4 +75,49 @@ namespace AscNet.GameServer
|
||||
}
|
||||
}
|
||||
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class PacketHandler : Attribute
|
||||
{
|
||||
public string Name { get; }
|
||||
|
||||
public PacketHandler(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void PacketHandlerDelegate(Session session, byte[] packet);
|
||||
|
||||
public static class PacketFactory
|
||||
{
|
||||
public static readonly Dictionary<string, PacketHandlerDelegate> Handlers = new();
|
||||
static readonly Logger c = new("Factory", ConsoleColor.Yellow);
|
||||
|
||||
public static void LoadPacketHandlers()
|
||||
{
|
||||
c.Log("Loading Packet Handlers...");
|
||||
|
||||
IEnumerable<Type> classes = from t in Assembly.GetExecutingAssembly().GetTypes()
|
||||
select t;
|
||||
|
||||
foreach (var method in classes.SelectMany(t => t.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)))
|
||||
{
|
||||
var attr = method.GetCustomAttribute<PacketHandler>(false);
|
||||
if (attr == null || Handlers.ContainsKey(attr.Name)) continue;
|
||||
Handlers.Add(attr.Name, (PacketHandlerDelegate)Delegate.CreateDelegate(typeof(PacketHandlerDelegate), method));
|
||||
#if DEBUG
|
||||
c.Log($"Loaded {method.Name}");
|
||||
#endif
|
||||
}
|
||||
|
||||
c.Log("Finished Loading Packet Handlers");
|
||||
}
|
||||
|
||||
public static PacketHandlerDelegate? GetPacketHandler(string name)
|
||||
{
|
||||
Handlers.TryGetValue(name, out PacketHandlerDelegate? handler);
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user