Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/CPZ/Staircase.h
338 views
1
#ifndef OBJ_STAIRCASE_H
2
#define OBJ_STAIRCASE_H
3
4
#include "Game.h"
5
6
#define STAIRCASE_STAIR_COUNT (4)
7
8
typedef enum {
9
STAIRCASE_DOWN,
10
STAIRCASE_UP,
11
} StaircaseTypes;
12
13
// Object Class
14
struct ObjectStaircase {
15
RSDK_OBJECT
16
Hitbox blockHitbox;
17
uint16 aniFrames;
18
uint16 unused;
19
uint16 sfxBlockStop;
20
};
21
22
// Entity Class
23
struct EntityStaircase {
24
RSDK_ENTITY
25
StateMachine(state);
26
StateMachine(stateDraw);
27
Vector2 blockPos[STAIRCASE_STAIR_COUNT];
28
int32 timer;
29
Animator animator;
30
uint8 type;
31
bool32 bumpable;
32
};
33
34
// Object Struct
35
extern ObjectStaircase *Staircase;
36
37
// Standard Entity Events
38
void Staircase_Update(void);
39
void Staircase_LateUpdate(void);
40
void Staircase_StaticUpdate(void);
41
void Staircase_Draw(void);
42
void Staircase_Create(void *data);
43
void Staircase_StageLoad(void);
44
#if GAME_INCLUDE_EDITOR
45
void Staircase_EditorDraw(void);
46
void Staircase_EditorLoad(void);
47
#endif
48
void Staircase_Serialize(void);
49
50
// Extra Entity Functions
51
bool32 Staircase_SfxCheck_HitBlocks(void);
52
53
void Staircase_State_Idle(void);
54
void Staircase_State_Wait(void);
55
void Staircase_State_MoveBlocks(void);
56
void Staircase_State_MovedBlocks(void);
57
58
void Staircase_Draw_Blocks(void);
59
void Staircase_Draw_Shake(void);
60
61
#endif //! OBJ_STAIRCASE_H
62
63