using System.Collections.Generic; using Mina.Core.Buffer; namespace FSO.Common.Serialization.Primitives { public class cTSOProperty : IoBufferSerializable, IoBufferDeserializable { public uint StructType; public List StructFields; public void Serialize(IoBuffer output, ISerializationContext context) { output.PutUInt32(0x89739A79); output.PutUInt32(StructType); output.PutUInt32((uint)StructFields.Count); foreach (var item in StructFields) { output.PutUInt32(item.StructFieldID); context.ModelSerializer.Serialize(output, item.Value, context, true); } } public void Deserialize(IoBuffer input, ISerializationContext context) { //Unknown input.GetUInt32(); StructType = input.GetUInt32(); StructFields = new List(); var numFields = input.GetUInt32(); for(int i=0; i < numFields; i++){ var fieldId = input.GetUInt32(); var typeId = input.GetUInt32(); var value = context.ModelSerializer.Deserialize(typeId, input, context); StructFields.Add(new cTSOPropertyField { StructFieldID = fieldId, Value = value }); } } } public class cTSOPropertyField { public uint StructFieldID; public object Value; } }