Пример #1
0
        private GameFile GetFile(TOCEntry entry)
        {
            GameFile       unpackFile;
            BinaryReaderBE br = new BinaryReaderBE(this.file.BaseStream);

            // Check compression
            this.file.BaseStream.Position = this.file.Position + entry.Offset;
            if (Zlib.IsValid(br.ReadUInt16()))
            {
                unpackFile = new GameFile(new MemoryStream((int)entry.Size));
                Zlib zlib = new Zlib(this.file.BaseStream, this.file.Position + entry.Offset, -1);
                zlib.Decode(unpackFile.BaseStream, entry.Size);
            }
            else
            {
                unpackFile          = new GameFile(this.file.BaseStream);
                unpackFile.Position = this.file.Position + entry.Offset;
                unpackFile.Parent   = this.file;
                this.file.AddChild(unpackFile);
            }

            unpackFile.Size = entry.Size;
            return(unpackFile);
        }