1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadMatrix.h>
5#include <math/seadVector.h>
6
7#include "Library/Base/StringUtil.h"
8
9namespace al {
10class GamePadSystem;
11class HitSensor;
12class IUseMessageSystem;
13class LiveActor;
14struct SklAnimRetargettingInfo;
15} // namespace al
16
17class CapTargetInfo;
18class PlayerActorBase;
19class PlayerInitInfo;
20
21namespace rs {
22
23void initPlayerActorInfo(PlayerActorBase*, const PlayerInitInfo&);
24const char* getInitPlayerModelName(const PlayerInitInfo&);
25bool isNeedCreateNoseNeedle(const PlayerInitInfo&);
26bool isClosetScenePlayer(const PlayerInitInfo&);
27al::GamePadSystem* getGamePadSystem(const PlayerInitInfo&);
28const char* getInitCapTypeName(const PlayerInitInfo&);
29al::SklAnimRetargettingInfo* createPlayerSklRetargettingInfo(al::LiveActor*, const sead::Vector3f&);
30const sead::Vector3f& getPlayerPos(const al::LiveActor*);
31const sead::Vector3f& getPlayerHeadPos(const al::LiveActor*);
32const sead::Vector3f& getPlayerBodyPos(const al::LiveActor*);
33void calcPlayerSideDir(sead::Vector3f*, const al::LiveActor*);
34void calcPlayerUpDir(sead::Vector3f*, const al::LiveActor*);
35void calcPlayerFrontDir(sead::Vector3f*, const al::LiveActor*);
36void calcPlayerGroundPoseUp(sead::Vector3f*, const al::LiveActor*);
37bool isNearPlayerH(const al::LiveActor*, f32);
38void calcPlayerFollowLayoutWorldPos(sead::Vector3f*, const al::LiveActor*);
39bool isPlayerHack(const al::LiveActor*);
40bool isPlayerHackGroupUseCameraStick(const al::LiveActor*);
41bool tryCalcPlayerCeilingSpace(f32*, const al::LiveActor*, f32, f32);
42bool tryCalcKidsGuideCeilingSpace(f32*, const al::LiveActor*, f32, f32);
43const sead::Vector3f& getPlayerVelocity(const al::LiveActor*);
44bool tryCalcPlayerModelHeadJointPos(sead::Vector3f*, const al::LiveActor*);
45bool tryCalcPlayerModelHeadJointUp(sead::Vector3f*, const al::LiveActor*);
46bool tryCalcPlayerModelHeadJointFront(sead::Vector3f*, const al::LiveActor*);
47bool tryCalcPlayerModelHeadJointSide(sead::Vector3f*, const al::LiveActor*);
48bool tryCalcPlayerModelNoseJointMtx(sead::Matrix34f*, const al::LiveActor*);
49bool isPlayerDamageStopDemo(const al::LiveActor*);
50bool isPlayerHackType(const al::LiveActor*, s32);
51bool isPlayerHackRigidBody(const al::LiveActor*);
52bool isPlayerHackJugemFishing(const al::LiveActor*);
53bool isPlayerHackKuriboAny(const al::LiveActor*);
54bool isPlayerHackKuribo(const al::LiveActor*);
55bool isPlayerHackKuriboWing(const al::LiveActor*);
56bool isPlayerHackStatueMario(const al::LiveActor*);
57bool isPlayerHackEnemy(const al::LiveActor*);
58bool isPlayerHackTrilemmaRock(const al::LiveActor*);
59bool isPlayerHackTrilemmaPaper(const al::LiveActor*);
60bool isPlayerHackTrilemmaScissors(const al::LiveActor*);
61bool isPlayerHackElectricWire(const al::LiveActor*);
62bool isPlayerHackTRex(const al::LiveActor*);
63bool isPlayerHackFukankun(const al::LiveActor*);
64bool isPlayerHackHosui(const al::LiveActor*);
65bool isPlayerHackYoshi(const al::LiveActor*);
66bool isPlayerHackYukimaru(const al::LiveActor*);
67bool isPlayerHackHammerBros(const al::LiveActor*);
68bool isPlayerHackBazookaElectric(const al::LiveActor*);
69bool isPlayerHackBubble(const al::LiveActor*);
70bool isPlayerHackTank(const al::LiveActor*);
71bool isPlayerHackTsukkun(const al::LiveActor*);
72bool isPlayerHackPukupuku(const al::LiveActor*);
73bool isPlayerHackPukupukuAll(const al::LiveActor*);
74bool isPlayerHackRadiconNpc(const al::LiveActor*);
75bool isPlayerHackSenobi(const al::LiveActor*);
76bool isPlayerHackKakku(const al::LiveActor*);
77bool isPlayerHackGroupTalkScare(const al::LiveActor*);
78bool isPlayerHackGroupUseCameraStick(const al::LiveActor*);
79bool isPlayerHackNoSeparateCameraInput(const al::LiveActor*);
80bool isPlayerEnableToSeeOddSpace(const al::LiveActor*);
81bool isPlayerMini(const al::LiveActor*);
82bool isPlayer3D(const al::LiveActor*);
83bool isPlayer2D(const al::LiveActor*);
84bool isPlayerSquat(const al::LiveActor*);
85bool isPlayerInWater(const al::LiveActor*);
86bool isPlayerPoleClimb(const al::LiveActor*);
87bool isPlayerWallCatch(const al::LiveActor*);
88bool isPlayerCameraSubjective(const al::LiveActor*);
89bool isPlayerEnableTalkGround(const al::LiveActor*);
90bool isPlayerEnableTalkSwim(const al::LiveActor*);
91bool isPlayerBinding(const al::LiveActor*);
92bool isPlayerEquipSomething(const al::LiveActor*);
93bool isPlayerEquipRocketFlower(const al::LiveActor*);
94bool isPlayerEquipNoSeparateAction(const al::LiveActor*);
95bool isPlayerCarrySomething(const al::LiveActor*);
96bool isPlayerNoInput(const al::LiveActor*);
97bool isPlayerEnableShowTutorialInput(const al::LiveActor*);
98bool isPlayerSafetyPointRecovery(const al::LiveActor*);
99bool isPlayerPlayingSwitchOnAnim(const al::LiveActor*);
100bool isPlayerEquipNoSeparateTutorial(const al::LiveActor*);
101bool isPlayerWaitSleep(const al::LiveActor*);
102bool isPlayerAboveSeparateCapGuideArrow(const al::LiveActor*);
103bool isPlayerInvalidateGuideArrow(const al::LiveActor*);
104bool isPlayerInvisibleCap(const al::LiveActor*);
105bool isPlayerEnablePeachAmiibo(const al::LiveActor*);
106bool isPlayerActiveMarioAmiiboInvincible(const al::LiveActor*);
107bool isPlayerCollidedGround(const al::LiveActor*);
108bool isPlayerCollidedCeiling(const al::LiveActor*);
109bool isPlayerOnGround(const al::LiveActor*);
110bool isPlayerOnActor(const al::LiveActor*);
111bool isPlayerOnChairActor(const al::LiveActor*);
112bool isPlayerOnBedActor(const al::LiveActor*);
113bool isPlayerFaceToTarget(const al::LiveActor*, const sead::Vector3f&);
114bool isPlayerFaceToTarget(const al::LiveActor*);
115bool isPlayerFaceToTargetInRange(const al::LiveActor*, const sead::Vector3f&, f32);
116bool isPlayerFaceToTargetInRange(const al::LiveActor*, f32);
117bool tryGetFlyingCapPos(sead::Vector3f*, const al::LiveActor*);
118bool tryGetFlyingCapVelocity(sead::Vector3f*, const al::LiveActor*);
119bool isEnableReceiveCapStartLockOnAngle(const al::LiveActor*, const al::HitSensor*);
120bool isGuardNosePainCap(const al::LiveActor*);
121bool isEquipCapCatched(const al::LiveActor*);
122f32 getFlyingCapThrowSpeedMax(const al::LiveActor*);
123bool isPlayerCapSpinOrFlying(const al::LiveActor*);
124bool isPlayerCapFlying(const al::LiveActor*);
125bool isPlayerCapSeparateThrow(const al::LiveActor*);
126bool isEmptyPlayerOxygen(const al::LiveActor*);
127void recoveryPlayerOxygen(const al::LiveActor*);
128void requestBindPlayer(const al::LiveActor*, al::HitSensor*);
129void sendMsgBreakFloorToPlayer(const al::LiveActor*);
130void requestStageStartHack(const al::LiveActor*, al::HitSensor*, const CapTargetInfo*,
131 al::LiveActor*);
132bool isEnableOpenMap(const al::LiveActor*);
133void syncPlayerModelAlpha(al::LiveActor*);
134f32 getPlayerShadowDropLength(const al::LiveActor*);
135bool isExistLabelInPlayerHackSystemMstxt(const al::LiveActor*, const al::IUseMessageSystem*,
136 const char*, const char*);
137const char16* getPlayerHackSystemMessageString(const al::LiveActor*, const al::IUseMessageSystem*,
138 const char*, const char*);
139void getPlayerHackTutorialMoviePath(al::StringTmp<64>*, const al::LiveActor*, const char*);
140void calcPlayerAmiiboPeachAppearBasePos(sead::Vector3f*, const al::LiveActor*);
141bool isPlayerInputHoldBalloonSet(const al::LiveActor*);
142bool isPlayerInputHoldSquat(const al::LiveActor*);
143bool isPlayerInputHoldCapKeepLockOn(const al::LiveActor*);
144bool isPlayerInputHoldCarryAction(const al::LiveActor*);
145bool isPlayerInputHoldEnterUpperDokan2D(const al::LiveActor*);
146bool isPlayerInputHoldEnterSideDokan2D(const al::LiveActor*, const sead::Vector3f&);
147bool isPlayerInputTriggerStartTalk(const al::LiveActor*);
148bool isPlayerInputTriggerRide(const al::LiveActor*);
149bool isPlayerInputTriggerSeparateCapJangoHelp(const al::LiveActor*);
150bool tryGetPlayerInputWallAlongWallNormal(sead::Vector3f*, const al::LiveActor*);
151void calcPlayerHoldPos(sead::Vector3f*, const al::HitSensor*);
152void calcPlayerHoldMtx(sead::Matrix34f*, const al::HitSensor*);
153void setPlayerHoldJointAngle(const al::HitSensor*, const sead::Vector3f&);
154void updatePosePlayerHold(al::LiveActor*, const al::HitSensor*);
155void updatePosePlayerHoldAddOffset(al::LiveActor*, const al::HitSensor*, const sead::Vector3f&);
156f32 calcPlayerGuideOffsetY(const al::LiveActor*);
157bool isEnablePlayerHeadGuide(const al::LiveActor*);
158void calcPlayerGuidePos(sead::Vector3f*, const al::LiveActor*);
159void calcPlayerGuidePos(sead::Vector3f*, const al::LiveActor*, f32);
160
161} // namespace rs
162