move choose_status_effect to common code for a debug action

This commit is contained in:
2025-03-17 11:42:36 -05:00
parent ba64245a94
commit 1ab5a9f5e9
5 changed files with 25 additions and 23 deletions

View File

@@ -27,6 +27,7 @@
#include "dialogxml/dialogs/strdlog.hpp"
#include "dialogxml/dialogs/3choice.hpp"
#include "dialogxml/dialogs/strchoice.hpp"
#include "dialogxml/dialogs/pictchoice.hpp"
#include "fileio/fileio.hpp"
#include "dialogxml/widgets/field.hpp"
#include "fileio/resmgr/res_dialog.hpp"

View File

@@ -980,28 +980,6 @@ static pic_num_t choose_boom_type(short cur, cDialog* parent) {
return made_choice ? item_hit : prev;
}
pic_num_t choose_status_effect(short cur, bool party, cDialog* parent) {
static const char*const status[] = {
"Poisoned Weapon", "Bless/Curse", "Poison", "Haste/Slow", "Invulnerable",
"Magic Resist/Amplify", "Webs", "Disease", "Sanctuary", "Dumbfounding/Enlightening",
"Martyr's Shield", "Sleep/Hyperactivity", "Paralysis", "Acid", "Forcecage",
};
static const char*const pstatus[] = {"Stealth", "Flight", "Detect Life", "Firewalk"};
static const std::vector<pic_num_t> status_pics = {4,2,0,6,5,9,10,11,12,13,14,15,16,17,20};
static const std::vector<pic_num_t> pstatus_pics = {26,23,24,25};
short prev = cur;
if(cur < 0 || cur >= (party ? pstatus_pics : status_pics).size()) cur = 0;
cPictChoice pic_dlg(party ? pstatus_pics : status_pics, PIC_STATUS, parent);
pic_dlg->getControl("prompt").setText("Select a status effect:");
pic_dlg->getControl("help").setText((party ? pstatus : status)[cur]);
pic_dlg.attachSelectHandler([party](cPictChoice& me, int n) {
me->getControl("help").setText((party ? pstatus : status)[n]);
});
bool made_choice = pic_dlg.show(cur);
size_t item_hit = pic_dlg.getSelected();
return made_choice ? item_hit : prev;
}
snd_num_t choose_sound(short cur, cDialog* parent, std::string title) {
if(cur < 0) cur = 0;
StringList snd_names = *ResMgr::strings.get("sound-names");

View File

@@ -26,5 +26,4 @@ size_t num_strs(eStrMode str_mode);
pic_num_t choose_damage_type(short cur, cDialog* parent, bool allow_spec);
short choose_field_type(short cur, cDialog* parent, bool includeSpec);
pic_num_t choose_status_effect(short cur, bool party, cDialog* parent);
snd_num_t choose_sound(short cur, cDialog* parent, std::string title = "Which sound?");