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 });
}
}