public static void RegisterPacketHandler(WORLDMSG msgID, WorldServerPacketDelegate wspd) { if (worldServerDelegates[(int)msgID] != null) { WorldServerPacketDelegate dele = (WorldServerPacketDelegate)worldServerDelegates[(int)msgID]; worldServerDelegates[(int)msgID] = dele + wspd; } else { worldServerDelegates[(int)msgID] = wspd; } }
public static void HandlePacket(WORLDMSG msgID, BinReader data) { IWorldServerPacketHandler handler = (IWorldServerPacketHandler)worldServerHandlers[msgID]; if (handler != null) { handler.HandlePacket(msgID, data); } WorldServerPacketDelegate wspd = (WorldServerPacketDelegate)worldServerDelegates[(int)msgID]; if (wspd != null) { wspd(msgID, data); } }
public static void HandlePacket(WORLDMSG msgID, BinReader data) { try { IWorldServerPacketHandler handler = (IWorldServerPacketHandler)worldServerHandlers[msgID]; if (handler != null) { handler.HandlePacket(msgID, data); } WorldServerPacketDelegate wspd = (WorldServerPacketDelegate)worldServerDelegates[(int)msgID]; if (wspd != null) { wspd(msgID, data); } } catch (Exception exp) { DebugLogger.Log("", exp); } }
static void SearchForDelegates(Type type) { MethodInfo[] methods = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); foreach (MethodInfo method in methods) { WorldPacketDelegate[] attribs = (WorldPacketDelegate[])method.GetCustomAttributes(typeof(WorldPacketDelegate), true); if (attribs.Length == 0) { continue; } if (method.IsStatic) { foreach (WorldPacketDelegate attrib in attribs) { if (attrib.ClientMessage) { WorldClientPacketDelegate wcpd = (WorldClientPacketDelegate)Delegate.CreateDelegate(typeof(WorldClientPacketDelegate), method); RegisterPacketHandler((CMSG)attrib.MsgID, wcpd); } else { WorldServerPacketDelegate wspd = (WorldServerPacketDelegate)Delegate.CreateDelegate(typeof(WorldServerPacketDelegate), method); RegisterPacketHandler((WORLDMSG)attrib.MsgID, wspd); } } } else { object obj = GetHandlerObject(type); foreach (WorldPacketDelegate attrib in attribs) { if (attrib.ClientMessage) { WorldClientPacketDelegate wcpd = (WorldClientPacketDelegate)Delegate.CreateDelegate(typeof(WorldClientPacketDelegate), obj, method.Name); RegisterPacketHandler((CMSG)attrib.MsgID, wcpd); } else { WorldServerPacketDelegate wspd = (WorldServerPacketDelegate)Delegate.CreateDelegate(typeof(WorldServerPacketDelegate), obj, method.Name); RegisterPacketHandler((WORLDMSG)attrib.MsgID, wspd); } } } } }
public static void UnregisterPacketHandler(WORLDMSG msgID, WorldServerPacketDelegate wspd) { WorldServerPacketDelegate dele = (WorldServerPacketDelegate)worldServerDelegates[(int)msgID]; worldServerDelegates[(int)msgID] = dele - wspd; }