2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 22:27:43 +00:00

various implementation

This commit is contained in:
Jack Andersen
2015-08-22 20:42:29 -10:00
parent 6577d4ca13
commit f3b5b9f49a
45 changed files with 580 additions and 84 deletions

View File

@@ -1,19 +1,41 @@
#ifndef __RETRO_CRESFACTORY_HPP__
#define __RETRO_CRESFACTORY_HPP__
#include <unordered_map>
#include "IFactory.hpp"
#include "CResLoader.hpp"
namespace Retro
{
class CDvdRequest;
class CResFactory : public IFactory
{
CResLoader x4_loader;
public:
void Build(const SObjectTag&, const CVParamTransfer&);
struct SLoadingData
{
SObjectTag tag;
CDvdRequest* dvdReq;
IObj** targetPtr;
void* loadBuffer;
u32 resSize;
};
private:
std::unordered_map<SObjectTag, SLoadingData> m_loadList;
void AddToLoadList(const SLoadingData& data) {m_loadList[data.tag] = data;}
public:
std::unique_ptr<IObj> Build(const SObjectTag&, const CVParamTransfer&);
void BuildAsync(const SObjectTag&, const CVParamTransfer&, IObj**);
void CancelBuild(const SObjectTag&);
bool CanBuild(const SObjectTag&);
const SObjectTag& GetResourceIdByName(const char*) const;
bool CanBuild(const SObjectTag& tag) {return x4_loader.ResourceExists(tag);}
u32 GetResourceIdByName(const char* name) const {return x4_loader.GetResourceIdByName(name);}
std::vector<std::pair<std::string, SObjectTag>> GetResourceIdToNameList() const
{
std::vector<std::pair<std::string, SObjectTag>> retval;
return retval;
}
};
}