From 707001d7476ab76d96150ce25c4f7a71e9d9d6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 20 Sep 2020 12:03:23 +0200 Subject: [PATCH] ksys/res: Implement GParamList HorseRider --- CMakeLists.txt | 1 + data/uking_functions.csv | 4 +- .../resGParamListObjectHorseRider.h | 56 +++++++++++++++++++ .../Resource/resResourceGParamList.cpp | 2 + 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseRider.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b775fdf8..e4353357 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectGuardianMiniWeapon.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorse.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseObject.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseRider.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseUnit.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectInsect.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectItem.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index c23f824b..cb9caf9e 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89103,7 +89103,7 @@ 0x00000071011a04c8,BgparamlistObjectRope::ctor,820,_ZN4ksys3res20GParamListObjectRopeC2Ev 0x00000071011a07fc,BgparamlistObjectHorse::ctor,1068,_ZN4ksys3res21GParamListObjectHorseC2Ev 0x00000071011a0c28,BgparamlistObjectHorseUnit::ctor,424,_ZN4ksys3res25GParamListObjectHorseUnitC2Ev -0x00000071011a0dd0,BgparamlistObjectHorseRider::ctor,1432, +0x00000071011a0dd0,BgparamlistObjectHorseRider::ctor,1432,_ZN4ksys3res26GParamListObjectHorseRiderC2Ev 0x00000071011a1368,BgparamlistObjectHorseCreator::ctor,328, 0x00000071011a14b0,BgparamlistObjectGiantArmorSlot::ctor,1188, 0x00000071011a1954,BgparamlistObjectGuardian::ctor,812, @@ -89199,7 +89199,7 @@ 0x00000071011a7e00,sub_71011A7E00,12,_ZNK4ksys3res21GParamListObjectHorse7getNameEv 0x00000071011a7e0c,sub_71011A7E0C,12,_ZNK4ksys3res25GParamListObjectHorseUnit7getNameEv 0x00000071011a7e18,sub_71011A7E18,12,_ZNK4ksys3res27GParamListObjectHorseObject7getNameEv -0x00000071011a7e24,sub_71011A7E24,12, +0x00000071011a7e24,sub_71011A7E24,12,_ZNK4ksys3res26GParamListObjectHorseRider7getNameEv 0x00000071011a7e30,sub_71011A7E30,12, 0x00000071011a7e3c,sub_71011A7E3C,12, 0x00000071011a7e48,sub_71011A7E48,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseRider.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseRider.h new file mode 100644 index 00000000..248f645f --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectHorseRider.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectHorseRider : public GParamListObject { +public: + GParamListObjectHorseRider(); + const char* getName() const override { return "HorseRider"; } + + agl::utl::Parameter mRootNode; + agl::utl::Parameter mSpineNode; + agl::utl::Parameter mRotBaseNode; + agl::utl::Parameter mRotAxis; + agl::utl::Parameter mRotLimit; + agl::utl::Parameter mWeaponTransOffsetSmallSword; + agl::utl::Parameter mWeaponTransOffsetLargeSword; + agl::utl::Parameter mWeaponTransOffsetSpear; + agl::utl::Parameter mWeaponTransOffsetBow; + agl::utl::Parameter mWeaponTransOffsetShield; + agl::utl::Parameter mLeftFootNode; + agl::utl::Parameter mLeftFootRotAxis; + agl::utl::Parameter mRightFootNode; + agl::utl::Parameter mRightFootRotAxis; + agl::utl::Parameter mFootRotRatio; + agl::utl::Parameter mFootRetRotRatio; + agl::utl::Parameter mFootRotAngleForKuma; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectHorseRider, 0x2c0); + +inline GParamListObjectHorseRider::GParamListObjectHorseRider() { + auto* const obj = &mObj; + + mRootNode.init("", "RootNode", "", obj); + mSpineNode.init("", "SpineNode", "", obj); + mRotBaseNode.init("", "RotBaseNode", "", obj); + mRotAxis.init({0.0, 1.0, 0.0}, "RotAxis", "", obj); + mRotLimit.init(0.0, "RotLimit", "", obj); + mWeaponTransOffsetSmallSword.init({0.0, 0.0, 0.0}, "WeaponTransOffsetSmallSword", "", obj); + mWeaponTransOffsetLargeSword.init({0.0, 0.0, 0.0}, "WeaponTransOffsetLargeSword", "", obj); + mWeaponTransOffsetSpear.init({0.0, 0.0, 0.0}, "WeaponTransOffsetSpear", "", obj); + mWeaponTransOffsetBow.init({0.0, 0.0, 0.0}, "WeaponTransOffsetBow", "", obj); + mWeaponTransOffsetShield.init({0.0, 0.0, 0.0}, "WeaponTransOffsetShield", "", obj); + mLeftFootNode.init("", "LeftFootNode", "", obj); + mLeftFootRotAxis.init({0.0, 0.0, 0.0}, "LeftFootRotAxis", "", obj); + mRightFootNode.init("", "RightFootNode", "", obj); + mRightFootRotAxis.init({0.0, 0.0, 0.0}, "RightFootRotAxis", "", obj); + mFootRotRatio.init(0.4, "FootRotRatio", "", obj); + mFootRetRotRatio.init(0.8, "FootRetRotRatio", "", obj); + mFootRotAngleForKuma.init(0.0, "FootRotAngleForKuma", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index 2c7d8019..4e9ceafd 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -31,6 +31,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGuardianMiniWeapon.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectHorse.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectHorseObject.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectHorseRider.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectHorseUnit.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectInsect.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectItem.h" @@ -150,6 +151,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "Horse", heap, dummy_list); add(archive.getRootList(), "HorseUnit", heap, dummy_list); add(archive.getRootList(), "HorseObject", heap, dummy_list); + add(archive.getRootList(), "HorseRider", heap, dummy_list); // TODO: the rest