Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/MMZ/Scarab.h
338 views
1
#ifndef OBJ_SCARAB_H
2
#define OBJ_SCARAB_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectScarab {
8
RSDK_OBJECT
9
Hitbox hitboxBadnik;
10
Hitbox hitboxGrab;
11
uint16 aniFrames;
12
};
13
14
// Entity Class
15
struct EntityScarab {
16
RSDK_ENTITY
17
StateMachine(state);
18
Vector2 startPos;
19
Vector2 moveOffset;
20
uint8 startDir;
21
int32 timer;
22
int32 playerTimers[PLAYER_COUNT];
23
Animator bodyAnimator;
24
Animator frontLegAnimator;
25
Animator backLegAnimator;
26
int32 amplitude;
27
uint8 childCount;
28
PlaneFilterTypes planeFilter;
29
uint8 drawGroupLow;
30
uint8 drawGroupHigh;
31
uint8 pullCount;
32
int8 moveDir;
33
uint8 grabbedPlayers;
34
};
35
36
// Object Struct
37
extern ObjectScarab *Scarab;
38
39
// Standard Entity Events
40
void Scarab_Update(void);
41
void Scarab_LateUpdate(void);
42
void Scarab_StaticUpdate(void);
43
void Scarab_Draw(void);
44
void Scarab_Create(void *data);
45
void Scarab_StageLoad(void);
46
#if GAME_INCLUDE_EDITOR
47
void Scarab_EditorDraw(void);
48
void Scarab_EditorLoad(void);
49
#endif
50
void Scarab_Serialize(void);
51
52
// Extra Entity Functions
53
void Scarab_DebugSpawn(void);
54
void Scarab_DebugDraw(void);
55
56
void Scarab_CheckPlayerCollisions(void);
57
void Scarab_HandleChildMove(void);
58
void Scarab_HandlePlayerGrab(void);
59
void Scarab_HandlePlayerRelease(void);
60
61
void Scarab_State_Init(void);
62
void Scarab_State_Move(void);
63
void Scarab_State_Wait(void);
64
65
#endif //! OBJ_SCARAB_H
66
67