Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/PGZ/Acetone.h
338 views
1
#ifndef OBJ_ACETONE_H
2
#define OBJ_ACETONE_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectAcetone {
8
RSDK_OBJECT
9
uint16 aniFrames;
10
uint16 sfxFrostThrower;
11
uint16 sfxFreeze;
12
};
13
14
// Entity Class
15
struct EntityAcetone {
16
RSDK_ENTITY
17
StateMachine(state);
18
uint16 timer;
19
Animator dispenseAnimator;
20
Animator gustAnimator;
21
uint16 interval;
22
uint16 intervalOffset;
23
uint16 duration;
24
Hitbox hitbox;
25
bool32 isActive;
26
int32 maxGustCount[4];
27
int32 gustCount[4];
28
Vector2 gustPos[12];
29
};
30
31
// Object Entity
32
extern ObjectAcetone *Acetone;
33
34
// Standard Entity Events
35
void Acetone_Update(void);
36
void Acetone_LateUpdate(void);
37
void Acetone_StaticUpdate(void);
38
void Acetone_Draw(void);
39
void Acetone_Create(void *data);
40
void Acetone_StageLoad(void);
41
#if GAME_INCLUDE_EDITOR
42
void Acetone_EditorDraw(void);
43
void Acetone_EditorLoad(void);
44
#endif
45
void Acetone_Serialize(void);
46
47
// Extra Entity Functions
48
void Acetone_DrawGustFX(void);
49
void Acetone_CheckPlayerCollisions(void);
50
void Acetone_HandleGustCount(void);
51
void Acetone_HandleGustPos(void);
52
void Acetone_State_AwaitInterval(void);
53
void Acetone_State_Dispensing(void);
54
void Acetone_State_StopDispensing(void);
55
56
#endif //! OBJ_ACETONE_H
57
58