Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/PGZ/FrostThrower.h
338 views
1
#ifndef OBJ_FROSTTHROWER_H
2
#define OBJ_FROSTTHROWER_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectFrostThrower {
8
RSDK_OBJECT
9
uint16 aniFrames;
10
uint16 sfxFrostThrower;
11
uint16 sfxFreeze;
12
};
13
14
// Entity Class
15
struct EntityFrostThrower {
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 Struct
32
extern ObjectFrostThrower *FrostThrower;
33
34
// Standard Entity Events
35
void FrostThrower_Update(void);
36
void FrostThrower_LateUpdate(void);
37
void FrostThrower_StaticUpdate(void);
38
void FrostThrower_Draw(void);
39
void FrostThrower_Create(void *data);
40
void FrostThrower_StageLoad(void);
41
#if GAME_INCLUDE_EDITOR
42
void FrostThrower_EditorDraw(void);
43
void FrostThrower_EditorLoad(void);
44
#endif
45
void FrostThrower_Serialize(void);
46
47
// Extra Entity Functions
48
void FrostThrower_DrawGustFX(void);
49
void FrostThrower_CheckPlayerCollisions(void);
50
void FrostThrower_HandleGustCount(void);
51
void FrostThrower_HandleGustPos(void);
52
void FrostThrower_State_AwaitInterval(void);
53
void FrostThrower_State_Dispensing(void);
54
void FrostThrower_State_StopDispensing(void);
55
56
#endif //! OBJ_FROSTTHROWER_H
57
58