1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/Nerve/NerveStateBase.h"
6
7namespace al {
8class LiveActor;
9class HitSensor;
10} // namespace al
11class PlayerConst;
12class PlayerInput;
13class IUsePlayerCollision;
14class PlayerAnimator;
15class PlayerTrigger;
16
17class PlayerStateHipDrop : public al::ActorStateBase {
18public:
19 PlayerStateHipDrop(al::LiveActor* player, const PlayerConst* pConst, const PlayerInput* input,
20 const IUsePlayerCollision* collider, PlayerAnimator* animator,
21 PlayerTrigger* trigger);
22 void appear() override;
23 bool attackHipDropKnockDown(al::HitSensor* sender, al::HitSensor* receiver);
24 bool isEnableHeadSliding() const;
25 bool isEnableHipDropAttack() const;
26 bool isEnableLandCancel() const;
27 bool isEnableMove() const;
28 bool isEnableInWater() const;
29 bool isEnableIK() const;
30 bool isLandTrigger() const;
31
32 void exeStart();
33 void exeFall();
34 void exeLand();
35
36private:
37 const PlayerConst* mConst;
38 const PlayerInput* mInput;
39 const IUsePlayerCollision* mCollision;
40 PlayerAnimator* mAnimator;
41 PlayerTrigger* mTrigger;
42 s32 mHipDropMsgIntervalCounter = 0;
43 bool mIsLandGround = false;
44 sead::Vector3f mLandPos = {0.0f, 0.0f, 0.0f};
45};
46