1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace al {
6class ActionAnimCtrl;
7class ActionBgmCtrl;
8class ActionEffectCtrl;
9class ActionFlagCtrl;
10class ActionPadAndCameraCtrl;
11class ActionSeCtrl;
12class ActionScreenEffectCtrl;
13class ActorResource;
14class LiveActor;
15class NerveActionCtrl;
16
17class ActorActionKeeper {
18public:
19 static ActorActionKeeper* tryCreate(LiveActor*, const ActorResource*, const char*, const char*);
20
21 ActorActionKeeper(LiveActor*, const char*, ActionAnimCtrl*, NerveActionCtrl*, ActionFlagCtrl*,
22 ActionEffectCtrl*, ActionSeCtrl*, ActionBgmCtrl*, ActionPadAndCameraCtrl*,
23 ActionScreenEffectCtrl*);
24
25 bool startAction(const char* actionName);
26 void tryStartActionNoAnim(const char* actionName);
27 void init();
28 void updatePost();
29 void updatePrev();
30
31 ActionAnimCtrl* getAnimCtrl() const { return mAnimCtrl; }
32
33 ActionSeCtrl* getSeCtrl() const { return mSeCtrl; }
34
35 ActionPadAndCameraCtrl* getPadAndCameraCtrl() const { return mPadAndCameraCtrl; }
36
37private:
38 LiveActor* mParentActor;
39 const char* mActorName;
40 bool mIsActionRunning = false;
41 ActionAnimCtrl* mAnimCtrl;
42 NerveActionCtrl* mNerveActionCtrl;
43 ActionFlagCtrl* mFlagCtrl;
44 ActionEffectCtrl* mEffectCtrl;
45 ActionSeCtrl* mSeCtrl;
46 ActionBgmCtrl* mBgmCtrl;
47 ActionPadAndCameraCtrl* mPadAndCameraCtrl;
48 ActionScreenEffectCtrl* mScreenEffectCtrl;
49};
50
51static_assert(sizeof(ActorActionKeeper) == 0x58);
52} // namespace al
53