Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Pinball/PBL_Crane.h
338 views
1
#ifndef OBJ_PBL_CRANE_H
2
#define OBJ_PBL_CRANE_H
3
4
#include "Game.h"
5
6
#if MANIA_USE_PLUS
7
8
typedef enum {
9
PBL_CRANE_MANAGER,
10
PBL_CRANE_CRANE,
11
PBL_CRANE_PRIZEDISPLAY,
12
PBL_CRANE_PRIZE,
13
} PBL_CraneTypes;
14
15
typedef enum {
16
PBL_CRANE_PRIZE_SONIC,
17
PBL_CRANE_PRIZE_TAILS,
18
PBL_CRANE_PRIZE_KNUCKLES,
19
PBL_CRANE_PRIZE_MIGHTY,
20
PBL_CRANE_PRIZE_RAY,
21
PBL_CRANE_PRIZE_EGGMAN,
22
PBL_CRANE_PRIZE_RINGS,
23
PBL_CRANE_PRIZE_SHIELD_BLUE,
24
PBL_CRANE_PRIZE_SHIELD_BUBBLE,
25
PBL_CRANE_PRIZE_SHIELD_FIRE,
26
PBL_CRANE_PRIZE_SHIELD_ELECTRIC,
27
PBL_CRANE_PRIZE_TABLE_RESTORE,
28
PBL_CRANE_PRIZE_1UP,
29
} PBL_CranePrizes;
30
31
typedef enum {
32
PBL_CRANE_PRIZEID_NONE,
33
PBL_CRANE_PRIZEID_NOTHING,
34
PBL_CRANE_PRIZEID_BAD,
35
PBL_CRANE_PRIZEID_BUDDY,
36
PBL_CRANE_PRIZEID_RINGS,
37
PBL_CRANE_PRIZEID_ITEM,
38
PBL_CRANE_PRIZEID_TBLRESTORE,
39
PBL_CRANE_PRIZEID_1UP,
40
} PBL_CranePrizeIDs;
41
42
// Object Class
43
struct ObjectPBL_Crane {
44
RSDK_OBJECT
45
int32 prizeID;
46
uint16 aniFrames;
47
uint16 sfxBackGlass;
48
uint16 sfxCraneMove;
49
uint16 sfxCraneDrop;
50
uint16 sfxCraneGrab;
51
uint16 sfxCraneRise;
52
uint16 sfxPrizeGood;
53
uint16 sfxPrizeBad;
54
};
55
56
// Entity Class
57
struct EntityPBL_Crane {
58
RSDK_ENTITY
59
StateMachine(state);
60
StateMachine(stateDraw);
61
int32 type;
62
int32 unused1;
63
int32 timer;
64
int32 unused2;
65
int32 unused3;
66
EntityPBL_Crane *parent;
67
Entity *cameraTarget;
68
Animator displayAnimator;
69
Animator bgAnimator;
70
Animator craneBackAnimator;
71
Animator craneFrontAnimator;
72
Animator machineAnimator;
73
};
74
75
// Object Struct
76
extern ObjectPBL_Crane *PBL_Crane;
77
78
// Standard Entity Events
79
void PBL_Crane_Update(void);
80
void PBL_Crane_LateUpdate(void);
81
void PBL_Crane_StaticUpdate(void);
82
void PBL_Crane_Draw(void);
83
void PBL_Crane_Create(void *data);
84
void PBL_Crane_StageLoad(void);
85
#if GAME_INCLUDE_EDITOR
86
void PBL_Crane_EditorDraw(void);
87
void PBL_Crane_EditorLoad(void);
88
#endif
89
void PBL_Crane_Serialize(void);
90
91
// Extra Entity Functions
92
void PBL_Crane_HandlePrizes(void);
93
94
void PBL_Crane_Draw_CraneMachine(void);
95
void PBL_Crane_Draw_PrizeDisplay(void);
96
void PBL_Crane_Draw_Crane(void);
97
98
void PBL_Crane_State_CreatePrizes(void);
99
void PBL_Crane_State_DisplayPrizes(void);
100
void PBL_Crane_StatePrizeDisplay_Move(void);
101
102
void PBL_Crane_StateCrane_Lower(void);
103
void PBL_Crane_StateCrane_Move(void);
104
void PBL_Crane_StateCrane_Controlled(void);
105
void PBL_Crane_StateCrane_Drop(void);
106
void PBL_Crane_StateCrane_Grab(void);
107
void PBL_Crane_StateCrane_Rise(void);
108
109
void PBL_Crane_StatePrize_Bounce(void);
110
void PBL_Crane_StatePrize_Flash(void);
111
void PBL_Crane_StatePrize_PrizeGet(void);
112
113
#endif
114
115
#endif //! OBJ_PBL_CRANE_H
116
117