1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5#include "Player/IUsePlayerHack.h"
6
7namespace al {
8class DemoActor;
9}
10
11class IUsePlayerCollision;
12class PlayerAnimator;
13class PlayerInfo;
14class PlayerInitInfo;
15class PlayerHackKeeper;
16class PlayerPuppet;
17
18class PlayerActorBase : public al::LiveActor, public IUsePlayerHack {
19public:
20 PlayerActorBase(const char* name);
21
22 void init(const al::ActorInitInfo& initInfo) override {}
23
24 void movement() override;
25
26 virtual void initPlayer(const al::ActorInitInfo& actorInitInfo,
27 const PlayerInitInfo& playerInitInfo) {}
28
29 virtual u32 getPortNo() const;
30 virtual sead::Matrix34f* getViewMtx() const;
31
32 virtual IUsePlayerCollision* getPlayerCollision() const { return nullptr; }
33
34 PlayerHackKeeper* getPlayerHackKeeper() const override { return nullptr; }
35
36 virtual bool isEnableDemo() { return false; }
37
38 virtual void startDemo() {}
39
40 virtual void endDemo() {}
41
42 virtual void startDemoPuppetable() {}
43
44 virtual void endDemoPuppetable() {}
45
46 virtual void startDemoShineGet() {}
47
48 virtual void endDemoShineGet() {}
49
50 virtual void startDemoMainShineGet() {}
51
52 virtual void endDemoMainShineGet() {}
53
54 virtual void startDemoHack() {}
55
56 virtual void endDemoHack() {}
57
58 virtual void startDemoKeepBind() {}
59
60 virtual void noticeDemoKeepBindExecute() {}
61
62 virtual void endDemoKeepBind() {}
63
64 virtual void startDemoKeepCarry() {}
65
66 virtual void endDemoKeepCarry() {}
67
68 virtual al::DemoActor* getDemoActor() { return reinterpret_cast<al::DemoActor*>(this); }
69
70 virtual PlayerAnimator* getDemoAnimator() { return nullptr; }
71
72 virtual bool isDamageStopDemo() const { return false; }
73
74 virtual PlayerPuppet* getPlayerPuppet() { return nullptr; }
75
76 virtual PlayerInfo* getPlayerInfo() const { return nullptr; }
77
78 virtual bool checkDeathArea();
79 virtual void sendCollisionMsg();
80 virtual bool receivePushMsg(const al::SensorMsg* msg, al::HitSensor* other, al::HitSensor* self,
81 f32 maxPush);
82
83private:
84 sead::Matrix34f* mViewMtx = nullptr;
85 u32 mPortNo = 0;
86};
87