Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/ERZ/PhantomRuby.h
338 views
1
#ifndef OBJ_PHANTOMRUBY_H
2
#define OBJ_PHANTOMRUBY_H
3
4
#include "Game.h"
5
6
typedef enum {
7
RUBYSFX_NONE,
8
RUBYSFX_ATTACK1,
9
RUBYSFX_ATTACK2,
10
RUBYSFX_ATTACK3,
11
RUBYSFX_ATTACK4,
12
RUBYSFX_ATTACK5,
13
RUBYSFX_ATTACK6,
14
RUBYSFX_REDCUBE,
15
} RubySfxIDs;
16
17
// Object Class
18
struct ObjectPhantomRuby {
19
RSDK_OBJECT
20
uint16 aniFrames;
21
uint16 sfxL[7];
22
uint16 sfxR[7];
23
};
24
25
// Entity Class
26
struct EntityPhantomRuby {
27
RSDK_ENTITY
28
StateMachine(state);
29
Vector2 startPos;
30
int32 timer;
31
bool32 flashFinished;
32
bool32 hasFlashed;
33
uint8 sfx;
34
int32 unused1;
35
int32 unused2;
36
Animator rubyAnimator;
37
Animator flashAnimator;
38
};
39
40
// Object Struct
41
extern ObjectPhantomRuby *PhantomRuby;
42
43
// Standard Entity Events
44
void PhantomRuby_Update(void);
45
void PhantomRuby_LateUpdate(void);
46
void PhantomRuby_StaticUpdate(void);
47
void PhantomRuby_Draw(void);
48
void PhantomRuby_Create(void *data);
49
void PhantomRuby_StageLoad(void);
50
#if GAME_INCLUDE_EDITOR
51
void PhantomRuby_EditorDraw(void);
52
void PhantomRuby_EditorLoad(void);
53
#endif
54
void PhantomRuby_Serialize(void);
55
56
// Extra Entity Functions
57
void PhantomRuby_PlaySfx(uint8 sfxID);
58
void PhantomRuby_SetupFlash(EntityPhantomRuby *ruby);
59
void PhantomRuby_State_FinishedFlash(void);
60
void PhantomRuby_State_PlaySfx(void);
61
void PhantomRuby_State_Oscillate(void);
62
void PhantomRuby_State_MoveGravity(void);
63
void PhantomRuby_State_MoveRotateGravity(void);
64
void PhantomRuby_State_MoveRotateGravity_CheckGround(void);
65
#if MANIA_USE_PLUS
66
void PhantomRuby_State_MoveToPos(void);
67
#endif
68
void PhantomRuby_State_RotateToOrigin(void);
69
70
#endif //! OBJ_PHANTOMRUBY_H
71
72