You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.5 KiB
68 lines
1.5 KiB
#include "selyesno.h" |
|
|
|
#include "devilution.h" |
|
#include "DiabloUI/diabloui.h" |
|
#include "DiabloUI/text.h" |
|
|
|
namespace dvl { |
|
|
|
bool selyesno_endMenu; |
|
bool selyesno_value; |
|
char selyesno_confirmationMessage[256]; |
|
char selyesno_title[32]; |
|
|
|
UiListItem SELYESNO_DIALOG_ITEMS[] = { |
|
{ "Yes", 0 }, |
|
{ "No", 1 } |
|
}; |
|
|
|
UiItem SELYESNO_DIALOG[] = { |
|
MAINMENU_BACKGROUND, |
|
MAINMENU_LOGO, |
|
UiArtText(selyesno_title, { 24, 161, 590, 35 }, UIS_CENTER | UIS_BIG), |
|
UiArtText(selyesno_confirmationMessage, { 120, 236, 280, 168 }, UIS_MED), |
|
UiList(SELYESNO_DIALOG_ITEMS, 230, 390, 180, 35, UIS_CENTER | UIS_BIG | UIS_GOLD) |
|
}; |
|
UiArtText *SELYESNO_DIALOG_CONFIRMATION_MESSAGE = &SELYESNO_DIALOG[3].art_text; |
|
|
|
void selyesno_Free() |
|
{ |
|
ArtBackground.Unload(); |
|
} |
|
|
|
void selyesno_Select(int value) |
|
{ |
|
selyesno_value = value == 0; |
|
selyesno_endMenu = true; |
|
} |
|
|
|
void selyesno_Esc() |
|
{ |
|
selyesno_value = false; |
|
selyesno_endMenu = true; |
|
} |
|
|
|
bool UiSelHeroYesNoDialog(const char *title, const char *body) |
|
{ |
|
LoadBackgroundArt("ui_art\\black.pcx"); |
|
|
|
strcpy(selyesno_title, title); |
|
strcpy(selyesno_confirmationMessage, body); |
|
WordWrapArtStr(selyesno_confirmationMessage, SELYESNO_DIALOG_CONFIRMATION_MESSAGE->rect.w); |
|
|
|
UiInitList(0, 1, NULL, selyesno_Select, selyesno_Esc, SELYESNO_DIALOG, size(SELYESNO_DIALOG), true, NULL); |
|
|
|
selyesno_value = true; |
|
selyesno_endMenu = false; |
|
while (!selyesno_endMenu) { |
|
UiRenderItems(SELYESNO_DIALOG, size(SELYESNO_DIALOG)); |
|
UiPollAndRender(); |
|
} |
|
|
|
BlackPalette(); |
|
|
|
selyesno_Free(); |
|
|
|
return selyesno_value; |
|
} |
|
}
|
|
|