1#pragma once
2
3#include <math/seadMatrix.h>
4#include <math/seadQuat.h>
5#include <math/seadVector.h>
6
7class IUsePlayerHack;
8class IUsePlayerCollision;
9class CapTargetInfo;
10
11namespace al {
12class LiveActor;
13class HitSensor;
14class SensorMsg;
15} // namespace al
16
17namespace rs {
18CapTargetInfo* createCapTargetInfo(al::LiveActor*, const char*);
19CapTargetInfo* createCapTargetInfoWithPlayerCollider(al::LiveActor*, IUsePlayerCollision*,
20 const char*);
21CapTargetInfo* createCapTargetInfoHackMapParts(al::LiveActor*);
22CapTargetInfo* createCapTargetInfoLockOnOnlyNoArchive(al::LiveActor*, const sead::Matrix34f*);
23void requestLockOnCapHitReaction(const al::LiveActor*, const CapTargetInfo*, const char*);
24IUsePlayerHack* startHack(al::HitSensor*, al::HitSensor*, al::LiveActor*);
25void endHack(IUsePlayerHack**);
26void endHackDir(IUsePlayerHack**, const sead::Vector3f&);
27void endHackTargetQuat(IUsePlayerHack**, const sead::Quatf&, const sead::Vector3f&);
28void endHackFromTargetPos(IUsePlayerHack**, const sead::Vector3f&);
29void endHackFromTargetPos(IUsePlayerHack**, const sead::Vector3f&, const sead::Vector3f&);
30void endHackFromTargetPos(IUsePlayerHack**, const sead::Vector3f&, const sead::Quatf&,
31 const sead::Vector3f&);
32void endHackWithDamage(IUsePlayerHack**);
33void endHackWithDamageAndVelocity(IUsePlayerHack**, const sead::Vector3f&);
34void endHackEscapeScale(IUsePlayerHack**, f32);
35void endHackDirEscapeScale(IUsePlayerHack**, const sead::Vector3f&, f32);
36void endHackDirEscapeScalePose(IUsePlayerHack**, const sead::Quatf&, const sead::Vector3f&, f32);
37void endHackAirVelocity(IUsePlayerHack**, const sead::Vector3f&, const sead::Quatf&,
38 const sead::Vector3f&, s32);
39void endHackElectricWireToDestination(IUsePlayerHack**, const sead::Vector3f&,
40 const sead::Vector3f&);
41void endHackFastenerToDestination(IUsePlayerHack**, const sead::Vector3f&, const sead::Vector3f&);
42void endHackBazookaElectricToDestination(IUsePlayerHack**, const sead::Vector3f&,
43 const sead::Vector3f&, const sead::Quatf&, s32, f32);
44void endHackThrowed(IUsePlayerHack**, const sead::Vector3f&);
45bool requestDamage(IUsePlayerHack*);
46void syncDamageVisibility(al::LiveActor*, const IUsePlayerHack*);
47bool isDamageVisibilityHide(const IUsePlayerHack*);
48bool isTouchHackCancelCollisionCode(const al::LiveActor*, const IUsePlayerCollision*);
49bool isTouchHackDamageCollisionCode(const al::LiveActor*, const IUsePlayerCollision*);
50void updateMaterialCode(al::LiveActor*, const IUsePlayerCollision*);
51IUsePlayerHack* startHackStartDemo(IUsePlayerHack*, al::LiveActor*);
52IUsePlayerHack* startHackStartDemoPuppetable(IUsePlayerHack*, al::LiveActor*);
53void addHackStartDemoActor(IUsePlayerHack*, al::LiveActor*);
54void endHackStartDemo(IUsePlayerHack*, al::LiveActor*);
55bool tryEndHackStartDemo(IUsePlayerHack*, al::LiveActor*);
56bool isActiveHackStartDemo(const IUsePlayerHack*);
57bool isHackStartDemoEnterMario(const IUsePlayerHack*);
58bool isHackerStopMove(const al::LiveActor*, const IUsePlayerHack*, f32);
59bool isHackerStopMoveGround(const al::LiveActor*, const IUsePlayerHack*, f32,
60 const IUsePlayerCollision*);
61bool sendMsgHackerNoReaction(const IUsePlayerHack*, al::HitSensor*, al::HitSensor*);
62bool sendMsgHackerNoReactionWithoutShine(const IUsePlayerHack*, al::HitSensor*, al::HitSensor*);
63bool isMsgHackerDamageAndCancel(const al::SensorMsg*);
64bool isMsgEnableMapCheckPointWarpCollidedGround(const al::SensorMsg*, const al::LiveActor*);
65bool isMsgEnableMapCheckPointWarpCollidedGround(const al::SensorMsg*, const IUsePlayerCollision*);
66bool receiveMsgRequestTransferHack(const al::SensorMsg*, IUsePlayerHack*, al::HitSensor*);
67void hideHackCap(IUsePlayerHack*);
68void showHackCap(IUsePlayerHack*);
69void hideShadowHackCap(IUsePlayerHack*);
70bool isHackCapSeparateFlying(IUsePlayerHack*);
71void calcGroundHeightHackerDepthShadowMapLength(al::LiveActor*, const IUsePlayerHack*,
72 const sead::Vector3f&, f32, f32);
73void cutGroundHeightHackerDepthShadowMapLength(al::LiveActor*, const IUsePlayerHack*, const char*,
74 const sead::Vector3f&, f32, f32);
75void checkExistHeightSpaceAboveGround(f32*, const IUsePlayerHack*, f32);
76void requestRecoverySafetyPoint(IUsePlayerHack*, const sead::Vector3f&, const sead::Vector3f&);
77bool trySnapTransToSnapMoveArea(al::LiveActor*, bool, const sead::Vector3f&, f32);
78void updateHackActorVisibilityBySeparatePlay(al::LiveActor*, IUsePlayerHack*, const char*,
79 const char*);
80void startReset(al::LiveActor*);
81void endReset(al::LiveActor*);
82void calcHackerMoveVec(sead::Vector3f*, const IUsePlayerHack*, const sead::Vector3f&);
83bool calcHackerMoveDir(sead::Vector3f*, const IUsePlayerHack*, const sead::Vector3f&);
84void calcHackerWallInputVec(sead::Vector3f*, sead::Vector3f*, const IUsePlayerHack*,
85 const sead::Vector3f&);
86void calcHackerWallInputVec(sead::Vector3f*, sead::Vector3f*, const sead::Vector2f&,
87 const sead::Vector3f&);
88f32 getHackMoveStickRaw(const IUsePlayerHack*);
89void calcHackerWallInputDir(sead::Vector3f*, sead::Vector3f*, const IUsePlayerHack*,
90 const sead::Vector3f&);
91bool addHackActorAccelStick(al::LiveActor*, const IUsePlayerHack*, sead::Vector3f*, f32,
92 const sead::Vector3f&);
93void calcHackMovePower(const IUsePlayerHack*);
94void checkHackerMoveDir(const IUsePlayerHack*, const sead::Vector3f&, const sead::Vector3f&, f32);
95void calcHackerTrampleJumpParam(f32*, f32*, s32*, al::LiveActor*, const IUsePlayerHack*, f32, f32,
96 f32, f32, f32, s32, f32, f32, f32, f32, f32);
97bool isOnHackMoveStick(const IUsePlayerHack*);
98bool isHoldHackJump(const IUsePlayerHack*);
99bool isOnHackMoveStickDeepDown(const IUsePlayerHack*);
100bool isOnHackMoveStickGreater(const IUsePlayerHack*, f32);
101bool isTriggerHackAction(const IUsePlayerHack*);
102bool isTriggerHackPreInputAction(const IUsePlayerHack*);
103bool isHoldHackAction(const IUsePlayerHack*);
104bool isReleaseHackAction(const IUsePlayerHack*);
105bool isTriggerHackJump(const IUsePlayerHack*);
106bool isTriggerHackPreInputJump(const IUsePlayerHack*);
107bool isReleaseHackJump(const IUsePlayerHack*);
108bool isTriggerHackAnyButton(const IUsePlayerHack*);
109bool isTriggerHackPreInputAnyButton(const IUsePlayerHack*);
110bool isHoldHackAnyButton(const IUsePlayerHack*);
111bool isReleaseHackAnyButton(const IUsePlayerHack*);
112bool isTriggerHackSeparateJump(const IUsePlayerHack*);
113bool isHoldHackSeparateJump(const IUsePlayerHack*);
114void getHackStickRotateSpeed(const IUsePlayerHack*);
115bool isTriggerHackSwing(const IUsePlayerHack*);
116bool isTriggerHackSwingDirLeft(const IUsePlayerHack*);
117bool isTriggerHackSwingDirRight(const IUsePlayerHack*);
118bool isTriggerHackSwingDoubleHand(const IUsePlayerHack*);
119bool isTriggerHackSwingDoubleHandReverseDir(const IUsePlayerHack*);
120bool isTriggerHackSwingDoubleHandReverseInsideDir(const IUsePlayerHack*);
121bool isTriggerHackSwingDoubleHandReverseOutsideDir(const IUsePlayerHack*);
122void getHackPoseRotZDegreeLeft(const IUsePlayerHack*);
123void getHackPoseRotZDegreeRight(const IUsePlayerHack*);
124bool isTriggerTankCameraReset(const IUsePlayerHack*);
125bool isTriggerHackSwingLeftHand(const IUsePlayerHack*);
126bool isTriggerHackSwingRightHand(const IUsePlayerHack*);
127void getHackSwingThrowDir(const IUsePlayerHack*);
128void getHackSwingLeftHandDir(const IUsePlayerHack*);
129void getHackSwingRightHandDir(const IUsePlayerHack*);
130void getHackSwingVelLeftHand(const IUsePlayerHack*);
131void getHackSwingVelRightHand(const IUsePlayerHack*);
132void getHackCameraStickRaw(const IUsePlayerHack*);
133void getRadiconInputSteeringValue(const IUsePlayerHack*);
134void getRadiconInputThrottleValue(const IUsePlayerHack*);
135bool isTriggerRecorderPlay(const IUsePlayerHack*);
136bool isTriggerRecorderReverse(const IUsePlayerHack*);
137bool isHoldRecorderPlay(const IUsePlayerHack*);
138bool isHoldRecorderReverse(const IUsePlayerHack*);
139bool isTriggerRecorderJump(const IUsePlayerHack*);
140bool isTriggerRecorderCancel(const IUsePlayerHack*);
141void getHackGemyLeftStickRaw();
142void getHackGemyRightStickRaw();
143bool isTriggerGemyResetCamera(const IUsePlayerHack*);
144bool isTriggerGemyChangeCamera(const IUsePlayerHack*);
145bool isTriggerSubjectiveCamera(const IUsePlayerHack*);
146bool isTriggerFlutter(const IUsePlayerHack*, f32);
147bool isTriggerFukankunZoomOn(const IUsePlayerHack*);
148bool isTriggerFukankunZoomOff(const IUsePlayerHack*);
149bool isHoldFukankunZoom(const IUsePlayerHack*);
150void getPoleJumpPadPoseMtx(sead::Matrix33f*);
151void getPoleJumpPadAcceleration(sead::Vector3f*);
152bool isTriggerIceClimberClimbLeft(const IUsePlayerHack*);
153bool isTriggerIceClimberClimbRight(const IUsePlayerHack*);
154bool isTriggerIceClimberFall(const IUsePlayerHack*);
155} // namespace rs
156
157namespace HackFunction {
158bool isTriggerHackEnd(const IUsePlayerHack*);
159bool isTriggerCancelBubbleLauncher(const IUsePlayerHack*);
160} // namespace HackFunction
161