#ifndef __FILE_ZIP_H #define __FILE_ZIP_H #include "resourcefile.h" enum { LUMPFZIP_NEEDFILESTART = 128 }; //========================================================================== // // Zip Lump // //========================================================================== struct FZipLump : public FResourceLump { uint16_t GPFlags; uint8_t Method; int CompressedSize; int Position; unsigned CRC32; virtual FileReader *GetReader() override; virtual int ValidateCache() override; private: void SetLumpAddress(); virtual int GetFileOffset() override; FCompressedBuffer GetRawData() override; }; //========================================================================== // // Zip file // //========================================================================== class FZipFile : public FResourceFile { FZipLump *Lumps; public: FZipFile(const char * filename, FileReader &file); virtual ~FZipFile(); bool Open(bool quiet); virtual FResourceLump *GetLump(int no) { return ((unsigned)no < NumLumps)? &Lumps[no] : NULL; } }; #endif