コード例 #1
0
        public override void ReadMetaData(RecordReader reader)
        {
            if (Signature != "GRUP")
            {
                throw new InvalidOperationException("Signature GRUP was expected");
            }

            Length     = reader.ReadUInt32() - 24;
            properties = new GroupPropertiesUnion()
            {
                FormId = reader.ReadUInt32()
            };
            GroupType   = (GroupType)reader.ReadUInt32();
            Day         = reader.ReadByte();
            TotalMonths = reader.ReadByte();
            Unknown1    = reader.ReadUInt16();
            Version     = reader.ReadUInt16();
            Unknown2    = reader.ReadUInt16();

            // Covert properties to FormType
            if (GroupType == GroupType.Top)
            {
                FormKind = (FormKind)Encoding.UTF8.GetString(BitConverter.GetBytes(properties.FormId));
            }
        }
コード例 #2
0
        public override void ReadMetaData(RecordReader reader)
        {
            if (Signature == "GRUP")
            {
                throw new InvalidOperationException("Group signature was not expected now");
            }

            Length   = reader.ReadUInt32();
            Flags    = reader.ReadUInt32();
            FormId   = reader.ReadUInt32();
            Revision = reader.ReadUInt32();
            Version  = reader.ReadUInt16();
            Unknown  = reader.ReadUInt16();
        }
コード例 #3
0
ファイル: FieldMetadata.cs プロジェクト: tstavrianos/patcher
        public override void ReadMetaData(RecordReader reader)
        {
            if (Signature == "XXXX")
            {
                // Segment length is always 4 which not interesting so skip 2 bytes
                reader.Seek(2);

                // Read lenght of the next segment
                uint nextSegmentLength = reader.ReadUInt32();

                // Load the actual signature (segment after XXXX)
                Signature = reader.ReadStringFixedLength(4);

                // Length is ZERO so skip 2 bytes and use value from the previous segment
                reader.Seek(2);
                Length = nextSegmentLength;
            }
            else
            {
                Length = reader.ReadUInt16();
            }
        }