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); }