Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/LRZ/HeavyRider.h
338 views
1
#ifndef OBJ_HEAVYRIDER_H
2
#define OBJ_HEAVYRIDER_H
3
4
#include "Game.h"
5
6
typedef enum {
7
HEAVYRIDER_RIDER,
8
HEAVYRIDER_PLANESWITCH,
9
HEAVYRIDER_FORCECHARGE_LEFT,
10
HEAVYRIDER_FORCECHARGE_RIGHT,
11
HEAVYRIDER_UNUSED1,
12
HEAVYRIDER_UNUSED2,
13
HEAVYRIDER_PUFF,
14
HEAVYRIDER_FIREBALL,
15
HEAVYRIDER_JIMMY,
16
} HeavyRiderTypes;
17
18
typedef enum {
19
HEAVYRIDER_ATK_RIDING_SCREENBOUNDS,
20
HEAVYRIDER_ATK_RIDING_ARENABOUNDS,
21
HEAVYRIDER_ATK_RIDING_USETRIGGERS,
22
HEAVYRIDER_ATK_PREPCHARGE,
23
HEAVYRIDER_ATK_CHARGE,
24
} HeavyRiderAttackIDs;
25
26
typedef enum {
27
HEAVYRIDER_SPIKEBALL_NONE,
28
HEAVYRIDER_SPIKEBALL_SWINGING,
29
HEAVYRIDER_SPIKEBALL_UNUSED1,
30
HEAVYRIDER_SPIKEBALL_UNUSED2,
31
HEAVYRIDER_SPIKEBALL_UNUSED3,
32
HEAVYRIDER_SPIKEBALL_UNUSED4,
33
HEAVYRIDER_SPIKEBALL_UNUSED5,
34
HEAVYRIDER_SPIKEBALL_THROWN,
35
} HeavyRiderSpikeBallStates;
36
37
typedef enum {
38
HEAVYRIDER_WHEEL_NONE,
39
HEAVYRIDER_WHEEL_EXTENDING,
40
HEAVYRIDER_WHEEL_RETRACTING,
41
} HeavyRiderWheelStates;
42
43
// Object Class
44
struct ObjectHeavyRider {
45
RSDK_OBJECT
46
uint8 curAttack;
47
uint8 spikeBallState;
48
Vector2 spikeBallPos;
49
uint8 spikeBallAngle;
50
int32 wheelLength;
51
uint8 wheelExtendState;
52
uint8 health;
53
uint8 invincibilityTimer;
54
uint8 spawnDelay;
55
uint8 playerTimers[PLAYER_COUNT];
56
int32 spawnFireballs;
57
int32 startY;
58
uint8 chargeTimer;
59
#if MANIA_USE_PLUS
60
EntityLRZ3Outro *outro;
61
#endif
62
uint16 aniFrames;
63
Hitbox hitboxRider;
64
Hitbox hitboxSpikeBall;
65
Hitbox innerBox;
66
Hitbox outerBox;
67
Hitbox hitboxRiderTrigger;
68
Hitbox hitboxTrigger;
69
Hitbox hitboxJimmy;
70
Hitbox hitboxFireball;
71
uint16 sfxHit;
72
uint16 sfxExplosion;
73
uint16 sfxCharge;
74
uint16 sfxLaunch;
75
uint16 sfxSkid;
76
uint16 sfxJump;
77
uint16 sfxCheer;
78
uint16 sfxBumper;
79
};
80
81
// Entity Class
82
struct EntityHeavyRider {
83
RSDK_ENTITY
84
StateMachine(state);
85
StateMachine(stateDraw);
86
uint8 type;
87
int32 flags;
88
int32 size;
89
bool32 affectPlayer;
90
int32 timer;
91
Animator mainAnimator;
92
Animator thrustAnimator;
93
Animator spikeBallAnimator;
94
Animator fireballAnimator;
95
Animator wheelieAnimator;
96
};
97
98
// Object Struct
99
extern ObjectHeavyRider *HeavyRider;
100
101
// Standard Entity Events
102
void HeavyRider_Update(void);
103
void HeavyRider_LateUpdate(void);
104
void HeavyRider_StaticUpdate(void);
105
void HeavyRider_Draw(void);
106
void HeavyRider_Create(void *data);
107
void HeavyRider_StageLoad(void);
108
#if GAME_INCLUDE_EDITOR
109
void HeavyRider_EditorDraw(void);
110
void HeavyRider_EditorLoad(void);
111
#endif
112
void HeavyRider_Serialize(void);
113
114
// Extra Entity Functions
115
void HeavyRider_SpawnDebris(int32 frame, uint8 drawGroup, int32 x, int32 y);
116
void HeavyRider_CheckObjectCollisions(void);
117
void HeavyRider_Hit(void);
118
void HeavyRider_Explode(void);
119
void HeavyRider_HandleTurn_ScreenEdges(void);
120
void HeavyRider_HandleTurn_ArenaEdges(void);
121
void HeavyRider_DecideNextAttack(void);
122
123
void HeavyRider_State_SetupArena(void);
124
void HeavyRider_State_AwaitPlayer(void);
125
void HeavyRider_State_SetupRider(void);
126
void HeavyRider_State_Moving(void);
127
void HeavyRider_State_RampJump(void);
128
void HeavyRider_State_Charging(void);
129
void HeavyRider_State_ChargeDash(void);
130
void HeavyRider_State_Turning(void);
131
void HeavyRider_State_Destroyed(void);
132
void HeavyRider_State_Finish(void);
133
void HeavyRider_Draw_Boss(void);
134
135
void HeavyRider_State_PlaneSwitch(void);
136
void HeavyRider_Draw_PlaneSwitch(void);
137
138
void HeavyRider_State_ChargeTrigger(void);
139
140
void HeavyRider_Draw_Simple(void);
141
142
void HeavyRider_State_Fireball(void);
143
144
void HeavyRider_State_Puff(void);
145
146
void HeavyRider_StateJimmy_Idle(void);
147
void HeavyRider_StateJimmy_RevRelease(void);
148
void HeavyRider_StateJimmy_RevUp(void);
149
150
#endif //! OBJ_HEAVYRIDER_H
151
152