Beispiel #1
0
        public void Read(Vault vault, BinaryReader br)
        {
            Key = br.ReadUInt32();

            InlineDataPointer = br.BaseStream.Position;
            if (IsInline())
            {
                InlineData = TypeRegistry.CreateInstance(vault.Database.Options.GameId, Collection.Class, Collection.Class[Key],
                                                         Collection);
            }
            else
            {
                InlineData = new VLTAttribType(Collection.Class, Collection.Class[Key], Collection);
            }
            InlineData.Read(vault, br);
            br.AlignReader(4);
            TypeIndex = br.ReadUInt16();
            NodeFlags = (NodeFlagsEnum)br.ReadUInt16();
            Debug.Assert((ushort)NodeFlags <= 0x20);
        }
Beispiel #2
0
        public override bool ReadData(Vault vault, BinaryReader br)
        {
            if (Collection.Class.TryGetField(Key, out VltClassField field))
            {
                if (HasInlineFlag())
                {
                    InlineData = TypeRegistry.CreateInstance(vault.Database.Options.GameId, Collection.Class, field, Collection);
                }
                else
                {
                    InlineData = new VLTAttribType(Collection.Class, field, Collection);
                }

                br.BaseStream.Position = InlineDataPointer;
                InlineData.Read(vault, br);

                return(true);
            }

            return(false);
        }
Beispiel #3
0
        public override bool ReadData(Vault vault, BinaryReader br)
        {
            if (Collection.Class.HasField(Key))
            {
                br.BaseStream.Position = InlineDataPointer;

                if (IsInline())
                {
                    InlineData = TypeRegistry.CreateInstance(vault.Database.Options.GameId, Collection.Class, Collection.Class[Key],
                                                             Collection);
                }
                else
                {
                    InlineData = new VLTAttribType(Collection.Class, Collection.Class[Key], Collection);
                }

                InlineData.Read(vault, br);

                return(true);
            }

            return(false);
        }