1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/Nerve/NerveStateBase.h"
6
7class IJudge;
8class IUsePlayerCollision;
9class PlayerActionDiveInWater;
10class PlayerAnimator;
11class PlayerJudgePreInputJump;
12class PlayerWallActionHistory;
13class PlayerStateNormalWallSlide;
14class PlayerStateNormalWallJump;
15class PlayerConst;
16class PlayerInput;
17class PlayerTrigger;
18
19class PlayerStateWallAir : public al::ActorStateBase {
20public:
21 PlayerStateWallAir(al::LiveActor* player, const PlayerConst* pConst, const PlayerInput* input,
22 const PlayerTrigger* trigger, IUsePlayerCollision* collision,
23 IJudge* judgeWallKeep, PlayerJudgePreInputJump* judgePreInputJump,
24 PlayerAnimator* animator, PlayerWallActionHistory* wallActionHistory,
25 PlayerActionDiveInWater* actionDiveInWater);
26
27 void appear() override;
28 bool isAir() const;
29 bool isJustJump() const;
30 bool isEnableReactionCapCatch() const;
31 void startSlideSpinAttack();
32 void calcSnapMoveCutDir(sead::Vector3f* cutDir) const;
33 void exeSlide();
34 void exeJump();
35
36private:
37 const PlayerConst* mConst;
38 PlayerStateNormalWallSlide* mStateNormalWallSlide = nullptr;
39 PlayerStateNormalWallJump* mStateNormalWallJump = nullptr;
40 IJudge* mJudgeWallKeep;
41 PlayerJudgePreInputJump* mJudgePreInputJump;
42 const IUsePlayerCollision* mCollision;
43 PlayerWallActionHistory* mWallActionHistory;
44};
45