Esempio n. 1
0
        /// <summary>
        /// Registers SMSG Opcodes
        /// </summary>
        /// <param name="obj"></param>
        void RegisterHandler(object obj)
        {
            BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;

            IEnumerable <PacketHandlerAttribute> attributes;

            foreach (var method in obj.GetType().GetMethods(flags))
            {
                if (!method.TryGetAttributes(false, out attributes))
                {
                    continue;
                }

                PacketHandler handler = (PacketHandler)PacketHandler.CreateDelegate(typeof(PacketHandler), obj, method);

                foreach (var attribute in attributes)
                {
                    PacketHandlers[attribute.Opcode] = handler;
                }
            }
        }
Esempio n. 2
0
        void RegisterHandlersFrom(object obj)
        {
            // create binding flags to discover all non-static methods
            BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;

            IEnumerable <PacketHandlerAttribute> attributes;

            foreach (var method in obj.GetType().GetMethods(flags))
            {
                if (!method.TryGetAttributes(false, out attributes))
                {
                    continue;
                }

                PacketHandler handler = (PacketHandler)PacketHandler.CreateDelegate(typeof(PacketHandler), obj, method);

                foreach (var attribute in attributes)
                {
                    Game.UI.LogDebug(string.Format("Registered '{0}.{1}' to '{2}'", obj.GetType().Name, method.Name, attribute.Command));
                    PacketHandlers[attribute.Command] = handler;
                }
            }
        }