Beispiel #1
0
        void AddHandlers()
        {
            var methods = GetType().GetMethods(BindingFlags.Instance | BindingFlags.NonPublic);

            for (var i = 0; i < methods.Length; i++)
            {
                if (methods[i].ReturnType != typeof(void))
                {
                    continue;
                }
                var attribute = methods[i].GetCustomAttributes(typeof(HandlesPacketAttribute), false).FirstOrDefault() as HandlesPacketAttribute;
                if (attribute == null)
                {
                    continue;
                }
                var parameters = methods[i].GetParameters();
                if (parameters.Length != 1 || parameters[0].ParameterType != typeof(NetworkPacket))
                {
                    throw new Exception(string.Format("Method {0} requires exactly 1 parameter of type {1}", methods[i].Name, typeof(NetworkPacket).Name));
                }
                var handler = (PacketHandlerDelegate)Delegate.CreateDelegate(typeof(PacketHandlerDelegate), this, methods[i]);
                dispatcher.Add(attribute.HeaderType, handler);
            }
        }
Beispiel #2
0
 void AddHandlers()
 {
     dispatcher.Add(LoginHeader.C2L_QUERY_UNIVERSE_LIST, HandleQueryUniverseList);
     dispatcher.Add(LoginHeader.C2L_UNIVERSE_SELECTED, HandleUniverseSelection);
 }