diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 57e6976b..68e716f1 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -40494,21 +40494,21 @@ 0x0000007100683ec0,AI_Query_BranchByDyeColor::doQuery,36, 0x0000007100683ee4,AI_Query_BranchByDyeColor::m10,4, 0x0000007100683ee8,AI_Query_BranchByDyeColor::loadParams,4, -0x0000007100683eec,AI_QueryBase::m8n,4, +0x0000007100683eec,AI_QueryBase::m8n,4,_ZN4ksys3act2ai5Query2m8Ev 0x0000007100683ef0,AI_Query_BranchByDyeColor::rtti1,204, 0x0000007100683fbc,AI_Query_BranchByDyeColor::rtti2,92, -0x0000007100684018,AI_QueryBase::m4r0,8, -0x0000007100684020,AI_QueryBase::m5r0,8, -0x0000007100684028,AI_QueryBase::m6n,4, -0x000000710068402c,AI_QueryBase::m7r1,8, -0x0000007100684034,AI_QueryBase::m11r1,8, -0x000000710068403c,AI_QueryBase::m12n,4, -0x0000007100684040,AI_QueryBase::rtti1,112, -0x00000071006840b0,AI_QueryBase::rtti2,92, -0x000000710068410c,AI_QueryBase::dtor,20, -0x0000007100684120,AI_QueryBase::dtorDelete,52, -0x0000007100684154,AI_QueryBase::doQuery,8, -0x000000710068415c,AI_QueryBase::m10n,4, +0x0000007100684018,AI_QueryBase::m4r0,8,_ZN4ksys3act2ai5Query2m4Ev +0x0000007100684020,AI_QueryBase::m5r0,8,_ZN4ksys3act2ai5Query2m5Ev +0x0000007100684028,AI_QueryBase::m6n,4,_ZN4ksys3act2ai5Query2m6Ev +0x000000710068402c,AI_QueryBase::m7r1,8,_ZN4ksys3act2ai5Query2m7Ev +0x0000007100684034,AI_QueryBase::m11r1,8,_ZN4ksys3act2ai5Query3m11Ev +0x000000710068403c,AI_QueryBase::m12n,4,_ZN4ksys3act2ai5Query3m12Ev +0x0000007100684040,AI_QueryBase::rtti1,112,_ZNK4ksys3act2ai5Query27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071006840b0,AI_QueryBase::rtti2,92,_ZNK4ksys3act2ai5Query18getRuntimeTypeInfoEv +0x000000710068410c,AI_QueryBase::dtor,20,_ZN4ksys3act2ai5QueryD2Ev +0x0000007100684120,AI_QueryBase::dtorDelete,52,_ZN4ksys3act2ai5QueryD0Ev +0x0000007100684154,AI_QueryBase::doQuery,8,_ZN4ksys3act2ai5Query7doQueryEv +0x000000710068415c,AI_QueryBase::m10n,4,_ZN4ksys3act2ai5Query3m10Ev 0x0000007100684160,sub_7100684160,140, 0x00000071006841ec,AI_Query_BranchByGameOver::ctor,48, 0x000000710068421c,AI_Query_BranchByGameOver::dtor,20, @@ -74047,7 +74047,7 @@ 0x0000007100d5a128,sub_7100D5A128,48, 0x0000007100d5a158,sub_7100D5A158,92, 0x0000007100d5a1b4,sub_7100D5A1B4,140,_ZNK4sead15RuntimeTypeInfo6DeriveINS_15SharcArchiveResEE9isDerivedEPKNS0_9InterfaceE -0x0000007100d5a240,AI_QueryBase::ctor,72, +0x0000007100d5a240,AI_QueryBase::ctor,72,_ZN4ksys3act2ai5QueryC1ERKNS2_7InitArgE 0x0000007100d5a288,sub_7100D5A288,304, 0x0000007100d5a3b8,sub_7100D5A3B8,64, 0x0000007100d5a3f8,sub_7100D5A3F8,56, diff --git a/src/KingSystem/ActorSystem/CMakeLists.txt b/src/KingSystem/ActorSystem/CMakeLists.txt index 8a0d6800..2aaea86c 100644 --- a/src/KingSystem/ActorSystem/CMakeLists.txt +++ b/src/KingSystem/ActorSystem/CMakeLists.txt @@ -27,6 +27,8 @@ target_sources(uking PRIVATE actAiClass.h actAiParam.cpp actAiParam.h + actAiQuery.cpp + actAiQuery.h actAttention.cpp actAttention.h actBaseProc.cpp diff --git a/src/KingSystem/ActorSystem/actAiQuery.cpp b/src/KingSystem/ActorSystem/actAiQuery.cpp new file mode 100644 index 00000000..3c997249 --- /dev/null +++ b/src/KingSystem/ActorSystem/actAiQuery.cpp @@ -0,0 +1,7 @@ +#include "KingSystem/ActorSystem/actAiQuery.h" + +namespace ksys::act::ai { + +Query::Query(const InitArg& arg) : mProc(arg.proc), mDefIdx(arg.def_idx) {} + +} // namespace ksys::act::ai diff --git a/src/KingSystem/ActorSystem/actAiQuery.h b/src/KingSystem/ActorSystem/actAiQuery.h new file mode 100644 index 00000000..66c2cc0b --- /dev/null +++ b/src/KingSystem/ActorSystem/actAiQuery.h @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include "KingSystem/ActorSystem/actAiParam.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::act { +class BaseProc; +} + +namespace ksys::act::ai { + +class Query { + SEAD_RTTI_BASE(Query) +public: + struct InitArg { + BaseProc* proc; + /// The index of the query definition in the actor's AI program. + s32 def_idx; + }; + KSYS_CHECK_SIZE_NX150(InitArg, 0x10); + + explicit Query(const InitArg& arg); + virtual ~Query() = default; + + virtual bool m4() { return false; } + virtual bool m5() { return false; } + virtual void m6() {} + virtual bool m7() { return true; } + virtual void m8() {} + virtual int doQuery() { return 0; } + virtual void m10() {} + virtual bool m11() { return true; } + virtual void m12() {} + +protected: + BaseProc* mProc; + ParamPack mParamPack; + s32 mDefIdx; +}; +KSYS_CHECK_SIZE_NX150(Query, 0x20); + +} // namespace ksys::act::ai