forked from 1dot13/source
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MessageBoxScreen.h
155 lines (131 loc) · 6.41 KB
/
MessageBoxScreen.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#ifndef _MSGBOX_H
#define _MSGBOX_H
#include "mousesystem.h"
// Message box flags
#define MSG_BOX_FLAG_USE_CENTERING_RECT 0x00000001 // Pass in a rect to center in
#define MSG_BOX_FLAG_OK 0x00000002 // Displays OK button
#define MSG_BOX_FLAG_YESNO 0x00000004 // Displays YES NO buttons
#define MSG_BOX_FLAG_CANCEL 0x00000008 // Displays YES NO buttons
#define MSG_BOX_FLAG_FOUR_NUMBERED_BUTTONS 0x00000010 // Displays four numbered buttons, 1-4
#define MSG_BOX_FLAG_YESNOCONTRACT 0x00000020 // yes no and contract buttons
#define MSG_BOX_FLAG_OKCONTRACT 0x00000040 // ok and contract buttons
#define MSG_BOX_FLAG_YESNOLIE 0x00000080 // ok and contract buttons
#define MSG_BOX_FLAG_CONTINUESTOP 0x00000100 // continue stop box
#define MSG_BOX_FLAG_OKSKIP 0x00000200 // Displays ok or skip (meanwhile) buttons
#define MSG_BOX_FLAG_GENERICCONTRACT 0x00000400 // displays contract buttoin + 2 user-defined text buttons
#define MSG_BOX_FLAG_GENERIC_TWO_BUTTONS 0x00000800 // 2 user-defined text buttons
// OJW - Adding text chatbox
#define MSG_BOX_FLAG_INPUTBOX 0x00001000 // has a text input field
// Flugente - added boxes with multiple buttons that can be renamed easily
#define MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS 0x00002000 // Displays four numbered buttons with definable labels
#define MSG_BOX_FLAG_GENERIC_EIGHT_BUTTONS 0x00004000 // Displays eight numbered buttons with definable labels
#define MSG_BOX_FLAG_GENERIC_SIXTEEN_BUTTONS 0x00008000 // Displays sixteen numbered buttons with definable labels
#define MSG_BOX_FLAG_DROPDOWN_1 0x00010000 // Displays an additional dropdown box
#define MSG_BOX_FLAG_DROPDOWN_2 0x00020000 // Displays another additional dropdown box
#define MSG_BOX_FLAG_IMAGE 0x00040000 // Displays an image
#define MSG_BOX_BUTTONS_HORIZONTAL_ORIENTATION 0x00080000 // MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS sets the buttons horizontally
// rftr - bigger msg box
#define MSG_BOX_FLAG_BIGGER 0x00100000 // Bigger msg box
#define MSG_BOX_FLAG_WIDE_BUTTONS 0x00200000 // Wide buttons
// message box return codes
#define MSG_BOX_RETURN_OK 1 // ENTER or on OK button
#define MSG_BOX_RETURN_YES 2 // ENTER or YES button
#define MSG_BOX_RETURN_NO 3 // ESC, Right Click or NO button
#define MSG_BOX_RETURN_CONTRACT 4 // contract button
#define MSG_BOX_RETURN_LIE 5 // LIE BUTTON
// message box style flags
enum
{
MSG_BOX_BASIC_STYLE = 0, // We'll have other styles, like in laptop, etc
// Graphics are all that are required here...
MSG_BOX_RED_ON_WHITE,
MSG_BOX_BLUE_ON_GREY,
MSG_BOX_BASIC_SMALL_BUTTONS,
MSG_BOX_IMP_STYLE,
MSG_BOX_LAPTOP_DEFAULT,
MSG_BOX_BASIC_MEDIUM_BUTTONS,
MSG_BOX_MINIEVENT_STYLE,
};
enum
{
MSG_BOX_DEFAULT_BUTTON_NONE = 0,
MSG_BOX_DEFAULT_BUTTON_1,
MSG_BOX_DEFAULT_BUTTON_2,
MSG_BOX_DEFAULT_BUTTON_3,
MSG_BOX_DEFAULT_BUTTON_4,
MSG_BOX_DEFAULT_BUTTON_5,
MSG_BOX_DEFAULT_BUTTON_6,
MSG_BOX_DEFAULT_BUTTON_7,
MSG_BOX_DEFAULT_BUTTON_8,
MSG_BOX_DEFAULT_BUTTON_9,
MSG_BOX_DEFAULT_BUTTON_10,
MSG_BOX_DEFAULT_BUTTON_11,
MSG_BOX_DEFAULT_BUTTON_12,
MSG_BOX_DEFAULT_BUTTON_13,
MSG_BOX_DEFAULT_BUTTON_14,
MSG_BOX_DEFAULT_BUTTON_15,
MSG_BOX_DEFAULT_BUTTON_16,
};
typedef void (*MSGBOX_CALLBACK)( UINT8 bExitValue );
// Flugente: made an array for user-defined buttons
#define NUM_CUSTOM_BUTTONS 16
extern CHAR16 gzUserDefinedButton[ NUM_CUSTOM_BUTTONS ][ 128 ];
// sevenfm: color for buttons
extern UINT16 gzUserDefinedButtonColor[ NUM_CUSTOM_BUTTONS ];
typedef struct
{
UINT32 usFlags;
UINT32 uiExitScreen;
MSGBOX_CALLBACK ExitCallback;
INT16 sX;
INT16 sY;
UINT32 uiSaveBuffer;
MOUSE_REGION BackRegion;
UINT16 usWidth;
UINT16 usHeight;
INT32 iButtonImages;
union
{
struct
{
UINT32 uiOKButton;
UINT32 uiYESButton;
UINT32 uiNOButton;
UINT32 uiUnusedButton;
};
struct
{
UINT32 uiButton[16];
};
};
BOOLEAN fRenderBox;
INT8 bHandled;
INT32 iBoxId;
BOOLEAN fWasPaused;
} MESSAGE_BOX_STRUCT;
extern MESSAGE_BOX_STRUCT gMsgBox;
extern BOOLEAN fRestoreBackgroundForMessageBox;
//this variable can be unset if ur in a non gamescreen and DONT want the msg box to use the save buffer
extern BOOLEAN gfDontOverRideSaveBuffer;
//OJW - 20090208
extern CHAR16 gszMsgBoxInputString[255];
////////////////////////////////
// ubStyle: Determines the look of graphics including buttons
// zString: 16-bit string
// uiExitScreen The screen to exit to
// ubFlags Some flags for button style
// ReturnCallback Callback for return. Can be NULL. Returns any above return value
// pCenteringRect Rect to send if MSG_BOX_FLAG_USE_CENTERING_RECT set. Can be NULL
////////////////////////////////
INT32 DoMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect, UINT8 ubDefaultButton = MSG_BOX_DEFAULT_BUTTON_NONE );
void DoScreenIndependantMessageBoxFullScreen( const STR16 zString, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback );
void DoScreenIndependantMessageBox( const STR16 zString, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback );
void DoUpperScreenIndependantMessageBox( const STR16 zString, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback );
void DoLowerScreenIndependantMessageBox( const STR16 zString, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback );
void DoScreenIndependantMessageBoxWithRect( const STR16 zString, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect );
//wrappers for other screens
BOOLEAN DoLapTopSystemMessageBoxWithRect( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect );
INT32 DoMapMessageBoxWithRect( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect );
BOOLEAN DoOptionsMessageBoxWithRect( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect );
BOOLEAN DoSaveLoadMessageBoxWithRect( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT32 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect );
#endif