Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/MMZ/SpikeCorridor.h
338 views
1
#ifndef OBJ_SPIKECORRIDOR_H
2
#define OBJ_SPIKECORRIDOR_H
3
4
#include "Game.h"
5
6
// Object Class
7
struct ObjectSpikeCorridor {
8
RSDK_OBJECT
9
uint16 aniFrames;
10
uint16 sfxDrop;
11
uint16 sfxImpact;
12
uint16 sfxIndicator;
13
};
14
15
// Entity Class
16
struct EntitySpikeCorridor {
17
RSDK_ENTITY
18
StateMachine(state);
19
StateMachine(stateDraw);
20
Vector2 startPos;
21
int8 colWidth;
22
int8 rowHeight;
23
int32 yOffset;
24
int32 timer;
25
int8 rowID;
26
int8 lastSize;
27
int8 storedRowID;
28
int8 size;
29
int32 fallOffset;
30
Hitbox hitbox;
31
Hitbox hitboxes[4];
32
EntitySpikeCorridor *parent;
33
};
34
35
// Object Struct
36
extern ObjectSpikeCorridor *SpikeCorridor;
37
38
// Standard Entity Events
39
void SpikeCorridor_Update(void);
40
void SpikeCorridor_LateUpdate(void);
41
void SpikeCorridor_StaticUpdate(void);
42
void SpikeCorridor_Draw(void);
43
void SpikeCorridor_Create(void *data);
44
void SpikeCorridor_StageLoad(void);
45
#if GAME_INCLUDE_EDITOR
46
void SpikeCorridor_EditorDraw(void);
47
void SpikeCorridor_EditorLoad(void);
48
#endif
49
void SpikeCorridor_Serialize(void);
50
51
// Extra Entity Functions
52
void SpikeCorridor_SetupHitboxes(void);
53
void SpikeCorridor_HandleDrawing(Animator *animator, int32 offsetY, int8 size, bool32 useWarnAnim);
54
void SpikeCorridor_SetupNextSpikeRow(void);
55
void SpikeCorridor_CheckPlayerCollisions(void);
56
57
void SpikeCorridor_StateDropper_Setup(void);
58
void SpikeCorridor_StateDropper_CheckForPlayer(void);
59
void SpikeCorridor_StateDropper_DropWarn(void);
60
void SpikeCorridor_StateDropper_SpawnSpikes(void);
61
void SpikeCorridor_StateDropper_DropWait(void);
62
63
void SpikeCorridor_StateSpikes_Setup(void);
64
void SpikeCorridor_StateSpikes_Fall(void);
65
void SpikeCorridor_StateSpikes_Land(void);
66
67
void SpikeCorridor_Draw_DropWarn(void);
68
void SpikeCorridor_Draw_Spikes(void);
69
70
#endif //! OBJ_SPIKECORRIDOR_H
71
72