Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/LRZ/Drillerdroid.h
338 views
1
#ifndef OBJ_DRILLERDROID_H
2
#define OBJ_DRILLERDROID_H
3
4
#include "Game.h"
5
6
typedef enum {
7
DRILLERDROID_MAIN,
8
DRILLERDROID_TARGET,
9
DRILLERDROID_UNUSED,
10
} DrillerdroidTypes;
11
12
// Object Class
13
struct ObjectDrillerdroid {
14
RSDK_OBJECT
15
Hitbox hitboxCore;
16
Hitbox hitboxPistonL;
17
Hitbox hitboxPistonR;
18
Hitbox hitboxDrillL;
19
Hitbox hitboxDrillR;
20
int32 pistonPos[2];
21
int32 drillPos[2];
22
int32 pistonDelay[2];
23
int32 drillDelay[2];
24
int32 pistonMoveDir[2];
25
int32 drillMoveDir[2];
26
uint8 platformActive[5];
27
uint8 arenaSegment;
28
uint8 playerTimers[PLAYER_COUNT];
29
uint8 drillSfxTimer;
30
bool32 playingDrillSfx;
31
uint8 armorHealth;
32
uint8 jumpsRemaining;
33
uint8 canBreakSegment;
34
int32 stalactiteOffset;
35
EntityDrillerdroid *boss;
36
uint16 aniFrames;
37
uint16 ticFrames;
38
uint16 sfxHit;
39
uint16 sfxExplosion;
40
uint16 sfxDrill;
41
uint16 sfxImpact;
42
uint16 sfxJump;
43
uint16 sfxTargeting;
44
uint16 sfxSizzle;
45
uint16 sfxDrop;
46
uint16 sfxFail;
47
uint16 sfxClang;
48
};
49
50
// Entity Class
51
struct EntityDrillerdroid {
52
RSDK_ENTITY
53
uint8 unused;
54
uint8 type;
55
StateMachine(state);
56
StateMachine(stateDraw);
57
Animator mainAnimator;
58
Animator armorAnimator;
59
Animator targetLockAnimator;
60
EntityPlayer *target;
61
Vector2 targetEdgeOffset;
62
int32 startY;
63
int32 timer;
64
uint8 invincibilityTimer;
65
int8 health;
66
};
67
68
// Object Struct
69
extern ObjectDrillerdroid *Drillerdroid;
70
71
// Standard Entity Events
72
void Drillerdroid_Update(void);
73
void Drillerdroid_LateUpdate(void);
74
void Drillerdroid_StaticUpdate(void);
75
void Drillerdroid_Draw(void);
76
void Drillerdroid_Create(void *data);
77
void Drillerdroid_StageLoad(void);
78
#if GAME_INCLUDE_EDITOR
79
void Drillerdroid_EditorDraw(void);
80
void Drillerdroid_EditorLoad(void);
81
#endif
82
void Drillerdroid_Serialize(void);
83
84
// Extra Entity Functions
85
void Drillerdroid_Hit(void);
86
void Drillerdroid_CheckPlayerCollisions(void);
87
void Drillerdroid_Explode(void);
88
void Drillerdroid_SpawnDebris(int32 offset);
89
90
void Drillerdroid_State_SetupArena(void);
91
void Drillerdroid_State_AwaitPlayer(void);
92
void Drillerdroid_State_Dropping(void);
93
void Drillerdroid_State_Landed(void);
94
void Drillerdroid_State_LandRecoil(void);
95
void Drillerdroid_State_DecideNextMove(void);
96
void Drillerdroid_State_PrepareJump(void);
97
void Drillerdroid_State_Jumping(void);
98
void Drillerdroid_State_Drilling(void);
99
void Drillerdroid_State_FinishDrilling(void);
100
void Drillerdroid_State_Overheat(void);
101
void Drillerdroid_State_OverheatRecoil(void);
102
void Drillerdroid_State_JumpTargetDelay(void);
103
void Drillerdroid_State_PrepareJumpTarget(void);
104
void Drillerdroid_State_JumpTargeting(void);
105
void Drillerdroid_State_DecidingDropPos(void);
106
void Drillerdroid_State_DropFailReset(void);
107
void Drillerdroid_State_OverheatRecoil_DestroyedSegment(void);
108
void Drillerdroid_State_Cooldown(void);
109
void Drillerdroid_State_ResetFromCooldown(void);
110
void Drillerdroid_State_Destroyed(void);
111
void Drillerdroid_State_Finish(void);
112
void Drillerdroid_State_DropSignPost(void);
113
114
void Drillerdroid_Draw_Boss(void);
115
116
void Drillerdroid_Draw_Simple(void);
117
118
void Drillerdroid_State_Target(void);
119
void Drillerdroid_Draw_Target(void);
120
121
#endif //! OBJ_DRILLERDROID_H
122
123