1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5namespace al {
6class JointSpringControllerHolder;
7}
8class Shine;
9
10class Mummy : public al::LiveActor {
11public:
12 Mummy(const char* name);
13
14 void init(const al::ActorInitInfo& info) override;
15
16 inline void setupEffectMatrix();
17 inline void checkEffects();
18 inline void adjustVelocity();
19 inline bool isAsleep() const;
20
21 void startSleep();
22 void attackSensor(al::HitSensor* other, al::HitSensor* self) override;
23 bool isHide();
24 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
25 al::HitSensor* self) override;
26 void control() override;
27
28 void setKnuckleMode();
29 void appearWithTrans(const sead::Vector3f& trans);
30 void setupEffect();
31 void appearByTreasureBox(const sead::Vector3f& trans);
32 void startWalkByTreasureBox();
33
34 void sleep();
35 void exeSleepShineStop();
36 void exeSleepShine();
37 void exeSleep();
38 void exeWait();
39 void exeAppear();
40 void exeAppearAir();
41 void exeWalkStart();
42 void walk();
43 void exeWalk();
44 inline bool isOnSpecialGround() const;
45 bool isHideByTimeLimit() const;
46 void exeHeadLost();
47 void exeHalfReaction();
48 void exeHideStart();
49 void exeHide();
50 void exeBlowDown();
51
52private:
53 al::JointSpringControllerHolder* mJointSpringControllerHolder = nullptr;
54 Shine* mShineActor = nullptr;
55 f32 mWalkDirectionOffset = 0.0f;
56 s32 mWalkDirectionChangeTimer = 60;
57 s32 mHeadRegenTimer = 0;
58 s32 mEffectTimer = 0;
59 s32 mTimeLimit = 0;
60 s32 mInvulnerableTimer = 0;
61 sead::Matrix34f mEffectMatrix = sead::Matrix34f::ident;
62 bool mIsHeadLost = false;
63 bool mHasCoin = false;
64 bool mIsTreasureBoxSpawned = false;
65 bool mIsNoHitStop = false;
66};
67