Add win_yes_no
This commit is contained in:
parent
2d8a637f7d
commit
ce5d07e09c
|
@ -617,6 +617,87 @@ int _win_get_str(char* dest, int length, const char* title, int x, int y)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0x4DB920
|
||||||
|
int win_yes_no(const char* question, int x, int y, int color)
|
||||||
|
{
|
||||||
|
if (!gWindowSystemInitialized) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int height = 3 * fontGetLineHeight() + 16;
|
||||||
|
int width = std::max(fontGetStringWidth(question) + 16, 144) + 16;
|
||||||
|
|
||||||
|
int win = windowCreate(x, y, width, height, 0x100, WINDOW_MODAL | WINDOW_MOVE_ON_TOP);
|
||||||
|
if (win == -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
windowDrawBorder(win);
|
||||||
|
|
||||||
|
unsigned char* windowBuffer = windowGetWindow(win)->buffer;
|
||||||
|
|
||||||
|
int textColor;
|
||||||
|
if ((color & 0xFF00) != 0) {
|
||||||
|
int colorIndex = (color & 0xFF) - 1;
|
||||||
|
textColor = (color & ~0xFFFF) | _colorTable[_GNW_wcolor[colorIndex]];
|
||||||
|
} else {
|
||||||
|
textColor = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
fontDrawText(windowBuffer + 8 * width + 16,
|
||||||
|
question,
|
||||||
|
width,
|
||||||
|
width,
|
||||||
|
textColor);
|
||||||
|
|
||||||
|
_win_register_text_button(win,
|
||||||
|
width / 2 - 64,
|
||||||
|
height - fontGetLineHeight() - 14,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
'y',
|
||||||
|
"Yes",
|
||||||
|
0);
|
||||||
|
_win_register_text_button(win,
|
||||||
|
width / 2 + 16,
|
||||||
|
height - fontGetLineHeight() - 14,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
'n',
|
||||||
|
"No",
|
||||||
|
0);
|
||||||
|
windowRefresh(win);
|
||||||
|
|
||||||
|
// NOTE: Original code is slightly different but does the same thing.
|
||||||
|
int rc = -1;
|
||||||
|
while (rc == -1) {
|
||||||
|
sharedFpsLimiter.mark();
|
||||||
|
|
||||||
|
switch (inputGetInput()) {
|
||||||
|
case KEY_ESCAPE:
|
||||||
|
case 'n':
|
||||||
|
case 'N':
|
||||||
|
rc = 0;
|
||||||
|
break;
|
||||||
|
case KEY_RETURN:
|
||||||
|
case KEY_SPACE:
|
||||||
|
case 'y':
|
||||||
|
case 'Y':
|
||||||
|
rc = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderPresent();
|
||||||
|
sharedFpsLimiter.throttle();
|
||||||
|
}
|
||||||
|
|
||||||
|
windowDestroy(win);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
// 0x4DBA98
|
// 0x4DBA98
|
||||||
int _win_msg(const char* string, int x, int y, int color)
|
int _win_msg(const char* string, int x, int y, int color)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@ extern char gProgramWindowTitle[256];
|
||||||
int _win_list_select(const char* title, char** fileList, int fileListLength, ListSelectionHandler* callback, int x, int y, int color);
|
int _win_list_select(const char* title, char** fileList, int fileListLength, ListSelectionHandler* callback, int x, int y, int color);
|
||||||
int _win_list_select_at(const char* title, char** items, int itemsLength, ListSelectionHandler* callback, int x, int y, int color, int start);
|
int _win_list_select_at(const char* title, char** items, int itemsLength, ListSelectionHandler* callback, int x, int y, int color, int start);
|
||||||
int _win_get_str(char* dest, int length, const char* title, int x, int y);
|
int _win_get_str(char* dest, int length, const char* title, int x, int y);
|
||||||
|
int win_yes_no(const char* question, int x, int y, int color);
|
||||||
int _win_msg(const char* string, int x, int y, int color);
|
int _win_msg(const char* string, int x, int y, int color);
|
||||||
int _win_pull_down(char** items, int itemsLength, int x, int y, int color);
|
int _win_pull_down(char** items, int itemsLength, int x, int y, int color);
|
||||||
int _create_pull_down(char** stringList, int stringListLength, int x, int y, int foregroundColor, int backgroundColor, Rect* rect);
|
int _create_pull_down(char** stringList, int stringListLength, int x, int y, int foregroundColor, int backgroundColor, Rect* rect);
|
||||||
|
|
Loading…
Reference in New Issue