Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/MSZ/HeavyMystic.h
338 views
1
#ifndef OBJ_HEAVYMYSTIC_H
2
#define OBJ_HEAVYMYSTIC_H
3
4
#include "Game.h"
5
6
typedef enum {
7
MYSTIC_MISCHIEF,
8
MYSTIC_BOSS,
9
MYSTIC_BOX,
10
MYSTIC_CORK,
11
MYSTIC_BOMB,
12
MYSTIC_DEBRIS,
13
} HeavyMysticTypes;
14
15
// Object Class
16
struct ObjectHeavyMystic {
17
RSDK_OBJECT
18
int32 boundsL;
19
int32 boundsR;
20
int32 boundsM;
21
int32 boundsT;
22
int32 boundsB;
23
int32 curtainLinePos;
24
uint16 sfxAssemble;
25
uint16 sfxMagicBox;
26
uint16 sfxClack;
27
uint16 sfxPowerDown;
28
uint16 sfxImpact;
29
uint16 sfxPon;
30
uint16 sfxDrop;
31
uint16 sfxImpact2;
32
uint16 sfxHit;
33
uint16 sfxExplosion;
34
uint16 sfxPoof;
35
uint16 sfxTwinkle;
36
uint16 sfxHat;
37
uint16 sfxHatNode;
38
uint16 sfxBleeps;
39
uint16 sfxTransform;
40
uint16 sfxAppear1;
41
uint16 aniFrames;
42
uint16 roguesFrames;
43
};
44
45
// Entity Class
46
struct EntityHeavyMystic {
47
RSDK_ENTITY
48
StateMachine(state);
49
StateMachine(stateDraw);
50
int32 type;
51
int32 timer;
52
int32 invincibilityTimer;
53
int32 health;
54
int32 rogueHealth;
55
int32 particleFXTimer;
56
int32 unused;
57
int32 attackID;
58
int32 rogueID;
59
Vector2 targetPos;
60
Animator animator;
61
Hitbox hitbox;
62
};
63
64
// Object Struct
65
extern ObjectHeavyMystic *HeavyMystic;
66
67
// Standard Entity Events
68
void HeavyMystic_Update(void);
69
void HeavyMystic_LateUpdate(void);
70
void HeavyMystic_StaticUpdate(void);
71
void HeavyMystic_Draw(void);
72
void HeavyMystic_Create(void *data);
73
void HeavyMystic_StageLoad(void);
74
#if GAME_INCLUDE_EDITOR
75
void HeavyMystic_EditorDraw(void);
76
void HeavyMystic_EditorLoad(void);
77
#endif
78
void HeavyMystic_Serialize(void);
79
80
// Extra Entity Functions
81
void HeavyMystic_SpawnParticleFX(int32 x, int32 y);
82
void HeavyMystic_HandleParticleFX(void);
83
84
void HeavyMystic_CheckPlayerCollisions(void);
85
void HeavyMystic_Hit(void);
86
void HeavyMystic_CheckPlayerCollisions_Fang(void);
87
void HeavyMystic_CheckPlayerCollisions_Bark(void);
88
void HeavyMystic_CheckPlayerCollisions_Bean(void);
89
void HeavyMystic_Explode(void);
90
91
void HeavyMystic_Scanline_Curtains(ScanlineInfo *scanlines);
92
93
void HeavyMystic_StateMischief_Setup(void);
94
void HeavyMystic_StateBoss_SetupArena(void);
95
void HeavyMystic_StateBoss_AwaitPlayer(void);
96
void HeavyMystic_StateMischief_EnterMystic(void);
97
void HeavyMystic_StateMischief_HandleAppearArc(void);
98
void HeavyMystic_StateBoss_BeginShow(void);
99
void HeavyMystic_StateMischief_Idle(void);
100
void HeavyMystic_StateMischief_MoveIntoPlace(void);
101
void HeavyMystic_StateMischief_FinishedMagicTrick(void);
102
void HeavyMystic_StateMischief_PrepareMagicTrick(void);
103
void HeavyMystic_StateMischief_GoodDay(void);
104
void HeavyMystic_StateMischief_ConjureHatterkiller(void);
105
void HeavyMystic_StateMischief_Disappear(void);
106
107
void HeavyMystic_StateBoss_Destroyed(void);
108
void HeavyMystic_StateBoss_Finish(void);
109
void HeavyMystic_StateBoss_CloseCurtains(void);
110
void HeavyMystic_StateBoss_AwaitBoxOpened(void);
111
void HeavyMystic_StateBoss_EnterMystic(void);
112
void HeavyMystic_StateBoss_GoodDay(void);
113
void HeavyMystic_StateBoss_BoxCloseDelay(void);
114
void HeavyMystic_StateBoss_AwaitBoxClosing(void);
115
void HeavyMystic_StateBoss_AwaitBoxClosed(void);
116
void HeavyMystic_StateBoss_Transforming(void);
117
void HeavyMystic_StateBoss_ShowRogue(void);
118
void HeavyMystic_StateBoss_MysticReveal(void);
119
void HeavyMystic_StateBoss_MoveToBoxY(void);
120
void HeavyMystic_StateBoss_MoveToBoxX(void);
121
void HeavyMystic_StateBoss_TransformBackIntoRogue(void);
122
void HeavyMystic_StateBoss_FangIdle(void);
123
void HeavyMystic_StateBoss_FangTell(void);
124
void HeavyMystic_StateBoss_FangHop(void);
125
void HeavyMystic_StateBoss_RogueHit(void);
126
void HeavyMystic_StateBoss_BarkIdle(void);
127
void HeavyMystic_StateBoss_BarkPounding(void);
128
void HeavyMystic_StateBoss_BarkJump(void);
129
void HeavyMystic_StateBoss_BeanIdle(void);
130
void HeavyMystic_StateBoss_BeanBomb1Throw(void);
131
void HeavyMystic_StateBoss_BeanBomb2Throw(void);
132
void HeavyMystic_StateBoss_BeanJump(void);
133
134
void HeavyMystic_StateCork_Fired(void);
135
#if MANIA_USE_PLUS
136
void HeavyMystic_StateCork_MightyRebound(void);
137
#endif
138
139
void HeavyMystic_State_Bomb(void);
140
141
void HeavyMystic_State_BarkDebris(void);
142
143
void HeavyMystic_StateBox_AwaitCurtainRise(void);
144
void HeavyMystic_StateBox_Idle(void);
145
void HeavyMystic_StateBox_CloseDoors(void);
146
void HeavyMystic_StateBox_OpenDoors(void);
147
void HeavyMystic_StateBox_Transforming(void);
148
void HeavyMystic_StateBox_TransformFinish(void);
149
void HeavyMystic_StateBox_Dropping(void);
150
void HeavyMystic_StateBox_ShowContents(void);
151
void HeavyMystic_StateBox_Reappear(void);
152
153
void HeavyMystic_Draw_BoxOpened(void);
154
void HeavyMystic_Draw_BoxTransforming(void);
155
void HeavyMystic_Draw_BoxClosed(void);
156
157
#endif //! OBJ_HEAVYMYSTIC_H
158
159