Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/CPZ/Grabber.h
338 views
1
#ifndef OBJ_GRABBER_H
2
#define OBJ_GRABBER_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectGrabber {
8
RSDK_OBJECT
9
Hitbox hitboxBadnik;
10
Hitbox hitboxGrab;
11
Hitbox hitboxRange;
12
uint16 aniFrames;
13
uint16 sfxGrab;
14
uint16 sfxDestroy;
15
};
16
17
// Entity Class
18
struct EntityGrabber {
19
RSDK_ENTITY
20
StateMachine(state);
21
Animator bodyAnimator;
22
Animator clampAnimator;
23
Animator wheelAnimator;
24
EntityPlayer *grabbedPlayer;
25
uint16 struggleDelay;
26
uint16 struggleTimer;
27
uint16 struggleFlags;
28
uint16 grabDelay;
29
Vector2 startPos;
30
uint8 startDir;
31
int32 turnTimer;
32
int32 timer;
33
};
34
35
// Object Struct
36
extern ObjectGrabber *Grabber;
37
38
// Standard Entity Events
39
void Grabber_Update(void);
40
void Grabber_LateUpdate(void);
41
void Grabber_StaticUpdate(void);
42
void Grabber_Draw(void);
43
void Grabber_Create(void *data);
44
void Grabber_StageLoad(void);
45
#if GAME_INCLUDE_EDITOR
46
void Grabber_EditorDraw(void);
47
void Grabber_EditorLoad(void);
48
#endif
49
void Grabber_Serialize(void);
50
51
// Extra Entity Functions
52
void Grabber_DebugDraw(void);
53
void Grabber_DebugSpawn(void);
54
55
void Grabber_CheckPlayerCollisions(void);
56
void Grabber_CheckOffScreen(void);
57
void Grabber_HandleExplode(void);
58
59
void Grabber_State_Init(void);
60
void Grabber_State_CheckForGrab(void);
61
void Grabber_State_GrabDelay(void);
62
void Grabber_State_HandleTurn(void);
63
void Grabber_State_TryToGrab(void);
64
void Grabber_State_RiseUp(void);
65
void Grabber_State_GrabbedPlayer(void);
66
void Grabber_State_Struggle(void);
67
void Grabber_State_PlayerEscaped(void);
68
69
#endif //! OBJ_GRABBER_H
70
71