Пример #1
0
 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;
     }
 }
Пример #2
0
        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);
     }
 }
Пример #4
0
 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);
                 }
             }
         }
     }
 }
Пример #5
0
        public static void UnregisterPacketHandler(WORLDMSG msgID, WorldServerPacketDelegate wspd)
        {
            WorldServerPacketDelegate dele = (WorldServerPacketDelegate)worldServerDelegates[(int)msgID];

            worldServerDelegates[(int)msgID] = dele - wspd;
        }