1#pragma once
2
3#include <math/seadMatrix.h>
4#include <prim/seadSafeString.h>
5
6namespace al {
7class LiveActor;
8struct ActorInitInfo;
9class Resource;
10class AudioKeeper;
11} // namespace al
12
13class PlayerConst;
14class PlayerCostumeInfo;
15class PlayerBodyCostumeInfo;
16class PlayerJointControlPartsDynamics;
17
18class PlayerFunction {
19public:
20 static u32 getPlayerInputPort(const al::LiveActor*);
21 static const sead::Matrix34f& getPlayerViewMtx(const al::LiveActor*);
22 static bool tryActivateAmiiboPreventDamage(const al::LiveActor*);
23 static bool isPlayerDeadStatus(const al::LiveActor* player);
24 static void syncBodyHairVisibility(al::LiveActor*, al::LiveActor*);
25 static void syncMarioFaceBeardVisibility(al::LiveActor*, al::LiveActor*);
26 static void syncMarioHeadStrapVisibility(al::LiveActor*);
27 static bool isNeedHairControl(const PlayerBodyCostumeInfo*, const char*);
28 static bool isInvisibleCap(const PlayerCostumeInfo*);
29 static void hideHairVisibility(al::LiveActor*);
30
31 static PlayerConst* createMarioConst(const char*);
32 static void createCapModelName(sead::BufferedSafeStringBase<char>*, const char*);
33
34 static void initMarioModelActor2D(al::LiveActor* actor, const al::ActorInitInfo& initInfo,
35 const char* model2DName, bool isInvisCap);
36 static al::Resource* initCapModelActor(al::LiveActor*, const al::ActorInitInfo&, const char*);
37 static al::Resource* initCapModelActorDemo(al::LiveActor*, const al::ActorInitInfo&,
38 const char*);
39 static PlayerCostumeInfo* initMarioModelActor(al::LiveActor* player,
40 const al::ActorInitInfo& initInfo,
41 const char* modelName, const char* capType,
42 al::AudioKeeper* keeper, bool isCloset);
43 static PlayerCostumeInfo*
44 initMarioModelActorDemo(PlayerJointControlPartsDynamics** jointCtrlPtr, al::LiveActor* player,
45 const al::ActorInitInfo& initInfo, const char* bodyName,
46 const char* capName, const PlayerConst* pConst,
47 sead::Vector3f* noseScale, sead::Vector3f* earScale, bool isCloset);
48};
49