Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/FBZ/FBZMissile.h
338 views
1
#ifndef OBJ_FBZMISSILE_H
2
#define OBJ_FBZMISSILE_H
3
4
#include "Game.h"
5
6
typedef enum {
7
FBZMISSILE_LAUNCHER_V,
8
FBZMISSILE_LAUNCHER_H,
9
FBZMISSILE_HULL,
10
FBZMISSILE_VERTICAL,
11
FBZMISSILE_HORIZONTAL,
12
} FBZMissileTypes;
13
14
// Object Class
15
struct ObjectFBZMissile {
16
RSDK_OBJECT
17
Hitbox hitboxMissileV;
18
Hitbox hitboxMissileH;
19
Hitbox hitboxHull;
20
TABLE(int32 velocities[8], { 0x10000, 0xE000, 0x12000, 0x14000, 0x10000, 0xE000, 0xC000, 0xE000 });
21
int32 velocityID;
22
uint16 aniFrames;
23
uint16 sfxPush;
24
uint16 sfxPush2;
25
uint16 sfxExplosion;
26
};
27
28
// Entity Class
29
struct EntityFBZMissile {
30
RSDK_ENTITY
31
StateMachine(state);
32
StateMachine(stateDraw);
33
FBZMissileTypes type;
34
uint8 interval;
35
uint8 intervalOffset;
36
int32 timer;
37
Animator animator;
38
};
39
40
// Object Struct
41
extern ObjectFBZMissile *FBZMissile;
42
43
// Standard Entity Events
44
void FBZMissile_Update(void);
45
void FBZMissile_LateUpdate(void);
46
void FBZMissile_StaticUpdate(void);
47
void FBZMissile_Draw(void);
48
void FBZMissile_Create(void *data);
49
void FBZMissile_StageLoad(void);
50
#if GAME_INCLUDE_EDITOR
51
void FBZMissile_EditorDraw(void);
52
void FBZMissile_EditorLoad(void);
53
#endif
54
void FBZMissile_Serialize(void);
55
56
// Extra Entity Functions
57
void FBZMissile_StateLauncherV_Delay(void);
58
void FBZMissile_StateLauncherV_Launch(void);
59
60
void FBZMissile_StateLauncherH_Fire(void);
61
void FBZMissile_StateLauncherH_Prepare(void);
62
63
void FBZMissile_StateVertical_Rise(void);
64
void FBZMissile_StateVertical_Fall(void);
65
void FBZMissile_StateHorizontal_Move(void);
66
67
void FBZMissile_State_Hull(void);
68
69
#endif //! OBJ_FBZMISSILE_H
70
71