コード例 #1
0
        public Packet Deserialize(RawPacket packet)
        {
            PacketReflectionInfo info;

            if (!_info.TryGetValue(Tables.Game.OpCodeToName[packet.OpCode], out info))
            {
                return(null);
            }
            object obj = Activator.CreateInstance(info.Type);

            using (TeraBinaryReader reader = new TeraBinaryReader(packet.GetPayloadData()))
            {
                foreach (FieldInfo field in info.Fields)
                {
                    field.SetValue(obj, reader.Read(field.FieldType));
                }
            }
            return((Packet)obj);
        }