2016-04-13 06:07:23 +00:00
|
|
|
#ifndef __URDE_CASSETFACTORY_HPP__
|
|
|
|
#define __URDE_CASSETFACTORY_HPP__
|
2015-08-17 20:33:58 +00:00
|
|
|
|
2016-04-14 21:42:47 +00:00
|
|
|
#include "IFactory.hpp"
|
|
|
|
#include "IObj.hpp"
|
|
|
|
#include "CToken.hpp"
|
2016-04-15 03:02:21 +00:00
|
|
|
#include "CSimplePool.hpp"
|
2015-08-18 05:54:43 +00:00
|
|
|
|
2016-03-04 23:04:53 +00:00
|
|
|
namespace urde
|
2015-08-17 22:05:00 +00:00
|
|
|
{
|
2016-04-14 21:42:47 +00:00
|
|
|
class CCharacterFactory;
|
|
|
|
class CAnimRes;
|
|
|
|
|
2016-04-15 03:02:21 +00:00
|
|
|
class CCharacterFactoryBuilder
|
2015-08-17 23:46:41 +00:00
|
|
|
{
|
2015-08-25 07:04:50 +00:00
|
|
|
public:
|
2016-04-15 03:02:21 +00:00
|
|
|
class CDummyFactory : public IFactory
|
|
|
|
{
|
|
|
|
public:
|
2016-09-02 19:32:57 +00:00
|
|
|
CFactoryFnReturn Build(const SObjectTag&, const CVParamTransfer&, CObjectReference* selfRef);
|
2017-10-26 10:09:51 +00:00
|
|
|
void BuildAsync(const SObjectTag&, const CVParamTransfer&, std::unique_ptr<IObj>*, CObjectReference* selfRef);
|
2016-04-15 03:02:21 +00:00
|
|
|
void CancelBuild(const SObjectTag&);
|
|
|
|
bool CanBuild(const SObjectTag&);
|
2017-11-13 06:19:18 +00:00
|
|
|
const SObjectTag* GetResourceIdByName(std::string_view) const;
|
2017-08-13 05:26:14 +00:00
|
|
|
FourCC GetResourceTypeById(CAssetId id) const;
|
2016-07-23 21:41:18 +00:00
|
|
|
|
2016-09-25 01:58:20 +00:00
|
|
|
void EnumerateResources(const std::function<bool(const SObjectTag&)>& lambda) const;
|
2017-11-13 06:19:18 +00:00
|
|
|
void EnumerateNamedResources(const std::function<bool(std::string_view, const SObjectTag&)>& lambda) const;
|
2016-09-25 01:58:20 +00:00
|
|
|
|
2016-07-23 21:41:18 +00:00
|
|
|
u32 ResourceSize(const urde::SObjectTag& tag);
|
2017-10-27 10:10:32 +00:00
|
|
|
std::shared_ptr<IDvdRequest> LoadResourceAsync(const urde::SObjectTag& tag, void* target);
|
2017-11-05 02:08:05 +00:00
|
|
|
std::shared_ptr<IDvdRequest> LoadResourcePartAsync(const urde::SObjectTag& tag, u32 off, u32 size, void* target);
|
2016-07-23 21:41:18 +00:00
|
|
|
std::unique_ptr<u8[]> LoadResourceSync(const urde::SObjectTag& tag);
|
2017-11-05 02:08:05 +00:00
|
|
|
std::unique_ptr<u8[]> LoadNewResourcePartSync(const urde::SObjectTag& tag, u32 off, u32 size);
|
2016-04-15 03:02:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
CDummyFactory x0_dummyFactory;
|
|
|
|
CSimplePool x4_dummyStore;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CCharacterFactoryBuilder();
|
2016-04-14 21:42:47 +00:00
|
|
|
TToken<CCharacterFactory> GetFactory(const CAnimRes& res);
|
2015-08-17 23:46:41 +00:00
|
|
|
};
|
2016-04-14 21:42:47 +00:00
|
|
|
|
2015-08-17 22:05:00 +00:00
|
|
|
}
|
|
|
|
|
2016-04-13 06:07:23 +00:00
|
|
|
#endif // __URDE_CASSETFACTORY_HPP__
|