public BsaReader(MemoryMappedFile mmf, CompressionOptions options) { _mmf = mmf; Settings = new ArchiveSettings { Options = options }; }
private Bsa(BsaReader bsaReader) : base(bsaReader.Read(), BsaHashComparer.Instance) { Settings = bsaReader.Settings; _bsaReader = bsaReader; }
internal BsaFile(string path, string name, ArchiveSettings settings, FileRecord baseRec, Func <uint, uint, BinaryReader> createReader) : this(path, name, settings, baseRec) { if (Size == 0 || (Size <= 4 && IsCompressed)) { _readyData = new byte[0]; OriginalSize = 0; } uint offset = _settings.BStringPrefixed ? (uint)Filename.Length + 1 : 0; _lazyData = new Lazy <byte[]>(() => { using (var reader = createReader(offset, Size - offset)) { if (IsCompressed) { _originalSize = reader.ReadUInt32(); offset += sizeof(uint); } return(reader.ReadBytes((int)(Size - offset))); } }); }
private BsaFile(string path, string name, ArchiveSettings settings) : this(path, name) { _settings = settings; CheckCompressionSettings(); if (Strategy.HasFlag(CompressionStrategy.Aggressive)) { throw new NotImplementedException("CompressionStrategy.Aggressive"); } }
private BsaFile(string path, string name, ArchiveSettings settings, FileRecord baseRec) : this(path, name, settings) { bool compressBitSet = (baseRec.size & FlagCompress) != 0; if (compressBitSet) { baseRec.size ^= FlagCompress; } IsCompressed = CheckCompressed(compressBitSet); Size = baseRec.size; }
//Clone ctor private BsaFile(string path, string name, ArchiveSettings settings, byte[] readyData, Lazy <byte[]> lazyData, bool isCompressed, uint originalSize, uint size) : this(path, name) { _settings = settings; _readyData = readyData; _lazyData = lazyData; IsCompressed = isCompressed; OriginalSize = originalSize; Size = size; CheckCompressionSettings(); }
/// <summary> /// Creates an empty BSAWrapper instance that can be modified and saved to a BSA file /// </summary> public Bsa(ArchiveSettings settings) : base(BsaHashComparer.Instance) { Settings = settings; }
/// <summary> /// Creates a new BSAWrapper instance from an existing folder structure /// </summary> /// <param name="packFolder">The path of the folder to pack</param> /// <param name="settings">The archive settings used during packing</param> public Bsa(string packFolder, ArchiveSettings settings) : this(settings) { Pack(packFolder); }
public BsaFile(string path, string name, ArchiveSettings settings, byte[] data, bool inputCompressed) : this(path, name, settings) { //inputCompressed param specifies compression of data param, NOT final result! UpdateData(data, inputCompressed); }