1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/HostIO/HioNode.h"
6
7#include "Player/IJudge.h"
8
9namespace al {
10class LiveActor;
11class CollisionParts;
12} // namespace al
13class PlayerConst;
14class IUsePlayerCollision;
15class IPlayerModelChanger;
16class PlayerCarryKeeper;
17class PlayerExternalVelocity;
18class PlayerInput;
19class PlayerTrigger;
20class PlayerCounterForceRun;
21
22class PlayerJudgeWallCatch : public al::HioNode, public IJudge {
23public:
24 PlayerJudgeWallCatch(const al::LiveActor* player, const PlayerConst* pConst,
25 const IUsePlayerCollision* collider,
26 const IPlayerModelChanger* modelChanger,
27 const PlayerCarryKeeper* carryKeeper,
28 const PlayerExternalVelocity* externalVelocity, const PlayerInput* input,
29 const PlayerTrigger* trigger,
30 const PlayerCounterForceRun* counterForceRun);
31
32 void reset() override;
33 void update() override;
34 bool judge() const override;
35
36private:
37 const al::LiveActor* mPlayer;
38 const PlayerConst* mConst;
39 const IUsePlayerCollision* mCollision;
40 const IPlayerModelChanger* mModelChanger;
41 const PlayerCarryKeeper* mCarryKeeper;
42 const PlayerExternalVelocity* mExternalVelocity;
43 const PlayerInput* mInput;
44 const PlayerTrigger* mTrigger;
45 const PlayerCounterForceRun* mCounterForceRun;
46 bool mIsJudge = false;
47 const al::CollisionParts* mCollidedWallPart = nullptr;
48 sead::Vector3f mPosition = {0.0f, 0.0f, 0.0f};
49 sead::Vector3f mCollidedWallNormal = {0.0f, 0.0f, 0.0f};
50 sead::Vector3f mNormalAtPos = {0.0f, 0.0f, 0.0f};
51};
52
53static_assert(sizeof(PlayerJudgeWallCatch) == 0x88);
54