Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/LRZ/Flamethrower.h
338 views
1
#ifndef OBJ_FLAMETHROWER_H
2
#define OBJ_FLAMETHROWER_H
3
4
#include "Game.h"
5
6
typedef enum {
7
FLAMETHROWER_ORIENTATION_RIGHT,
8
FLAMETHROWER_ORIENTATION_DOWN,
9
FLAMETHROWER_ORIENTATION_LEFT,
10
FLAMETHROWER_ORIENTATION_UP
11
} FlamethrowerOrientations;
12
13
typedef enum {
14
FLAMETHROWER_MODE_EMITTER,
15
FLAMETHROWER_MODE_SPRINKLER,
16
} FlamethrowerModes;
17
18
// Object Class
19
struct ObjectFlamethrower {
20
RSDK_OBJECT
21
uint16 aniFrames;
22
uint16 sfxFlame;
23
bool32 playingFlameSfx;
24
Hitbox hitboxMouthH;
25
Hitbox hitboxMouthV;
26
Hitbox hitboxSmallFireball;
27
Hitbox hitboxMediumFireball;
28
Hitbox hitboxLargeFireball;
29
};
30
31
// Entity Class
32
struct EntityFlamethrower {
33
RSDK_ENTITY
34
StateMachine(state);
35
uint8 orientation;
36
uint8 mode;
37
int32 maxDist;
38
uint16 spread;
39
uint16 interval;
40
uint16 intervalOffset;
41
uint16 duration;
42
uint16 timer;
43
uint16 flameAngle;
44
int32 lastYVelocity;
45
int32 currentDist;
46
EntityFlamethrower *parent;
47
Vector2 origin;
48
Vector2 lastPos;
49
Animator animator;
50
};
51
52
// Object Struct
53
extern ObjectFlamethrower *Flamethrower;
54
55
// Standard Entity Events
56
void Flamethrower_Update(void);
57
void Flamethrower_LateUpdate(void);
58
void Flamethrower_StaticUpdate(void);
59
void Flamethrower_Draw(void);
60
void Flamethrower_Create(void *data);
61
void Flamethrower_StageLoad(void);
62
#if GAME_INCLUDE_EDITOR
63
void Flamethrower_EditorDraw(void);
64
void Flamethrower_EditorLoad(void);
65
#endif
66
void Flamethrower_Serialize(void);
67
68
// Extra Entity Functions
69
void Flamethrower_SetupOrientation(uint8 orientation);
70
Hitbox Flamethrower_GetHitbox(void);
71
void Flamethrower_CheckOffScreen(void);
72
void Flamethrower_HandleAnimations(void);
73
void Flamethrower_HandleAngles(void);
74
void Flamethrower_HandleTileCollisions(void);
75
void Flamethrower_CheckOutOfBounds(uint8 orientation);
76
77
void Flamethrower_CheckFlameCollisions(void);
78
void Flamethrower_CheckMouthCollisions(void);
79
80
void Flamethrower_State_Init(void);
81
void Flamethrower_State_AwaitInterval(void);
82
void Flamethrower_State_EmittingFlames(void);
83
84
void Flamethrower_State_SetupFireball(void);
85
void Flamethrower_State_Fireball(void);
86
87
#endif //! OBJ_FLAMETHROWER_H
88
89