summaryrefslogtreecommitdiff
path: root/src/KingSystem/Resource
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-04-23 00:30:30 +0200
committerLéo Lam <leo@leolam.fr>2021-04-23 12:53:04 +0200
commit201d2ff06fd9ee9a1aac0ce914b23effae9c8f22 (patch)
treef9ff0055a38c0ec094410e7f738d6f68a4e4dfe2 /src/KingSystem/Resource
parent52196c4b75f84444bca3b9c19302146235bf8f6a (diff)
ksys/act: Finish implementing ActorParamMgr
Diffstat (limited to 'src/KingSystem/Resource')
-rw-r--r--src/KingSystem/Resource/resResourceAIProgram.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceAIProgram.h2
-rw-r--r--src/KingSystem/Resource/resResourceAttClient.cpp6
-rw-r--r--src/KingSystem/Resource/resResourceAttClient.h2
-rw-r--r--src/KingSystem/Resource/resResourceAttClientList.h2
-rw-r--r--src/KingSystem/Resource/resResourceAwareness.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceAwareness.h2
-rw-r--r--src/KingSystem/Resource/resResourceDamageParam.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceDamageParam.h4
-rw-r--r--src/KingSystem/Resource/resResourceGParamList.cpp91
-rw-r--r--src/KingSystem/Resource/resResourceGParamList.h2
-rw-r--r--src/KingSystem/Resource/resResourceLifeCondition.cpp2
-rw-r--r--src/KingSystem/Resource/resResourceLifeCondition.h2
-rw-r--r--src/KingSystem/Resource/resResourceLod.cpp4
-rw-r--r--src/KingSystem/Resource/resResourceLod.h4
-rw-r--r--src/KingSystem/Resource/resResourceModelList.h7
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);