Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/SSZ/Hotaru.h
338 views
1
#ifndef OBJ_HOTARU_H
2
#define OBJ_HOTARU_H
3
4
#include "Game.h"
5
6
typedef enum {
7
HOTARU_GOOD,
8
HOTARU_BAD,
9
} HotaruQualities;
10
11
typedef enum {
12
HOTARU_ATTACK_IDLE,
13
HOTARU_ATTACK_CHARGING,
14
HOTARU_ATTACK_ATTACKING,
15
} HotaruAttackStates;
16
17
// Object Class
18
struct ObjectHotaru {
19
RSDK_OBJECT
20
Hitbox hitboxBadnik;
21
Hitbox hitboxTrigger;
22
int32 unused1;
23
int32 unused2;
24
Hitbox hitboxElectricity;
25
uint16 aniFrames;
26
};
27
28
// Entity Class
29
struct EntityHotaru {
30
RSDK_ENTITY
31
StateMachine(state);
32
uint8 quality;
33
Vector2 dist;
34
int32 distX1;
35
int32 distX2;
36
int32 speed;
37
uint8 preset;
38
Vector2 offset2;
39
Vector2 offset1;
40
uint8 hotaruDir;
41
uint8 destroyedHotarus;
42
Vector2 startPos;
43
uint8 startDir;
44
uint8 screenID;
45
int32 timer;
46
EntityPlayer *playerPtr;
47
uint8 unused1;
48
uint8 unused2;
49
uint8 attackState;
50
Vector2 electricityOffset;
51
Animator mainAnimator;
52
Animator bulbAnimator;
53
Animator electricityAnimator;
54
};
55
56
// Object Struct
57
extern ObjectHotaru *Hotaru;
58
59
// Standard Entity Events
60
void Hotaru_Update(void);
61
void Hotaru_LateUpdate(void);
62
void Hotaru_StaticUpdate(void);
63
void Hotaru_Draw(void);
64
void Hotaru_Create(void *data);
65
void Hotaru_StageLoad(void);
66
#if GAME_INCLUDE_EDITOR
67
void Hotaru_EditorDraw(void);
68
void Hotaru_EditorLoad(void);
69
#endif
70
void Hotaru_Serialize(void);
71
72
// Extra Entity Functions
73
void Hotaru_DebugSpawn(void);
74
void Hotaru_DebugDraw(void);
75
76
void Hotaru_CheckPlayerCollisions(void);
77
void Hotaru_CheckOffScreen(void);
78
79
void Hotaru_State_Init(void);
80
void Hotaru_State_CheckPlayerInRange(void);
81
void Hotaru_State_FoundPlayer(void);
82
void Hotaru_State_FlyOnScreen(void);
83
void Hotaru_State_AttachedToScreen(void);
84
void Hotaru_State_Charging(void);
85
void Hotaru_State_Attacking(void);
86
void Hotaru_State_FinishedAttacking(void);
87
88
#endif //! OBJ_HOTARU_H
89
90