Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/SSZ/Firework.h
338 views
1
#ifndef OBJ_FIREWORK_H
2
#define OBJ_FIREWORK_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectFirework {
8
RSDK_OBJECT
9
uint16 aniFrames;
10
uint16 sfxRocketJet;
11
uint16 sfxFlame;
12
uint16 sfxExplosion2;
13
uint16 sfxExplosion;
14
bool32 playingFlameSfx;
15
Hitbox hitboxFireworkGrab;
16
Hitbox hitboxTileCheck;
17
};
18
19
// Entity Class
20
struct EntityFirework {
21
RSDK_ENTITY
22
int32 distance;
23
int32 innerRadius;
24
int32 outerRadius;
25
StateMachine(state);
26
uint8 activePlayers;
27
int32 playerTimers[PLAYER_COUNT];
28
int32 sparkID;
29
bool32 activated;
30
int32 timer;
31
int32 moveVelocity;
32
int32 ridePos;
33
Vector2 startPos;
34
Vector2 lastPosition;
35
bool32 rideActive;
36
Animator mainAnimator;
37
Animator sparkAnimator;
38
};
39
40
// Object Struct
41
extern ObjectFirework *Firework;
42
43
// Standard Entity Events
44
void Firework_Update(void);
45
void Firework_LateUpdate(void);
46
void Firework_StaticUpdate(void);
47
void Firework_Draw(void);
48
void Firework_Create(void *data);
49
void Firework_StageLoad(void);
50
#if GAME_INCLUDE_EDITOR
51
void Firework_EditorDraw(void);
52
void Firework_EditorLoad(void);
53
#endif
54
void Firework_Serialize(void);
55
56
// Extra Entity Functions
57
void Firework_CheckPlayerCollisions(void);
58
void Firework_HandlePlayerTimers(void);
59
void Firework_RemovePlayers(bool32 crashed);
60
void Firework_HandlePlayerRemoval(EntityPlayer *player, bool32 crashed);
61
void Firework_HandlePlayerJump(void);
62
void Firework_HandlePlayerControl(void);
63
void Firework_HandleMoveDir(void);
64
void Firework_HandleDebrisSpawn(void);
65
void Firework_HandleTileCollisions(void);
66
void Firework_HandleRideEnd(bool32 crashed);
67
void Firework_CheckOffScreen(void);
68
void Firework_HandleSparkAnimations(int32 sparkID, int16 angle, Animator *fireworkAnimator, Animator *sparkAnimator, uint8 *direction);
69
70
void Firework_State_Init(void);
71
void Firework_State_AwaitPlayerRide(void);
72
void Firework_State_PlayerGrabDelay(void);
73
void Firework_State_Riding(void);
74
void Firework_State_Explode(void);
75
void Firework_State_ResetOffScreen(void);
76
77
void Firework_State_SparkSetup(void);
78
void Firework_State_Spark(void);
79
80
#endif //! OBJ_FIREWORK_H
81
82