resourcefile.h

来自「游戏编程精粹6第1章 通用编程,对入门的游戏开发者很有帮助.」· C头文件 代码 · 共 65 行

H
65
字号
#ifndef _RESOURCE_FILE_
#define _RESOURCE_FILE_

#include "core_defs.h"
#include "basefile.h"
#include <vector>
#include <string>
#include <map>

#define ResourceFileFilenameMaxLen 256
typedef std::vector<std::string> ResourceFileStringTable;

class FileInterface;

struct ResourceFileHeader
{
	uint32 nVersion;
	uint32 nNumFiles;
};

struct ResourceFileEntry
{
	uint16	nStringTableIndex;
	uint32	nFlags;
	uint32	nFileSize;
	uint32	nCompressedFileSize;
	uint32	nFilepointer;
};

struct ResourceFileStats
{
	uint32	nFlags;
	uint32	nFileSize;
};

typedef std::vector<ResourceFileEntry> FileEntryTable;
typedef std::map<std::string, ResourceFileEntry> FileTable;

class ResourceFile
{
public:
	ResourceFile();
	~ResourceFile();

	GEN_RESULT	Open(const char* szFilename);
	GEN_RESULT	Close();
	GEN_RESULT	ClosePackedFile(BaseFile* pFile);
	BaseFile*	Find(const char* szFilename, ResourceFileStats *pEntry);
	uint32		GetNumFiles();
	BaseFile*	GetFileFromIndex(uint32 nIndex, ResourceFileStats *pEntry);
	BaseFile*	GetFileHandle(){ return m_pFileHandle; }

protected:
	BaseFile		*m_pFileHandle;
	FileInterface	*m_pFileSystem;

	//Current file system stats
	ResourceFileHeader		m_FileHeader;
	ResourceFileStringTable m_FileStringTable;
	FileEntryTable			m_FileEntryHeaderTable;
	FileTable				m_FileTable;
};

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?