Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/SBZ/Caterkiller.h
338 views
1
#ifndef OBJ_CATERKILLER_H
2
#define OBJ_CATERKILLER_H
3
4
#include "Game.h"
5
6
#define CATERKILLER_BODY_COUNT (3)
7
8
// Object Class
9
struct ObjectCaterkiller {
10
RSDK_OBJECT
11
Hitbox hitbox;
12
uint16 aniFrames;
13
};
14
15
// Entity Class
16
struct EntityCaterkiller {
17
RSDK_ENTITY
18
StateMachine(state);
19
StateMachine(stateDraw);
20
int32 planeFilter;
21
Vector2 bodyPosition[CATERKILLER_BODY_COUNT];
22
uint8 bodyDirection[CATERKILLER_BODY_COUNT];
23
uint8 bodyOffset[CATERKILLER_BODY_COUNT];
24
uint8 headOffset;
25
uint8 timer;
26
Vector2 startPos;
27
uint8 startDir;
28
Animator headAnimator;
29
Animator bodyAnimator;
30
};
31
32
// Object Entity
33
extern ObjectCaterkiller *Caterkiller;
34
35
// Standard Entity Events
36
void Caterkiller_Update(void);
37
void Caterkiller_LateUpdate(void);
38
void Caterkiller_StaticUpdate(void);
39
void Caterkiller_Draw(void);
40
void Caterkiller_Create(void *data);
41
void Caterkiller_StageLoad(void);
42
#if GAME_INCLUDE_EDITOR
43
void Caterkiller_EditorDraw(void);
44
void Caterkiller_EditorLoad(void);
45
#endif
46
void Caterkiller_Serialize(void);
47
48
// Extra Entity Functions
49
void Caterkiller_DebugSpawn(void);
50
void Caterkiller_DebugDraw(void);
51
52
void Caterkiller_CheckOffScreen(void);
53
void Caterkiller_CheckTileCollisions(void);
54
55
void Caterkiller_Draw_Body(void);
56
void Caterkiller_Draw_Segment(void);
57
58
void Caterkiller_HandlePlayerInteractions(void);
59
bool32 Caterkiller_CheckTileAngle(int32 x, int32 y, int32 dir);
60
61
// Body States
62
void Caterkiller_State_Init(void);
63
void Caterkiller_State_Contract(void);
64
void Caterkiller_State_LiftHead(void);
65
void Caterkiller_State_Uncontract(void);
66
void Caterkiller_State_LowerHead(void);
67
68
// Split States
69
void Caterkiller_StateSplit_Head(void);
70
void Caterkiller_StateSplit_Body(void);
71
72
#endif //! OBJ_CATERKILLER_H
73
74