summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actActorParamMgr.h
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-11-12 16:03:03 +0100
committerLéo Lam <leo@leolam.fr>2020-11-14 21:06:08 +0100
commitffe38d0076fd487bae46edd092171469ec08d439 (patch)
tree16c4f06dc454e2c81d67133355184022397198d6 /src/KingSystem/ActorSystem/actActorParamMgr.h
parentd9356ffa90f2b6c819b00bfc7905763aea8c39bc (diff)
ksys/act: Implement more ActorParamMgr functions
Diffstat (limited to 'src/KingSystem/ActorSystem/actActorParamMgr.h')
-rw-r--r--src/KingSystem/ActorSystem/actActorParamMgr.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/KingSystem/ActorSystem/actActorParamMgr.h b/src/KingSystem/ActorSystem/actActorParamMgr.h
index accb3457..67e60427 100644
--- a/src/KingSystem/ActorSystem/actActorParamMgr.h
+++ b/src/KingSystem/ActorSystem/actActorParamMgr.h
@@ -6,6 +6,7 @@
#include <prim/seadSafeString.h>
#include <prim/seadTypedBitFlag.h>
#include <thread/seadCriticalSection.h>
+#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/Resource/resHandle.h"
#include "KingSystem/System/DebugMessage.h"
#include "KingSystem/System/KingEditor.h"
@@ -14,13 +15,13 @@
namespace ksys {
namespace res {
+class Archive;
class GParamList;
+class LoadRequest;
} // namespace res
namespace act {
-class ActorParam;
-
// FIXME: incomplete
class ActorParamMgr final : public sead::hostio::Node, public KingEditorComponent {
SEAD_SINGLETON_DISPOSER(ActorParamMgr)
@@ -35,10 +36,14 @@ public:
sead::Heap* getDebugHeap() const { return mDebugHeap; }
sead::Heap* getTmpActorParamMgrHeap() const { return mTmpActorParamMgrHeap; }
+ bool checkPath(const sead::SafeString& path) const;
+
void init(sead::Heap* heap, sead::Heap* debug_heap);
+ ActorParam* allocParam(const char* actor_name, bool* allocated_new);
ActorParam* getParam(const char* actor_name, ActorParam** out_free_param) const;
ActorParam* loadParam(const char* actor_name, res::Handle* handle, void* x, u32 load_req_c);
+ void unloadParam(ActorParam* param);
res::GParamList* getDummyGParamList() const;
@@ -50,9 +55,25 @@ private:
_5 = _1 | _4,
};
- void loadFiles(ActorParam* param, sead::Heap* heap, res::Handle* handle, void* x,
+ void loadFiles(ActorParam* param, sead::Heap* heap, res::Handle* pack_handle, void* x,
u32 load_req_c);
- bool loadActorPack(res::Handle* handle, const sead::SafeString& actor_name, u32 load_req_c);
+ bool requestLoadActorPack(res::Handle* handle, const sead::SafeString& actor_name,
+ u32 load_req_c);
+ bool prepareLoadFromActorPack(sead::BufferedSafeString* path, res::LoadRequest* req, void* x,
+ const sead::SafeString& dir_name,
+ const sead::SafeString& extension,
+ const sead::SafeString& file_name, res::Handle* pack_handle,
+ u32 load_req_c, const sead::SafeString& requester);
+ res::Archive* loadActorPack(res::Handle* handle, const sead::SafeString& actor_name,
+ u32 load_req_c);
+
+ template <typename T>
+ T* loadFile(ActorParam* param, ActorParam::ResourceType type, const char* dir_name_c,
+ const char* extension_c, const char* name_c, res::Handle* pack_handle, void* x,
+ u32 load_req_c);
+
+ void loadFilesStep2(ActorParam* param, sead::Heap* heap, res::Handle* pack_handle, void* x,
+ u32 load_req_c);
static constexpr s32 NumParams = 0x400;