Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/PGZ/PSZDoor.h
338 views
1
#ifndef OBJ_PSZDOOR_H
2
#define OBJ_PSZDOOR_H
3
4
#include "Game.h"
5
6
typedef enum {
7
PSZDOOR_ORIENATION_D,
8
PSZDOOR_ORIENATION_U,
9
PSZDOOR_ORIENATION_L,
10
PSZDOOR_ORIENATION_R,
11
} PSZDoorOrientations;
12
13
typedef enum {
14
PSZDOOR_AUTO_NONE,
15
PSZDOOR_AUTO_LEFT,
16
PSZDOOR_AUTO_RIGHT,
17
} PSZDoorAutomaticIDs;
18
19
// Object Class
20
struct ObjectPSZDoor {
21
RSDK_OBJECT
22
Hitbox hitboxes[2];
23
uint16 aniFrames;
24
uint16 sfxOpen;
25
};
26
27
// Entity Class
28
struct EntityPSZDoor {
29
RSDK_ENTITY
30
uint8 orientation;
31
bool32 open;
32
int32 speed;
33
uint8 id;
34
int32 automatic;
35
EntityDoorTrigger *trigger;
36
bool32 shouldMove;
37
Vector2 doorPos;
38
Vector2 offset;
39
Vector2 startPos; // its set once and never used
40
Vector2 targetPos;
41
Animator doorAnimator;
42
Animator cogAnimator;
43
};
44
45
// Object Struct
46
extern ObjectPSZDoor *PSZDoor;
47
48
// Standard Entity Events
49
void PSZDoor_Update(void);
50
void PSZDoor_LateUpdate(void);
51
void PSZDoor_StaticUpdate(void);
52
void PSZDoor_Draw(void);
53
void PSZDoor_Create(void *data);
54
void PSZDoor_StageLoad(void);
55
#if GAME_INCLUDE_EDITOR
56
void PSZDoor_EditorDraw(void);
57
void PSZDoor_EditorLoad(void);
58
#endif
59
void PSZDoor_Serialize(void);
60
61
// Extra Entity Functions
62
int32 PSZDoor_GetRemainingDistance(void);
63
64
#endif //! OBJ_PSZDOOR_H
65
66