Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/OOZ/MeterDroid.h
338 views
1
#ifndef OBJ_METERDROID_H
2
#define OBJ_METERDROID_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectMeterDroid {
8
RSDK_OBJECT
9
TABLE(int32 debrisSpeeds[21],
10
{ 5, 0, 0, -0x20000, -0x28000, 1, 0, 0x20000, -0x20000, 2, 0, -0x28000, -0x10000, 3, 0, 0x28000, -0x10000, 4, 0, 0x10000, 0x10000 });
11
Hitbox hitboxBoss;
12
Hitbox hitboxPropellor;
13
Hitbox hitboxWrench;
14
int32 boundsL;
15
int32 boundsR;
16
int32 boundsM;
17
int32 boundsT;
18
int32 boundsB;
19
uint16 sfxHit;
20
uint16 sfxExplosion;
21
uint16 sfxDestroy;
22
uint16 sfxToss;
23
uint16 sfxGrab;
24
uint16 sfxValve;
25
uint16 sfxWrench;
26
uint16 aniFrames;
27
};
28
29
// Entity Class
30
struct EntityMeterDroid {
31
RSDK_ENTITY
32
StateMachine(state);
33
StateMachine(stateDraw);
34
int32 timer;
35
int32 invincibilityTimer;
36
int32 health;
37
int32 bgFadeAmount;
38
Vector2 origin;
39
Vector2 targetPos;
40
Vector2 moveVel;
41
Vector2 wrenchPos;
42
Vector2 wrenchMoveVel;
43
Vector2 wrenchMoveInc;
44
int32 moveRadius;
45
EntityValve *targetValve;
46
Animator mainAnimator;
47
Animator propellorAnimator;
48
Animator armAnimator;
49
Animator wrenchAnimator;
50
};
51
52
// Object Struct
53
extern ObjectMeterDroid *MeterDroid;
54
55
// Standard Entity Events
56
void MeterDroid_Update(void);
57
void MeterDroid_LateUpdate(void);
58
void MeterDroid_StaticUpdate(void);
59
void MeterDroid_Draw(void);
60
void MeterDroid_Create(void *data);
61
void MeterDroid_StageLoad(void);
62
#if GAME_INCLUDE_EDITOR
63
void MeterDroid_EditorDraw(void);
64
void MeterDroid_EditorLoad(void);
65
#endif
66
void MeterDroid_Serialize(void);
67
68
// Extra Entity Functions
69
void MeterDroid_CheckPlayerCollisions_NoWrench_UseFlip(void);
70
void MeterDroid_CheckPlayerCollisions_Wrench_NoFlip(void);
71
void MeterDroid_CheckPlayerCollisions_NoWrench_NoFlip(void);
72
void MeterDroid_Hit(void);
73
void MeterDroid_Explode(void);
74
void MeterDroid_FindTargetValve(void);
75
void MeterDroid_PopPlatforms(void);
76
77
void MeterDroid_Draw_Normal(void);
78
void MeterDroid_Draw_SpinningValve(void);
79
void MeterDroid_Draw_ThrownWrench(void);
80
81
void MeterDroid_State_Init(void);
82
void MeterDroid_State_StartFight(void);
83
void MeterDroid_State_Idle(void);
84
void MeterDroid_State_PickMoveDir(void);
85
void MeterDroid_State_MoveRight(void);
86
void MeterDroid_State_MoveLeft(void);
87
void MeterDroid_State_ThrowWrench(void);
88
void MeterDroid_State_ThrownWrench(void);
89
void MeterDroid_State_CaughtWrench(void);
90
void MeterDroid_State_MoveToValve(void);
91
void MeterDroid_State_MoveIntoBG(void);
92
void MeterDroid_State_TurningValve(void);
93
void MeterDroid_State_StopTurningValve(void);
94
void MeterDroid_State_WatchPlatformsPopUp(void);
95
void MeterDroid_State_Destroyed(void);
96
void MeterDroid_State_FinishAct(void);
97
98
#endif //! OBJ_METERDROID_H
99
100