Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Global/PauseMenu.h
338 views
1
#ifndef OBJ_PAUSEMENU_H
2
#define OBJ_PAUSEMENU_H
3
4
#include "Game.h"
5
6
#define PAUSEMENU_BUTTON_COUNT (3)
7
8
// Object Class
9
struct ObjectPauseMenu {
10
RSDK_OBJECT
11
uint16 sfxBleep;
12
uint16 sfxAccept;
13
bool32 disableEvents;
14
bool32 controllerDisconnect;
15
bool32 forcedDisconnect;
16
bool32 signOutDetected;
17
#if MANIA_USE_PLUS
18
bool32 plusChanged;
19
#endif
20
bool32 activeChannels[0x10];
21
#if MANIA_USE_PLUS
22
uint16 tintLookupTable[0x10000];
23
#endif
24
};
25
26
// Entity Class
27
struct EntityPauseMenu {
28
RSDK_ENTITY
29
StateMachine(state);
30
StateMachine(stateDraw);
31
int32 timer;
32
int32 tintAlpha;
33
Vector2 headerPos;
34
Vector2 yellowTrianglePos;
35
EntityUIControl *manager;
36
uint8 triggerPlayer;
37
bool32 disableRestart;
38
int32 buttonCount;
39
uint8 buttonIDs[PAUSEMENU_BUTTON_COUNT];
40
void (*buttonActions[PAUSEMENU_BUTTON_COUNT])(void);
41
EntityUIButton *buttonPtrs[PAUSEMENU_BUTTON_COUNT];
42
int32 paused;
43
int32 fadeTimer;
44
bool32 (*disconnectCheck)(void);
45
int32 forcePaused;
46
Animator animator;
47
void (*fadeoutCB)(void);
48
int32 unused1;
49
int32 unused2; // these may possibly be leftover or editor things
50
};
51
52
// Object Struct
53
extern ObjectPauseMenu *PauseMenu;
54
55
// Standard Entity Events
56
void PauseMenu_Update(void);
57
void PauseMenu_LateUpdate(void);
58
void PauseMenu_StaticUpdate(void);
59
void PauseMenu_Draw(void);
60
void PauseMenu_Create(void *data);
61
void PauseMenu_StageLoad(void);
62
#if GAME_INCLUDE_EDITOR
63
void PauseMenu_EditorDraw(void);
64
void PauseMenu_EditorLoad(void);
65
#endif
66
void PauseMenu_Serialize(void);
67
68
// Helper Functions
69
void PauseMenu_SetupMenu(void);
70
void PauseMenu_SetupTintTable(void);
71
72
void PauseMenu_AddButton(uint8 id, void *action);
73
void PauseMenu_ClearButtons(EntityPauseMenu *entity);
74
void PauseMenu_HandleButtonPositions(void);
75
76
void PauseMenu_PauseSound(void);
77
void PauseMenu_ResumeSound(void);
78
void PauseMenu_StopSound(void);
79
80
void PauseMenu_FocusCamera(void);
81
void PauseMenu_UpdateCameras(void);
82
83
void PauseMenu_CheckAndReassignControllers(void);
84
bool32 PauseMenu_IsDisconnected(void);
85
86
uint8 PauseMenu_GetPlayerCount(void);
87
88
// Callbacks
89
void PauseMenu_ResumeButtonCB(void);
90
void PauseMenu_RestartButtonCB(void);
91
void PauseMenu_ExitButtonCB(void);
92
93
void PauseMenu_RestartDialog_YesCB(void);
94
void PauseMenu_ExitDialog_YesCB(void);
95
void PauseMenu_RestartFadeCB(void);
96
void PauseMenu_ExitFadeCB(void);
97
98
void PauseMenu_ActionCB_Button(void);
99
100
// States
101
void PauseMenu_State_SetupButtons(void);
102
103
void PauseMenu_State_StartPause(void);
104
void PauseMenu_State_StartPauseCompetition(void);
105
106
void PauseMenu_State_Paused(void);
107
void PauseMenu_State_ForcedPause(void);
108
void PauseMenu_State_ForcedPauseCompetition(void);
109
110
void PauseMenu_State_Resume(void);
111
void PauseMenu_State_ResumeCompetition(void);
112
void PauseMenu_State_ForcedResumeCompetition(void);
113
114
void PauseMenu_State_SetupTitleFade(void);
115
void PauseMenu_State_FadeToTitle(void);
116
void PauseMenu_State_HandleFadeout(void);
117
118
// Draw States
119
void PauseMenu_DrawPauseMenu(void);
120
void PauseMenu_Draw_RegularPause(void);
121
122
void PauseMenu_Draw_ForcePause(void);
123
124
#endif //! OBJ_PAUSEMENU_H
125
126