diff --git a/CMakeLists.txt b/CMakeLists.txt index b2d34424..41e90609 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,6 +118,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectShield.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectSmallSword.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectSpear.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectSwarm.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectSystem.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectTraveler.cpp src/KingSystem/Resource/GeneralParamList/resGParamListObjectTraveler.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 748e6113..206130ba 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89107,7 +89107,7 @@ 0x00000071011a1368,BgparamlistObjectHorseCreator::ctor,328,_ZN4ksys3res28GParamListObjectHorseCreatorC2Ev 0x00000071011a14b0,BgparamlistObjectGiantArmorSlot::ctor,1188,_ZN4ksys3res30GParamListObjectGiantArmorSlotC2Ev 0x00000071011a1954,BgparamlistObjectGuardian::ctor,812,_ZN4ksys3res24GParamListObjectGuardianC2Ev -0x00000071011a1c80,BgparamlistObjectSwarm::ctor,388, +0x00000071011a1c80,BgparamlistObjectSwarm::ctor,388,_ZN4ksys3res21GParamListObjectSwarmC2Ev 0x00000071011a1e04,BgparamlistObjectGelEnemy::ctor,1352, 0x00000071011a234c,BgparamlistObjectWizzrobe::ctor,832, 0x00000071011a268c,BgparamlistObjectStalEnemy::ctor,328, @@ -89205,7 +89205,7 @@ 0x00000071011a7e48,sub_71011A7E48,12,_ZNK4ksys3res26GParamListObjectGiantArmor7getNameEv 0x00000071011a7e54,sub_71011A7E54,12,_ZNK4ksys3res24GParamListObjectGuardian7getNameEv 0x00000071011a7e60,sub_71011A7E60,12,_ZNK4ksys3res27GParamListObjectMonsterShop7getNameEv -0x00000071011a7e6c,sub_71011A7E6C,12, +0x00000071011a7e6c,sub_71011A7E6C,12,_ZNK4ksys3res21GParamListObjectSwarm7getNameEv 0x00000071011a7e78,sub_71011A7E78,12, 0x00000071011a7e84,sub_71011A7E84,12, 0x00000071011a7e90,sub_71011A7E90,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectSwarm.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectSwarm.h new file mode 100644 index 00000000..01362e51 --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectSwarm.h @@ -0,0 +1,28 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectSwarm : public GParamListObject { +public: + GParamListObjectSwarm(); + const char* getName() const override { return "Swarm"; } + + agl::utl::Parameter mSwarmSubActorNum; + agl::utl::Parameter mSwarmPattern; + agl::utl::Parameter mDeadActorName; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectSwarm, 0xa0); + +inline GParamListObjectSwarm::GParamListObjectSwarm() { + auto* const obj = &mObj; + + mSwarmSubActorNum.init(50, "SwarmSubActorNum", "", obj); + mSwarmPattern.init(0, "SwarmPattern", "", obj); + mDeadActorName.init("", "DeadActorName", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index df806201..316dd5fe 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -57,6 +57,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectShield.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectSmallSword.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectSpear.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectSwarm.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectSystem.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectTraveler.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponCommon.h" @@ -163,6 +164,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "GiantArmor", heap, dummy_list); add(archive.getRootList(), "Guardian", heap, dummy_list); add(archive.getRootList(), "MonsterShop", heap, dummy_list); + add(archive.getRootList(), "Swarm", heap, dummy_list); // TODO: the rest