summaryrefslogtreecommitdiff
path: root/src/KingSystem/Resource
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/Resource
parentd9356ffa90f2b6c819b00bfc7905763aea8c39bc (diff)
ksys/act: Implement more ActorParamMgr functions
Diffstat (limited to 'src/KingSystem/Resource')
-rw-r--r--src/KingSystem/Resource/resResourceASList.h6
-rw-r--r--src/KingSystem/Resource/resResourceActorLink.h88
-rw-r--r--src/KingSystem/Resource/resResourceAttClientList.h6
-rw-r--r--src/KingSystem/Resource/resResourceMgrTask.cpp8
-rw-r--r--src/KingSystem/Resource/resResourceMgrTask.h5
-rw-r--r--src/KingSystem/Resource/resResourceRagdollConfigList.h10
-rw-r--r--src/KingSystem/Resource/resSystem.cpp9
-rw-r--r--src/KingSystem/Resource/resSystem.h4
-rw-r--r--src/KingSystem/Resource/resTextureHandleMgr.h3
9 files changed, 103 insertions, 36 deletions
diff --git a/src/KingSystem/Resource/resResourceASList.h b/src/KingSystem/Resource/resResourceASList.h
index b5910910..3f3b5366 100644
--- a/src/KingSystem/Resource/resResourceASList.h
+++ b/src/KingSystem/Resource/resResourceASList.h
@@ -10,6 +10,8 @@
namespace ksys::res {
+class AS;
+
class ASList : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(ASList, Resource)
public:
@@ -17,7 +19,7 @@ public:
agl::utl::Parameter<sead::SafeString> name;
agl::utl::Parameter<sead::SafeString> file_name;
agl::utl::ParameterObj obj;
- void* _88;
+ AS* as;
};
KSYS_CHECK_SIZE_NX150(ASDefine, 0x88);
@@ -65,6 +67,8 @@ public:
const Buffers& getBuffers() const { return mBuffers; }
const Common& getCommon() const { return mCommon.ref(); }
+ void addAS_(s32 index, AS* as);
+
protected:
bool finishParsing_() override;
bool m7_() override;
diff --git a/src/KingSystem/Resource/resResourceActorLink.h b/src/KingSystem/Resource/resResourceActorLink.h
index 7463e1c2..7230d68f 100644
--- a/src/KingSystem/Resource/resResourceActorLink.h
+++ b/src/KingSystem/Resource/resResourceActorLink.h
@@ -13,41 +13,68 @@ namespace ksys::res {
class ActorLink : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(ActorLink, Resource)
public:
- struct Users {
- enum class User {
- Profile = 0,
- ActorCapture = 1,
- AS = 2,
- Model = 3,
- Anim = 4,
- AIProgram = 5,
- GParam = 6,
- DamageParam = 7,
- RgConfigList = 8,
- RgBlendWeight = 9,
- Awareness = 10,
- Physics = 11,
- Chemical = 12,
- Attention = 13,
- ELink = 14,
- SLink = 15,
- XLink = 16,
- DropTable = 17,
- ShopData = 18,
- Recipe = 19,
- LOD = 20,
- BoneControl = 21,
- AISchedule = 22,
- LifeCondition = 23,
- UMii = 24,
- AnimationInfo = 25,
- };
+ enum class User {
+ Profile = 0,
+ ActorCapture = 1,
+ AS = 2,
+ Model = 3,
+ Anim = 4,
+ AIProgram = 5,
+ GParam = 6,
+ DamageParam = 7,
+ RgConfigList = 8,
+ RgBlendWeight = 9,
+ Awareness = 10,
+ Physics = 11,
+ Chemical = 12,
+ Attention = 13,
+ ELink = 14,
+ SLink = 15,
+ XLink = 16,
+ DropTable = 17,
+ ShopData = 18,
+ Recipe = 19,
+ LOD = 20,
+ BoneControl = 21,
+ AISchedule = 22,
+ LifeCondition = 23,
+ UMii = 24,
+ AnimationInfo = 25,
+ };
+ struct Users {
const agl::utl::Parameter<sead::SafeString>& getUser(User user) const {
return *(&profile + u32(user));
}
- sead::SafeString getUserName(User user) const { return getUser(user).ref().cstr(); }
+ const char* getUserName(User user) const { return getUser(user).ref().cstr(); }
+
+ const char* getProfile() const { return profile.ref().cstr(); }
+ const char* getActorCapture() const { return actor_capture.ref().cstr(); }
+ const char* getAS() const { return as.ref().cstr(); }
+ const char* getModel() const { return model.ref().cstr(); }
+ const char* getAnim() const { return anim.ref().cstr(); }
+ const char* getAIProgram() const { return ai_program.ref().cstr(); }
+ const char* getGParam() const { return gparam.ref().cstr(); }
+ const char* getDamageParam() const { return damage_param.ref().cstr(); }
+ const char* getRgConfigList() const { return rg_config_list.ref().cstr(); }
+ const char* getRgBlendWeight() const { return rg_blend_weight.ref().cstr(); }
+ const char* getAwareness() const { return awareness.ref().cstr(); }
+ const char* getPhysics() const { return physics.ref().cstr(); }
+ const char* getChemical() const { return chemical.ref().cstr(); }
+ const char* getAttention() const { return attention.ref().cstr(); }
+ const char* getELink() const { return elink.ref().cstr(); }
+ const char* getSLink() const { return slink.ref().cstr(); }
+ const char* getXLink() const { return xlink.ref().cstr(); }
+ const char* getDropTable() const { return drop_table.ref().cstr(); }
+ const char* getShopData() const { return shop_data.ref().cstr(); }
+ const char* getRecipe() const { return recipe.ref().cstr(); }
+ const char* getLOD() const { return lod.ref().cstr(); }
+ const char* getBoneControl() const { return bone_control.ref().cstr(); }
+ const char* getAISchedule() const { return ai_schedule.ref().cstr(); }
+ const char* getLifeCondition() const { return life_condition.ref().cstr(); }
+ const char* getUMii() const { return umii.ref().cstr(); }
+ const char* getAnimationInfo() const { return animation_info.ref().cstr(); }
agl::utl::Parameter<sead::SafeString> profile;
agl::utl::Parameter<sead::SafeString> actor_capture;
@@ -84,6 +111,7 @@ public:
bool needsParse() const override { return true; }
const Users& getUsers() const { return mUsers; }
+ const char* getUserName(User user) const { return getUsers().getUserName(user); }
const sead::SafeString& getActorNameJpn() const { return mActorNameJpn.ref(); }
const sead::SafeString& getPriority() const { return mPriority.ref(); }
f32 getActorScale() const { return mActorScale.ref(); }
diff --git a/src/KingSystem/Resource/resResourceAttClientList.h b/src/KingSystem/Resource/resResourceAttClientList.h
index adb38da8..9cb018f4 100644
--- a/src/KingSystem/Resource/resResourceAttClientList.h
+++ b/src/KingSystem/Resource/resResourceAttClientList.h
@@ -10,6 +10,8 @@
namespace ksys::res {
+class AttClient;
+
class AttClientList : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(AttClientList, Resource)
public:
@@ -26,7 +28,7 @@ public:
agl::utl::Parameter<sead::SafeString> file_name;
agl::utl::Parameter<bool> is_valid;
agl::utl::ParameterObj obj;
- void* _a0;
+ AttClient* client;
};
KSYS_CHECK_SIZE_NX150(Client, 0xa8);
@@ -36,6 +38,8 @@ public:
bool isForceEdit() const { return mForceEdit.ref(); }
const sead::Buffer<Client>& getClients() const { return mClients; }
+ void addClient_(s32 index, AttClient* client) { mClients[index].client = client; }
+
private:
agl::utl::ParameterList mAttClientsList;
agl::utl::ParameterObj mAttPosObj;
diff --git a/src/KingSystem/Resource/resResourceMgrTask.cpp b/src/KingSystem/Resource/resResourceMgrTask.cpp
index 5b5d39ed..b883c84a 100644
--- a/src/KingSystem/Resource/resResourceMgrTask.cpp
+++ b/src/KingSystem/Resource/resResourceMgrTask.cpp
@@ -373,7 +373,7 @@ bool ResourceMgrTask::canUseSdCard() const {
return false;
}
-bool ResourceMgrTask::returnFalse() const {
+bool ResourceMgrTask::isHostPath(const sead::SafeString&) const {
return false;
}
@@ -634,6 +634,12 @@ bool ResourceMgrTask::isCompactionStopped() const {
return mCompactionCounter == 0;
}
+bool ResourceMgrTask::initTempResourceLoader(TempResourceLoader* loader,
+ TempResourceLoader::InitArg& arg) {
+ arg.work = mTexHandleMgr->getArchiveWork();
+ return loader->init(arg);
+}
+
bool ResourceMgrTask::returnTrue1() {
return true;
}
diff --git a/src/KingSystem/Resource/resResourceMgrTask.h b/src/KingSystem/Resource/resResourceMgrTask.h
index df1117e9..d8c1d042 100644
--- a/src/KingSystem/Resource/resResourceMgrTask.h
+++ b/src/KingSystem/Resource/resResourceMgrTask.h
@@ -21,6 +21,7 @@
#include "KingSystem/Resource/resControlTask.h"
#include "KingSystem/Resource/resCounter.h"
#include "KingSystem/Resource/resInfoContainer.h"
+#include "KingSystem/Resource/resTempResourceLoader.h"
#include "KingSystem/Resource/resUnit.h"
#include "KingSystem/Resource/resUnitPool.h"
#include "KingSystem/System/OverlayArena.h"
@@ -162,7 +163,7 @@ public:
sead::DirectResource* load(const DirectLoadArg& arg);
bool canUseSdCard() const;
- bool returnFalse() const;
+ bool isHostPath(const sead::SafeString& path) const;
bool dropSFromExtensionIfNeeded(const sead::SafeString& path,
sead::BufferedSafeString& new_path, s32 dot_idx,
@@ -213,6 +214,8 @@ public:
void setCompactionStopped(bool stopped);
bool isCompactionStopped() const;
+ bool initTempResourceLoader(TempResourceLoader* loader, TempResourceLoader::InitArg& arg);
+
bool returnTrue1();
void clearCacheWithFileExtension(const sead::SafeString& extension);
diff --git a/src/KingSystem/Resource/resResourceRagdollConfigList.h b/src/KingSystem/Resource/resResourceRagdollConfigList.h
index 8f203be8..c7787cb2 100644
--- a/src/KingSystem/Resource/resResourceRagdollConfigList.h
+++ b/src/KingSystem/Resource/resResourceRagdollConfigList.h
@@ -10,13 +10,15 @@
namespace ksys::res {
+class RagdollConfig;
+
class RagdollConfigList : public ParamIO, public Resource {
SEAD_RTTI_OVERRIDE(RagdollConfigList, Resource)
public:
struct ImpulseParam {
agl::utl::Parameter<sead::SafeString> file_name;
agl::utl::ParameterObj obj;
- void* _58;
+ RagdollConfig* config;
};
KSYS_CHECK_SIZE_NX150(ImpulseParam, 0x60);
@@ -39,7 +41,11 @@ public:
const sead::Buffer<ImpulseParam>& getImpulseParams() const { return mImpulseParams; }
f32 getUpperLimitHeight() const { return mUpperLimitHeight.ref(); }
f32 getLowerLimitHeight() const { return mLowerLimitHeight.ref(); }
- const sead::Buffer<BodyParam>& getMBodyParams() const { return mBodyParams; }
+ const sead::Buffer<BodyParam>& getBodyParams() const { return mBodyParams; }
+
+ void addImpulseParamConfig_(s32 index, RagdollConfig* config) {
+ mImpulseParams[index].config = config;
+ }
private:
agl::utl::ParameterList mImpulseParamList;
diff --git a/src/KingSystem/Resource/resSystem.cpp b/src/KingSystem/Resource/resSystem.cpp
index 71713a1c..f4238ad1 100644
--- a/src/KingSystem/Resource/resSystem.cpp
+++ b/src/KingSystem/Resource/resSystem.cpp
@@ -1,4 +1,5 @@
#include "KingSystem/Resource/resSystem.h"
+#include "KingSystem/Resource/resResourceMgrTask.h"
namespace ksys::res {
@@ -6,6 +7,10 @@ bool stubbedLogFunction() {
return true;
}
+bool isHostPath(const sead::SafeString& path) {
+ return ResourceMgrTask::instance()->isHostPath(path);
+}
+
bool returnFalse() {
return false;
}
@@ -14,6 +19,10 @@ bool returnFalse2(const sead::SafeString&) {
return false;
}
+bool returnFalse3(const sead::SafeString&) {
+ return false;
+}
+
s32 getDefaultAlignment() {
return 8;
}
diff --git a/src/KingSystem/Resource/resSystem.h b/src/KingSystem/Resource/resSystem.h
index b617d323..4d44d20f 100644
--- a/src/KingSystem/Resource/resSystem.h
+++ b/src/KingSystem/Resource/resSystem.h
@@ -9,6 +9,8 @@ class EntryFactoryBase;
void registerEntryFactory(EntryFactoryBase* factory, const sead::SafeString& name);
void unregisterEntryFactory(EntryFactoryBase* factory);
+bool isHostPath(const sead::SafeString& path);
+
// In release builds, the only thing this function does is return 1.
// TODO: figure out what this is used for. Stubbed log function?
bool stubbedLogFunction();
@@ -21,6 +23,8 @@ bool returnFalse();
// TODO: figure out what this is used for. Stubbed log function?
bool returnFalse2(const sead::SafeString&);
+bool returnFalse3(const sead::SafeString& path);
+
s32 getDefaultAlignment();
} // namespace ksys::res
diff --git a/src/KingSystem/Resource/resTextureHandleMgr.h b/src/KingSystem/Resource/resTextureHandleMgr.h
index 7e90d537..b9fd7701 100644
--- a/src/KingSystem/Resource/resTextureHandleMgr.h
+++ b/src/KingSystem/Resource/resTextureHandleMgr.h
@@ -2,11 +2,14 @@
namespace ksys::res {
+class ArchiveWork;
+
// TODO: very incomplete
class TextureHandleMgr {
public:
virtual ~TextureHandleMgr();
+ ArchiveWork* getArchiveWork() const;
void clearAllCache();
};