Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/SSZ/GigaMetal.h
338 views
1
#ifndef OBJ_GIGAMETAL_H
2
#define OBJ_GIGAMETAL_H
3
4
#include "Game.h"
5
6
#if MANIA_USE_PLUS
7
8
typedef enum {
9
GIGAMETAL_HEAD,
10
GIGAMETAL_SHOULDER,
11
GIGAMETAL_BODY,
12
GIGAMETAL_COVER,
13
GIGAMETAL_EYE,
14
GIGAMETAL_ARMFRONT,
15
GIGAMETAL_ARMBACK,
16
GIGAMETAL_LASERCHARGE,
17
GIGAMETAL_LASEREDGE,
18
GIGAMETAL_LASERBEAM,
19
GIGAMETAL_SHARD,
20
} GigaMetalAniIDs;
21
22
// Object Class
23
struct ObjectGigaMetal {
24
RSDK_OBJECT
25
int32 invincibleTimer;
26
int32 explodeTimer;
27
uint16 aniFrames;
28
uint16 sfxRoar;
29
uint16 sfxImpact;
30
uint16 sfxTarget;
31
uint16 sfxPimpom;
32
uint16 sfxCannon;
33
Hitbox hitboxLaser;
34
Hitbox hitboxHand;
35
Hitbox hitboxCore;
36
Hitbox hitboxHead;
37
};
38
39
// Entity Class
40
struct EntityGigaMetal {
41
RSDK_ENTITY
42
StateMachine(state);
43
StateMachine(stateDraw);
44
EntityGigaMetal *body;
45
EntityGigaMetal *head;
46
EntityPhantomRuby *ruby;
47
EntityGigaMetal *cover;
48
EntityGigaMetal *shoulder;
49
EntityGigaMetal *frontArm;
50
EntityGigaMetal *backArm;
51
EntityMetalSonic *metalSonic;
52
int32 timer;
53
int32 health;
54
int32 attackTimer;
55
Vector2 componentPos;
56
Vector2 targetPos;
57
Animator mainAnimator;
58
Animator jointAnimator;
59
Animator armAnimator;
60
Animator handAnimator;
61
uint8 aniID;
62
uint8 frameID;
63
int32 rotationAngles[3];
64
int32 laserSize;
65
};
66
67
// Object Struct
68
extern ObjectGigaMetal *GigaMetal;
69
70
// Standard Entity Events
71
void GigaMetal_Update(void);
72
void GigaMetal_LateUpdate(void);
73
void GigaMetal_StaticUpdate(void);
74
void GigaMetal_Draw(void);
75
void GigaMetal_Create(void *data);
76
void GigaMetal_StageLoad(void);
77
#if GAME_INCLUDE_EDITOR
78
void GigaMetal_EditorDraw(void);
79
void GigaMetal_EditorLoad(void);
80
#endif
81
void GigaMetal_Serialize(void);
82
83
// Extra Entity Functions
84
void GigaMetal_Draw_Cover(void);
85
void GigaMetal_Draw_Head(void);
86
void GigaMetal_Draw_Shoulder(void);
87
void GigaMetal_Draw_Arm(void);
88
void GigaMetal_Draw_LaserEdge(void);
89
void GigaMetal_Draw_Shard(void);
90
91
void GigaMetal_HandleCameraMovement(void);
92
93
void GigaMetal_CheckPlayerCollisions(void);
94
void GigaMetal_Hit(void);
95
96
void GigaMetal_StateBody_AwaitPlayer(void);
97
void GigaMetal_StateBody_SetupComponents(void);
98
void GigaMetal_StateBody_Transformed(void);
99
void GigaMetal_StateBody_Roar(void);
100
void GigaMetal_StateBody_Marching(void);
101
void GigaMetal_StateBody_Destroyed(void);
102
103
void GigaMetal_StateShoulder_Impact(void);
104
105
void GigaMetal_StateHead_Impact(void);
106
107
void GigaMetal_State_Laser(void);
108
109
void GigaMetal_StateLaser_Finish(void);
110
111
void GigaMetal_State_Shard(void);
112
113
void GigaMetal_StateHead_PrepareRoar(void);
114
void GigaMetal_StateHead_Roar(void);
115
void GigaMetal_StateHead_FinishRoar(void);
116
void GigaMetal_StateHead_PrepareLaser(void);
117
void GigaMetal_StateHead_ChargeLaser(void);
118
void GigaMetal_StateHead_FiringLaser(void);
119
void GigaMetal_StateHead_TargetingPlayer(void);
120
void GigaMetal_StateHead_ReleasingBombs(void);
121
122
void GigaMetal_HandleArmCollisions(void);
123
void GigaMetal_StateArm_Idle_Front(void);
124
void GigaMetal_StateArm_Idle_Behind(void);
125
void GigaMetal_StateArm_Marching(void);
126
#endif
127
128
#endif //! OBJ_GIGAMETAL_H
129
130