AiAction and AiClass getters and setter functions

This commit is contained in:
theo3 2020-08-27 16:16:20 -07:00
parent c90e29946f
commit 2ee9bba8b8
5 changed files with 48 additions and 8 deletions

View File

@ -1263,8 +1263,8 @@
0x000000710004be58,AI_Action_ActivateAttackSensor::loadParams,436,
0x000000710004c00c,AI_Action_ActivateAttackSensor::rtti1,288,
0x000000710004c12c,AI_Action_ActivateAttackSensor::rtti2,92,
0x000000710004c188,AI_AIOrActionBase::isFlag1Set,12,
0x000000710004c194,AI_AIOrActionBase::isFinished,12,
0x000000710004c188,AI_AIOrActionBase::isFlag1Set,12,_ZN4ksys3act2ai10ActionBase8isFailedEv
0x000000710004c194,AI_AIOrActionBase::isFinished,12,_ZN4ksys3act2ai10ActionBase10isFinishedEv
0x000000710004c1a0,AI_AIOrActionBase::isFlag2Set,12,
0x000000710004c1ac,AI_AIOrActionBase::ret0,8,
0x000000710004c1b4,AI_AIOrActionBase::ret0_2,8,
@ -1278,7 +1278,7 @@
0x000000710004c1ec,AI_AIOrActionBase::ret0_1,8,
0x000000710004c1f4,AI_AIOrActionBase::ret1_1,8,
0x000000710004c1fc,AI_AIOrActionBase::ret0_5,8,
0x000000710004c204,AI_ActionBase::isAction,8,
0x000000710004c204,AI_ActionBase::isAction,8,_ZN4ksys3act2ai6Action8isActionEv
0x000000710004c20c,AI_AIOrActionBase::m28,16,
0x000000710004c21c,AI_AIOrActionBase::m29_null,4,
0x000000710004c220,AI_AIOrActionBase::ret0_6,8,
@ -71374,8 +71374,8 @@
0x0000007100d16c68,ai::ActorAI::getCurrentAction,144,
0x0000007100d16cf8,ai::ActorAI::x_1,92,
0x0000007100d16d54,ai::ActorAI::x_2,92,
0x0000007100d16db0,AI_AIOrActionBase::setFinished,20,
0x0000007100d16dc4,AI_AIOrActionBase::setFailed,20,
0x0000007100d16db0,AI_AIOrActionBase::setFinished,20,_ZN4ksys3act2ai10ActionBase11setFinishedEv
0x0000007100d16dc4,AI_AIOrActionBase::setFailed,20,_ZN4ksys3act2ai10ActionBase9setFailedEv
0x0000007100d16dd8,AI_AIOrActionBase::appendName,392,
0x0000007100d16f60,AI_AIOrActionBase::m23,12,
0x0000007100d16f6c,sub_7100D16F6C,32,

Can't render this file because it is too large.

View File

@ -4,4 +4,8 @@ namespace ksys::act::ai {
Action::Action(const ClassArg& arg) : ActionBase(arg) {}
bool Action::isAction() {
return true;
}
} // namespace ksys::act::ai

View File

@ -11,8 +11,9 @@ public:
virtual void enter() {}
virtual void loadParams() {}
virtual void oneShot() {}
bool isAction() override;
};
KSYS_CHECK_SIZE_NX150(Action, 0x20);

View File

@ -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

View File

@ -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;
};