internal WadEntry(Wad wad, ulong xxhash, int compressedSize, int uncompressedSize, WadEntryType entryType, byte[] sha, string fileRedirection, uint dataOffset)
 {
     this._wad             = wad;
     this.XXHash           = xxhash;
     this.CompressedSize   = compressedSize;
     this.UncompressedSize = uncompressedSize;
     this.Type             = entryType;
     this.SHA             = sha;
     this.FileRedirection = fileRedirection;
     this._dataOffset     = dataOffset;
 }
        internal WadEntry(Wad wad, BinaryReader br, byte major)
        {
            this._wad             = wad;
            this.XXHash           = br.ReadUInt64();
            this._dataOffset      = br.ReadUInt32();
            this.CompressedSize   = br.ReadInt32();
            this.UncompressedSize = br.ReadInt32();
            this.Type             = (WadEntryType)br.ReadByte();
            this._isDuplicated    = br.ReadBoolean();
            br.ReadUInt16(); // pad
            if (major >= 2)
            {
                this.SHA = br.ReadBytes(8);
            }

            if (this.Type == WadEntryType.FileRedirection)
            {
                long currentPosition = br.BaseStream.Position;
                br.BaseStream.Seek(this._dataOffset, SeekOrigin.Begin);
                this.FileRedirection = Encoding.ASCII.GetString(br.ReadBytes(br.ReadInt32()));
                br.BaseStream.Seek(currentPosition, SeekOrigin.Begin);
            }
        }