All pastes #2123911 Raw Edit

Unnamed

public text v1 · immutable
#2123911 ·published 2012-03-04 00:33 UTC
rendered paste body
Packet p = new Packet();
switch (data[0])
                {
                    case OpCode.SMSG_Damage:
                        p = new _0x0BDamage(Data);
                        if (EventDamage != null)
                            EventDamage((_0x0BDamage)p);
                        break;
                    
                    case OpCode.SMSG_StatusBarInfo:
                        p = new _0x11StatusBarInfo(Data);
                        if (EventStatusBarInfo != null)
                            EventStatusBarInfo((_0x11StatusBarInfo)p);
                        break;

                    case OpCode.SMSG_ObjectInfo:
                        p = new _0x1AObjectInfo(Data);
                        if (EventObjectInfo != null)
                            EventObjectInfo((_0x1AObjectInfo)p);
                        break;

                    case OpCode.SMSG_SendSpeach:
                        p = new _0x1CSendSpeech(Data);
                        if (EventSendSpeech != null)
                            EventSendSpeech((_0x1CSendSpeech)p);
                        break;
                    case OpCode.SMSG_MobAttribute:
                        p = new _0x2DMobAttributes(Data);
                        if (EventMobAttribute != null)
                            EventMobAttribute((_0x2DMobAttributes)p);
                        break;

                    case OpCode.SMSG_UpdatePlayer:
                        p = new _0x77UpdatePlayer(Data);
                        if (EventUpdatePlayer != null)
                            EventUpdatePlayer((_0x77UpdatePlayer)p);
                        break;
                    case OpCode.SMSG_ConnectToGameServer:
                        p = new _0x8CConnectToGameServer(Data);
                        //if (EventConnectToGameServer != null)
                        //    EventConnectToGameServer((_0x8CConnectToGameServer)p);
                        UOProxy.UseHuffman = true;
                        break;
                    default:
                        Data.Position = Data.Length;
                        break;

                }

Replaced with

Packet packet = new Packet();
             
                if (Handlers.ContainsKey(data[0]))
                {
                    packet = (Packet)Activator.CreateInstance(Handlers[data[0]], new object[] { Data });
                    var eventinfo = this.GetType().GetField(packet.GetType().Name, BindingFlags.Instance
                        | BindingFlags.NonPublic);
                    
                    if (eventinfo != null)
                    {
                        var member = eventinfo.GetValue(this);
                        if (member != null)
                            member.GetType().GetMethod("Invoke").Invoke(member, new object[] { packet });
                    }
                }