From 6f71b7b30ab8774224173151b2d7f9cddcf7bbaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 25 Dec 2020 12:09:55 +0100 Subject: [PATCH] ksys/act: Add more ActionBase functions --- data/uking_functions.csv | 4 ++-- .../ActorSystem/actAiActionBase.cpp | 20 +++++++++++++++++++ src/KingSystem/ActorSystem/actAiActionBase.h | 4 ++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 0697671c..0c029c43 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -73013,8 +73013,8 @@ 0x0000007100d16c50,AI_AIOrActionBase::sendMessageMaybe,12, 0x0000007100d16c5c,sub_7100D16C5C,12, 0x0000007100d16c68,ai::ActorAI::getCurrentAction,144,_ZN4ksys3act2ai10ActionBase16getCurrentActionEv -0x0000007100d16cf8,ai::ActorAI::x_1,92, -0x0000007100d16d54,ai::ActorAI::x_2,92, +0x0000007100d16cf8,ai::ActorAI::x_1,92,_ZN4ksys3act2ai10ActionBase13handleMessageEPNS_3mes7MessageE +0x0000007100d16d54,ai::ActorAI::x_2,92,_ZN4ksys3act2ai10ActionBase14handleMessage2EPNS_3mes7MessageE 0x0000007100d16db0,AI_AIOrActionBase::setFinished,20,_ZN4ksys3act2ai10ActionBase11setFinishedEv 0x0000007100d16dc4,AI_AIOrActionBase::setFailed,20,_ZN4ksys3act2ai10ActionBase9setFailedEv 0x0000007100d16dd8,AI_AIOrActionBase::appendName,392,_ZNK4ksys3act2ai10ActionBase14getCurrentNameEPN4sead22BufferedSafeStringBaseIcEEPS2_ diff --git a/src/KingSystem/ActorSystem/actAiActionBase.cpp b/src/KingSystem/ActorSystem/actAiActionBase.cpp index b169813c..767f6ea7 100644 --- a/src/KingSystem/ActorSystem/actAiActionBase.cpp +++ b/src/KingSystem/ActorSystem/actAiActionBase.cpp @@ -223,6 +223,26 @@ Action* ActionBase::getCurrentAction() { } } +bool ActionBase::handleMessage(mes::Message* message) { + auto* action = this; + while (!action->handleMessage_(message)) { + action = action->getCurrentChild(); + if (!action) + return false; + } + return true; +} + +bool ActionBase::handleMessage2(mes::Message* message) { + auto* action = this; + while (!action->handleMessage2_(message)) { + action = action->getCurrentChild(); + if (!action) + return false; + } + return true; +} + void ActionBase::setFinished() { mFlags.set(Flag::Finished); mFlags.reset(Flag::Failed); diff --git a/src/KingSystem/ActorSystem/actAiActionBase.h b/src/KingSystem/ActorSystem/actAiActionBase.h index f035b572..5997245c 100644 --- a/src/KingSystem/ActorSystem/actAiActionBase.h +++ b/src/KingSystem/ActorSystem/actAiActionBase.h @@ -65,6 +65,10 @@ public: bool oneShot(InlineParamPack* params); Action* getCurrentAction(); + bool handleMessage(mes::Message* message); + // TODO: rename + bool handleMessage2(mes::Message* message); + Actor* getActor() const { return mActor; } s32 getDefinitionIdx() const { return mDefinitionIdx; } const char* getClassName() const;