Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Menu/UIDialog.h
338 views
1
#ifndef OBJ_UIDIALOG_H
2
#define OBJ_UIDIALOG_H
3
4
#include "Game.h"
5
6
#define UIDIALOG_OPTION_COUNT (3)
7
8
typedef enum {
9
DIALOG_YES,
10
DIALOG_NO,
11
DIALOG_OK,
12
DIALOG_CANCEL,
13
DIALOG_CONTINUE,
14
} DialogOptions;
15
16
// Object Class
17
struct ObjectUIDialog {
18
RSDK_OBJECT
19
EntityUIDialog *activeDialog;
20
EntityUIControl *controlStore;
21
StateMachine(controlStateStore);
22
};
23
24
// Entity Class
25
struct EntityUIDialog {
26
RSDK_ENTITY
27
StateMachine(state);
28
int32 timer;
29
int32 closeDelay;
30
String textInfo;
31
int32 buttonCount;
32
Vector2 bgRectSize;
33
Vector2 dialogPos;
34
EntityUIControl *parent;
35
Entity *entityPtr;
36
uint8 buttonFrames[UIDIALOG_OPTION_COUNT];
37
StateMachine(callbacks[UIDIALOG_OPTION_COUNT]);
38
bool32 closeOnSelect[UIDIALOG_OPTION_COUNT];
39
EntityUIButton *buttons[UIDIALOG_OPTION_COUNT];
40
StateMachine(closeCB);
41
bool32 playEventSfx;
42
bool32 useAltColor;
43
int32 lineLength[3];
44
int32 lineCount;
45
Animator animator;
46
};
47
48
// Object Struct
49
extern ObjectUIDialog *UIDialog;
50
51
// Standard Entity Events
52
void UIDialog_Update(void);
53
void UIDialog_LateUpdate(void);
54
void UIDialog_StaticUpdate(void);
55
void UIDialog_Draw(void);
56
void UIDialog_Create(void *data);
57
void UIDialog_StageLoad(void);
58
#if GAME_INCLUDE_EDITOR
59
void UIDialog_EditorDraw(void);
60
void UIDialog_EditorLoad(void);
61
#endif
62
void UIDialog_Serialize(void);
63
64
// Extra Entity Functions
65
EntityUIDialog *UIDialog_CreateActiveDialog(String *msg);
66
void UIDialog_SetupText(EntityUIDialog *dialog, String *text);
67
68
void UIDialog_AddButton(uint8 frame, EntityUIDialog *dialog, void (*callback)(void), bool32 closeOnSelect);
69
void UIDialog_Setup(EntityUIDialog *dialog);
70
void UIDialog_CloseOnSel_HandleSelection(EntityUIDialog *dialog, void (*callback)(void));
71
void UIDialog_DrawBGShapes(void);
72
void UIDialog_HandleButtonPositions(void);
73
void UIDialog_Close(void);
74
bool32 UIDialog_HandleAutoClose(void);
75
void UIDialog_ButtonActionCB(void);
76
void UIDialog_State_Appear(void);
77
void UIDialog_State_Idle(void);
78
void UIDialog_State_Close(void);
79
80
// Some Helpers
81
EntityUIDialog *UIDialog_CreateDialogOk(String *text, void (*callback)(void), bool32 closeOnSelect);
82
EntityUIDialog *UIDialog_CreateDialogYesNo(String *text, void (*callbackYes)(void), void (*callbackNo)(void), bool32 closeOnSelect_Yes,
83
bool32 closeOnSelect_No);
84
EntityUIDialog *UIDialog_CreateDialogOkCancel(String *text, void (*callbackOk)(void), void (*callbackCancel)(void), bool32 closeOnSelect_Ok,
85
bool32 closeOnSelect_Cancel);
86
87
#endif //! OBJ_UIDIALOG_H
88
89