#ifndef __RESOURCEFILE_H #define __RESOURCEFILE_H #include #include #include "tarray.h" //========================================================================== // // // //========================================================================== struct CWADLump { uint32_t offset; uint32_t length; char name[9]; }; class CWADFile { TArray lumps; FILE *m_File; char * m_Filename; int m_NumLumps; uint64_t m_LumpStart; public: CWADFile(const char * filename); CWADFile(const char * name, const char * memory); ~CWADFile(void); const char * GetName() const { return m_Filename; } int NumLumps() { return m_NumLumps; } virtual int FindLump(const char * name); virtual int GetLumpSize(int lump); virtual void * ReadLump(int lump); virtual void ReadLump(int lump, void * buffer); virtual const char * GetLumpName(int lump); }; extern CWADFile *mainwad; struct WadItemList { int mLump; TArray mData; WadItemList(int lump) { mLump = lump; } char * Address() { if (mData.Size() != Length()) { mData.Resize(Length()); } mainwad->ReadLump(mLump, &mData[0]); return &mData[0]; } int Length() const { return mainwad->GetLumpSize(mLump); } void Release() { mData.Clear(); } const char * Name() const { return mainwad->GetLumpName(mLump); } }; void OpenMainWad(char * filename); #endif