2015-08-23 06:42:29 +00:00
|
|
|
#ifndef __RETRO_CRESLOADER_HPP__
|
|
|
|
#define __RETRO_CRESLOADER_HPP__
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
|
namespace Retro
|
|
|
|
{
|
2015-08-31 03:44:42 +00:00
|
|
|
struct SObjectTag;
|
2015-10-29 07:52:15 +00:00
|
|
|
class IDvdRequest;
|
2015-08-23 06:42:29 +00:00
|
|
|
|
|
|
|
class CResLoader
|
|
|
|
{
|
2015-11-02 18:45:39 +00:00
|
|
|
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);
|
2015-10-29 07:52:15 +00:00
|
|
|
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
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __RETRO_CRESLOADER_HPP__
|