1#pragma once
2
3#include "Library/Nerve/NerveStateBase.h"
4
5namespace al {
6class SensorMsg;
7class HitSensor;
8} // namespace al
9
10class IUsePlayerHack;
11class PlayerHackStartShaderCtrl;
12struct PlayerHackStartShaderParam;
13
14struct EnemyStateHackStartParam {
15 EnemyStateHackStartParam(const char*, const char*, const char*, bool, bool);
16
17 const char* actionName;
18 const char* visAnimName;
19 const char* mtpAnimName;
20 bool hasSubActors;
21 bool updateSubActorShadowMap;
22};
23
24class EnemyStateHackStart : public al::ActorStateBase {
25public:
26 EnemyStateHackStart(al::LiveActor*, const EnemyStateHackStartParam*,
27 PlayerHackStartShaderParam*);
28
29 IUsePlayerHack* tryStart(const al::SensorMsg*, al::HitSensor*, al::HitSensor*);
30 void kill() override;
31 bool isHackStart() const;
32 f32 calcHackStartNerveRate() const;
33
34 void exeDiveIn();
35 void exeHackStart();
36
37private:
38 IUsePlayerHack* mHackActor = nullptr;
39 PlayerHackStartShaderCtrl* mPlayerHackStartShaderCtrl = nullptr;
40 const EnemyStateHackStartParam* mParam;
41};
42
43namespace EnemyStateHackFunction {
44void startHackSwitchShadow(al::LiveActor*, const EnemyStateHackStartParam*);
45void endHackSwitchShadow(al::LiveActor*, const EnemyStateHackStartParam*);
46} // namespace EnemyStateHackFunction
47