diff options
| author | Léo Lam <leo@leolam.fr> | 2020-11-12 16:03:03 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-11-14 21:06:08 +0100 |
| commit | ffe38d0076fd487bae46edd092171469ec08d439 (patch) | |
| tree | 16c4f06dc454e2c81d67133355184022397198d6 /src/KingSystem/Resource | |
| parent | d9356ffa90f2b6c819b00bfc7905763aea8c39bc (diff) | |
ksys/act: Implement more ActorParamMgr functions
Diffstat (limited to 'src/KingSystem/Resource')
| -rw-r--r-- | src/KingSystem/Resource/resResourceASList.h | 6 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceActorLink.h | 88 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAttClientList.h | 6 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceMgrTask.cpp | 8 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceMgrTask.h | 5 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceRagdollConfigList.h | 10 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resSystem.cpp | 9 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resSystem.h | 4 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resTextureHandleMgr.h | 3 |
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(); }; |
