1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/LiveActor/LiveActor.h"
6
7#include "Util/IUseDimension.h"
8
9class Shine : public al::LiveActor, public IUseDimension {
10public:
11 Shine(const char*);
12
13 void init(const al::ActorInitInfo&) override;
14 al::LiveActor* getCurrentModel();
15 bool tryExpandShadowAndClipping();
16 void initAppearDemo(const al::ActorInitInfo&);
17 void onAppear();
18 void offAppear();
19 void hideAllModel();
20 void invalidateKillSensor();
21 void initAfterPlacement() override;
22 void getDirect();
23 void updateHintTrans(const sead::Vector3f&) const;
24 void appear() override;
25 void makeActorAlive() override;
26 void makeActorDead() override;
27 void control() override;
28 void updateModelActorPose();
29 void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
30 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
31 al::HitSensor* self) override;
32 void showCurrentModel();
33 void appearPopup();
34 void addDemoActorWithModel();
35 void get();
36 void endClipped() override;
37 void initAppearDemoFromHost(const al::ActorInitInfo&, const sead::Vector3f&);
38 void initAppearDemoFromHost(const al::ActorInitInfo&);
39 void initAppearDemoActorCamera(const al::ActorInitInfo&);
40 void createShineEffectInsideObject(const al::ActorInitInfo&, const sead::Vector3f&,
41 const char*);
42 bool isGot() const;
43 bool isEmptyShineForDemoGetGrand() const;
44 void setShopShine();
45 bool isEndAppear() const;
46 bool isEndAppearGK() const;
47 void onSwitchGet();
48 s32 getColorFrame() const;
49 void setHintPhotoShine(const al::ActorInitInfo&);
50 bool appearCommon();
51 bool tryChangeCoin();
52 void tryAppearOrDemoAppear();
53
54 void appearPopup(const sead::Vector3f&);
55 void appearPopupDelay(s32);
56 void appearPopupSlot(const sead::Vector3f&);
57 void appearWarp(const sead::Vector3f&, const sead::Vector3f&);
58 void appearStatic();
59 void appearPopupWithoutDemo();
60 void appearPopupGrandByBoss(s32);
61 void appearPopupWithoutWarp();
62 void appearAndJoinBossDemo(const char*, const sead::Quatf&, const sead::Vector3f&);
63
64 void endBossDemo();
65 void endBossDemoAndStartFall(f32);
66 void appearWait();
67 void appearWait(const sead::Vector3f&);
68 void startHold();
69 void startFall();
70 void getDirectWithDemo();
71 void addDemoModelActor();
72 void setGrandShine();
73 void exeWaitRequestDemo();
74 void exeWaitKill();
75 void exeDemoAppear();
76 bool tryWaitCameraInterpole() const;
77 bool tryStartAppearDemo();
78 void calcCameraAt();
79
80 void exeDemoMove();
81 void updateIgnoreFrame();
82 void exeDemoWait();
83 void exeDemoGet();
84 void exeDemoGetMain();
85 void exeDemoGetGrand();
86 void exeBossDemo();
87 void exeBossDemoAfterFall();
88 void exeBossDemoAfterLanding();
89 void exeBossDemoFall();
90 void exeBossDemoFallSlowdown();
91 void exeBossDemoRise();
92 void exeBossDemoRiseDamp();
93 void exeAppearSlot();
94 void exeAppearSlotDown();
95 void exeAppear();
96 void exeAppearWait();
97 void exeAppearDown();
98 void exeAppearStatic();
99 void exeAppearEnd();
100 void exeAppearWaitCameraInterpole();
101 void exeWait();
102 void exeGot();
103 void exeHold();
104 void exeFall();
105 void exeDelay();
106 void exeHide();
107 void exeReaction();
108 void exeCoin();
109
110 void updateModelActorResetPosition();
111 ActorDimensionKeeper* getActorDimensionKeeper() const override;
112
113 const sead::Vector3f& get_16c() { return _16c; }
114
115 void set_16c(const sead::Vector3f& newValue) { _16c.set(newValue); }
116
117 bool isMainShine() const { return mIsMainShine; }
118
119private:
120 char filler_16c[92];
121 sead::Vector3f _16c;
122 void* filler[35];
123 s32 filler2;
124 bool mIsMainShine;
125 void* filler3[29];
126};
127
128static_assert(sizeof(Shine) == 0x380);
129
130namespace ShineFunction {
131const char* getMovePointLinkName();
132}
133