From 8301cb80a626102a32ee869ed53886b011e47754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 1 Jan 2021 17:45:46 +0100 Subject: [PATCH] uking: Implement GameDataAddFloat action --- data/uking_functions.csv | 4 ++-- src/Game/AI/Action/actionGameDataAddFloat.cpp | 20 +++++++++++++++++++ src/Game/AI/Action/actionGameDataAddFloat.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 614ee177..78d55cb2 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -9817,7 +9817,7 @@ 0x00000071001707c0,_ZN5uking6action16GameDataAddFloatD1Ev,20,_ZN5uking6action16GameDataAddFloatD1Ev 0x00000071001707d4,_ZN5uking6action16GameDataAddFloatD0Ev,52,_ZN5uking6action16GameDataAddFloatD0Ev 0x0000007100170808,_ZN5uking6action16GameDataAddFloat5init_EPN4sead4HeapE,8,_ZN5uking6action16GameDataAddFloat5init_EPN4sead4HeapE -0x0000007100170810,_ZN5uking6action16GameDataAddFloat8oneShot_Ev,184, +0x0000007100170810,_ZN5uking6action16GameDataAddFloat8oneShot_Ev,184,_ZN5uking6action16GameDataAddFloat8oneShot_Ev 0x00000071001708c8,_ZN5uking6action16GameDataAddFloat11loadParams_Ev,208,_ZN5uking6action16GameDataAddFloat11loadParams_Ev 0x0000007100170998,_ZNK5uking6action16GameDataAddFloat27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE,288,_ZNK5uking6action16GameDataAddFloat27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100170ab8,_ZNK5uking6action16GameDataAddFloat18getRuntimeTypeInfoEv,92,_ZNK5uking6action16GameDataAddFloat18getRuntimeTypeInfoEv @@ -76036,7 +76036,7 @@ 0x0000007100dd2230,sub_7100DD2230,164, 0x0000007100dd22d4,sub_7100DD22D4,184, 0x0000007100dd238c,GameDataMgr::setIntByKey,164, -0x0000007100dd2430,GameDataMgr::setFloatByKey,172, +0x0000007100dd2430,GameDataMgr::setFloatByKey,172,_ZN4ksys3gdt7Manager6setF32EfRKN4sead14SafeStringBaseIcEE 0x0000007100dd24dc,GameDataMgr::setString32ByKey,164, 0x0000007100dd2580,GameDataMgr::setString64ByKey,164, 0x0000007100dd2624,GameDataMgr::setVec3ByKey,164, diff --git a/src/Game/AI/Action/actionGameDataAddFloat.cpp b/src/Game/AI/Action/actionGameDataAddFloat.cpp index 4e19d683..a8683bb4 100644 --- a/src/Game/AI/Action/actionGameDataAddFloat.cpp +++ b/src/Game/AI/Action/actionGameDataAddFloat.cpp @@ -1,4 +1,5 @@ #include "Game/AI/Action/actionGameDataAddFloat.h" +#include "KingSystem/GameData/gdtManager.h" namespace uking::action { @@ -10,6 +11,25 @@ bool GameDataAddFloat::init_(sead::Heap* heap) { return ksys::act::ai::Action::init_(heap); } +bool GameDataAddFloat::oneShot_() { + auto* gdm = ksys::gdt::Manager::instance(); + if (!gdm) { + setFailed(); + mFlags.set(Flag::_4); + return false; + } + + f32 src = 0.0; + f32 dst = 0.0; + if (gdm->getParam().get().getF32(&src, mGameDataFloatSrcName_d)) { + if (gdm->getParam().get().getF32(&dst, mGameDataFloatDstName_d)) + src += dst; + gdm->setF32(src, mGameDataFloatToName_d); + } + + return true; +} + void GameDataAddFloat::loadParams_() { getDynamicParam(&mGameDataFloatSrcName_d, "GameDataFloatSrcName"); getDynamicParam(&mGameDataFloatDstName_d, "GameDataFloatDstName"); diff --git a/src/Game/AI/Action/actionGameDataAddFloat.h b/src/Game/AI/Action/actionGameDataAddFloat.h index 62635d07..b6efda22 100644 --- a/src/Game/AI/Action/actionGameDataAddFloat.h +++ b/src/Game/AI/Action/actionGameDataAddFloat.h @@ -10,6 +10,7 @@ public: explicit GameDataAddFloat(const InitArg& arg); ~GameDataAddFloat() override; + bool oneShot_() override; bool init_(sead::Heap* heap) override; void loadParams_() override;