| 1 | #pragma once |
| 2 | |
| 3 | #include "Library/Nerve/NerveStateBase.h" |
| 4 | |
| 5 | namespace al { |
| 6 | class SensorMsg; |
| 7 | class HitSensor; |
| 8 | } // namespace al |
| 9 | |
| 10 | class IUsePlayerHack; |
| 11 | class PlayerHackStartShaderCtrl; |
| 12 | struct PlayerHackStartShaderParam; |
| 13 | |
| 14 | struct 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 | |
| 24 | class EnemyStateHackStart : public al::ActorStateBase { |
| 25 | public: |
| 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 | |
| 37 | private: |
| 38 | IUsePlayerHack* mHackActor = nullptr; |
| 39 | PlayerHackStartShaderCtrl* mPlayerHackStartShaderCtrl = nullptr; |
| 40 | const EnemyStateHackStartParam* mParam; |
| 41 | }; |
| 42 | |
| 43 | namespace EnemyStateHackFunction { |
| 44 | void startHackSwitchShadow(al::LiveActor*, const EnemyStateHackStartParam*); |
| 45 | void endHackSwitchShadow(al::LiveActor*, const EnemyStateHackStartParam*); |
| 46 | } // namespace EnemyStateHackFunction |
| 47 | |