diff options
| author | Léo Lam <leo@leolam.fr> | 2021-04-23 00:30:30 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-04-23 12:53:04 +0200 |
| commit | 201d2ff06fd9ee9a1aac0ce914b23effae9c8f22 (patch) | |
| tree | f9ff0055a38c0ec094410e7f738d6f68a4e4dfe2 /src/KingSystem/Resource | |
| parent | 52196c4b75f84444bca3b9c19302146235bf8f6a (diff) | |
ksys/act: Finish implementing ActorParamMgr
Diffstat (limited to 'src/KingSystem/Resource')
| -rw-r--r-- | src/KingSystem/Resource/resResourceAIProgram.cpp | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAIProgram.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAttClient.cpp | 6 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAttClient.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAttClientList.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAwareness.cpp | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceAwareness.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceDamageParam.cpp | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceDamageParam.h | 4 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceGParamList.cpp | 91 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceGParamList.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceLifeCondition.cpp | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceLifeCondition.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceLod.cpp | 4 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceLod.h | 4 | ||||
| -rw-r--r-- | src/KingSystem/Resource/resResourceModelList.h | 7 |
16 files changed, 108 insertions, 28 deletions
diff --git a/src/KingSystem/Resource/resResourceAIProgram.cpp b/src/KingSystem/Resource/resResourceAIProgram.cpp index 2d5ceef4..bce91bf7 100644 --- a/src/KingSystem/Resource/resResourceAIProgram.cpp +++ b/src/KingSystem/Resource/resResourceAIProgram.cpp @@ -8,8 +8,6 @@ namespace ksys::res { -AIProgram::AIProgram() : ParamIO("aiprog", 0) {} - AIProgram::~AIProgram() = default; const sead::Buffer<AIProgram::AIActionDef>& diff --git a/src/KingSystem/Resource/resResourceAIProgram.h b/src/KingSystem/Resource/resResourceAIProgram.h index 01421ee7..c7a646bf 100644 --- a/src/KingSystem/Resource/resResourceAIProgram.h +++ b/src/KingSystem/Resource/resResourceAIProgram.h @@ -56,7 +56,7 @@ public: struct QueryDef : Definition {}; KSYS_CHECK_SIZE_NX150(QueryDef, 0x98); - AIProgram(); + AIProgram() : ParamIO("aiprog", 0) {} ~AIProgram() override; const sead::Buffer<AIActionDef>& getActionsOrAIs(act::ai::ActionType type) const; diff --git a/src/KingSystem/Resource/resResourceAttClient.cpp b/src/KingSystem/Resource/resResourceAttClient.cpp index 2bbe4f26..5038bfac 100644 --- a/src/KingSystem/Resource/resResourceAttClient.cpp +++ b/src/KingSystem/Resource/resResourceAttClient.cpp @@ -1,7 +1,3 @@ #include "KingSystem/Resource/resResourceAttClient.h" -namespace ksys::res { - -AttClient::AttClient() : ParamIO("atcl", 0) {} - -} // namespace ksys::res +namespace ksys::res {} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceAttClient.h b/src/KingSystem/Resource/resResourceAttClient.h index 808b8c81..6f9ee041 100644 --- a/src/KingSystem/Resource/resResourceAttClient.h +++ b/src/KingSystem/Resource/resResourceAttClient.h @@ -16,7 +16,7 @@ class AttClient : public ParamIO, public Resource { public: struct Check {}; - AttClient(); + AttClient() : ParamIO("atcl", 0) {} ~AttClient() override; act::AttType getAttType() const { return mAttType; } diff --git a/src/KingSystem/Resource/resResourceAttClientList.h b/src/KingSystem/Resource/resResourceAttClientList.h index 7ad3ade9..d336fc7a 100644 --- a/src/KingSystem/Resource/resResourceAttClientList.h +++ b/src/KingSystem/Resource/resResourceAttClientList.h @@ -16,6 +16,8 @@ class AttClientList : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(AttClientList, Resource) public: struct AttPos { + AttPos(); + agl::utl::Parameter<sead::SafeString> _0; agl::utl::Parameter<sead::Vector3f> _28; agl::utl::Parameter<sead::Vector3f> _50; diff --git a/src/KingSystem/Resource/resResourceAwareness.cpp b/src/KingSystem/Resource/resResourceAwareness.cpp index 855d7a9a..9c66ded8 100644 --- a/src/KingSystem/Resource/resResourceAwareness.cpp +++ b/src/KingSystem/Resource/resResourceAwareness.cpp @@ -2,8 +2,6 @@ namespace ksys::res { -Awareness::Awareness() : ParamIO("awareness", 0) {} - bool Awareness::parse_(u8* data, size_t, sead::Heap*) { addObj(&mBasisObj, "Basis"); addObj(&mSightObj, "Sight"); diff --git a/src/KingSystem/Resource/resResourceAwareness.h b/src/KingSystem/Resource/resResourceAwareness.h index 07c1b86c..80fe11a0 100644 --- a/src/KingSystem/Resource/resResourceAwareness.h +++ b/src/KingSystem/Resource/resResourceAwareness.h @@ -10,7 +10,7 @@ namespace ksys::res { class Awareness : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(Awareness, Resource) public: - Awareness(); + Awareness() : ParamIO("awareness", 0) {} ~Awareness() override = default; bool needsParse() const override { return true; } diff --git a/src/KingSystem/Resource/resResourceDamageParam.cpp b/src/KingSystem/Resource/resResourceDamageParam.cpp index 60d52b25..bf051e0f 100644 --- a/src/KingSystem/Resource/resResourceDamageParam.cpp +++ b/src/KingSystem/Resource/resResourceDamageParam.cpp @@ -2,8 +2,6 @@ namespace ksys::res { -DamageParam::DamageParam() : ParamIO("dmgparam", 0) {} - bool DamageParam::parse_(u8* data, size_t, sead::Heap* heap) { mDamageRateBuffer.allocBufferAssert(DamageSource::size(), heap); mDamageTypeBuffer.allocBufferAssert(DamageSource::size() * DamageSize::size(), heap); diff --git a/src/KingSystem/Resource/resResourceDamageParam.h b/src/KingSystem/Resource/resResourceDamageParam.h index a6258094..01ac1971 100644 --- a/src/KingSystem/Resource/resResourceDamageParam.h +++ b/src/KingSystem/Resource/resResourceDamageParam.h @@ -11,8 +11,8 @@ class DamageParam : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(DamageParam, Resource) public: - DamageParam(); - ~DamageParam() = default; + DamageParam() : ParamIO("dmgparam", 0) {} + ~DamageParam() override = default; bool needsParse() const override { return true; } bool ParamIO_m0() override { return false; } diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index c59b3d0c..adab0db8 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -203,6 +203,97 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { void GParamList::finalize_() {} +static constexpr size_t getResourceFactoryFallbackSizeConst() { + size_t size = 0; + size += sizeof(GParamListObjectSystem); + size += sizeof(GParamListObjectGeneral); + size += sizeof(GParamListObjectEnemy); + size += sizeof(GParamListObjectEnemyLevel); + size += sizeof(GParamListObjectEnemyRace); + size += sizeof(GParamListObjectAttackInterval); + size += sizeof(GParamListObjectEnemyShown); + size += sizeof(GParamListObjectBindBone); + size += sizeof(GParamListObjectAttack); + size += sizeof(GParamListObjectWeaponCommon); + size += sizeof(GParamListObjectWeaponThrow); + size += sizeof(GParamListObjectSandworm); + size += sizeof(GParamListObjectSmallSword); + size += sizeof(GParamListObjectRod); + size += sizeof(GParamListObjectLargeSword); + size += sizeof(GParamListObjectSpear); + size += sizeof(GParamListObjectShield); + size += sizeof(GParamListObjectBow); + size += sizeof(GParamListObjectWeaponOption); + size += sizeof(GParamListObjectMasterSword); + size += sizeof(GParamListObjectGuardianMiniWeapon); + size += sizeof(GParamListObjectPlayer); + size += sizeof(GParamListObjectCamera); + size += sizeof(GParamListObjectGrab); + size += sizeof(GParamListObjectArmor); + size += sizeof(GParamListObjectArmorEffect); + size += sizeof(GParamListObjectArmorHead); + size += sizeof(GParamListObjectArmorUpper); + size += sizeof(GParamListObjectShiekerStone); + size += sizeof(GParamListObjectSeriesArmor); + size += sizeof(GParamListObjectLiftable); + size += sizeof(GParamListObjectItem); + size += sizeof(GParamListObjectRupee); + size += sizeof(GParamListObjectArrow); + size += sizeof(GParamListObjectBullet); + size += sizeof(GParamListObjectCureItem); + size += sizeof(GParamListObjectCookSpice); + size += sizeof(GParamListObjectLumberjackTree); + size += sizeof(GParamListObjectNpc); + size += sizeof(GParamListObjectNpcEquipment); + size += sizeof(GParamListObjectZora); + size += sizeof(GParamListObjectTraveler); + size += sizeof(GParamListObjectPrey); + size += sizeof(GParamListObjectAnimalFollowOffset); + size += sizeof(GParamListObjectExtendedEntity); + size += sizeof(GParamListObjectBindActor); + size += sizeof(GParamListObjectEatTarget); + size += sizeof(GParamListObjectAnimalUnit); + size += sizeof(GParamListObjectInsect); + size += sizeof(GParamListObjectFish); + size += sizeof(GParamListObjectRope); + size += sizeof(GParamListObjectHorse); + size += sizeof(GParamListObjectHorseUnit); + size += sizeof(GParamListObjectHorseObject); + size += sizeof(GParamListObjectHorseRider); + size += sizeof(GParamListObjectHorseCreator); + size += sizeof(GParamListObjectGiantArmorSlot); + size += sizeof(GParamListObjectGiantArmor); + size += sizeof(GParamListObjectGuardian); + size += sizeof(GParamListObjectMonsterShop); + size += sizeof(GParamListObjectSwarm); + size += sizeof(GParamListObjectGelEnemy); + size += sizeof(GParamListObjectNest); + size += sizeof(GParamListObjectWizzrobe); + size += sizeof(GParamListObjectStalEnemy); + size += sizeof(GParamListObjectGuardianMini); + size += sizeof(GParamListObjectClothReaction); + size += sizeof(GParamListObjectGlobal); + size += sizeof(GParamListObjectBeam); + size += sizeof(GParamListObjectAutoGen); + size += sizeof(GParamListObjectChemicalType); + size += sizeof(GParamListObjectGolem); + size += sizeof(GParamListObjectHorseTargetedInfo); + size += sizeof(GParamListObjectWolfLink); + size += sizeof(GParamListObjectEvent); + size += sizeof(GParamListObjectGolemIK); + size += sizeof(GParamListObjectPictureBook); + size += sizeof(GParamListObjectAirWall); + size += sizeof(GParamListObjectMotorcycle); + size += sizeof(GParamList); + return size; +} + +u32 GParamList::getResourceFactoryFallbackSize() { + constexpr size_t size = getResourceFactoryFallbackSizeConst(); + static_assert(size == static_cast<u32>(size)); + return static_cast<u32>(size); +} + void DummyGParamList::doCreate_(u8*, u32, sead::Heap*) {} bool DummyGParamList::parse_(u8* data, size_t size, sead::Heap* heap) { diff --git a/src/KingSystem/Resource/resResourceGParamList.h b/src/KingSystem/Resource/resResourceGParamList.h index 5294575d..39e8f6ec 100644 --- a/src/KingSystem/Resource/resResourceGParamList.h +++ b/src/KingSystem/Resource/resResourceGParamList.h @@ -19,6 +19,8 @@ public: void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override; bool needsParse() const override { return true; } + static u32 getResourceFactoryFallbackSize(); + template <GParamListObjType Type> const auto* get() const { using Traits = GParamListObjTypeTraits<Type>; diff --git a/src/KingSystem/Resource/resResourceLifeCondition.cpp b/src/KingSystem/Resource/resResourceLifeCondition.cpp index c32f7e02..09a1bd91 100644 --- a/src/KingSystem/Resource/resResourceLifeCondition.cpp +++ b/src/KingSystem/Resource/resResourceLifeCondition.cpp @@ -2,8 +2,6 @@ namespace ksys::res { -LifeCondition::LifeCondition() : ParamIO("lifecondition", 0) {} - // NON_MATCHING: two instructions swapped bool LifeCondition::parse_(u8* data, size_t, sead::Heap* heap) { if (!data) diff --git a/src/KingSystem/Resource/resResourceLifeCondition.h b/src/KingSystem/Resource/resResourceLifeCondition.h index 46bc3440..f3107f5f 100644 --- a/src/KingSystem/Resource/resResourceLifeCondition.h +++ b/src/KingSystem/Resource/resResourceLifeCondition.h @@ -11,7 +11,7 @@ namespace ksys::res { class LifeCondition : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(LifeCondition, Resource) public: - LifeCondition(); + LifeCondition() : ParamIO("lifecondition", 0) {} ~LifeCondition() override = default; bool needsParse() const override { return true; } diff --git a/src/KingSystem/Resource/resResourceLod.cpp b/src/KingSystem/Resource/resResourceLod.cpp index 6ed71226..baa7545f 100644 --- a/src/KingSystem/Resource/resResourceLod.cpp +++ b/src/KingSystem/Resource/resResourceLod.cpp @@ -2,10 +2,6 @@ namespace ksys::res { -Lod::Lod() : ParamIO("lod", 0) {} - -Lod::~Lod() = default; - bool Lod::parse_(u8* data, size_t, sead::Heap*) { mDisableOutScreenCalcStop.init(false, "DisableOutScreenCalcStop", "", &mHeader); mDisableXLinkSkip.init(false, "DisableXLinkSkip", "", &mHeader); diff --git a/src/KingSystem/Resource/resResourceLod.h b/src/KingSystem/Resource/resResourceLod.h index ca933f5c..059ef0cc 100644 --- a/src/KingSystem/Resource/resResourceLod.h +++ b/src/KingSystem/Resource/resResourceLod.h @@ -11,8 +11,8 @@ namespace ksys::res { class Lod : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(Lod, Resource) public: - Lod(); - ~Lod() override; + Lod() : ParamIO("lod", 0) {} + ~Lod() override = default; bool ParamIO_m0() override { return true; } void doCreate_(u8*, u32, sead::Heap*) override {} diff --git a/src/KingSystem/Resource/resResourceModelList.h b/src/KingSystem/Resource/resResourceModelList.h index d614ade5..1d399f46 100644 --- a/src/KingSystem/Resource/resResourceModelList.h +++ b/src/KingSystem/Resource/resResourceModelList.h @@ -11,7 +11,6 @@ namespace ksys::res { -// FIXME: incomplete class ModelList : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(ModelList, Resource) public: @@ -137,7 +136,9 @@ public: const Attention& getAttention() const { return mAttention.ref(); } const sead::Buffer<ModelData>& getModelData() const { return mModelData; } const sead::Buffer<AnmTarget>& getAnmTargets() const { return mAnmTargets; } - bool is7C8() const { return _7c8; } + + bool isDummy() const { return mIsDummy; } + void markAsDummy() { mIsDummy = true; } int getNumAnmTargets() const; void getModelDataInfo(ModelDataInfo* info) const; @@ -161,7 +162,7 @@ private: agl::utl::ParameterList mModelDataList; sead::Buffer<AnmTarget> mAnmTargets; agl::utl::ParameterList mAnmTargetList; - bool _7c8 = false; + bool mIsDummy = false; }; KSYS_CHECK_SIZE_NX150(ModelList, 0x7d0); |
