Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Global/HUD.h
338 views
1
#ifndef OBJ_HUD_H
2
#define OBJ_HUD_H
3
4
#include "Game.h"
5
6
typedef enum {
7
HUDOFF_SCORE,
8
HUDOFF_TIME,
9
HUDOFF_RINGS,
10
HUDOFF_LIFE,
11
} HUDOffsetTypes;
12
13
typedef enum {
14
KEY_A,
15
KEY_B,
16
KEY_X,
17
KEY_Y,
18
KEY_START,
19
} KeyIDs;
20
21
// Object Class
22
struct ObjectHUD {
23
RSDK_OBJECT
24
uint16 aniFrames;
25
#if GAME_VERSION != VER_100
26
uint16 superButtonFrames;
27
#endif
28
#if MANIA_USE_PLUS
29
uint16 sfxClick;
30
uint16 sfxStarpost;
31
bool32 showTAPrompt;
32
bool32 replaySaveEnabled;
33
int32 screenBorderType[PLAYER_COUNT];
34
int32 swapCooldown;
35
int32 stockFlashTimers[PLAYER_COUNT];
36
#endif
37
};
38
39
// Entity Class
40
struct EntityHUD {
41
RSDK_ENTITY
42
StateMachine(state);
43
Vector2 scorePos;
44
Vector2 timePos;
45
Vector2 ringsPos;
46
Vector2 lifePos;
47
#if MANIA_USE_PLUS
48
int32 lifeFrameIDs[PLAYER_COUNT];
49
int32 lives[PLAYER_COUNT];
50
#endif
51
int32 targetPos;
52
#if GAME_VERSION != VER_100
53
int32 actionPromptPos;
54
#endif
55
#if MANIA_USE_PLUS
56
StateMachine(vsStates[PLAYER_COUNT]);
57
Vector2 vsScorePos[PLAYER_COUNT];
58
Vector2 vsTimePos[PLAYER_COUNT];
59
Vector2 vsRingsPos[PLAYER_COUNT];
60
Vector2 vsLifePos[PLAYER_COUNT];
61
int32 vsTargetPos[PLAYER_COUNT];
62
int32 screenID;
63
#endif
64
#if GAME_VERSION != VER_100
65
int32 timeFlashFrame;
66
#endif
67
int32 ringFlashFrame;
68
bool32 enableTimeFlash;
69
bool32 enableRingFlash;
70
Animator hudElementsAnimator;
71
Animator numbersAnimator;
72
Animator hyperNumbersAnimator;
73
Animator lifeIconAnimator;
74
Animator playerIDAnimator;
75
#if GAME_VERSION != VER_100
76
Animator superIconAnimator;
77
Animator superButtonAnimator;
78
#endif
79
#if MANIA_USE_PLUS
80
Animator thumbsUpIconAnimator;
81
Animator thumbsUpButtonAnimator;
82
Animator replayClapAnimator;
83
Animator saveReplayButtonAnimator;
84
#endif
85
};
86
87
// Object Struct
88
extern ObjectHUD *HUD;
89
90
// Standard Entity Events
91
void HUD_Update(void);
92
void HUD_LateUpdate(void);
93
void HUD_StaticUpdate(void);
94
void HUD_Draw(void);
95
void HUD_Create(void *data);
96
void HUD_StageLoad(void);
97
#if GAME_INCLUDE_EDITOR
98
void HUD_EditorDraw(void);
99
void HUD_EditorLoad(void);
100
#endif
101
void HUD_Serialize(void);
102
103
// Extra Entity Functions
104
void HUD_DrawNumbersBase10(Vector2 *drawPos, int32 value, int32 digitCount);
105
void HUD_DrawNumbersBase16(Vector2 *drawPos, int32 value);
106
void HUD_DrawNumbersHyperRing(Vector2 *drawPos, int32 value);
107
108
#if GAME_VERSION != VER_100
109
void HUD_GetButtonFrame(Animator *animator, int32 buttonID);
110
void HUD_GetActionButtonFrames(void);
111
#endif
112
113
void HUD_State_MoveIn(void);
114
void HUD_State_MoveOut(void);
115
116
void HUD_MoveIn(EntityHUD *hud);
117
void HUD_MoveOut(void);
118
119
void HUD_EnableRingFlash(void);
120
121
int32 HUD_CharacterIndexFromID(int32 characterID);
122
123
#endif //! OBJ_HUD_H
124
125