Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/TMZ/TurboTurtle.h
338 views
1
#ifndef OBJ_TURBOTURTLE_H
2
#define OBJ_TURBOTURTLE_H
3
4
#include "Game.h"
5
6
typedef enum {
7
TURBOTURTLE_FANDIR_TOP,
8
TURBOTURTLE_FANDIR_RIGHT,
9
TURBOTURTLE_FANDIR_LEFT,
10
} TurboTurtleFanDirs;
11
12
// Object Class
13
struct ObjectTurboTurtle {
14
RSDK_OBJECT
15
Hitbox hitboxBadnik;
16
uint16 aniFrames;
17
uint16 sfxWalk;
18
uint16 sfxWalk2;
19
};
20
21
// Entity Class
22
struct EntityTurboTurtle {
23
RSDK_ENTITY
24
StateMachine(state);
25
Vector2 startPos;
26
uint8 startDir;
27
int32 timer;
28
Animator animator;
29
uint8 currentSide;
30
uint16 stepTimer;
31
Hitbox hitboxFanT;
32
Hitbox hitboxFanR;
33
Hitbox hitboxFanL;
34
bool32 fanActiveTop;
35
bool32 rightFanActive;
36
bool32 leftFanActive;
37
uint16 stepCount;
38
uint8 initialSide;
39
bool32 stationary;
40
uint8 leftFanDir;
41
int32 leftFanDuration;
42
int32 leftFanStrength;
43
int32 leftFanLength;
44
uint8 rightFanDir;
45
int32 rightFanDuration;
46
int32 rightFanStrength;
47
int32 rightFanLength;
48
};
49
50
// Object Struct
51
extern ObjectTurboTurtle *TurboTurtle;
52
53
// Standard Entity Events
54
void TurboTurtle_Update(void);
55
void TurboTurtle_LateUpdate(void);
56
void TurboTurtle_StaticUpdate(void);
57
void TurboTurtle_Draw(void);
58
void TurboTurtle_Create(void *data);
59
void TurboTurtle_StageLoad(void);
60
#if GAME_INCLUDE_EDITOR
61
void TurboTurtle_EditorDraw(void);
62
void TurboTurtle_EditorLoad(void);
63
#endif
64
void TurboTurtle_Serialize(void);
65
66
// Extra Entity Functions
67
void TurboTurtle_DebugSpawn(void);
68
void TurboTurtle_DebugDraw(void);
69
70
void TurboTurtle_CheckPlayerCollisions(void);
71
void TurboTurtle_SetupState(void);
72
void TurboTurtle_HandleFans(void);
73
void TurboTurtle_HandleFanParticles(uint8 type, int32 strength, int32 length);
74
75
bool32 TurboTurtle_SfxCheck_SmallFan(void);
76
77
void TurboTurtle_State_Init(void);
78
void TurboTurtle_State_Walking(void);
79
void TurboTurtle_State_TurnFanUp(void);
80
void TurboTurtle_State_FanTop(void);
81
void TurboTurtle_State_TurnFanRight(void);
82
void TurboTurtle_State_FanRight(void);
83
void TurboTurtle_State_TurnFanLeft(void);
84
void TurboTurtle_State_FanLeft(void);
85
86
#endif //! OBJ_TURBOTURTLE_H
87
88