コード例 #1
0
        public REFRRecord(Record record)
        {
            baseRecord = record;

            var fields = record.Fields
                         .GroupBy(f => f.Type)
                         .ToDictionary(f => f.Key, f => f.First().DataBytes);

            EditorID = fields.ContainsKey("EDID") ? (ZString?)ZString.Parse(fields["EDID"]) : null;
            Name     = new LocalFormID(fields["NAME"], 0);
            Data     = fields.ContainsKey("DATA") ? DATAField.Parse(fields["DATA"]) : null;
            Bounds   = fields.ContainsKey("XMBO") ? XMBOField.Parse(fields["XMBO"]) : null;
        }
コード例 #2
0
ファイル: Record.cs プロジェクト: lukekaalim/SSELib
 public Record(Byte[] bytes, int offset = 0)
 {
     type               = Encoding.UTF8.GetString(bytes, offset + 0, 4);
     dataSize           = BitConverter.ToUInt32(bytes, offset + 4);
     flags              = (RecordFlags)BitConverter.ToUInt32(bytes, offset + 8);
     id                 = new LocalFormID(bytes, offset + 12);
     versionControlInfo = VersionControlInfo.Parse(bytes, offset + 16);
     version            = BitConverter.ToUInt16(bytes, offset + 20);
     unknown            = BitConverter.ToUInt16(bytes, offset + 22);
     if ((flags & RecordFlags.Compressed) == RecordFlags.Compressed)
     {
         data = new List <Field>();
     }
     else
     {
         data = Field.ParseAll(bytes, (uint)(offset + FixedSize), dataSize);
     }
 }
コード例 #3
0
            //public UInt16 unknown;

            public static RecordHeader Parse(byte[] bytes, int offset = 0)
            {
                var type     = Encoding.UTF8.GetString(bytes, offset + 0, 4);
                var dataSize = BitConverter.ToUInt32(bytes, offset + 4);
                var flags    = (RecordFlags)BitConverter.ToUInt32(bytes, offset + 8);
                var id       = new LocalFormID(bytes, offset + 12);
                //versionControlInfo = VersionControlInfo.Parse(bytes, offset + 16);
                var version = BitConverter.ToUInt16(bytes, offset + 20);

                // var unknown = BitConverter.ToUInt16(bytes, offset + 22);

                return(new RecordHeader()
                {
                    Type = type,
                    DataSize = dataSize,
                    flags = flags,
                    Id = id,
                    version = version,
                });
            }