Пример #1
0
        internal PakEntry(PakArchive sourceArchive)
        {
            this.sourceArchive = sourceArchive;

            FileType               = new QbKey(0);
            HeaderOffset           = 0;
            FileOffsetRelative     = 0;
            FileLength             = 0;
            EmbeddedFilenameKey    = new QbKey(0);
            FileFullNameKey        = new QbKey(0);
            FileShortNameKey       = new QbKey(0);
            Unknown                = 0;
            this._flags            = 0;
            this._embeddedFilename = null;
        }
Пример #2
0
        internal static PakEntry ParseHeader(EndianBinaryReader br, PakArchive sourceArchive)
        {
            var result = new PakEntry(sourceArchive);

            result.HeaderOffset        = (UInt32)br.BaseStream.Position;
            result.FileType            = new QbKey(br.ReadUInt32());
            result.FileOffsetRelative  = br.ReadUInt32();
            result.FileLength          = br.ReadUInt32();
            result.EmbeddedFilenameKey = new QbKey(br.ReadUInt32());
            result.FileFullNameKey     = new QbKey(br.ReadUInt32());
            result.FileShortNameKey    = new QbKey(br.ReadUInt32());
            result.Unknown             = br.ReadUInt32();
            result._flags = (PakEntryFlags)br.ReadUInt32();

            if (result.Flags.HasFlag(PakEntryFlags.HasEmbeddedFilename))
            {
                var embeddedFilenameBytes = br.ReadBytes(0xA0);
                result._embeddedFilename = Utility.Latin1Encoding.GetString(embeddedFilenameBytes).TrimEnd('\0');
            }

            return(result);
        }