Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/FBZ/Crane.h
338 views
1
#ifndef OBJ_CRANE_H
2
#define OBJ_CRANE_H
3
4
#include "Game.h"
5
6
typedef enum {
7
CRANE_START_UP,
8
CRANE_START_DOWN,
9
} CraneStartTypes;
10
11
typedef enum {
12
CRANE_PLAYER1_ONLY,
13
CRANE_PLAYER2_ONLY,
14
CRANE_PLAYER_ALL,
15
} CranePlayerTypes;
16
17
// Object Class
18
struct ObjectCrane {
19
RSDK_OBJECT
20
Hitbox hitboxUnused;
21
Hitbox hitboxGrab;
22
Hitbox hitboxRange;
23
uint16 aniFrames;
24
uint16 sfxGrab;
25
};
26
27
// Entity Class
28
struct EntityCrane {
29
RSDK_ENTITY
30
StateMachine(state);
31
Animator frontAnimator;
32
Animator backAnimator;
33
Animator chainAnimator;
34
EntityPlayer *grabbedPlayer;
35
uint16 distance;
36
uint8 startType;
37
uint8 playerType;
38
Vector2 startPos;
39
uint8 startDir;
40
int32 delay;
41
int32 timer;
42
};
43
44
// Object Struct
45
extern ObjectCrane *Crane;
46
47
// Standard Entity Events
48
void Crane_Update(void);
49
void Crane_LateUpdate(void);
50
void Crane_StaticUpdate(void);
51
void Crane_Draw(void);
52
void Crane_Create(void *data);
53
void Crane_StageLoad(void);
54
#if GAME_INCLUDE_EDITOR
55
void Crane_EditorDraw(void);
56
void Crane_EditorLoad(void);
57
#endif
58
void Crane_Serialize(void);
59
60
// Extra Entity Functions
61
void Crane_DebugSpawn(void);
62
void Crane_DebugDraw(void);
63
64
void Crane_HandlePlayerInteractions(void);
65
void Crane_CheckOffScreen(void);
66
67
void Crane_State_CheckOffScreen(void);
68
void Crane_State_Init(void);
69
void Crane_State_CheckForPlayers(void);
70
void Crane_State_LowerToGrab(void);
71
void Crane_State_CheckGrab(void);
72
void Crane_State_RiseUp(void);
73
void Crane_State_ToDest1stHalf(void);
74
void Crane_State_ToDest2ndHalf(void);
75
void Crane_State_DropDelay(void);
76
void Crane_State_ToStart1stHalf(void);
77
void Crane_State_ToStart2ndHalf(void);
78
79
#endif //! OBJ_CRANE_H
80
81