diff --git a/CMakeLists.txt b/CMakeLists.txt index 859fc92e..f0fa1d4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,6 +101,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectPlayer.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectPrey.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectRod.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectRope.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectRupee.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectSandworm.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectSeriesArmor.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index de3ee23e..955b23a0 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89100,7 +89100,7 @@ 0x000000710119fac4,BgparamlistObjectEatTarget::ctor,684,_ZN4ksys3res25GParamListObjectEatTargetC2Ev 0x000000710119fd70,BgparamlistObjectAnimalUnit::ctor,1380,_ZN4ksys3res26GParamListObjectAnimalUnitC2Ev 0x00000071011a02d4,BgparamlistObjectFish::ctor,500,_ZN4ksys3res20GParamListObjectFishC2Ev -0x00000071011a04c8,BgparamlistObjectRope::ctor,820, +0x00000071011a04c8,BgparamlistObjectRope::ctor,820,_ZN4ksys3res20GParamListObjectRopeC2Ev 0x00000071011a07fc,BgparamlistObjectHorse::ctor,1068, 0x00000071011a0c28,BgparamlistObjectHorseUnit::ctor,424, 0x00000071011a0dd0,BgparamlistObjectHorseRider::ctor,1432, @@ -89195,7 +89195,7 @@ 0x00000071011a7dd0,sub_71011A7DD0,12,_ZNK4ksys3res26GParamListObjectAnimalUnit7getNameEv 0x00000071011a7ddc,sub_71011A7DDC,12,_ZNK4ksys3res22GParamListObjectInsect7getNameEv 0x00000071011a7de8,sub_71011A7DE8,12,_ZNK4ksys3res20GParamListObjectFish7getNameEv -0x00000071011a7df4,sub_71011A7DF4,12, +0x00000071011a7df4,sub_71011A7DF4,12,_ZNK4ksys3res20GParamListObjectRope7getNameEv 0x00000071011a7e00,sub_71011A7E00,12, 0x00000071011a7e0c,sub_71011A7E0C,12, 0x00000071011a7e18,sub_71011A7E18,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectRope.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectRope.h new file mode 100644 index 00000000..ea2cf042 --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectRope.h @@ -0,0 +1,42 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectRope : public GParamListObject { +public: + GParamListObjectRope(); + const char* getName() const override { return "Rope"; } + + agl::utl::Parameter mIsAllowCutting; + agl::utl::Parameter mIsSetupKeyframed; + agl::utl::Parameter mBoneEffectiveLength; + agl::utl::Parameter mIsInterpolateEdge; + agl::utl::Parameter mIsDeformable; + agl::utl::Parameter mIsOneBoneOneShape; + agl::utl::Parameter mSplineOffsetRateA; + agl::utl::Parameter mSplineOffsetRateB; + agl::utl::Parameter mSplineOffsetRateC; + agl::utl::Parameter mMtxEndPosOffsetLength; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectRope, 0x178); + +inline GParamListObjectRope::GParamListObjectRope() { + auto* const obj = &mObj; + + mIsAllowCutting.init(true, "IsAllowCutting", "", obj); + mIsSetupKeyframed.init(false, "IsSetupKeyframed", "", obj); + mBoneEffectiveLength.init(0.1, "BoneEffectiveLength", "", obj); + mIsInterpolateEdge.init(true, "IsInterpolateEdge", "", obj); + mIsDeformable.init(true, "IsDeformable", "", obj); + mIsOneBoneOneShape.init(false, "IsOneBoneOneShape", "", obj); + mSplineOffsetRateA.init(0.0, "SplineOffsetRateA", "", obj); + mSplineOffsetRateB.init(0.0, "SplineOffsetRateB", "", obj); + mSplineOffsetRateC.init(0.0, "SplineOffsetRateC", "", obj); + mMtxEndPosOffsetLength.init(0.0, "MtxEndPosOffsetLength", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index 761343db..bfad76b4 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -40,6 +40,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectPlayer.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectPrey.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectRod.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectRope.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectRupee.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectSandworm.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectSeriesArmor.h" @@ -142,6 +143,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "AnimalUnit", heap, dummy_list); add(archive.getRootList(), "Insect", heap, dummy_list); add(archive.getRootList(), "Fish", heap, dummy_list); + add(archive.getRootList(), "Rope", heap, dummy_list); // TODO: the rest