public BSAStateObject(BSAReader bsaReader) { Magic = bsaReader._magic; Version = bsaReader._version; ArchiveFlags = bsaReader._archiveFlags; FileFlags = bsaReader._fileFlags; }
public FileRecord(BSAReader bsa, FolderRecord folderRecord, BinaryReader src, int index) { _index = index; _bsa = bsa; Hash = src.ReadUInt64(); var size = src.ReadUInt32(); FlipCompression = (size & (0x1 << 30)) > 0; if (FlipCompression) { _size = size ^ (0x1 << 30); } else { _size = size; } if (Compressed) { _size -= 4; } _offset = src.ReadUInt32(); Folder = folderRecord; var old_pos = src.BaseStream.Position; src.BaseStream.Position = _offset; if (bsa.HasNameBlobs) { _nameBlob = src.ReadStringLenNoTerm(bsa.HeaderType); } if (Compressed) { _originalSize = src.ReadUInt32(); } _onDiskSize = (uint)(_size - (_nameBlob?.Length + 1 ?? 0)); if (Compressed) { Size = _originalSize; _onDiskSize -= 4; } else { Size = _onDiskSize; } _dataOffset = src.BaseStream.Position; src.BaseStream.Position = old_pos; }
internal void LoadFileRecordBlock(BSAReader bsa, BinaryReader src) { if (bsa.HasFolderNames) { Name = src.ReadStringLen(bsa.HeaderType); } for (var idx = 0; idx < _fileCount; idx += 1) { Files.Add(new FileRecord(bsa, this, src, idx)); } }
internal FolderRecord(BSAReader bsa, BinaryReader src) { //Hash = src.ReadUInt64(); Files = new List <FileRecord>(); src.ReadUInt64(); //hash _fileCount = src.ReadUInt32(); if (bsa.HeaderType == VersionType.SSE) { _unk = src.ReadUInt32(); _offset = src.ReadUInt64(); } else { _offset = src.ReadUInt32(); } }
internal void LoadFileRecord(BSAReader bsaReader, FolderRecord folder, FileRecord file, BinaryReader rdr) { _name = rdr.ReadStringTerm(_bsa.HeaderType); }