Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/ERZ/ERZKing.h
338 views
1
#ifndef OBJ_ERZKING_H
2
#define OBJ_ERZKING_H
3
4
#include "Game.h"
5
6
typedef enum {
7
ERZKING_KING,
8
ERZKING_ARM_L,
9
ERZKING_ARM_R,
10
} ERZKingTypes;
11
12
typedef enum {
13
ERZKING_HEAVY_GUNNER,
14
ERZKING_HEAVY_MYSTIC,
15
} ERZKingHeavyTypes;
16
17
// Object Class
18
struct ObjectERZKing {
19
RSDK_OBJECT
20
int32 boundsL;
21
int32 boundsR;
22
int32 boundsM;
23
int32 boundsT;
24
int32 boundsB;
25
uint16 sfxHit;
26
uint16 sfxExplosion2;
27
uint16 aniFrames;
28
};
29
30
// Entity Class
31
struct EntityERZKing {
32
RSDK_ENTITY
33
StateMachine(state);
34
StateMachine(stateDraw);
35
Vector2 originPos;
36
int32 type;
37
int32 timer;
38
int32 nextType;
39
int32 invincibilityTimer;
40
int32 health;
41
int32 typeChangeTimer;
42
int32 bodyAngle;
43
int32 armAngles[10];
44
Vector2 armPositions[10];
45
Vector2 rubyPos;
46
Vector2 unused;
47
EntityERZKing *parent;
48
Animator basicAnimator;
49
Animator headAnimator;
50
Animator bodyAnimator;
51
Animator beltAnimator;
52
Animator particleAnimator;
53
Animator rubyAnimator;
54
Animator unusedAnimator;
55
Animator armAnimator;
56
Animator cuffAnimator;
57
Animator handAnimator;
58
Hitbox hitbox;
59
uint8 storeDrawFX;
60
};
61
62
// Object Struct
63
extern ObjectERZKing *ERZKing;
64
65
// Standard Entity Events
66
void ERZKing_Update(void);
67
void ERZKing_LateUpdate(void);
68
void ERZKing_StaticUpdate(void);
69
void ERZKing_Draw(void);
70
void ERZKing_Create(void *data);
71
void ERZKing_StageLoad(void);
72
#if GAME_INCLUDE_EDITOR
73
void ERZKing_EditorDraw(void);
74
void ERZKing_EditorLoad(void);
75
#endif
76
void ERZKing_Serialize(void);
77
78
// Extra Entity Functions
79
void ERZKing_CheckPlayerCollisions(void);
80
void ERZKing_Hit(void);
81
void ERZKing_HandleFrames(void);
82
83
void ERZKing_Draw_Body(void);
84
void ERZKing_Draw_Arm(void);
85
86
void ERZKing_State_SetupArena(void);
87
void ERZKing_State_SetupBody(void);
88
void ERZKing_State_EnterKing(void);
89
void ERZKing_State_FlyAround(void);
90
void ERZKing_State_ChangeHBH(void);
91
void ERZKing_State_Arm(void);
92
void ERZKing_State_Explode(void);
93
94
#endif //! OBJ_ERZKING_H
95
96