public ZarFileType( EndianBinaryReader er, ZarHeader header, int fileTypeIndex) { er.Position = header.FileTypesOffset + 16 * fileTypeIndex; this.FileCount = er.ReadInt32(); this.FileListOffset = er.ReadInt32(); this.TypeNameOffset = er.ReadInt32(); er.ReadInt32(); /*er.Position = this.TypeNameOffset; * this.TypeName = er.ReadStringNT(Encoding.UTF8);*/ this.Files = new ZarSubfile[this.FileCount]; for (var i = 0; i < this.FileCount; ++i) { this.Files[i] = new ZarSubfile(er, header, this, i); } }
public ZarSubfile( EndianBinaryReader er, ZarHeader header, ZarFileType fileType, int fileInFileTypeIndex) { er.Position = fileType.FileListOffset + 4 * fileInFileTypeIndex; var fileIndex = er.ReadInt32(); er.Position = header.FileMetadataOffset + 8 * fileIndex; var fileSize = er.ReadInt32(); var fileNameOffset = er.ReadInt32(); er.Position = fileNameOffset; this.FileName = er.ReadStringNT(Encoding.UTF8); er.Position = header.DataOffset + 4 * fileIndex; var fileOffset = er.ReadInt32(); er.Position = fileOffset; this.Bytes = er.ReadBytes(fileSize); }