[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)
|
FileSystem::FileReader::FileReader(std::string file) : name(file), handle(0)
|
||||||
{
|
{
|
||||||
|
@ -3,8 +3,17 @@ namespace Components
|
|||||||
class FileSystem : public Component
|
class FileSystem : public Component
|
||||||
{
|
{
|
||||||
public:
|
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:
|
public:
|
||||||
File() {};
|
File() {};
|
||||||
@ -21,6 +30,23 @@ namespace Components
|
|||||||
void read();
|
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
|
class FileReader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -45,6 +45,8 @@ namespace Game
|
|||||||
DB_EnumXAssets_t DB_EnumXAssets = (DB_EnumXAssets_t)0x4B76D0;
|
DB_EnumXAssets_t DB_EnumXAssets = (DB_EnumXAssets_t)0x4B76D0;
|
||||||
DB_EnumXAssets_Internal_t DB_EnumXAssets_Internal = (DB_EnumXAssets_Internal_t)0x5BB0A0;
|
DB_EnumXAssets_Internal_t DB_EnumXAssets_Internal = (DB_EnumXAssets_Internal_t)0x5BB0A0;
|
||||||
DB_FindXAssetHeader_t DB_FindXAssetHeader = (DB_FindXAssetHeader_t)0x407930;
|
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_GetLoadedFraction_t DB_GetLoadedFraction = (DB_GetLoadedFraction_t)0x468380;
|
||||||
DB_GetXAssetNameHandler_t* DB_GetXAssetNameHandlers = (DB_GetXAssetNameHandler_t*)0x799328;
|
DB_GetXAssetNameHandler_t* DB_GetXAssetNameHandlers = (DB_GetXAssetNameHandler_t*)0x799328;
|
||||||
DB_GetXAssetSizeHandler_t* DB_GetXAssetSizeHandlers = (DB_GetXAssetSizeHandler_t*)0x799488;
|
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);
|
typedef const char *(__cdecl * DB_IsXAssetDefault_t)(XAssetType type, const char* name);
|
||||||
extern DB_IsXAssetDefault_t DB_IsXAssetDefault;
|
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);
|
typedef void(*DB_LoadXAssets_t)(XZoneInfo *zoneInfo, unsigned int zoneCount, int sync);
|
||||||
extern DB_LoadXAssets_t DB_LoadXAssets;
|
extern DB_LoadXAssets_t DB_LoadXAssets;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user