1#pragma once
2
3#include <basis/seadTypes.h>
4#include <prim/seadBitFlag.h>
5
6class PlayerTrigger {
7public:
8 enum ECollisionTrigger : u32 {
9 // used in PlayerStateHipDrop
10 ECollisionTrigger_val1 = 1,
11 };
12
13 enum EAttackSensorTrigger : u32 {
14 // used in PlayerCounterAfterCapCatch
15 EAttackSensorTrigger_val0 = 0,
16 };
17
18 enum EActionTrigger : u32 {
19 // used in PlayerStateHipDrop
20 EActionTrigger_val3 = 3,
21 // used in PlayerJudgeForceLand
22 EActionTrigger_val11 = 11,
23 // used in PlayerJudgeWallCatch
24 EActionTrigger_val30 = 30,
25 EActionTrigger_QuickTurn = 34,
26 };
27
28 enum EReceiveSensorTrigger : u32 {};
29
30 enum EPreMovementTrigger : u32 {};
31
32 enum EDemoEndTrigger : u32 {};
33
34 enum EMaterialChangeTrigger : u32 {};
35
36 PlayerTrigger();
37 void set(ECollisionTrigger);
38 void set(EAttackSensorTrigger);
39 void set(EActionTrigger);
40 void set(EReceiveSensorTrigger);
41 void set(EPreMovementTrigger);
42 void set(EDemoEndTrigger);
43 void set(EMaterialChangeTrigger);
44 void setRecMaterialTrigger(const char*);
45 void clearCollisionTrigger();
46 void clearAttackSensorTrigger();
47 void clearActionTrigger();
48 void clearReceiveSensorTrigger();
49 void clearPreMovementTrigger();
50 void clearDemoEndTrigger();
51 void clearMaterialChangeTrigger();
52 bool isOn(ECollisionTrigger) const;
53 bool isOn(EAttackSensorTrigger) const;
54 bool isOn(EActionTrigger) const;
55 bool isOn(EReceiveSensorTrigger) const;
56 bool isOn(EPreMovementTrigger) const;
57 bool isOn(EDemoEndTrigger) const;
58 bool isOn(EMaterialChangeTrigger) const;
59 bool isOnUpperPunchHit() const;
60 bool isOnUpperPunchHitToss() const;
61 bool isOnAnyDamage() const;
62 bool isOnDamageFire() const;
63 bool isOnEndHackWithDamage() const;
64 bool isOnNoDamageDown() const;
65 bool isOnSpinMoveCapThrow() const;
66 bool isOnHipDropCancelThrow() const;
67 bool isOnYoshiHackEnd() const;
68 bool isOnCollisionExpandCheck() const;
69 bool tryGetRecMaterialCode(const char**) const;
70
71private:
72 sead::BitFlag32 mCollisionTrigger = 0;
73 sead::BitFlag32 mAttackSensorTrigger;
74 sead::BitFlag64 mActionTrigger = 0;
75 sead::BitFlag32 mReceiveSensorTrigger = 0;
76 sead::BitFlag32 mPreMovementTrigger = 0;
77 sead::BitFlag32 mDemoEndTrigger = 0;
78 sead::BitFlag32 mMaterialChangeTrigger = 0;
79 const char* mRecMaterialTrigger = nullptr;
80};
81
82static_assert(sizeof(PlayerTrigger) == 0x28);
83