From cb33d236a3286ef5660a712b4b065d413e41f21f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 1 Jan 2021 18:37:37 +0100 Subject: [PATCH] uking: Implement GameDataAddVec3 action --- data/uking_functions.csv | 4 ++-- src/Game/AI/Action/actionGameDataAddVec3.cpp | 23 ++++++++++++++++++++ src/Game/AI/Action/actionGameDataAddVec3.h | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 8f3a837a..d0824999 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -9833,7 +9833,7 @@ 0x0000007100170f08,_ZN5uking6action15GameDataAddVec3D1Ev,20,_ZN5uking6action15GameDataAddVec3D1Ev 0x0000007100170f1c,_ZN5uking6action15GameDataAddVec3D0Ev,52,_ZN5uking6action15GameDataAddVec3D0Ev 0x0000007100170f50,_ZN5uking6action15GameDataAddVec35init_EPN4sead4HeapE,8,_ZN5uking6action15GameDataAddVec35init_EPN4sead4HeapE -0x0000007100170f58,_ZN5uking6action15GameDataAddVec38oneShot_Ev,252, +0x0000007100170f58,_ZN5uking6action15GameDataAddVec38oneShot_Ev,252,_ZN5uking6action15GameDataAddVec38oneShot_Ev 0x0000007100171054,_ZN5uking6action15GameDataAddVec311loadParams_Ev,208,_ZN5uking6action15GameDataAddVec311loadParams_Ev 0x0000007100171124,_ZNK5uking6action15GameDataAddVec327checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE,288,_ZNK5uking6action15GameDataAddVec327checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100171244,_ZNK5uking6action15GameDataAddVec318getRuntimeTypeInfoEv,92,_ZNK5uking6action15GameDataAddVec318getRuntimeTypeInfoEv @@ -76039,7 +76039,7 @@ 0x0000007100dd2430,GameDataMgr::setFloatByKey,172,_ZN4ksys3gdt7Manager6setF32EfRKN4sead14SafeStringBaseIcEE 0x0000007100dd24dc,GameDataMgr::setString32ByKey,164, 0x0000007100dd2580,GameDataMgr::setString64ByKey,164, -0x0000007100dd2624,GameDataMgr::setVec3ByKey,164, +0x0000007100dd2624,GameDataMgr::setVec3ByKey,164,_ZN4ksys3gdt7Manager8setVec3fERKN4sead7Vector3IfEERKNS2_14SafeStringBaseIcEE 0x0000007100dd26c8,GameDataMgr::setBoolInArrayByKey,184, 0x0000007100dd2780,GameDataMgr::__auto3,184, 0x0000007100dd2838,sub_7100DD2838,184, diff --git a/src/Game/AI/Action/actionGameDataAddVec3.cpp b/src/Game/AI/Action/actionGameDataAddVec3.cpp index 1e67aefd..dfacde0d 100644 --- a/src/Game/AI/Action/actionGameDataAddVec3.cpp +++ b/src/Game/AI/Action/actionGameDataAddVec3.cpp @@ -1,4 +1,5 @@ #include "Game/AI/Action/actionGameDataAddVec3.h" +#include "KingSystem/GameData/gdtManager.h" namespace uking::action { @@ -10,6 +11,28 @@ bool GameDataAddVec3::init_(sead::Heap* heap) { return ksys::act::ai::Action::init_(heap); } +bool GameDataAddVec3::oneShot_() { + auto* gdm = ksys::gdt::Manager::instance(); + if (!gdm) { + setFailed(); + mFlags.set(Flag::_4); + return false; + } + + auto src = sead::Vector3f::zero; + auto dst = sead::Vector3f::zero; + if (gdm->getParam().get().getVec3f(&src, mGameDataVec3fSrcName_d)) { + if (gdm->getParam().get().getVec3f(&dst, mGameDataVec3fDstName_d)) { + src.x = src.x + dst.x; + src.y = src.y + dst.y; + src.z = src.z + dst.z; + } + gdm->setVec3f(src, mGameDataVec3fToName_d); + } + + return true; +} + void GameDataAddVec3::loadParams_() { getDynamicParam(&mGameDataVec3fSrcName_d, "GameDataVec3fSrcName"); getDynamicParam(&mGameDataVec3fDstName_d, "GameDataVec3fDstName"); diff --git a/src/Game/AI/Action/actionGameDataAddVec3.h b/src/Game/AI/Action/actionGameDataAddVec3.h index 1fe2cda1..56939cd6 100644 --- a/src/Game/AI/Action/actionGameDataAddVec3.h +++ b/src/Game/AI/Action/actionGameDataAddVec3.h @@ -11,6 +11,7 @@ public: ~GameDataAddVec3() override; bool init_(sead::Heap* heap) override; + bool oneShot_() override; void loadParams_() override; protected: