Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/LRZ/DrillerdroidO.h
338 views
1
#ifndef OBJ_DRILLERDROIDO_H
2
#define OBJ_DRILLERDROIDO_H
3
4
#include "Game.h"
5
6
typedef enum {
7
DRILLERDROIDO_MAIN,
8
DRILLERDROIDO_FIREBALLEMITTER,
9
DRILLERDROIDO_TARGET,
10
DRILLERDROIDO_UNUSED1,
11
DRILLERDROIDO_UNUSED2,
12
} DrillerdroidOTypes;
13
14
// Object Class
15
struct ObjectDrillerdroidO {
16
RSDK_OBJECT
17
Hitbox hitboxCore;
18
Hitbox hitboxPistonL;
19
Hitbox hitboxPistonR;
20
Hitbox hitboxDrillL;
21
Hitbox hitboxDrillR;
22
Hitbox hitboxLandPosSegmentBreak;
23
Hitbox hitboxLandPosR;
24
Hitbox hitboxLandPosL;
25
Hitbox hitboxEmitterRange;
26
int32 pistonPos[2];
27
int32 drillPos[2];
28
int32 pistonDelay[2];
29
int32 drillDelay[2];
30
int32 pistonMoveDir[2];
31
int32 drillMoveDir[2];
32
uint8 drillSfxTimer;
33
bool32 playingDrillSfx;
34
uint8 canBreakSegment;
35
int32 childSlotStart;
36
uint8 currentLevel;
37
bool32 emitFireballs;
38
EntityDrillerdroidO *boss;
39
uint16 aniFrames;
40
uint16 ticFrames;
41
uint16 sfxHit;
42
uint16 sfxExplosion;
43
uint16 sfxDrill;
44
uint16 sfxImpact;
45
uint16 sfxJump;
46
uint16 sfxTargeting;
47
uint16 sfxSizzle;
48
};
49
50
// Entity Class
51
struct EntityDrillerdroidO {
52
RSDK_ENTITY
53
uint8 type;
54
StateMachine(state);
55
StateMachine(stateDraw);
56
Animator mainAnimator;
57
Animator armorAnimator;
58
Animator targetLockAnimator;
59
EntityPlayer *target;
60
Vector2 targetEdgeOffset;
61
int32 startY;
62
int32 timer;
63
uint8 invincibilityTimer;
64
int8 health;
65
};
66
67
// Object Struct
68
extern ObjectDrillerdroidO *DrillerdroidO;
69
70
// Standard Entity Events
71
void DrillerdroidO_Update(void);
72
void DrillerdroidO_LateUpdate(void);
73
void DrillerdroidO_StaticUpdate(void);
74
void DrillerdroidO_Draw(void);
75
void DrillerdroidO_Create(void *data);
76
void DrillerdroidO_StageLoad(void);
77
#if GAME_INCLUDE_EDITOR
78
void DrillerdroidO_EditorDraw(void);
79
void DrillerdroidO_EditorLoad(void);
80
#endif
81
void DrillerdroidO_Serialize(void);
82
83
// Extra Entity Functions
84
void DrillerdroidO_CheckPlayerCollisions(void);
85
void DrillerdroidO_Explode(void);
86
void DrillerdroidO_SpawnDebris(int32 offset);
87
88
void DrillerdroidO_State_SetupArena(void);
89
void DrillerdroidO_State_AwaitPlayer(void);
90
void DrillerdroidO_State_Dropping(void);
91
void DrillerdroidO_State_Landed(void);
92
void DrillerdroidO_State_LandRecoil(void);
93
void DrillerdroidO_State_BeginDrilling(void);
94
void DrillerdroidO_State_Drilling(void);
95
void DrillerdroidO_State_FinishDrilling(void);
96
void DrillerdroidO_State_Overheat(void);
97
void DrillerdroidO_State_OverheatRecoil(void);
98
void DrillerdroidO_State_JumpTargetDelay(void);
99
void DrillerdroidO_State_PrepareJumpTarget(void);
100
void DrillerdroidO_State_JumpTargeting(void);
101
void DrillerdroidO_State_DestroyRockPiles(void);
102
void DrillerdroidO_State_NextLevelDelay(void);
103
void DrillerdroidO_State_MoveToNextLevel(void);
104
void DrillerdroidO_State_DecidingDropPos(void);
105
void DrillerdroidO_State_OverheatRecoil_DestroyedSegment(void);
106
void DrillerdroidO_State_Cooldown(void);
107
void DrillerdroidO_State_ResetFromCooldown(void);
108
void DrillerdroidO_State_Destroyed(void);
109
void DrillerdroidO_State_Finish(void);
110
111
void DrillerdroidO_Draw_Boss(void);
112
void DrillerdroidO_Draw_Simple(void);
113
114
void DrillerdroidO_State_Target(void);
115
void DrillerdroidO_Draw_Target(void);
116
117
void DrillerdroidO_State_FireballEmitter(void);
118
void DrillerdroidO_Draw_FireballEmitter(void);
119
120
#endif //! OBJ_DRILLERDROIDO_H
121
122