[FileSystem] Abstract file interfaces and rawfile interface
This commit is contained in:
parent
7d64cae095
commit
dc6d78187c
@ -19,6 +19,16 @@ namespace Components
|
||||
}
|
||||
}
|
||||
|
||||
void FileSystem::RawFile::read()
|
||||
{
|
||||
this->buffer.clear();
|
||||
|
||||
Game::RawFile* rawfile = Game::DB_FindXAssetHeader(Game::XAssetType::ASSET_TYPE_RAWFILE, this->filePath.data()).rawfile;
|
||||
if (!rawfile || Game::DB_IsXAssetDefault(Game::XAssetType::ASSET_TYPE_RAWFILE, this->filePath.data())) return;
|
||||
|
||||
this->buffer.resize(Game::DB_GetRawFileLen(rawfile));
|
||||
Game::DB_GetRawBuffer(rawfile, const_cast<char*>(this->buffer.data()), this->buffer.size());
|
||||
}
|
||||
|
||||
FileSystem::FileReader::FileReader(std::string file) : name(file), handle(0)
|
||||
{
|
||||
|
@ -3,8 +3,17 @@ namespace Components
|
||||
class FileSystem : public Component
|
||||
{
|
||||
public:
|
||||
class AbstractFile
|
||||
{
|
||||
public:
|
||||
virtual ~AbstractFile() {};
|
||||
|
||||
class File
|
||||
virtual bool exists() = 0;
|
||||
virtual std::string getName() = 0;
|
||||
virtual std::string& getBuffer() = 0;
|
||||
};
|
||||
|
||||
class File : public AbstractFile
|
||||
{
|
||||
public:
|
||||
File() {};
|
||||
@ -21,6 +30,23 @@ namespace Components
|
||||
void read();
|
||||
};
|
||||
|
||||
class RawFile : public AbstractFile
|
||||
{
|
||||
public:
|
||||
RawFile() {};
|
||||
RawFile(std::string file) : filePath(file) { this->read(); };
|
||||
|
||||
bool exists() { return !this->buffer.empty(); };
|
||||
std::string getName() { return this->filePath; };
|
||||
std::string& getBuffer() { return this->buffer; };
|
||||
|
||||
private:
|
||||
std::string filePath;
|
||||
std::string buffer;
|
||||
|
||||
void read();
|
||||
};
|
||||
|
||||
class FileReader
|
||||
{
|
||||
public:
|
||||
|
@ -45,6 +45,8 @@ namespace Game
|
||||
DB_EnumXAssets_t DB_EnumXAssets = (DB_EnumXAssets_t)0x4B76D0;
|
||||
DB_EnumXAssets_Internal_t DB_EnumXAssets_Internal = (DB_EnumXAssets_Internal_t)0x5BB0A0;
|
||||
DB_FindXAssetHeader_t DB_FindXAssetHeader = (DB_FindXAssetHeader_t)0x407930;
|
||||
DB_GetRawBuffer_t DB_GetRawBuffer = (DB_GetRawBuffer_t)0x4CDC50;
|
||||
DB_GetRawFileLen_t DB_GetRawFileLen = (DB_GetRawFileLen_t)0x4DAA80;
|
||||
DB_GetLoadedFraction_t DB_GetLoadedFraction = (DB_GetLoadedFraction_t)0x468380;
|
||||
DB_GetXAssetNameHandler_t* DB_GetXAssetNameHandlers = (DB_GetXAssetNameHandler_t*)0x799328;
|
||||
DB_GetXAssetSizeHandler_t* DB_GetXAssetSizeHandlers = (DB_GetXAssetSizeHandler_t*)0x799488;
|
||||
|
@ -117,6 +117,12 @@ namespace Game
|
||||
typedef const char *(__cdecl * DB_IsXAssetDefault_t)(XAssetType type, const char* name);
|
||||
extern DB_IsXAssetDefault_t DB_IsXAssetDefault;
|
||||
|
||||
typedef void(__cdecl * DB_GetRawBuffer_t)(RawFile* rawfile, char* buffer, int size);
|
||||
extern DB_GetRawBuffer_t DB_GetRawBuffer;
|
||||
|
||||
typedef int(__cdecl * DB_GetRawFileLen_t)(RawFile* rawfile);
|
||||
extern DB_GetRawFileLen_t DB_GetRawFileLen;
|
||||
|
||||
typedef void(*DB_LoadXAssets_t)(XZoneInfo *zoneInfo, unsigned int zoneCount, int sync);
|
||||
extern DB_LoadXAssets_t DB_LoadXAssets;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user