public static bool WriteField(ref PacketOutStream Stream, EPacketFieldType FieldType, object Value, bool Force) { ISerializableField Field = GetFieldType(FieldType); Log.Debug("WriteField", "Type=" + FieldType + ",Val=" + Value + ",Field=" + Field); if (Field != null) { Field.val = Value; Field.Serialize(ref Stream, true); return(true); } return(false); }
public static bool WriteField(ref PacketOutStream Stream, ISerializableField Field, int FieldIndex, int FieldType) { if (FieldType == (int)EPacketFieldType.Invalid) { return(false); } PacketOutStream NewStream = new PacketOutStream(); long FieldResult; PacketOutStream.Encode2Parameters(out FieldResult, FieldType, FieldIndex); NewStream.WriteEncoded7Bit(FieldResult); if (Field == null || Field.Serialize(ref NewStream, false)) { Stream.Write(NewStream.ToArray()); } return(true); }
public static byte[] FieldToBytes(ISerializablePacket Packet, string FieldName) { FieldInfo Info = Packet.GetType().GetField(FieldName); ISerializableFieldAttribute[] FieldsAttr = Info.GetCustomAttributes(typeof(ISerializableFieldAttribute), true) as ISerializableFieldAttribute[]; if (FieldsAttr != null && FieldsAttr.Length > 0) { ISerializableField Field = Activator.CreateInstance(FieldsAttr[0].GetSerializableType()) as ISerializableField; Field.Index = FieldsAttr[0].Index; Field.val = Info.GetValue(Packet); Field.PacketType = PacketProcessor.GetFieldType(Field); PacketOutStream Str = new PacketOutStream(); Field.Serialize(ref Str, true); byte[] Result = Str.ToArray(); return(Result); } else { return(null); } }