Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Common/Platform.h
338 views
1
#ifndef OBJ_PLATFORM_H
2
#define OBJ_PLATFORM_H
3
4
#include "Game.h"
5
6
typedef enum {
7
PLATFORM_FIXED,
8
PLATFORM_FALL,
9
PLATFORM_LINEAR,
10
PLATFORM_CIRCULAR,
11
PLATFORM_SWING,
12
PLATFORM_PATH,
13
PLATFORM_PUSH,
14
PLATFORM_TRACK,
15
PLATFORM_REACT,
16
PLATFORM_HOVER_REACT,
17
PLATFORM_DOORSLIDE,
18
PLATFORM_PATH_REACT,
19
PLATFORM_SWING_REACT,
20
PLATFORM_TRACK_REACT,
21
PLATFORM_CLACKER,
22
PLATFORM_CHILD,
23
PLATFORM_DIPROCK,
24
} PlatformTypes;
25
26
typedef enum {
27
PLATFORM_C_PLATFORM,
28
PLATFORM_C_SOLID,
29
PLATFORM_C_TILED,
30
PLATFORM_C_HURT,
31
PLATFORM_C_NONE,
32
PLATFORM_C_SOLID_HURT_SIDES,
33
PLATFORM_C_SOLID_HURT_BOTTOM,
34
PLATFORM_C_SOLID_HURT_TOP,
35
PLATFORM_C_SOLID_HOLD,
36
PLATFORM_C_SOLID_STICKY,
37
PLATFORM_C_STICKY_TOP,
38
PLATFORM_C_STICKY_LEFT,
39
PLATFORM_C_STICKY_RIGHT,
40
PLATFORM_C_STICKY_BOTTOM,
41
PLATFORM_C_SOLID_BARREL,
42
PLATFORM_C_SOLID_NOCRUSH,
43
} PlatformCollisionTypes;
44
45
// Object Class
46
struct ObjectPlatform {
47
RSDK_OBJECT
48
uint16 aniFrames;
49
Vector2 stoodPos[PLAYER_COUNT];
50
uint16 sfxClacker;
51
uint16 sfxClang;
52
uint16 sfxPush;
53
uint16 sfxClack;
54
bool32 playingPushSfx;
55
bool32 useClack;
56
};
57
58
// Entity Class
59
struct EntityPlatform {
60
MANIA_PLATFORM_BASE
61
};
62
63
// Object Struct
64
extern ObjectPlatform *Platform;
65
66
// Standard Entity Events
67
void Platform_Update(void);
68
void Platform_LateUpdate(void);
69
void Platform_StaticUpdate(void);
70
void Platform_Draw(void);
71
void Platform_Create(void *data);
72
void Platform_StageLoad(void);
73
#if GAME_INCLUDE_EDITOR
74
void Platform_EditorDraw(void);
75
void Platform_EditorLoad(void);
76
#endif
77
void Platform_Serialize(void);
78
79
// Extra Entity Functions
80
81
// States
82
void Platform_State_Fixed(void);
83
void Platform_State_Fall(void);
84
void Platform_State_Falling(void);
85
void Platform_State_Falling2(void);
86
void Platform_State_Hold(void);
87
void Platform_State_Linear(void);
88
void Platform_State_Circular(void);
89
void Platform_State_Swing(void);
90
void Platform_State_Clacker(void);
91
void Platform_State_Push_Init(void);
92
void Platform_State_Push(void);
93
void Platform_State_Push_SlideOffL(void);
94
void Platform_State_Push_SlideOffR(void);
95
void Platform_State_Push_Fall(void);
96
void Platform_State_Path(void);
97
void Platform_State_PathStop(void);
98
void Platform_State_Track(void);
99
void Platform_State_React(void);
100
void Platform_State_Hover_React(void);
101
void Platform_State_ReactMove(void);
102
void Platform_State_ReactSlow(void);
103
void Platform_State_Hover(void);
104
void Platform_State_ReactWait(void);
105
void Platform_State_DoorSlide(void);
106
void Platform_State_PathReact(void);
107
void Platform_State_Child(void);
108
void Platform_State_SwingReact(void);
109
void Platform_State_Swing2(void);
110
void Platform_State_SwingWait(void);
111
void Platform_State_SwingReturn(void);
112
void Platform_State_TrackReact(void);
113
void Platform_State_Track2(void);
114
void Platform_State_TrackWait(void);
115
void Platform_State_TrackReturn(void);
116
void Platform_State_DipRock(void);
117
118
// Collision States
119
void Platform_Collision_Platform(void);
120
void Platform_Collision_Solid(void);
121
void Platform_Collision_Solid_NoCrush(void);
122
void Platform_Collision_Solid_Hurt_Sides(void);
123
void Platform_Collision_Solid_Hurt_Bottom(void);
124
void Platform_Collision_Solid_Hurt_Top(void);
125
void Platform_Collision_Solid_Hold(void);
126
void Platform_Collision_Solid_Barrel(void);
127
void Platform_Collision_Sticky(void);
128
void Platform_Collision_Tiles(void);
129
void Platform_Collision_Hurt(void);
130
void Platform_Collision_None(void);
131
132
// Collision Helpers
133
void Platform_HandleStood(EntityPlatform *self, EntityPlayer *player, int32 playerID, int32 stoodPlayers);
134
void Platform_HandleStood_Tiles(EntityPlatform *self, EntityPlayer *player, int32 playerID);
135
void Platform_HandleStood_Hold(EntityPlatform *self, EntityPlayer *player, int32 playerID, int32 stoodPlayers);
136
void Platform_HandleStood_Barrel(EntityPlatform *self, EntityPlayer *player, int32 playerID, int32 stoodPlayers);
137
void Platform_HandleStood_Sticky(EntityPlatform *self, EntityPlayer *player, int32 playerID, uint8 cSide);
138
139
#endif //! OBJ_PLATFORM_H
140
141