From 34e57daf613053d248c65d22bd93bf60b245c0dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 28 Sep 2026 03:39:30 +0200 Subject: [PATCH] AI: merge the duplicate DummyAction into ksys The action factory uses the single ksys ctor for both entries and DummyDropTable's ctor calls it too; deriving from it makes DummyDropTable's five functions match. (AI assisted using Claude Fable 5.1 and Claude Opus 5.5) --- data/uking_functions.csv | 12 +++++------ src/Game/Actor/Action/CMakeLists.txt | 2 -- src/Game/Actor/Action/actionDummyAction.cpp | 21 ------------------- src/Game/Actor/Action/actionDummyAction.h | 20 ------------------ .../Actor/Action/actionDummyDropTable.cpp | 12 +++++------ src/Game/Actor/Action/actionDummyDropTable.h | 6 +++--- src/Game/Actor/aiActionFactories.cpp | 3 +-- 7 files changed, 16 insertions(+), 60 deletions(-) delete mode 100644 src/Game/Actor/Action/actionDummyAction.cpp delete mode 100644 src/Game/Actor/Action/actionDummyAction.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 893fb143..56d77c07 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -73928,18 +73928,18 @@ Address,Quality,Size,Name 0x0000007100d32550,O,000288,_ZNK4ksys3act2ai11DummyAction27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100d32670,O,000092,_ZNK4ksys3act2ai11DummyAction18getRuntimeTypeInfoEv 0x0000007100d326cc,O,000052,_ZN4ksys3act2ai11DummyActionD0Ev -0x0000007100d32700,M,000072,_ZN5uking6action14DummyDropTableC1ERKN4ksys3act2ai10ActionBase7InitArgE +0x0000007100d32700,O,000072,_ZN5uking6action14DummyDropTableC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100d32748,O,000020,_ZN5uking6action14DummyDropTableD1Ev 0x0000007100d3275c,O,000052,_ZN5uking6action14DummyDropTableD0Ev 0x0000007100d32790,O,000008,_ZN5uking6action14DummyDropTable5init_EPN4sead4HeapE -0x0000007100d32798,W,000004,_ZN5uking6action14DummyDropTable6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100d3279c,W,000004,_ZN5uking6action14DummyDropTable5calc_Ev -0x0000007100d327a0,W,000004,_ZN5uking6action14DummyDropTable6leave_Ev -0x0000007100d327a4,W,000084,_ZN5uking6action14DummyDropTable11loadParams_Ev +0x0000007100d32798,O,000004,_ZN5uking6action14DummyDropTable6enter_EPN4ksys3act2ai15InlineParamPackE +0x0000007100d3279c,O,000004,_ZN5uking6action14DummyDropTable5calc_Ev +0x0000007100d327a0,O,000004,_ZN5uking6action14DummyDropTable6leave_Ev +0x0000007100d327a4,O,000084,_ZN5uking6action14DummyDropTable11loadParams_Ev 0x0000007100d327f8,O,000008,_ZNK5uking6action14DummyDropTable27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100d32800,O,000092,_ZNK5uking6action14DummyDropTable18getRuntimeTypeInfoEv 0x0000007100d3285c,O,000372,_ZN5uking6action14DummyDropTable33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE -0x0000007100d329d0,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action11DummyActionEE9isDerivedEPKNS0_9InterfaceE +0x0000007100d329d0,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3act2ai11DummyActionEE9isDerivedEPKNS0_9InterfaceE 0x0000007100d32a5c,O,000048,_ZN5uking6action18DummyTriggerActionC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100d32a8c,O,000020,_ZN5uking6action18DummyTriggerActionD1Ev 0x0000007100d32aa0,O,000052,_ZN5uking6action18DummyTriggerActionD0Ev diff --git a/src/Game/Actor/Action/CMakeLists.txt b/src/Game/Actor/Action/CMakeLists.txt index a1dcc114..efdca8d3 100644 --- a/src/Game/Actor/Action/CMakeLists.txt +++ b/src/Game/Actor/Action/CMakeLists.txt @@ -623,8 +623,6 @@ target_sources(uking PRIVATE actionDropWeapon.h actionDrowningDeath.cpp actionDrowningDeath.h - actionDummyAction.cpp - actionDummyAction.h actionDummyDropTable.cpp actionDummyDropTable.h actionDummyTriggerAction.cpp diff --git a/src/Game/Actor/Action/actionDummyAction.cpp b/src/Game/Actor/Action/actionDummyAction.cpp deleted file mode 100644 index d03c0486..00000000 --- a/src/Game/Actor/Action/actionDummyAction.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "Game/Actor/Action/actionDummyAction.h" - -namespace uking::action { - -DummyAction::DummyAction(const InitArg& arg) : ksys::act::ai::Action(arg) {} - -void DummyAction::enter_(ksys::act::ai::InlineParamPack* params) { - ksys::act::ai::Action::enter_(params); -} - -void DummyAction::leave_() { - ksys::act::ai::Action::leave_(); -} - -void DummyAction::loadParams_() {} - -void DummyAction::calc_() { - ksys::act::ai::Action::calc_(); -} - -} // namespace uking::action diff --git a/src/Game/Actor/Action/actionDummyAction.h b/src/Game/Actor/Action/actionDummyAction.h deleted file mode 100644 index f96609e4..00000000 --- a/src/Game/Actor/Action/actionDummyAction.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "KingSystem/ActorSystem/actAiAction.h" - -namespace uking::action { - -class DummyAction : public ksys::act::ai::Action { - SEAD_RTTI_OVERRIDE(DummyAction, ksys::act::ai::Action) -public: - explicit DummyAction(const InitArg& arg); - - void enter_(ksys::act::ai::InlineParamPack* params) override; - void leave_() override; - void loadParams_() override; - -protected: - void calc_() override; -}; - -} // namespace uking::action diff --git a/src/Game/Actor/Action/actionDummyDropTable.cpp b/src/Game/Actor/Action/actionDummyDropTable.cpp index e4e87cac..75290e7b 100644 --- a/src/Game/Actor/Action/actionDummyDropTable.cpp +++ b/src/Game/Actor/Action/actionDummyDropTable.cpp @@ -2,29 +2,29 @@ namespace uking::action { -DummyDropTable::DummyDropTable(const InitArg& arg) : DummyAction(arg) {} +DummyDropTable::DummyDropTable(const InitArg& arg) : ksys::act::ai::DummyAction(arg) {} DummyDropTable::~DummyDropTable() = default; bool DummyDropTable::init_(sead::Heap* heap) { - return DummyAction::init_(heap); + return ksys::act::ai::DummyAction::init_(heap); } void DummyDropTable::enter_(ksys::act::ai::InlineParamPack* params) { - DummyAction::enter_(params); + ksys::act::ai::DummyAction::enter_(params); } void DummyDropTable::leave_() { - DummyAction::leave_(); + ksys::act::ai::DummyAction::leave_(); } void DummyDropTable::loadParams_() { - DummyAction::loadParams_(); + ksys::act::ai::DummyAction::loadParams_(); getMapUnitParam(&mDropTable_m, "DropTable"); } void DummyDropTable::calc_() { - DummyAction::calc_(); + ksys::act::ai::DummyAction::calc_(); } } // namespace uking::action diff --git a/src/Game/Actor/Action/actionDummyDropTable.h b/src/Game/Actor/Action/actionDummyDropTable.h index 2aebbdb5..8e07ff46 100644 --- a/src/Game/Actor/Action/actionDummyDropTable.h +++ b/src/Game/Actor/Action/actionDummyDropTable.h @@ -1,12 +1,12 @@ #pragma once -#include "Game/Actor/Action/actionDummyAction.h" #include "KingSystem/ActorSystem/actAiAction.h" +#include "KingSystem/ActorSystem/actionDummyAction.h" namespace uking::action { -class DummyDropTable : public DummyAction { - SEAD_RTTI_OVERRIDE(DummyDropTable, DummyAction) +class DummyDropTable : public ksys::act::ai::DummyAction { + SEAD_RTTI_OVERRIDE(DummyDropTable, ksys::act::ai::DummyAction) public: explicit DummyDropTable(const InitArg& arg); ~DummyDropTable() override; diff --git a/src/Game/Actor/aiActionFactories.cpp b/src/Game/Actor/aiActionFactories.cpp index 260c7410..616aa807 100644 --- a/src/Game/Actor/aiActionFactories.cpp +++ b/src/Game/Actor/aiActionFactories.cpp @@ -283,7 +283,6 @@ #include "Game/Actor/Action/actionDropCreateForReplace.h" #include "Game/Actor/Action/actionDropWeapon.h" #include "Game/Actor/Action/actionDrowningDeath.h" -#include "Game/Actor/Action/actionDummyAction.h" #include "Game/Actor/Action/actionDummyDropTable.h" #include "Game/Actor/Action/actionDummyTriggerAction.h" #include "Game/Actor/Action/actionDunegonRotateWait.h" @@ -2543,7 +2542,7 @@ static Factory sActionFactories[] = { {0x73664194, Factory::make}, {0x7380112a, Factory::make}, {0x73df6d4c, Factory::make}, - {0x73e6fb3b, Factory::make}, + {0x73e6fb3b, Factory::make}, {0x73fec15b, Factory::make}, {0x740366f6, Factory::make}, {0x74137cda, Factory::make},