1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5class HackerJudgeNormalFall;
6class HackerJudgeStartRun;
7class CapTargetInfo;
8class AnagramAlphabet;
9class IUsePlayerHack;
10class CapTargetParts;
11class PlayerHackStartShaderCtrl;
12
13class AnagramAlphabetCharacter : public al::LiveActor {
14public:
15 AnagramAlphabetCharacter(const char* name);
16
17 void init(const al::ActorInitInfo& info);
18 void attackSensor(al::HitSensor* self, al::HitSensor* other);
19 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other, al::HitSensor* self);
20 void setComplete();
21 void killCapTarget();
22
23 void exeWait();
24 void exeWaitHack();
25 void exeWaitHackStart();
26 void exeHackStart();
27 void exeHackWait();
28 void exeHackMove();
29 void exeHackFall();
30 void exeHackEnd();
31 void exeHackGoal();
32 void exeSet();
33 void exeComplete();
34
35 inline bool isHack();
36 inline void endHack();
37 inline void endHackDir(const sead::Vector3f& dir);
38
39private:
40 CapTargetInfo* mCapTargetInfo = nullptr;
41 sead::Matrix34f* mPoseMatrix = nullptr;
42 AnagramAlphabet* mParent = nullptr;
43 IUsePlayerHack* mHackerParent = nullptr;
44 CapTargetParts* mCapTargetParts = nullptr;
45 HackerJudgeNormalFall* mHackerJudgeNormalFall = nullptr;
46 HackerJudgeStartRun* mHackerJudgeStartRun = nullptr;
47 PlayerHackStartShaderCtrl* mPlayerHackStartShaderCtrl = nullptr;
48 s32 mSwingTimer = 0;
49};
50