summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2020-08-27 16:16:20 -0700
committertheo3 <arisstephenson2@gmail.com>2020-08-27 16:16:20 -0700
commit2ee9bba8b8d57271f67314d2405649bfbf5093d5 (patch)
tree9178be374e73d470fdac2e26cf778f846c952ba5 /src
parentc90e29946fba60199d6fc981a4ec0db3dcacc1f4 (diff)
AiAction and AiClass getters and setter functions
Diffstat (limited to 'src')
-rw-r--r--src/KingSystem/ActorSystem/actAiAction.cpp4
-rw-r--r--src/KingSystem/ActorSystem/actAiAction.h3
-rw-r--r--src/KingSystem/ActorSystem/actAiClass.cpp18
-rw-r--r--src/KingSystem/ActorSystem/actAiClass.h21
4 files changed, 43 insertions, 3 deletions
diff --git a/src/KingSystem/ActorSystem/actAiAction.cpp b/src/KingSystem/ActorSystem/actAiAction.cpp
index ad5e4c1c..24355040 100644
--- a/src/KingSystem/ActorSystem/actAiAction.cpp
+++ b/src/KingSystem/ActorSystem/actAiAction.cpp
@@ -4,4 +4,8 @@ namespace ksys::act::ai {
Action::Action(const ClassArg& arg) : ActionBase(arg) {}
+bool Action::isAction() {
+ return true;
+}
+
} // namespace ksys::act::ai
diff --git a/src/KingSystem/ActorSystem/actAiAction.h b/src/KingSystem/ActorSystem/actAiAction.h
index ba0bf61d..2b7b2a3f 100644
--- a/src/KingSystem/ActorSystem/actAiAction.h
+++ b/src/KingSystem/ActorSystem/actAiAction.h
@@ -11,8 +11,9 @@ public:
virtual void enter() {}
virtual void loadParams() {}
-
virtual void oneShot() {}
+
+ bool isAction() override;
};
KSYS_CHECK_SIZE_NX150(Action, 0x20);
diff --git a/src/KingSystem/ActorSystem/actAiClass.cpp b/src/KingSystem/ActorSystem/actAiClass.cpp
index a75511d3..0fad8b58 100644
--- a/src/KingSystem/ActorSystem/actAiClass.cpp
+++ b/src/KingSystem/ActorSystem/actAiClass.cpp
@@ -5,4 +5,22 @@ namespace ksys::act::ai {
ActionBase::ActionBase(const ClassArg& arg)
: mActor{arg.actor}, mDefinitionIdx{u16(arg.definitionIdx)}, mRootIdx{u8(arg.rootIdx)} {}
+bool ActionBase::isFinished() {
+ return mStatus.isOn(Status::Finished);
+}
+
+bool ActionBase::isFailed() {
+ return mStatus.isOn(Status::Failed);
+}
+
+void ActionBase::setFinished() {
+ mStatus.set(Status::Finished);
+ mStatus.reset(Status::Failed);
+}
+
+void ActionBase::setFailed() {
+ mStatus.set(Status::Failed);
+ mStatus.reset(Status::Finished);
+}
+
} // namespace ksys::act::ai
diff --git a/src/KingSystem/ActorSystem/actAiClass.h b/src/KingSystem/ActorSystem/actAiClass.h
index d065af14..69ac65f1 100644
--- a/src/KingSystem/ActorSystem/actAiClass.h
+++ b/src/KingSystem/ActorSystem/actAiClass.h
@@ -1,7 +1,8 @@
#pragma once
#include <basis/seadTypes.h>
-
+#include <prim/seadTypedBitFlag.h>
+#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actAiParam.h"
#include "KingSystem/Utils/Types.h"
@@ -23,8 +24,24 @@ public:
ActionBase(const ClassArg& arg);
virtual ~ActionBase() = default;
+ virtual bool isAction();
+
+ enum class Status : u8 {
+ Finished = 1,
+ Failed = 2,
+ _4 = 4,
+ TriggerAction = 8,
+ DynamicParamChild = 0x10,
+ _20 = 0x20,
+ _40 = 0x40,
+ _80 = 0x80,
+ };
+
protected:
+ bool isFinished();
+ bool isFailed();
void setFinished();
+ void setFailed();
template <typename T>
void getParamStatic(ParamRef<T>* value, const sead::SafeString& key);
@@ -33,7 +50,7 @@ protected:
ParamPack mParams;
u16 mDefinitionIdx;
u8 mRootIdx;
- u8 mStatus = 0;
+ sead::TypedBitFlag<Status, u8> mStatus;
u16 mClassIdx;
u16 mPrevClassIdx;
};