metaforce/Runtime/CResLoader.hpp

52 lines
1.9 KiB
C++
Raw Normal View History

2016-02-13 09:02:47 +00:00
#ifndef __PSHAG_CRESLOADER_HPP__
#define __PSHAG_CRESLOADER_HPP__
2015-08-23 06:42:29 +00:00
#include <memory>
#include <string>
#include "RetroTypes.hpp"
#include "CPakFile.hpp"
2015-08-23 23:58:07 +00:00
#include "IOStreams.hpp"
2015-08-23 06:42:29 +00:00
2016-02-13 09:02:47 +00:00
namespace pshag
2015-08-23 06:42:29 +00:00
{
2015-08-31 03:44:42 +00:00
struct SObjectTag;
class IDvdRequest;
2015-08-23 06:42:29 +00:00
class CResLoader
{
std::string m_loaderPath;
2015-08-23 06:42:29 +00:00
//std::list<std::unique_ptr<CPakFile>> x4_unusedList;
std::list<std::unique_ptr<CPakFile>> x1c_pakLoadedList;
std::list<std::unique_ptr<CPakFile>> x34_pakLoadingList;
u32 x44_pakLoadingCount = 0;
u32 x4c_cachedResId = -1;
const CPakFile::SResInfo* x50_cachedResInfo = nullptr;
public:
2015-08-23 23:58:07 +00:00
const std::vector<u32>* GetTagListForFile(const std::string& name) const;
void AddPakFileAsync(const std::string& name, bool flag);
void AddPakFile(const std::string& name, bool flag);
CInputStream* LoadNewResourcePartSync(const SObjectTag& tag, int offset, int length, void* extBuf);
void LoadMemResourceSync(const SObjectTag& tag, void** bufOut, int* sizeOut);
CInputStream* LoadResourceFromMemorySync(const SObjectTag& tag, const void* buf);
CInputStream* LoadNewResourceSync(const SObjectTag& tag, void* extBuf=nullptr);
IDvdRequest* LoadResourcePartAsync(const SObjectTag& tag, int offset, int length, void* buf);
IDvdRequest* LoadResourceAsync(const SObjectTag& tag, void* buf);
2015-08-23 23:58:07 +00:00
bool GetResourceCompression(const SObjectTag& tag);
u32 ResourceSize(const SObjectTag& tag);
bool ResourceExists(const SObjectTag& tag);
FourCC GetResourceTypeById(u32 id);
2015-08-28 00:11:31 +00:00
const SObjectTag* GetResourceIdByName(const char* name) const;
2015-08-23 23:58:07 +00:00
bool AreAllPaksLoaded() const;
void AsyncIdlePakLoading();
bool FindResource(u32 id);
CPakFile* FindResourceForLoad(u32 id);
CPakFile* FindResourceForLoad(const SObjectTag& tag);
bool CacheFromPakForLoad(CPakFile& file, u32 id);
bool CacheFromPak(const CPakFile& file, u32 id);
void MoveToCorrectLoadedList(std::unique_ptr<CPakFile>&& file);
2015-08-23 06:42:29 +00:00
};
}
2016-02-13 09:02:47 +00:00
#endif // __PSHAG_CRESLOADER_HPP__