Exemplo n.º 1
0
 public virtual void Deserialize(FArchive reader)
 {
     foreach (var tag in PropertyTag.ReadToEnd(reader))
     {
         Vars.Add(new TaggedItem(tag.Name, PropertyFactory.Get(reader.Slice(tag.Size), tag)));
         if (reader.Tell() != tag.PropertyEnd)
         {
             Console.WriteLine($"Needed to move by {tag.PropertyEnd - reader.Tell()} for {tag.Name} {(tag.TypeEnum == PropertyTag.PropertyType.StructProperty ? tag.StructName : tag.Type)}");
             reader.Seek(tag.PropertyEnd);
         }
     }
 }
Exemplo n.º 2
0
 public virtual FArchive Serialize(FArchive archive)
 {
     foreach (var tag in PropertyTag.ReadToEnd(archive))
     {
         Vars.Add(new TaggedItem(tag.Name, PropertyFactory.Get(archive.SubStream(tag.Size), tag)));
         if (archive.Tell() != tag.PropertyEnd)
         {
             Debug.WriteLine($"Needed to move by {tag.PropertyEnd - archive.Tell()} for {tag.Name} {(tag.TypeEnum == PropertyTag.PropertyType.StructProperty ? tag.StructName : tag.Type)}");
             archive.Seek(tag.PropertyEnd);
         }
     }
     return(archive);
 }
Exemplo n.º 3
0
 public override void Deserialize(FArchive reader, PropertyTag tag)
 {
     reader.Read(out int unknown);
     base.Deserialize(reader, tag);
     if (tag.InnerTypeEnum.TryGetAttribute(out LinkedTypeAttribute? attrib))
     {
         _value = new HashSet <IProperty>(Count);
         var func = PropertyFactory.Get(attrib.LinkedType);
         for (int i = 0; i < Count; i++)
         {
             var prop = func();
             prop.Deserialize(reader, tag);
             _value.Add(prop);
         }
     }
 }
Exemplo n.º 4
0
 public override void Deserialize(FArchive reader, PropertyTag tag)
 {
     if (tag.InnerTypeEnum.TryGetAttribute(out LinkedTypeAttribute? innerType) && tag.ValueTypeEnum.TryGetAttribute(out LinkedTypeAttribute? valueType))
     {
         reader.Read(out int unknown);
         base.Deserialize(reader, tag);
         var dict     = new Dictionary <IProperty, IProperty>(Count);
         var funcKey  = PropertyFactory.Get(innerType.LinkedType);
         var valueKey = PropertyFactory.Get(valueType.LinkedType);
         for (int i = 0; i < Count; i++)
         {
             var key = funcKey();
             key.Deserialize(reader, tag);
             var value = valueKey();
             value.Deserialize(reader, tag);
             dict.Add(key, value);
         }
         _value = dict;
     }
 }