-- mbehavior allows flags to be passed to alter the appearance
and/or behavior of the menu.
add_menu(windid window, glyphinfo, const anything identifier, char accelerator,
- char groupacc, int attr, char *str,
+ char groupacc, int attr, int clr, char *str,
unsigned itemflags)
-- Add a text line str to the given menu window. If identifier
is 0, then the line cannot be selected (e.g. a title).
the menu command (or their user defined aliases), it loses.
The menu commands and aliases take care not to interfere
with the default object class symbols.
+ -- attr attributes can be one of
+ ATR_NONE (or 0)
+ ATR_ULINE
+ ATR_BOLD
+ ATR_BLINK
+ ATR_INVERSE
+ If a window-port does not support all of these, it may map
+ unsupported attributes to a supported one (e.g. map them
+ all to ATR_INVERSE).
+ -- clr color will hold a color value including 24-bit
+ true color values. To do that, and make it
+ distinguishable on the windowport side of things, the
+ windowport needs to treat it as follows:
+ 0 = not used, just ignore the clr value.
+ 1-16 = indicates a normal NetHack color value from
+ 0 - 15, so subtract 1 to get the NetHack
+ color value.
+ 17... = indicates a 24-bit RGB color value, so
+ subtract 17 to get the actual 24-bit
+ color value.
+ When placing the values into this parameter, the core
+ will add 1 to a NetHack color value, and add 17 to a
+ 24-bit RGB color value.
+ -- str is a pointer to the menu item text.
-- itemflags on this item (such as MENU_ITEMFLAGS_SELECTED etc.).
end_menu(window, prompt)
extern void X11_display_file(const char *, boolean);
extern void X11_start_menu(winid, unsigned long);
extern void X11_add_menu(winid, const glyph_info *, const ANY_P *, char,
- char, int, const char *, unsigned int);
+ char, int, int, const char *, unsigned int);
extern void X11_end_menu(winid, const char *);
extern int X11_select_menu(winid, int, MENU_ITEM_P **);
extern void X11_mark_synch(void);
extern void curses_add_menu(winid wid, const glyph_info *,
const ANY_P * identifier,
char accelerator, char group_accel, int attr,
- const char *str, unsigned int itemflags);
+ int clr, const char *str, unsigned int itemflags);
extern void curses_end_menu(winid wid, const char *prompt);
extern int curses_select_menu(winid wid, int how, MENU_ITEM_P **selected);
extern void curses_mark_synch(void);
void (*win_display_file)(const char *, boolean);
void (*win_start_menu)(winid, unsigned long);
void (*win_add_menu)(winid, const glyph_info *, const ANY_P *,
- char, char, int,
+ char, char, int, int,
const char *, unsigned int);
void (*win_end_menu)(winid, const char *);
int (*win_select_menu)(winid, int, MENU_ITEM_P **);
void (*win_start_menu)(CARGS, winid, unsigned long);
void (*win_add_menu)(CARGS, winid, const glyph_info *,
const ANY_P *, char, char, int,
- const char *, unsigned int);
+ int, const char *, unsigned int);
void (*win_end_menu)(CARGS, winid, const char *);
int (*win_select_menu)(CARGS, winid, int, MENU_ITEM_P **);
char (*win_message_menu)(CARGS, char, int, const char *);
extern void safe_display_file(const char *, boolean);
extern void safe_start_menu(winid, unsigned long);
extern void safe_add_menu(winid, const glyph_info *, const ANY_P *,
- char, char, int, const char *,
+ char, char, int, int, const char *,
unsigned int);
extern void safe_end_menu(winid, const char *);
extern int safe_select_menu(winid, int, MENU_ITEM_P **);
Bitfield(refresh, 1);
Bitfield(text, 1);
Bitfield(glyph, 1);
- Bitfield(colorbits, 5);
union ttycellcontent content;
- int32_t color;
+ int32_t color; /* adjusted color 0 = ignore
+ * 1-16 = NetHack color + 1
+ * 17..16,777,233 = 24-bit color + 17
+ */
};
#endif
E void tty_display_file(const char *, boolean);
E void tty_start_menu(winid, unsigned long);
E void tty_add_menu(winid, const glyph_info *, const ANY_P *, char, char,
- int, const char *, unsigned int);
+ int, int, const char *, unsigned int);
E void tty_end_menu(winid, const char *);
E int tty_select_menu(winid, int, MENU_ITEM_P **);
E char tty_message_menu(char, int, const char *);
enum from_core_requests core_request;
enum inv_modes invmode;
boolean force_redraw;
- int slot; /* which inventory slot; 0 indicates request */
+ int slot; /* which inventory slot + 1; 0 indicates request */
int invlet;
char text[BUFSZ];
+ int32_t clr; /* adjusted color 0 = ignore
+ * 1-16 = NetHack color + 1
+ * 17..16,777,233 = 24-bit color + 17
+ */
};
struct perminvent_info_t {
anything any;
char buf[BUFSZ];
menu_item *selected;
+ int clr = 0;
any = cg.zeroany; /* set all bits to zero */
any.a_int = 1; /* use index+1 (cant use 0) as identifier */
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any.a_int++;
Sprintf(buf, "an object on the %s", surface(cc.x, cc.y));
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
- MENU_ITEMFLAGS_NONE);
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ clr, buf, MENU_ITEMFLAGS_NONE);
any.a_int++;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "a monster", MENU_ITEMFLAGS_NONE);
+ clr, "a monster", MENU_ITEMFLAGS_NONE);
any.a_int++;
Sprintf(buf, "the %s", surface(cc.x, cc.y));
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
- MENU_ITEMFLAGS_NONE);
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
+ buf, MENU_ITEMFLAGS_NONE);
end_menu(tmpwin, "Aim for what?");
tohit = rn2(4);
if (select_menu(tmpwin, PICK_ONE, &selected) > 0
d_level newlev;
winid tmpwin = create_nhwindow(NHW_MENU);
anything any;
+ int clr = 0;
any = cg.zeroany; /* set all bits to zero */
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
continue;
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, g.dungeons[i].dname, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr,
+ g.dungeons[i].dname, MENU_ITEMFLAGS_NONE);
num_ok_dungeons++;
last_ok_dungeon = i;
}
menu_item *picks = (menu_item *) 0;
char mbuf[QBUFSZ];
boolean showmenu = TRUE;
+ int clr = 0;
do {
for (i = 0; i < CONDITION_COUNT; ++i) {
menutitle[g.condmenu_sortorder],
menutitle[1 - g.condmenu_sortorder]);
add_menu(tmpwin, &nul_glyphinfo, &any, 'S', 0, ATR_NONE,
- mbuf, MENU_ITEMFLAGS_NONE);
+ clr, mbuf, MENU_ITEMFLAGS_NONE);
any = cg.zeroany;
Sprintf(mbuf, "sorted %s", menutitle[g.condmenu_sortorder]);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings, mbuf, MENU_ITEMFLAGS_NONE);
+ iflags.menu_headings, clr, mbuf, MENU_ITEMFLAGS_NONE);
for (i = 0; i < SIZE(condtests); i++) {
idx = sequence[i];
Sprintf(mbuf, "cond_%-14s", condtests[idx].useroption);
any.a_int = idx + 2; /* avoid zero and the sort change pick */
condtests[idx].choice = FALSE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- mbuf,
+ clr, mbuf,
condtests[idx].enabled
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
anything any;
menu_item *picks = (menu_item *) 0;
int adj = (arrmin > 0) ? 1 : arrmax;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = i + adj;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- arr[i], MENU_ITEMFLAGS_NONE);
+ clr, arr[i], MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, querystr);
winid tmpwin;
anything any;
menu_item *picks = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_ulong = conditions[i].mask;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- conditions[i].text[0], MENU_ITEMFLAGS_NONE);
+ clr, conditions[i].text[0], MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Choose status conditions");
int i, res, fld = BL_FLUSH;
anything any;
menu_item *picks = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = (i + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- initblstats[i].fldname, MENU_ITEMFLAGS_NONE);
+ clr, initblstats[i].fldname, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select a hilite field:");
char buf[BUFSZ];
int at;
int onlybeh = BL_TH_NONE, nopts = 0;
+ int clr = 0;
if (fld < 0 || fld >= MAXBLSTATS)
return BL_TH_NONE;
any.a_int = onlybeh = BL_TH_ALWAYS_HILITE;
Sprintf(buf, "Always highlight %s", initblstats[fld].fldname);
add_menu(tmpwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
nopts++;
}
any = cg.zeroany;
any.a_int = onlybeh = BL_TH_CONDITION;
add_menu(tmpwin, &nul_glyphinfo, &any, 'b', 0, ATR_NONE,
- "Bitmask of conditions", MENU_ITEMFLAGS_NONE);
+ clr, "Bitmask of conditions", MENU_ITEMFLAGS_NONE);
nopts++;
}
any.a_int = onlybeh = BL_TH_UPDOWN;
Sprintf(buf, "%s value changes", initblstats[fld].fldname);
add_menu(tmpwin, &nul_glyphinfo, &any, 'c', 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
nopts++;
}
any = cg.zeroany;
any.a_int = onlybeh = BL_TH_VAL_ABSOLUTE;
add_menu(tmpwin, &nul_glyphinfo, &any, 'n', 0, ATR_NONE,
- "Number threshold", MENU_ITEMFLAGS_NONE);
+ clr, "Number threshold", MENU_ITEMFLAGS_NONE);
nopts++;
}
any = cg.zeroany;
any.a_int = onlybeh = BL_TH_VAL_PERCENTAGE;
add_menu(tmpwin, &nul_glyphinfo, &any, 'p', 0, ATR_NONE,
- "Percentage threshold", MENU_ITEMFLAGS_NONE);
+ clr, "Percentage threshold", MENU_ITEMFLAGS_NONE);
nopts++;
}
any.a_int = onlybeh = BL_TH_TEXTMATCH;
Sprintf(buf, "%s text match", initblstats[fld].fldname);
add_menu(tmpwin, &nul_glyphinfo, &any, 't', 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
nopts++;
}
char buf[BUFSZ];
anything any;
menu_item *picks = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = 10 + LT_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
if (str) {
Sprintf(buf, "%s or %s",
any = cg.zeroany;
any.a_int = 10 + LE_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
}
}
any = cg.zeroany;
any.a_int = 10 + EQ_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
if (gtok) {
if (str) {
any = cg.zeroany;
any.a_int = 10 + GE_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
}
if (str)
any = cg.zeroany;
any.a_int = 10 + GT_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
}
Sprintf(buf, "Select field %s value:", initblstats[fld].fldname);
end_menu(tmpwin, buf);
struct _status_hilite_line_str *hlstr;
char buf[BUFSZ];
boolean acted;
+ int clr = 0;
if (!count) {
if (status_hilite_menu_add(fld)) {
any = cg.zeroany;
any.a_int = hlstr->id;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- hlstr->str, MENU_ITEMFLAGS_NONE);
+ clr, hlstr->str, MENU_ITEMFLAGS_NONE);
}
hlstr = hlstr->next;
}
} else {
any = cg.zeroany;
Sprintf(buf, "No current hilites for %s", initblstats[fld].fldname);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
}
/* separator line */
any = cg.zeroany;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "",
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, "",
MENU_ITEMFLAGS_NONE);
if (count) {
any = cg.zeroany;
any.a_int = -1;
add_menu(tmpwin, &nul_glyphinfo, &any, 'X', 0, ATR_NONE,
- "Remove selected hilites",
+ clr, "Remove selected hilites",
MENU_ITEMFLAGS_NONE);
}
any = cg.zeroany;
any.a_int = -2;
add_menu(tmpwin, &nul_glyphinfo, &any, 'Z', 0, ATR_NONE,
- "Add new hilites", MENU_ITEMFLAGS_NONE);
+ clr, "Add new hilites", MENU_ITEMFLAGS_NONE);
}
Sprintf(buf, "Current %s hilites:", initblstats[fld].fldname);
anything any;
boolean redo;
int countall;
+ int clr = 0;
shlmenu_redo:
redo = FALSE;
any = cg.zeroany;
any.a_int = -1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "View all hilites in config format",
+ clr, "View all hilites in config format",
MENU_ITEMFLAGS_NONE);
any = cg.zeroany;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "",
- MENU_ITEMFLAGS_NONE);
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ clr, "", MENU_ITEMFLAGS_NONE);
}
for (i = 0; i < MAXBLSTATS; i++) {
if (count)
Sprintf(eos(buf), " (%d defined)", count);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Status hilites:");
const struct ext_func_tab *efp) /* if Null, add a footnote to the menu */
{
static char Abuf[10]; /* 5 would suffice: {'[','m','A',']','\0'} */
+ int clr = 0;
/* note: tag shown for menu prefix is 'm' even if m-prefix action
has been bound to some other key */
char qbuf[QBUFSZ];
anything any = cg.zeroany;
- add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"[A] Command autocompletes", MENU_ITEMFLAGS_NONE);
Sprintf(qbuf, "[m] Command accepts '%s' prefix",
visctrl(cmd_from_func(do_reqmenu)));
- add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, qbuf,
+ add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, qbuf,
MENU_ITEMFLAGS_NONE);
return (char *) 0;
} else {
boolean redisplay = TRUE, search = FALSE;
static const char *const headings[] = { "Extended commands",
"Debugging Extended Commands" };
+ int clr = 0;
searchbuf[0] = '\0';
menuwin = create_nhwindow(NHW_MENU);
redisplay = FALSE;
any = cg.zeroany;
start_menu(menuwin, MENU_BEHAVE_STANDARD);
- add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"Extended Commands List",
MENU_ITEMFLAGS_NONE);
- add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"", MENU_ITEMFLAGS_NONE);
Sprintf(buf, "Switch to %s commands that don't autocomplete",
menumode ? "including" : "excluding");
any.a_int = 1;
- add_menu(menuwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE, buf,
+ add_menu(menuwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
if (!*searchbuf) {
having ':' as an explicit selector overrides the default
menu behavior for it; we retain 's' as a group accelerator */
add_menu(menuwin, &nul_glyphinfo, &any, ':', 's', ATR_NONE,
- "Search extended commands",
+ clr, "Search extended commands",
MENU_ITEMFLAGS_NONE);
} else {
Strcpy(buf, "Switch back from search");
work for interfaces which support ':' to search; use as a
general menu command takes precedence over group accelerator */
add_menu(menuwin, &nul_glyphinfo, &any, 's', ':', ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
}
if (wizard) {
any.a_int = 4;
- add_menu(menuwin, &nul_glyphinfo, &any, 'z', 0, ATR_NONE,
+ add_menu(menuwin, &nul_glyphinfo, &any, 'z', 0, ATR_NONE, clr,
onelist ? "Switch to showing debugging commands in separate section"
: "Switch to showing all alphabetically, including debugging commands",
MENU_ITEMFLAGS_NONE);
}
any = cg.zeroany;
- add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"", MENU_ITEMFLAGS_NONE);
menushown[0] = menushown[1] = 0;
n = 0;
if (!menushown[pass]) {
Strcpy(buf, headings[pass]);
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings, buf,
+ iflags.menu_headings, clr, buf,
MENU_ITEMFLAGS_NONE);
menushown[pass] = 1;
}
Sprintf(buf, " %-14s %4s %s", efp->ef_txt,
doc_extcmd_flagstr(menuwin, efp), efp->ef_desc);
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
++n;
}
if (n)
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
}
if (*searchbuf && !n)
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "no matches", MENU_ITEMFLAGS_NONE);
+ clr, "no matches", MENU_ITEMFLAGS_NONE);
else
(void) doc_extcmd_flagstr(menuwin, (struct ext_func_tab *) 0);
int accelerator, prevaccelerator;
int matchlevel = 0;
boolean wastoolong, one_per_line;
+ int clr = 0;
ret = 0;
cbuf[0] = '\0';
Sprintf(buf, fmtstr, prompt);
any.a_char = prevaccelerator;
add_menu(win, &nul_glyphinfo, &any, any.a_char,
- 0, ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ 0, ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
acount = 0;
if (!(accelerator != prevaccelerator || one_per_line))
wastoolong = TRUE;
Sprintf(buf, fmtstr, prompt);
any.a_char = prevaccelerator;
add_menu(win, &nul_glyphinfo, &any, any.a_char, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
Snprintf(prompt, sizeof(prompt), "Extended Command: %s", cbuf);
end_menu(win, prompt);
long oldtimeout, newtimeout;
const char *propname;
menu_item *pick_list = (menu_item *) 0;
+ int clr = 0;
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
"[Precede any selection with a count to increment by other than %d.]",
DEFAULT_TIMEOUT_INCR);
any.a_int = 0;
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
}
for (i = 0; (propname = propertynames[i].prop_name) != 0; ++i) {
set to timed values here so show a separator */
any.a_int = 0;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "--", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "--", MENU_ITEMFLAGS_NONE);
}
any.a_int = i + 1; /* +1: avoid 0 */
oldtimeout = u.uprops[p].intrinsic & TIMEOUT;
Sprintf(buf, "%-27s [%li]", propname, oldtimeout);
else
Sprintf(buf, "%s", propname);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
}
end_menu(win, "Which intrinsics?");
anything any;
int n;
int which;
+ int clr = 0;
/*
* normal play: choose between known map without mons, obj, and traps
start_menu(men, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = 1;
- add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"known map without monsters, objects, and traps",
MENU_ITEMFLAGS_SELECTED);
any.a_int = 2;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "known map without monsters and objects",
+ clr, "known map without monsters and objects",
MENU_ITEMFLAGS_NONE);
any.a_int = 3;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "known map without monsters",
+ clr, "known map without monsters",
MENU_ITEMFLAGS_NONE);
if (discover || wizard) {
any.a_int = 4;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "full map without monsters, objects, and traps",
+ clr, "full map without monsters, objects, and traps",
MENU_ITEMFLAGS_NONE);
if (wizard) {
any.a_int = 5;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "internal levl[][].typ codes in base-36",
+ clr, "internal levl[][].typ codes in base-36",
MENU_ITEMFLAGS_NONE);
any.a_int = 6;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "legend of base-36 levl[][].typ codes",
+ clr, "legend of base-36 levl[][].typ codes",
MENU_ITEMFLAGS_NONE);
}
}
mcmd_addmenu(winid win, int act, const char *txt)
{
anything any;
+ int clr = 0;
/* TODO: fixed letters for the menu entries? */
any = cg.zeroany;
any.a_int = act;
- add_menu(win, &nul_glyphinfo, &any, '\0', 0, ATR_NONE, txt,
+ add_menu(win, &nul_glyphinfo, &any, '\0', 0, ATR_NONE, clr, txt,
MENU_ITEMFLAGS_NONE);
}
int i, pick_cnt;
menu_item *picks = (menu_item *) 0;
char tmpbuf[BUFSZ];
+ int clr = 0;
gather_locs(&garr, &gcount, gloc);
Snprintf(fullbuf, sizeof fullbuf, "%s%s%s", firstmatch,
(*tmpbuf ? " " : ""), tmpbuf);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, fullbuf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, fullbuf, MENU_ITEMFLAGS_NONE);
}
}
char ch = 0;
/* if player wants a,b,c instead of i,o when looting, do that here too */
boolean abc = flags.lootabc;
+ int clr = 0;
if ((cmdq = cmdq_pop()) != 0) {
cq = *cmdq;
any = cg.zeroany;
any.a_char = 'm'; /* group accelerator 'C' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, 'C',
- ATR_NONE, "a monster", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "a monster", MENU_ITEMFLAGS_NONE);
if (g.invent) {
/* we use y and n as accelerators so that we can accept user's
response keyed to old "name an individual object?" prompt */
any.a_char = 'i'; /* group accelerator 'y' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, 'y',
- ATR_NONE, "a particular object in inventory",
+ ATR_NONE, clr, "a particular object in inventory",
MENU_ITEMFLAGS_NONE);
any.a_char = 'o'; /* group accelerator 'n' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, 'n',
- ATR_NONE, "the type of an object in inventory",
+ ATR_NONE, clr, "the type of an object in inventory",
MENU_ITEMFLAGS_NONE);
}
any.a_char = 'f'; /* group accelerator ',' (or ':' instead?) */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, ',',
- ATR_NONE, "the type of an object upon the floor",
+ ATR_NONE, clr, "the type of an object upon the floor",
MENU_ITEMFLAGS_NONE);
any.a_char = 'd'; /* group accelerator '\' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, '\\',
- ATR_NONE, "the type of an object on discoveries list",
+ ATR_NONE, clr, "the type of an object on discoveries list",
MENU_ITEMFLAGS_NONE);
any.a_char = 'a'; /* group accelerator 'l' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, 'l',
- ATR_NONE, "record an annotation for the current level",
+ ATR_NONE, clr, "record an annotation for the current level",
MENU_ITEMFLAGS_NONE);
end_menu(win, "What do you want to name?");
if (select_menu(win, PICK_ONE, &pick_list) > 0) {
{
char tmpbuf[BUFSZ];
anything any;
+ int clr = 0;
lchoices->lev[lchoices->idx] = lvl_p->dlevel;
lchoices->dgn[lchoices->idx] = lvl_p->dnum;
any.a_int = lchoices->idx + 1;
}
add_menu(win, &nul_glyphinfo, &any, lchoices->menuletter, 0,
- ATR_NONE, entry, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, entry, MENU_ITEMFLAGS_NONE);
/* this assumes there are at most 52 interesting levels */
if (lchoices->menuletter == 'z')
lchoices->menuletter = 'A';
anything any;
struct lchoice lchoices;
winid win = create_nhwindow(NHW_MENU);
+ int clr = 0;
if (bymenu) {
start_menu(win, MENU_BEHAVE_STANDARD);
if (bymenu) {
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings, buf, MENU_ITEMFLAGS_NONE);
+ iflags.menu_headings, clr, buf, MENU_ITEMFLAGS_NONE);
} else
putstr(win, 0, buf);
static void
enlght_out(const char *buf)
{
+ int clr = 0;
+
if (g.en_via_menu) {
anything any;
any = cg.zeroany;
- add_menu(g.en_win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(g.en_win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
} else
putstr(g.en_win, 0, buf);
winid tmpwin;
menu_item *selected;
anything any;
- int i, n, choice;
+ int i, n, choice,
+ clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
if (i == VANQ_ALPHA_MIX || i == VANQ_MCLS_HTOL) /* skip these */
continue;
any.a_int = i + 1;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
vanqorders[i],
(i == g.vanq_sortmode)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
ia_addmenu(winid win, int act, char let, const char *txt)
{
anything any;
+ int clr = 0;
any = cg.zeroany;
any.a_int = act;
add_menu(win, &nul_glyphinfo, &any, let, 0,
- ATR_NONE, txt, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, txt, MENU_ITEMFLAGS_NONE);
}
/* Show menu of possible actions hero could do with item otmp */
unsigned sortflags;
Loot *sortedinvent, *srtinv;
boolean wizid = (wizard && iflags.override_ID), gotsomething = FALSE;
+ int clr = 0;
if (lets && !*lets)
lets = 0; /* simplify tests: (lets) instead of (lets && *lets) */
Sprintf(eos(prompt),
" -- unidentified or partially identified item%s",
plur(unid_cnt));
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, prompt,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, prompt,
MENU_ITEMFLAGS_NONE);
if (!unid_cnt) {
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"(all items are permanently identified already)",
MENU_ITEMFLAGS_NONE);
gotsomething = TRUE;
Sprintf(eos(prompt), " (%s for all)",
visctrl(iflags.override_ID));
add_menu(win, &nul_glyphinfo, &any, '_', iflags.override_ID,
- ATR_NONE, prompt, MENU_ITEMFLAGS_SKIPINVERT);
+ ATR_NONE, clr, prompt, MENU_ITEMFLAGS_SKIPINVERT);
gotsomething = TRUE;
}
} else if (xtra_choice) {
/* wizard override ID and xtra_choice are mutually exclusive */
if (flags.sortpack)
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
"Miscellaneous", MENU_ITEMFLAGS_NONE);
any.a_char = HANDS_SYM; /* '-' */
add_menu(win, &nul_glyphinfo, &any, HANDS_SYM, 0, ATR_NONE,
- xtra_choice, MENU_ITEMFLAGS_NONE);
+ clr, xtra_choice, MENU_ITEMFLAGS_NONE);
gotsomething = TRUE;
}
ilet = otmp->invlet;
if (flags.sortpack && !classcount) {
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
let_to_name(*invlet, FALSE,
(want_reply && iflags.menu_head_objsym)),
MENU_ITEMFLAGS_NONE);
formattedobj = doname(otmp);
add_menu(win, &tmpglyphinfo, &any, ilet,
wizid ? def_oc_syms[(int) otmp->oclass].sym : 0,
- ATR_NONE, formattedobj, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, formattedobj, MENU_ITEMFLAGS_NONE);
/* doname() uses a static pool of obuf[] output buffers and
we don't want inventory display to overwrite all of them,
so when we've used one we release it for re-use */
&& (int) strlen(lets) < inv_cnt(TRUE)) {
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings, "Special", MENU_ITEMFLAGS_NONE);
+ iflags.menu_headings, clr, "Special", MENU_ITEMFLAGS_NONE);
any.a_char = '*';
- add_menu(win, &nul_glyphinfo, &any, '*', 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, '*', 0, ATR_NONE, clr,
"(list everything)", MENU_ITEMFLAGS_NONE);
gotsomething = TRUE;
}
into the menu */
if (iflags.perm_invent && !lets && !gotsomething) {
any = cg.zeroany;
- add_menu(win, &nul_glyphinfo, &any, 0, 0, 0,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
not_carrying_anything, MENU_ITEMFLAGS_NONE);
want_reply = FALSE;
}
winid win;
anything any;
menu_item *selected;
+ int clr = 0;
if (g.invent) {
win = create_nhwindow(NHW_MENU);
if (flags.sortpack && !classcount) {
any = cg.zeroany; /* zero */
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
let_to_name(*invlet, FALSE, FALSE),
MENU_ITEMFLAGS_NONE);
classcount++;
tmpglyph = obj_to_glyph(otmp, rn2_on_display_rng);
map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo);
add_menu(win, &tmpglyphinfo, &any, ilet, 0,
- ATR_NONE, doname(otmp), MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, doname(otmp), MENU_ITEMFLAGS_NONE);
}
}
if (flags.sortpack && *++invlet)
winid win;
anything any;
menu_item *selected;
+ int clr = 0;
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
start_menu(win, MENU_BEHAVE_STANDARD);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings, clr,
hdr, MENU_ITEMFLAGS_NONE);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"", MENU_ITEMFLAGS_NONE);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, txt,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, txt,
MENU_ITEMFLAGS_NONE);
end_menu(win, (char *) 0);
if (select_menu(win, PICK_NONE, &selected) > 0)
winid tmpwin;
anything any;
menu_item *picks = (menu_item *) 0;
+ int clr = 0;
if (argc < 2 || argc > 4) {
nhl_error(L, "Wrong args");
any = cg.zeroany;
if (*key)
any.a_char = key[0];
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, str,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, str,
(*defval && *key && defval[0] == key[0])
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
menu_item *selected;
anything any;
int i, n, choice;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = 0; disco_orders_descr[i]; ++i) {
any.a_int = disco_order_let[i];
add_menu(tmpwin, &nul_glyphinfo, &any, (char) any.a_int,
- 0, ATR_NONE,
+ 0, ATR_NONE, clr,
disco_orders_descr[i],
(disco_order_let[i] == flags.discosort)
? MENU_ITEMFLAGS_SELECTED
(only showing one class so can't span all classes) but the
chosen sort will stick and also apply to '\' usage */
any = cg.zeroany;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"", MENU_ITEMFLAGS_NONE);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"Note: full alphabetical and alphabetical within class",
MENU_ITEMFLAGS_NONE);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
" are equivalent for single class discovery, but",
MENU_ITEMFLAGS_NONE);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
" will matter for future use of total discoveries.",
MENU_ITEMFLAGS_NONE);
}
*sorted_lines[NUM_OBJECTS]; /* overkill */
int i, ct, dis, xtras, sorted_ct;
boolean traditional, alphabetized, lootsort;
+ int clr = 0;
if (!flags.discosort || !(p = index(disco_order_let, flags.discosort)))
flags.discosort = 'o';
if (!traditional) {
any.a_int = 'u';
add_menu(tmpwin, &nul_glyphinfo, &any, menulet++,
- 0, ATR_NONE, unique_items, MENU_ITEMFLAGS_NONE);
+ 0, ATR_NONE, clr, unique_items, MENU_ITEMFLAGS_NONE);
}
break;
}
if (!traditional) {
any.a_int = 'a';
add_menu(tmpwin, &nul_glyphinfo, &any, menulet++,
- 0, ATR_NONE, artifact_items, MENU_ITEMFLAGS_NONE);
+ 0, ATR_NONE, clr, artifact_items, MENU_ITEMFLAGS_NONE);
}
}
if (!traditional) {
any.a_int = c;
add_menu(tmpwin, &nul_glyphinfo, &any,
- menulet++, c, ATR_NONE,
+ menulet++, c, ATR_NONE, clr,
oclass_to_name(oclass, buf),
MENU_ITEMFLAGS_NONE);
}
winid tmpwin;
anything any;
menu_item *selected = 0;
+ int clr = 0;
any = cg.zeroany;
tmpwin = create_nhwindow(NHW_MENU);
if (oclass != prev_class) {
any.a_int = 0;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
let_to_name(oclass, FALSE, FALSE),
MENU_ITEMFLAGS_NONE);
prev_class = oclass;
}
any.a_int = dis;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE,
+ ATR_NONE, clr,
obj_typename(dis), MENU_ITEMFLAGS_NONE);
}
}
int i, n, old_menu_style = flags.menu_style;
char buf[BUFSZ], sep = iflags.menu_tab_sep ? '\t' : ' ';
menu_item *style_pick = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = 0; i < SIZE(menutype); i++) {
Sprintf(buf, "%-12.12s%c%.60s", menutype[i][0], sep, menutype[i][1]);
any.a_int = i + 1;
- add_menu(tmpwin, &nul_glyphinfo, &any, *buf, 0, ATR_NONE, buf,
+ add_menu(tmpwin, &nul_glyphinfo, &any, *buf, 0, ATR_NONE, clr, buf,
(i == flags.menu_style) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
/* second line is prefixed by spaces that "c - " would use */
Sprintf(buf, "%4s%-12.12s%c%.60s", "", "", sep, menutype[i][2]);
any.a_int = 0;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select menustyle:");
anything any;
menu_item *window_pick = (menu_item *) 0;
char abuf[BUFSZ];
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = ALIGN_TOP;
- add_menu(tmpwin, &nul_glyphinfo, &any, 't', 0, ATR_NONE, "top",
+ add_menu(tmpwin, &nul_glyphinfo, &any, 't', 0, ATR_NONE, clr, "top",
MENU_ITEMFLAGS_NONE);
any.a_int = ALIGN_BOTTOM;
- add_menu(tmpwin, &nul_glyphinfo, &any, 'b', 0, ATR_NONE, "bottom",
+ add_menu(tmpwin, &nul_glyphinfo, &any, 'b', 0, ATR_NONE, clr, "bottom",
MENU_ITEMFLAGS_NONE);
any.a_int = ALIGN_LEFT;
- add_menu(tmpwin, &nul_glyphinfo, &any, 'l', 0, ATR_NONE, "left",
+ add_menu(tmpwin, &nul_glyphinfo, &any, 'l', 0, ATR_NONE, clr, "left",
MENU_ITEMFLAGS_NONE);
any.a_int = ALIGN_RIGHT;
- add_menu(tmpwin, &nul_glyphinfo, &any, 'r', 0, ATR_NONE, "right",
+ add_menu(tmpwin, &nul_glyphinfo, &any, 'r', 0, ATR_NONE, clr, "right",
MENU_ITEMFLAGS_NONE);
Sprintf(abuf, "Select %s window placement relative to the map:",
(optidx == opt_align_message) ? "message" : "status");
char buf[BUFSZ], sep = iflags.menu_tab_sep ? '\t' : ' ';
menu_item *window_pick = (menu_item *) 0;
int i, n, presel, res = optn_ok;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
presel = !i ? !flags.autounlock : (flags.autounlock & (1 << (i - 1)));
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, *unlocktypes[i][0], 0,
- ATR_NONE, buf,
+ ATR_NONE, clr, buf,
((presel ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE)
| (!i ? MENU_ITEMFLAGS_SKIPINVERT : 0)));
}
int pick_cnt, pick_idx, opt_idx;
char c;
menu_item *disclosure_pick = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
flags.end_disclose[i], disclosure_options[i]);
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, disclosure_options[i],
- 0, ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ 0, ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
disc_cat[i] = 0;
}
end_menu(tmpwin, "Change which disclosure options categories:");
/* 'y','n',and '+' work as alternate selectors; '-' doesn't */
any.a_char = DISCLOSE_NO_WITHOUT_PROMPT;
add_menu(tmpwin, &nul_glyphinfo, &any, 0,
- any.a_char, ATR_NONE,
+ any.a_char, ATR_NONE, clr,
"Never disclose, without prompting",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
any.a_char = DISCLOSE_YES_WITHOUT_PROMPT;
add_menu(tmpwin, &nul_glyphinfo, &any, 0,
- any.a_char, ATR_NONE,
+ any.a_char, ATR_NONE, clr,
"Always disclose, without prompting",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
if (*disclosure_names[i] == 'v') {
any.a_char = DISCLOSE_SPECIAL_WITHOUT_PROMPT; /* '#' */
add_menu(tmpwin, &nul_glyphinfo, &any, 0,
- any.a_char, ATR_NONE,
+ any.a_char, ATR_NONE, clr,
"Always disclose, pick sort order from menu",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
}
any.a_char = DISCLOSE_PROMPT_DEFAULT_NO;
add_menu(tmpwin, &nul_glyphinfo, &any, 0,
- any.a_char, ATR_NONE,
+ any.a_char, ATR_NONE, clr,
"Prompt, with default answer of \"No\"",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
any.a_char = DISCLOSE_PROMPT_DEFAULT_YES;
add_menu(tmpwin, &nul_glyphinfo, &any, 0,
- any.a_char, ATR_NONE,
+ any.a_char, ATR_NONE, clr,
"Prompt, with default answer of \"Yes\"",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
if (*disclosure_names[i] == 'v') {
any.a_char = DISCLOSE_PROMPT_DEFAULT_SPECIAL; /* '?' */
add_menu(tmpwin, &nul_glyphinfo, &any, 0,
- any.a_char, ATR_NONE,
+ any.a_char, ATR_NONE, clr,
"Prompt, with default answer of \"Ask\" to request sort menu",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
winid tmpwin;
anything any;
boolean is_tty = WINDOWPORT("tty"), is_curses = WINDOWPORT("curses");
+ int clr = 0;
if (is_tty || is_curses) {
/* by Christian W. Cooper */
continue;
Sprintf(buf, "%-12.12s%c%.60s", msgwind[i][0], sep, msgwind[i][1]);
any.a_char = c = *msgwind[i][0];
- add_menu(tmpwin, &nul_glyphinfo, &any, *buf, 0, ATR_NONE, buf,
+ add_menu(tmpwin, &nul_glyphinfo, &any, *buf, 0, ATR_NONE, clr, buf,
(c == iflags.prevmsg_window) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
/* second line is prefixed by spaces that "c - " would use */
Sprintf(buf, "%4s%-12.12s%c%.60s", "", "", sep, msgwind[i][2]);
any.a_char = '\0';
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select message history display type:");
"-1 (off, 'z' to move upper-left, 'y' to zap wands)"
};
menu_item *mode_pick = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = 0; i < SIZE(npchoices); i++) {
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i, '0' + i,
- ATR_NONE, npchoices[i], MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, npchoices[i], MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select number_pad mode:");
if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) {
anything any;
int i;
menu_item *paranoia_picks = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
continue;
any.a_int = paranoia[i].flagmask;
add_menu(tmpwin, &nul_glyphinfo, &any, *paranoia[i].argname,
- 0, ATR_NONE, paranoia[i].explain,
+ 0, ATR_NONE, clr, paranoia[i].explain,
(flags.paranoia_bits & paranoia[i].flagmask)
? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
int i;
const char *burden_name, *burden_letters = "ubsntl";
menu_item *burden_pick = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
burden_name = burdentype[i];
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, burden_letters[i],
- 0, ATR_NONE, burden_name, MENU_ITEMFLAGS_NONE);
+ 0, ATR_NONE, clr, burden_name, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select encumbrance level:");
if (select_menu(tmpwin, PICK_ONE, &burden_pick) > 0) {
int i;
const char *mode_name;
menu_item *mode_pick = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
mode_name = runmodes[i];
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, *mode_name,
- 0, ATR_NONE, mode_name, MENU_ITEMFLAGS_NONE);
+ 0, ATR_NONE, clr, mode_name, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select run/travel display mode:");
if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) {
int i, n;
const char *sortl_name;
menu_item *sortl_pick = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
sortl_name = sortltype[i];
any.a_char = *sortl_name;
add_menu(tmpwin, &nul_glyphinfo, &any, *sortl_name,
- 0, ATR_NONE,
+ 0, ATR_NONE, clr,
sortl_name, (flags.sortloot == *sortl_name)
? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
menu_item *window_pick = (menu_item *) 0;
int pick_cnt;
char gp = iflags.getpos_coords;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_char = GPCOORDS_COMPASS;
add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_COMPASS,
- 0, ATR_NONE,
+ 0, ATR_NONE, clr,
"compass ('east' or '3s' or '2n,4w')",
(gp == GPCOORDS_COMPASS)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_COMFULL;
add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_COMFULL,
- 0, ATR_NONE,
+ 0, ATR_NONE, clr,
"full compass ('east' or '3south' or '2north,4west')",
(gp == GPCOORDS_COMFULL)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_MAP;
add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_MAP,
- 0, ATR_NONE, "map <x,y>",
+ 0, ATR_NONE, clr, "map <x,y>",
(gp == GPCOORDS_MAP)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_SCREEN;
add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_SCREEN,
- 0, ATR_NONE, "screen [row,column]",
+ 0, ATR_NONE, clr, "screen [row,column]",
(gp == GPCOORDS_SCREEN)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_NONE;
add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_NONE,
- 0, ATR_NONE, "none (no coordinates displayed)",
+ 0, ATR_NONE, clr, "none (no coordinates displayed)",
(gp == GPCOORDS_NONE)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_long = 0L;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"", MENU_ITEMFLAGS_NONE);
Sprintf(buf, "map: upper-left: <%d,%d>, lower-right: <%d,%d>%s",
1, 0, COLNO - 1, ROWNO - 1,
Verbose(2, handler_whatis_coord1)
? "; column 0 unused, off left edge" : "");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
if (strcmp(windowprocs.name, "tty")) /* only show for non-tty */
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"screen: row is offset to accommodate tty interface's use of top line",
MENU_ITEMFLAGS_NONE);
#if COLNO == 80
Sprintf(buf, "screen: upper-left: [%02d,%02d], lower-right: [%d,%d]%s",
0 + 2, 1, ROWNO - 1 + 2, COLNO - 1, COL80ARG);
#undef COL80ARG
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
buf, MENU_ITEMFLAGS_NONE);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"", MENU_ITEMFLAGS_NONE);
end_menu(tmpwin,
"Select coordinate display when auto-describing a map position:");
menu_item *window_pick = (menu_item *) 0;
int pick_cnt;
char gf = iflags.getloc_filter;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_char = (GFILTER_NONE + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 'n',
- 0, ATR_NONE, "no filtering",
+ 0, ATR_NONE, clr, "no filtering",
(gf == GFILTER_NONE)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = (GFILTER_VIEW + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 'v',
- 0, ATR_NONE, "in view only",
+ 0, ATR_NONE, clr, "in view only",
(gf == GFILTER_VIEW)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = (GFILTER_AREA + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 'a',
- 0, ATR_NONE, "in same area",
+ 0, ATR_NONE, clr, "in same area",
(gf == GFILTER_AREA)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
end_menu(tmpwin,
int opt_idx, numapes = 0;
char apebuf[2 + BUFSZ]; /* so &apebuf[1] is BUFSZ long for getlin() */
struct autopickup_exception *ape;
+ int clr = 0;
ape_again:
numapes = count_apes();
ape = g.apelist;
any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
"Always pickup '<'; never pickup '>'",
MENU_ITEMFLAGS_NONE);
for (i = 0; i < numapes && ape; i++) {
Sprintf(apebuf, "\"%c%s\"", ape->grab ? '<' : '>',
ape->pattern);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, apebuf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, apebuf, MENU_ITEMFLAGS_NONE);
ape = ape->next;
}
}
char buf[BUFSZ];
int opt_idx, nmc, mcclr, mcattr;
char mcbuf[BUFSZ];
+ int clr = 0;
menucolors_again:
nmc = count_menucolors();
/* combine main string and suffix */
Strcat(mcbuf, &buf[1]); /* skip buf[]'s initial quote */
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, mcbuf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, mcbuf, MENU_ITEMFLAGS_NONE);
tmp = tmp->next;
}
Sprintf(mcbuf, "%s menu colors",
const char *mtype;
menu_item *pick_list = (menu_item *) 0;
struct plinemsg_type *tmp = g.plinemsg_types;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
else
Strcat(strcat(mtbuf, tmp->pattern), "\"");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, mtbuf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, mtbuf, MENU_ITEMFLAGS_NONE);
tmp = tmp->next;
}
Sprintf(mtbuf, "%s message types",
" verbose_suppressor[%d] =%08X",
};
char vbbuf[QBUFSZ];
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
Snprintf(vbbuf, sizeof vbbuf, vbstrings[0], flags.verbose ? "On" : "Off");
any.a_int = 1;
- add_menu(tmpwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE, clr,
vbbuf, MENU_ITEMFLAGS_NONE);
for (i = 0; i < vb_elements; i++) {
Snprintf(vbbuf, sizeof vbbuf, vbstrings[1], i,
verbosity_suppressions[i]);
any.a_int = i + 2;
add_menu(tmpwin, &nul_glyphinfo, &any, 'b' + i, 0,
- ATR_NONE, vbbuf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, vbbuf, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select verbosity choices:");
anything any;
int i, pick_cnt;
menu_item *picks = (menu_item *) 0;
+ int clr = 0;
/* replace user patterns with color name ones and force 'menucolors' On */
basic_menu_colors(TRUE);
break;
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, colornames[i].name,
+ ATR_NONE, clr, colornames[i].name,
(colornames[i].color == NO_COLOR) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
}
menu_item *picks = (menu_item *) 0;
boolean allow_many = (prompt && !strncmpi(prompt, "Choose", 6));
int default_attr = ATR_NONE;
+ int clr = 0;
if (prompt && strstri(prompt, "menu headings"))
default_attr = iflags.menu_headings;
break;
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- attrnames[i].attr, attrnames[i].name,
+ attrnames[i].attr, clr, attrnames[i].name,
(attrnames[i].attr == default_attr) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
}
anything any;
int i, pick_cnt;
menu_item *picks = (menu_item *) 0;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
if (msgtype_names[i].descr) {
any.a_int = msgtype_names[i].msgtyp + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, msgtype_names[i].descr, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr,
+ msgtype_names[i].descr, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "How to show the message");
pick_cnt = select_menu(tmpwin, PICK_ONE, &picks);
int indexoffset, startpass, endpass;
boolean setinitial = FALSE, fromfile = FALSE,
gavehelp = FALSE, skiphelp = !iflags.cmdassist;
+ int clr = 0;
/* if we offer '?' as a choice and it is the only thing chosen,
we'll end up coming back here after showing the explanatory text */
if (helptext[i]) {
Sprintf(buf, "%4s%.75s", "", helptext[i]);
any.a_int = 0;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, FALSE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, FALSE, clr,
buf, MENU_ITEMFLAGS_NONE);
} else {
any.a_int = '?' + 1; /* processing pick_list subtracts 1 */
add_menu(tmpwin, &nul_glyphinfo, &any, '?', '?', ATR_NONE,
- "view help for options menu",
+ clr, "view help for options menu",
MENU_ITEMFLAGS_SKIPINVERT);
}
}
indexoffset = 1;
any = cg.zeroany;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings, clr,
"Booleans (selecting will toggle value):", MENU_ITEMFLAGS_NONE);
any.a_int = 0;
/* first list any other non-modifiable booleans, then modifiable ones */
if (pass == 0)
enhance_menu_text(buf, sizeof buf, pass, bool_p, &allopt[i]);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings,
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings, clr,
"Compounds (selecting will prompt for new value):",
MENU_ITEMFLAGS_NONE);
any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings, "Other settings:", MENU_ITEMFLAGS_NONE);
+ iflags.menu_headings, clr,
+ "Other settings:", MENU_ITEMFLAGS_NONE);
for (pass = startpass; pass <= endpass; pass++)
for (i = 0; (name = allopt[i].name) != 0; i++) {
#ifdef PREFIXES_IN_USE
any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
"Variable playground locations:", MENU_ITEMFLAGS_NONE);
for (i = 0; i < PREFIX_COUNT; i++)
doset_add_menu(tmpwin, fqn_prefix_names[i], -1, 0);
#ifdef PREFIXES_IN_USE
int j;
#endif
+ int clr = 0;
buf2[0] = '\0'; /* per opt functs may not guarantee this, so do it */
any = cg.zeroany;
else
Sprintf(buf, fmtstr_doset_tab, option, value);
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
{ 'r', "remove existing %s" }, /* [2] */
{ 'x', "exit this menu" }, /* [3] */
};
+ int clr = 0;
opt_idx = 0;
tmpwin = create_nhwindow(NHW_MENU);
Sprintf(tmpbuf, action_titles[i].desc,
(i == 1) ? makeplural(optname) : optname);
add_menu(tmpwin, &nul_glyphinfo,&any, action_titles[i].letr,
- 0, ATR_NONE, tmpbuf,
+ 0, ATR_NONE, clr, tmpbuf,
(i == 3) ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Do what?");
int i, n;
int ret;
int next_accelerator, accelerator;
+ int clr = 0;
if (class_list == (char *) 0 || class_select == (char *) 0)
return 0;
}
any.a_int = *class_list;
add_menu(win, &nul_glyphinfo, &any, accelerator,
- category ? *class_list : 0, ATR_NONE, buf,
+ category ? *class_list : 0, ATR_NONE, clr, buf,
selected ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
++class_list;
if (category > 0) {
/* for objects, add "A - ' ' all classes", after a separator */
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
any.a_int = (int) ' ';
Sprintf(buf, "%c %s", (char) any.a_int, "all classes of objects");
/* we won't preselect this even if the incoming list is empty;
having it selected means that it would have to be explicitly
de-selected in order to select anything else */
add_menu(win, &nul_glyphinfo, &any, 'A', 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
end_menu(win, prompt);
n = select_menu(win, way ? PICK_ANY : PICK_ONE, &pick_list);
coord cc; /* screen pos of unknown glyph */
boolean save_verbose; /* saved value of flags.verbose */
boolean from_screen; /* question from the screen */
+ int clr = 0;
cc.x = 0;
cc.y = 0;
versions: "Specify unknown object by cursor?" */
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 'y', ATR_NONE,
- "something on the map", MENU_ITEMFLAGS_NONE);
+ clr, "something on the map", MENU_ITEMFLAGS_NONE);
any.a_char = 'i';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "something you're carrying", MENU_ITEMFLAGS_NONE);
+ clr, "something you're carrying", MENU_ITEMFLAGS_NONE);
any.a_char = '?';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 'n', ATR_NONE,
- "something else (by symbol or name)",
+ clr, "something else (by symbol or name)",
MENU_ITEMFLAGS_NONE);
if (!u.uswallow && !Hallucination) {
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
/* these options work sensibly for the swallowed case,
but there's no reason for the player to use them then;
objects work fine when hallucinating, but screen
any.a_char = 'm';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "nearby monsters", MENU_ITEMFLAGS_NONE);
+ clr, "nearby monsters", MENU_ITEMFLAGS_NONE);
any.a_char = 'M';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "all monsters shown on map", MENU_ITEMFLAGS_NONE);
+ clr, "all monsters shown on map", MENU_ITEMFLAGS_NONE);
any.a_char = 'o';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "nearby objects", MENU_ITEMFLAGS_NONE);
+ clr, "nearby objects", MENU_ITEMFLAGS_NONE);
any.a_char = 'O';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "all objects shown on map", MENU_ITEMFLAGS_NONE);
+ clr, "all objects shown on map", MENU_ITEMFLAGS_NONE);
any.a_char = '^';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "nearby traps", MENU_ITEMFLAGS_NONE);
+ clr, "nearby traps", MENU_ITEMFLAGS_NONE);
any.a_char = '\"';
add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
- "all seen or remembered traps", MENU_ITEMFLAGS_NONE);
+ clr, "all seen or remembered traps",
+ MENU_ITEMFLAGS_NONE);
}
end_menu(win, "What do you want to look at:");
if (select_menu(win, PICK_ONE, &pick_list) > 0) {
menu_item *selected;
anything any;
int sel;
+ int clr = 0;
any = cg.zeroany; /* zero all bits */
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
Strcpy(helpbuf, help_menu_items[i].text);
}
any.a_int = i + 1;
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
helpbuf, MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select one item:");
unsigned sortflags;
glyph_info tmpglyphinfo = nul_glyphinfo;
Loot *sortedolist, *srtoli;
+ int clr = 0;
*pick_list = (menu_item *) 0;
if (!olist && !engulfer)
/* dotypeinv() supplies g.this_title to display as initial header;
intentionally avoid the menu_headings highlight attribute here */
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- g.this_title, MENU_ITEMFLAGS_NONE);
+ clr, g.this_title, MENU_ITEMFLAGS_NONE);
}
/*
* Run through the list and add the objects to the menu. If
if (sorted && !printed_type_name) {
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
let_to_name(*pack, FALSE,
((how != PICK_NONE)
&& iflags.menu_head_objsym)),
(qflags & USE_INVLET) ? curr->invlet
: (first && curr->oclass == COIN_CLASS) ? '$' : 0,
def_oc_syms[(int) objects[curr->otyp].oc_class].sym,
- ATR_NONE, doname_with_price(curr),
+ ATR_NONE, clr, doname_with_price(curr),
MENU_ITEMFLAGS_NONE);
first = FALSE;
}
Sprintf(buf, "%s Creatures",
is_animal(u.ustuck->data) ? "Swallowed" : "Engulfed");
add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings,
- buf, MENU_ITEMFLAGS_NONE);
+ clr, buf, MENU_ITEMFLAGS_NONE);
}
fake_hero_object = cg.zeroobj;
fake_hero_object.quan = 1L; /* not strictly necessary... */
map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo);
add_menu(win, &tmpglyphinfo, &any,
/* fake inventory letter, no group accelerator */
- CONTAINED_SYM, 0, ATR_NONE, an(self_lookat(buf)),
+ CONTAINED_SYM, 0, ATR_NONE, clr, an(self_lookat(buf)),
MENU_ITEMFLAGS_NONE);
}
int num_buc_types = 0;
unsigned itemflags = MENU_ITEMFLAGS_NONE;
int num_justpicked = 0;
+ int clr = 0;
*pick_list = (menu_item *) 0;
if (!olist)
any = cg.zeroany;
any.a_int = 'A';
itemflags = MENU_ITEMFLAGS_SKIPINVERT;
- add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, clr,
(qflags & WORN_TYPES) ? "Auto-select every item being worn"
: "Auto-select every relevant item",
itemflags);
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
}
if ((qflags & ALL_TYPES) && (ccount > 1)) {
any = cg.zeroany;
any.a_int = ALL_TYPES_SELECTED;
itemflags = MENU_ITEMFLAGS_SKIPINVERT;
- add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, clr,
(qflags & WORN_TYPES) ? "All worn types" : "All types",
itemflags);
invlet = 'b';
add_menu(
win, &nul_glyphinfo, &any, invlet++,
def_oc_syms[(int) objects[curr->otyp].oc_class].sym,
- ATR_NONE, let_to_name(*pack, FALSE,
- (how != PICK_NONE)
- && iflags.menu_head_objsym),
+ ATR_NONE, clr, let_to_name(*pack, FALSE,
+ (how != PICK_NONE)
+ && iflags.menu_head_objsym),
MENU_ITEMFLAGS_NONE);
collected_type_name = TRUE;
}
|| do_uncursed || do_buc_unknown) {
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
}
/* unpaid items if there are any */
any = cg.zeroany;
any.a_int = 'u';
add_menu(win, &nul_glyphinfo, &any, invlet, 0,
- ATR_NONE, "Unpaid items", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Unpaid items", MENU_ITEMFLAGS_NONE);
}
/* billed items: checked by caller, so always include if BILLED_TYPES */
if (qflags & BILLED_TYPES) {
invlet = 'x';
any = cg.zeroany;
any.a_int = 'x';
- add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, clr,
"Unpaid items already used up", MENU_ITEMFLAGS_NONE);
}
any = cg.zeroany;
any.a_int = 'B';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
- "Items known to be Blessed", itemflags);
+ clr, "Items known to be Blessed", itemflags);
}
if (do_cursed) {
invlet = 'C';
any = cg.zeroany;
any.a_int = 'C';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
- "Items known to be Cursed", itemflags);
+ clr, "Items known to be Cursed", itemflags);
}
if (do_uncursed) {
invlet = 'U';
any = cg.zeroany;
any.a_int = 'U';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
- "Items known to be Uncursed", itemflags);
+ clr, "Items known to be Uncursed", itemflags);
}
if (do_buc_unknown) {
invlet = 'X';
any = cg.zeroany;
any.a_int = 'X';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
- "Items of unknown Bless/Curse status", itemflags);
+ clr, "Items of unknown Bless/Curse status", itemflags);
}
if (num_justpicked) {
char tmpbuf[BUFSZ];
any = cg.zeroany;
any.a_int = 'P';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
- tmpbuf, itemflags);
+ clr, tmpbuf, itemflags);
}
end_menu(win, qstr);
n = select_menu(win, how, pick_list);
int prev_inquiry = 0;
boolean prev_loot = FALSE;
int num_conts = 0;
+ int clr = 0;
g.abort_looting = FALSE;
if (Is_container(cobj)) {
any.a_obj = cobj;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, doname(cobj), MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, doname(cobj), MENU_ITEMFLAGS_NONE);
}
end_menu(win, "Loot which containers?");
n = select_menu(win, PICK_ANY, &pick_list);
char buf[BUFSZ];
int n;
const char *menuselector = flags.lootabc ? abc_chars : lootchars;
+ int clr = 0;
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
any.a_int = 1; /* ':' */
Sprintf(buf, "Look inside %s", thesimpleoname(obj));
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
if (outokay) {
any.a_int = 2; /* 'o' */
Sprintf(buf, "take %s out", something);
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
if (inokay) {
any.a_int = 3; /* 'i' */
Sprintf(buf, "put %s in", something);
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
if (outokay) {
any.a_int = 4; /* 'b' */
Sprintf(buf, "%stake out, then put in", inokay ? "both; " : "");
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
if (inokay) {
any.a_int = 5; /* 'r' */
Sprintf(buf, "%sput in, then take out",
outokay ? "both reversed; " : "");
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
any.a_int = 6; /* 's' */
Sprintf(buf, "stash one item into %s", thesimpleoname(obj));
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
any.a_int = 0;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
if (more_containers) {
any.a_int = 7; /* 'n' */
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, "loot next container", MENU_ITEMFLAGS_SELECTED);
+ ATR_NONE, clr, "loot next container", MENU_ITEMFLAGS_SELECTED);
}
any.a_int = 8; /* 'q' */
Strcpy(buf, alreadyused ? "done" : "do nothing");
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0,
- ATR_NONE, buf,
+ ATR_NONE, clr, buf,
more_containers ? MENU_ITEMFLAGS_NONE : MENU_ITEMFLAGS_SELECTED);
end_menu(win, prompt);
anything any;
menu_item *pick_list = (menu_item *) 0;
struct obj dummyobj, *otmp;
+ int clr = 0;
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
if (Is_container(cobj)) {
++i;
any.a_obj = cobj;
- add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, doname(cobj), MENU_ITEMFLAGS_NONE);
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ clr, doname(cobj), MENU_ITEMFLAGS_NONE);
}
if (g.invent) {
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
any.a_obj = &dummyobj;
/* use 'i' for inventory unless there are so many
containers that it's already being used */
i = (i <= 'i' - 'a' && !flags.lootabc) ? 'i' : 0;
add_menu(win, &nul_glyphinfo, &any, i, 0, ATR_NONE,
- "tip something being carried",
+ clr, "tip something being carried",
MENU_ITEMFLAGS_SELECTED);
}
end_menu(win, "Tip which container?");
menu_item *pick_list = (menu_item *) 0;
struct obj dummyobj, *otmp;
int n_conts = count_containers(g.invent);
+ int clr = 0;
/* we're carrying the box, don't count it as possible target */
if (box->where == OBJ_INVENT)
any = cg.zeroany;
any.a_obj = &dummyobj;
add_menu(win, &nul_glyphinfo, &any, '-', 0, ATR_NONE,
- "on the floor", MENU_ITEMFLAGS_SELECTED);
+ clr, "on the floor", MENU_ITEMFLAGS_SELECTED);
any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
for (otmp = g.invent; otmp; otmp = otmp->nobj)
if (Is_container(otmp) && (otmp != box)) {
any = cg.zeroany;
any.a_obj = otmp;
add_menu(win, &nul_glyphinfo, &any, otmp->invlet, 0,
- ATR_NONE, doname(otmp), MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, doname(otmp), MENU_ITEMFLAGS_NONE);
}
Sprintf(buf, "Where to tip the contents of %s", doname(box));
char **saved;
menu_item *chosen_game = (menu_item *) 0;
int k, clet, ch = 0; /* ch: 0 => new game */
+ int clr = 0;
*g.plname = '\0';
saved = get_saved_games(); /* array of character names */
/* COPYRIGHT_BANNER_[ABCD] */
for (k = 1; k <= 4; ++k)
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- copyright_banner_line(k), MENU_ITEMFLAGS_NONE);
- add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "",
+ clr, copyright_banner_line(k), MENU_ITEMFLAGS_NONE);
+ add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, "",
MENU_ITEMFLAGS_NONE);
}
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "Select one of your saved games", MENU_ITEMFLAGS_NONE);
+ clr, "Select one of your saved games", MENU_ITEMFLAGS_NONE);
for (k = 0; saved[k]; ++k) {
any.a_int = k + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, saved[k], MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, saved[k], MENU_ITEMFLAGS_NONE);
}
clet = (k <= 'n' - 'a') ? 'n' : 0; /* new game */
any.a_int = -1; /* not >= 0 */
add_menu(tmpwin, &nul_glyphinfo, &any, clet, 0, ATR_NONE,
- "Start a new character", MENU_ITEMFLAGS_NONE);
+ clr, "Start a new character", MENU_ITEMFLAGS_NONE);
clet = (k + 1 <= 'q' - 'a') ? 'q' : 0; /* quit */
any.a_int = -2;
add_menu(tmpwin, &nul_glyphinfo, &any, clet, 0, ATR_NONE,
- "Never mind (quit)", MENU_ITEMFLAGS_SELECTED);
+ clr, "Never mind (quit)", MENU_ITEMFLAGS_SELECTED);
/* no prompt on end_menu, as we've done our own at the top */
end_menu(tmpwin, (char *) 0);
if (select_menu(tmpwin, PICK_ONE, &chosen_game) > 0) {
char buf[BUFSZ];
const char *what = 0, *constrainer = 0, *forcedvalue = 0;
int f = 0, r, c, gend, a, i, allowmask;
+ int clr = 0;
r = flags.initrole;
c = flags.initrace;
any.a_int = 0;
/* use four spaces of padding to fake a grayed out menu choice */
Sprintf(buf, "%4s%s forces %s", "", constrainer, forcedvalue);
- add_menu(where, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf,
+ add_menu(where, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, buf,
MENU_ITEMFLAGS_NONE);
} else if (what) {
any.a_int = RS_menu_arg(which);
Sprintf(buf, "Pick%s %s first", (f >= 0) ? " another" : "", what);
add_menu(where, &nul_glyphinfo, &any, RS_menu_let[which], 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
} else if (which == RS_filter) {
char setfiltering[40];
Sprintf(setfiltering, "%s role/race/&c filtering",
gotrolefilter() ? "Reset" : "Set");
add_menu(where, &nul_glyphinfo, &any, '~', 0, ATR_NONE,
- setfiltering, MENU_ITEMFLAGS_NONE);
+ clr, setfiltering, MENU_ITEMFLAGS_NONE);
} else if (which == ROLE_RANDOM) {
any.a_int = ROLE_RANDOM;
add_menu(where, &nul_glyphinfo, &any, '*', 0,
- ATR_NONE, "Random",
+ ATR_NONE, clr, "Random",
preselect ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} else if (which == ROLE_NONE) {
any.a_int = ROLE_NONE;
add_menu(where, &nul_glyphinfo, &any, 'q', 0,
- ATR_NONE, "Quit",
+ ATR_NONE, clr, "Quit",
preselect ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} else {
impossible("role_menu_extra: bad arg (%d)", which);
anything any;
char let;
int i, n, choice;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
/* separate final choice from others with a blank line */
any.a_int = 0;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
} else {
let = 'a' + i;
}
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, let, 0,
- ATR_NONE, spl_sortchoices[i],
+ ATR_NONE, clr, spl_sortchoices[i],
(i == g.spl_sortmode) ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "View known spells list sorted");
const char *fmt;
menu_item *selected;
anything any;
+ int clr = 0;
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD);
Sprintf(eos(buf), "%c%6s", sep, "turns");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings, buf, MENU_ITEMFLAGS_NONE);
+ iflags.menu_headings, clr, buf, MENU_ITEMFLAGS_NONE);
for (i = 0; i < MAXSPELL && spellid(i) != NO_SPELL; i++) {
splnum = !g.spl_orderindx ? i : g.spl_orderindx[i];
Sprintf(buf, fmt, spellname(splnum), spellev(splnum),
any.a_int = splnum + 1; /* must be non-zero */
add_menu(tmpwin, &nul_glyphinfo, &any, spellet(splnum), 0,
- ATR_NONE, buf,
+ ATR_NONE, clr, buf,
(splnum == splaction)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
/* more than 1 spell, add an extra menu entry */
any.a_int = SPELLMENU_SORT + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, '+', 0,
- ATR_NONE, "[sort spells]", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "[sort spells]", MENU_ITEMFLAGS_NONE);
}
}
end_menu(tmpwin, prompt);
char *symset_name, fmtstr[20];
struct symsetentry *sl;
int res, which_set, setcount = 0, chosen = -2, defindx = 0;
+ int clr = 0;
which_set = rogueflag ? ROGUESET : PRIMARYSET;
g.symset_list = (struct symsetentry *) 0;
if (!symset_name)
defindx = any.a_int;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "Default Symbols",
+ clr, "Default Symbols",
(any.a_int == defindx) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
defindx = any.a_int;
Sprintf(buf, fmtstr, sl->name, sl->desc ? sl->desc : "");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf,
+ ATR_NONE, clr, buf,
(any.a_int == defindx) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
}
menu_item *picks = (menu_item *) 0;
anything any;
winid win;
- int i, tmode;
+ int i, tmode, clr = 0;
win = create_nhwindow(NHW_MENU);
start_menu(win, MENU_BEHAVE_STANDARD);
for (i = 0; i < SIZE(tports); ++i) {
any.a_int = (int) tports[i].menulet;
add_menu(win, &nul_glyphinfo, &any, (char) any.a_int, 0,
- ATR_NONE, tports[i].menudesc,
+ ATR_NONE, clr, tports[i].menudesc,
(tports[i].menulet == 'w') ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE);
}
anything any;
winid win;
boolean speedy = FALSE;
+ int clr = 0;
/* player knows about #enhance, don't show tip anymore */
g.context.enhance_tip = TRUE;
? "when you're more experienced"
: "if skill slots become available");
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
if (maxxed_cnt > 0) {
Sprintf(buf,
"(Skill%s flagged by \"#\" cannot be enhanced any further.)",
plur(maxxed_cnt));
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
}
/* List the skills, making ones that could be advanced
any = cg.zeroany;
if (i == skill_ranges[pass].first)
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- iflags.menu_headings,
+ iflags.menu_headings, clr,
skill_ranges[pass].name, MENU_ITEMFLAGS_NONE);
if (P_RESTRICTED(i))
}
any.a_int = can_advance(i, speedy) ? i + 1 : 0;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, buf, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
}
Strcpy(buf, (to_advance > 0) ? "Pick a skill to advance:"
static void dump_destroy_nhwindow(winid);
static void dump_start_menu(winid, unsigned long);
static void dump_add_menu(winid, const glyph_info *, const ANY_P *, char,
- char, int, const char *, unsigned int);
+ char, int, int, const char *, unsigned int);
static void dump_end_menu(winid, const char *);
static int dump_select_menu(winid, int, MENU_ITEM_P **);
static void dump_putstr(winid, int, const char *);
static winid hup_create_nhwindow(int);
static int hup_select_menu(winid, int, MENU_ITEM_P **);
static void hup_add_menu(winid, const glyph_info *, const anything *, char,
- char, int, const char *, unsigned int);
+ char, int, int, const char *, unsigned int);
static void hup_end_menu(winid, const char *);
static void hup_putstr(winid, int, const char *);
static void hup_print_glyph(winid, xchar, xchar, const glyph_info *,
char sel UNUSED,
char grpsel UNUSED,
int attr UNUSED,
+ int clr UNUSED,
const char *txt UNUSED,
unsigned int itemflags UNUSED)
{
char ch,
char gch UNUSED,
int attr UNUSED,
+ int clr UNUSED,
const char *str,
unsigned int itemflags UNUSED)
{
{
winid tmpwin;
anything any;
- int i;
+ int i, clr = 0;
menu_item *console_key_handling_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
for (i = default_keyhandling; i < SIZE(legal_key_handling); i++) {
any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i,
- 0, ATR_NONE,
+ 0, ATR_NONE, clr,
legal_key_handling[i], MENU_ITEMFLAGS_NONE);
}
end_menu(tmpwin, "Select windows console key handling:");
}
void NetHackQtBind::qt_add_menu(winid wid, const glyph_info *glyphinfo,
- const ANY_P * identifier, char ch, char gch, int attr,
+ const ANY_P * identifier, char ch, char gch, int attr, int clr UNUSED,
const char *str, unsigned itemflags)
{
NetHackQtWindow* window=id_to_window[(int)wid];
static void qt_display_file(const char *filename, boolean must_exist);
static void qt_start_menu(winid wid, unsigned long mbehavior);
static void qt_add_menu(winid wid, const glyph_info *glyphinfo,
- const ANY_P * identifier, char ch, char gch, int attr,
+ const ANY_P * identifier, char ch, char gch, int attr, int clr,
const char *str, unsigned int itemflags);
static void qt_end_menu(winid wid, const char *prompt);
static int qt_select_menu(winid wid, int how, MENU_ITEM_P **menu_list);
menu_item *menu_list;
#define LLEN 128
char line[LLEN];
+ int clr = 0;
/* Use the port-independent file opener to see if the file exists. */
fp = dlb_fopen(str, RDTMODE);
any = cg.zeroany;
while (dlb_fgets(line, LLEN, fp)) {
X11_add_menu(newwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- line, MENU_ITEMFLAGS_NONE);
+ clr, line, MENU_ITEMFLAGS_NONE);
}
(void) dlb_fclose(fp);
char ch, /* selector letter; 0 if not selectable */
char gch, /* group accelerator (0 = no group) */
int attr,
+ int clr UNUSED,
const char *str,
unsigned itemflags)
{
void chainin_display_file(const char *, boolean);
void chainin_start_menu(winid, unsigned long);
void chainin_add_menu(winid, const glyph_info *, const ANY_P *,
- char, char, int,
+ char, char, int, int,
const char *, unsigned int);
void chainin_end_menu(winid, const char *);
int chainin_select_menu(winid, int, MENU_ITEM_P **);
char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */
+ int clr, /* attribute for string (like tty_putstr()) */
const char *str, /* menu string */
unsigned int itemflags) /* flags such as item is marked as selected
MENU_ITEMFLAGS_SELECTED */
{
(*cibase->nprocs->win_add_menu)(cibase->ndata, window, glyphinfo,
- identifier, ch, gch, attr, str, itemflags);
+ identifier, ch, gch, attr, clr, str, itemflags);
}
void
void chainout_display_file(void *,const char *, boolean);
void chainout_start_menu(void *,winid, unsigned long);
void chainout_add_menu(void *,winid, const glyph_info *, const ANY_P *,
- char, char, int,
+ char, char, int, int,
const char *, unsigned int);
void chainout_end_menu(void *,winid, const char *);
int chainout_select_menu(void *,winid, int, MENU_ITEM_P **);
char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */
+ int clr, /* clr for string */
const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as marked as selected */
{
struct chainout_data *tdp = vp;
(*tdp->nprocs->win_add_menu)(window, glyphinfo, identifier, ch, gch,
- attr, str, itemflags);
+ attr, clr, str, itemflags);
}
void
void trace_display_file(void *,const char *, boolean);
void trace_start_menu(void *,winid, unsigned long);
void trace_add_menu(void *,winid, const glyph_info *, const ANY_P *,
- char, char, int,
+ char, char, int, int,
const char *, unsigned int);
void trace_end_menu(void *,winid, const char *);
int trace_select_menu(void *,winid, int, MENU_ITEM_P **);
char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */
+ int clr, /* color for string */
const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as marked as selected */
{
PRE;
(*tdp->nprocs->win_add_menu)(tdp->ndata, window, glyphinfo,
- identifier,ch, gch, attr, str, itemflags);
+ identifier,ch, gch, attr, clr, str, itemflags);
POST;
}
anything identifier;
menu_item *selected = NULL;
winid wid = curses_get_wid(NHW_MENU);
+ int clr = 0;
identifier.a_void = 0;
curses_start_menu(wid, MENU_BEHAVE_STANDARD);
identifier.a_int = (count + 1); /* Must be non-zero */
curses_add_menu(wid, &nul_glyphinfo, &identifier, curletter, 0,
- A_NORMAL, choices[count], MENU_ITEMFLAGS_NONE);
+ A_NORMAL, clr, choices[count], MENU_ITEMFLAGS_NONE);
used_letters[count] = curletter;
}
/* Random Selection */
identifier.a_int = ROLE_RANDOM;
curses_add_menu(wid, &nul_glyphinfo, &identifier, '*', 0,
- A_NORMAL, "Random", MENU_ITEMFLAGS_NONE);
+ A_NORMAL, clr, "Random", MENU_ITEMFLAGS_NONE);
/* Quit prompt */
identifier.a_int = ROLE_NONE;
curses_add_menu(wid, &nul_glyphinfo, &identifier, 'q', 0,
- A_NORMAL, "Quit", MENU_ITEMFLAGS_NONE);
+ A_NORMAL, clr, "Quit", MENU_ITEMFLAGS_NONE);
curses_end_menu(wid, prompt);
ret = curses_select_menu(wid, PICK_ONE, &selected);
if (ret == 1) {
add_menu(winid wid, const glyph_info *glyphinfo,
const anything identifier,
char accelerator, char groupacc,
- int attr, char *str, unsigned int itemflags)
+ int attr, int color,
+ char *str, unsigned int itemflags)
-- Add a text line str to the given menu window. If identifier
is 0, then the line cannot be selected (e.g. a title).
Otherwise, identifier is the value returned if the line is
curses_add_menu(winid wid, const glyph_info *glyphinfo,
const ANY_P *identifier,
char accelerator, char group_accel, int attr,
- const char *str, unsigned itemflags)
+ int clr UNUSED, const char *str, unsigned itemflags)
{
int curses_attr;
boolean do_lifo = (iflags.prevmsg_window != 'f');
#ifdef DEBUG
static int showturn = 0; /* 1: show hero_seq value in separators */
+ int clr = 0;
/*
* Set DEBUGFILES=MesgTurn in environment or sysconf to decorate
(mesg->turn >> 3), (mesg->turn & 7L));
#endif
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0,
- A_NORMAL, sepbuf, MENU_ITEMFLAGS_NONE);
+ A_NORMAL, clr, sepbuf, MENU_ITEMFLAGS_NONE);
}
turn = mesg->turn;
}
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0,
- A_NORMAL, mesg->str, MENU_ITEMFLAGS_NONE);
+ A_NORMAL, clr, mesg->str, MENU_ITEMFLAGS_NONE);
}
if (!count)
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0,
- A_NORMAL, "[No past messages available.]",
+ A_NORMAL, clr, "[No past messages available.]",
MENU_ITEMFLAGS_NONE);
curses_end_menu(wid, "");
char buf[BUFSZ];
menu_item *selected = NULL;
dlb *fp = dlb_fopen(filename, "r");
+ int clr = 0;
if (fp == NULL) {
if (must_exist)
while (dlb_fgets(buf, BUFSZ, fp) != NULL) {
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0,
- A_NORMAL, buf, FALSE);
+ A_NORMAL, clr, buf, FALSE);
}
dlb_fclose(fp);
char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like safe_putstr()) */
+ int clr, /* colour for string */
const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as marked as selected */
{
VDECLCB(shim_display_file,(const char *name, boolean complain), "vsi", P2V name, A2P complain)
VDECLCB(shim_start_menu,(winid window, unsigned long mbehavior), "vii", A2P window, A2P mbehavior)
VDECLCB(shim_add_menu,
- (winid window, const glyph_info *glyphinfo, const ANY_P *identifier, char ch, char gch, int attr, const char *str, unsigned int itemflags),
+ (winid window, const glyph_info *glyphinfo, const ANY_P *identifier, char ch, char gch, int attr, int clr, const char *str, unsigned int itemflags),
"vippiiisi",
- A2P window, P2V glyphinfo, P2V identifier, A2P ch, A2P gch, A2P attr, P2V str, A2P itemflags)
+ A2P window, P2V glyphinfo, P2V identifier, A2P ch, A2P gch, A2P attr, A2P clr, P2V str, A2P itemflags)
VDECLCB(shim_end_menu,(winid window, const char *prompt), "vis", A2P window, P2V prompt)
/* XXX: shim_select_menu menu_list is an output */
DECLCB(int, shim_select_menu,(winid window, int how, MENU_ITEM_P **menu_list), "iiio", A2P window, A2P how, P2V menu_list)
static boolean calling_from_update_inventory = FALSE;
static boolean assesstty(enum inv_modes, short *, short *,
long *, long *, long *, long *, long *);
-static void ttyinv_populate_slot(struct WinDesc *, int, int, const char *);
+static void ttyinv_populate_slot(struct WinDesc *, int, int, const char *, int32_t);
#endif
/*
winid win;
anything any;
menu_item *selected = 0;
+ int clr = 0;
/* Used to avoid "Is this ok?" if player has already specified all
* four facets of role.
role_menu_extra(ROLE_RANDOM, win, TRUE);
any = cg.zeroany; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
role_menu_extra(RS_RACE, win, FALSE);
role_menu_extra(RS_GENDER, win, FALSE);
role_menu_extra(RS_ALGNMNT, win, FALSE);
role_menu_extra(ROLE_RANDOM, win, TRUE);
any.a_int = 0; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
role_menu_extra(RS_ROLE, win, FALSE);
role_menu_extra(RS_GENDER, win, FALSE);
role_menu_extra(RS_ALGNMNT, win, FALSE);
role_menu_extra(ROLE_RANDOM, win, TRUE);
any.a_int = 0; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
role_menu_extra(RS_ROLE, win, FALSE);
role_menu_extra(RS_RACE, win, FALSE);
role_menu_extra(RS_ALGNMNT, win, FALSE);
role_menu_extra(ROLE_RANDOM, win, TRUE);
any.a_int = 0; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
role_menu_extra(RS_ROLE, win, FALSE);
role_menu_extra(RS_RACE, win, FALSE);
role_menu_extra(RS_GENDER, win, FALSE);
aligns[ALGN].adj, plbuf, races[RACE].adj,
(GEND == 1 && roles[ROLE].name.f) ? roles[ROLE].name.f
: roles[ROLE].name.m);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, pbuf,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr, pbuf,
MENU_ITEMFLAGS_NONE);
/* blank separator */
any.a_int = 0;
add_menu(win, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
/* [ynaq] menu choices */
any.a_int = 1;
add_menu(win, &nul_glyphinfo, &any, 'y', 0,
- ATR_NONE, "Yes; start game", MENU_ITEMFLAGS_SELECTED);
+ ATR_NONE, clr, "Yes; start game", MENU_ITEMFLAGS_SELECTED);
any.a_int = 2;
add_menu(win, &nul_glyphinfo, &any, 'n', 0,
- ATR_NONE, "No; choose role again", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "No; choose role again", MENU_ITEMFLAGS_NONE);
if (iflags.renameallowed) {
any.a_int = 3;
add_menu(win, &nul_glyphinfo, &any, 'a', 0, ATR_NONE,
- "Not yet; choose another name", MENU_ITEMFLAGS_NONE);
+ clr, "Not yet; choose another name", MENU_ITEMFLAGS_NONE);
}
any.a_int = -1;
add_menu(win, &nul_glyphinfo, &any, 'q', 0,
- ATR_NONE, "Quit", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Quit", MENU_ITEMFLAGS_NONE);
Sprintf(pbuf, "Is this ok? [yn%sq]", iflags.renameallowed ? "a" : "");
end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected);
{
winid win;
anything any;
- int i, n;
+ int i, n, clr = 0;
char filterprompt[QBUFSZ];
menu_item *selected = 0;
any = cg.zeroany;
/* no extra blank line preceding this entry; end_menu supplies one */
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
"Unacceptable roles", MENU_ITEMFLAGS_NONE);
setup_rolemenu(win, FALSE, ROLE_NONE, ROLE_NONE, ROLE_NONE);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "", MENU_ITEMFLAGS_NONE);
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "Unacceptable races", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ clr, "Unacceptable races", MENU_ITEMFLAGS_NONE);
setup_racemenu(win, FALSE, ROLE_NONE, ROLE_NONE, ROLE_NONE);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "", MENU_ITEMFLAGS_NONE);
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "Unacceptable genders", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ clr, "Unacceptable genders", MENU_ITEMFLAGS_NONE);
setup_gendmenu(win, FALSE, ROLE_NONE, ROLE_NONE, ROLE_NONE);
- add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "", MENU_ITEMFLAGS_NONE);
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
- "Unacceptable alignments", MENU_ITEMFLAGS_NONE);
+ clr, "", MENU_ITEMFLAGS_NONE);
+ add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
+ clr, "Unacceptable alignments", MENU_ITEMFLAGS_NONE);
setup_algnmenu(win, FALSE, ROLE_NONE, ROLE_NONE, ROLE_NONE);
Sprintf(filterprompt, "Pick all that apply%s",
int i;
boolean role_ok;
char thisch, lastch = '\0', rolenamebuf[50];
+ int clr = 0;
any = cg.zeroany; /* zero out all bits */
for (i = 0; roles[i].name.m; i++) {
/* !filtering implies reset_role_filtering() where we want to
mark this role as preseleted if current filter excludes it */
add_menu(win, &nul_glyphinfo, &any, thisch, 0,
- ATR_NONE, an(rolenamebuf),
+ ATR_NONE, clr, an(rolenamebuf),
(!filtering && !role_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
lastch = thisch;
boolean race_ok;
int i;
char this_ch;
+ int clr = 0;
any = cg.zeroany;
for (i = 0; races[i].noun; i++) {
add_menu(win, &nul_glyphinfo, &any,
filtering ? this_ch : highc(this_ch),
filtering ? highc(this_ch) : 0,
- ATR_NONE, races[i].noun,
+ ATR_NONE, clr, races[i].noun,
(!filtering && !race_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
boolean gend_ok;
int i;
char this_ch;
+ int clr = 0;
any = cg.zeroany;
for (i = 0; i < ROLE_GENDERS; i++) {
add_menu(win, &nul_glyphinfo, &any,
filtering ? this_ch : highc(this_ch),
filtering ? highc(this_ch) : 0,
- ATR_NONE, genders[i].adj,
+ ATR_NONE, clr, genders[i].adj,
(!filtering && !gend_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
boolean algn_ok;
int i;
char this_ch;
+ int clr = 0;
any = cg.zeroany;
for (i = 0; i < ROLE_ALIGNS; i++) {
add_menu(win, &nul_glyphinfo, &any,
filtering ? this_ch : highc(this_ch),
filtering ? highc(this_ch) : 0,
- ATR_NONE, aligns[i].adj,
+ ATR_NONE, clr, aligns[i].adj,
(!filtering && !algn_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
}
char ch, /* selector letter (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */
+ int clr UNUSED, /* color for string */
const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as MENU_ITEMFLAGS_SELECTED */
{
short len;
int lmax, n;
char menu_ch;
+ int clr = 0;
if (window == WIN_ERR || (cw = wins[window]) == (struct WinDesc *) 0
|| cw->type != NHW_MENU)
any = cg.zeroany; /* not selectable */
tty_add_menu(window, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, "", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
tty_add_menu(window, &nul_glyphinfo, &any, 0, 0,
- ATR_NONE, prompt, MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, prompt, MENU_ITEMFLAGS_NONE);
}
/* 52: 'a'..'z' and 'A'..'Z'; avoids selector duplication within a page */
/* side: left side panel or right side panel, not a window column */
side = slot < (!show_gold ? 26 : 27) ? 0 : 1;
- ttyinv_populate_slot(cw, row, side, text);
+ ttyinv_populate_slot(cw, row, side, text, 0);
}
calling_from_update_inventory = TRUE;
row = (slot % (!show_gold ? 26 : 27)) + 1; /* +1: top border */
/* side: left side panel or right side panel, not a window column */
side = slot < (!show_gold ? 26 : 27) ? 0 : 1;
- ttyinv_populate_slot(cw, row, side, pi->fromcore.text);
+ ttyinv_populate_slot(cw, row, side,
+ pi->fromcore.text, pi->fromcore.clr);
break;
case render:
if ((cw = wins[window]) == (struct WinDesc *) 0)
struct WinDesc *cw,
int row, /* 'row' within the window, not within screen */
int side, /* 'side'==0 is left panel or ==1 is right panel */
- const char *text)
+ const char *text, int32_t color)
{
struct tty_perminvent_cell *cell;
char c;
col = bordercol[side] + 1;
endcol = bordercol[side + 1] - 1;
cell = &cw->cells[row][col];
+ if (cell->color != color)
+ cell->refresh = 1;
+ cell->color = color;
for (ccnt = col; ccnt <= endcol; ++ccnt, ++cell) {
/* [don't expect this to happen] if there was a glyph here, release
memory allocated for it; gi pointer and ttychar character overlay
char accelerator;
char group_accel;
int attr;
+ int clr;
const char *str;
boolean presel;
unsigned int itemflags;
anything any;
menu_item *selected = 0;
DWORD box_result;
+ int clr = 0;
logDebug("prompt_for_player_selection()\n");
} else
Strcpy(rolenamebuf, roles[i].name.m);
}
- add_menu(win, &nul_glyphinfo, &any, thisch, 0,
- ATR_NONE, an(rolenamebuf), MENU_ITEMFLAGS_NONE);
+ add_menu(win, &nul_glyphinfo, &any, thisch, 0, ATR_NONE,
+ clr, an(rolenamebuf), MENU_ITEMFLAGS_NONE);
lastch = thisch;
}
}
if (any.a_int == 0) /* must be non-zero */
any.a_int = randrole(FALSE) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0,
- ATR_NONE, "Random", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Random", MENU_ITEMFLAGS_NONE);
any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0,
- ATR_NONE, "Quit", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Quit", MENU_ITEMFLAGS_NONE);
Sprintf(pbuf, "Pick a role for your %s", plbuf);
end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected);
flags.initalign)) {
any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any,
- races[i].noun[0], 0, ATR_NONE,
+ races[i].noun[0], 0, ATR_NONE, clr,
races[i].noun, MENU_ITEMFLAGS_NONE);
}
any.a_int = pick_race(flags.initrole, flags.initgend,
if (any.a_int == 0) /* must be non-zero */
any.a_int = randrace(flags.initrole) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0,
- ATR_NONE, "Random", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Random", MENU_ITEMFLAGS_NONE);
any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0,
- ATR_NONE, "Quit", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Quit", MENU_ITEMFLAGS_NONE);
Sprintf(pbuf, "Pick the race of your %s", plbuf);
end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected);
flags.initalign)) {
any.a_int = i + 1;
add_menu(win, &nul_glyphinfo, &any,
- genders[i].adj[0], 0, ATR_NONE,
+ genders[i].adj[0], 0, ATR_NONE, clr,
genders[i].adj, MENU_ITEMFLAGS_NONE);
}
any.a_int = pick_gend(flags.initrole, flags.initrace,
if (any.a_int == 0) /* must be non-zero */
any.a_int = randgend(flags.initrole, flags.initrace) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0,
- ATR_NONE, "Random", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Random", MENU_ITEMFLAGS_NONE);
any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0,
- ATR_NONE, "Quit", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Quit", MENU_ITEMFLAGS_NONE);
Sprintf(pbuf, "Pick the gender of your %s", plbuf);
end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected);
flags.initgend, i)) {
any.a_int = i + 1;
add_menu(win, &nul_glyphinfo, &any,
- aligns[i].adj[0], 0, ATR_NONE,
+ aligns[i].adj[0], 0, ATR_NONE, clr,
aligns[i].adj, MENU_ITEMFLAGS_NONE);
}
any.a_int = pick_align(flags.initrole, flags.initrace,
if (any.a_int == 0) /* must be non-zero */
any.a_int = randalign(flags.initrole, flags.initrace) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0,
- ATR_NONE, "Random", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Random", MENU_ITEMFLAGS_NONE);
any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0,
- ATR_NONE, "Quit", MENU_ITEMFLAGS_NONE);
+ ATR_NONE, clr, "Quit", MENU_ITEMFLAGS_NONE);
Sprintf(pbuf, "Pick the alignment of your %s", plbuf);
end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected);
add_menu(windid window, const glyph_info *glyphinfo,
const anything identifier,
char accelerator, char groupacc,
- int attr, char *str, unsigned int itemflags)
+ int attr, int clr,
+ char *str, unsigned int itemflags)
-- Add a text line str to the given menu window. If
identifier is 0, then the line cannot be selected (e.g. a title).
Otherwise, identifier is the value returned if the line is
void
mswin_add_menu(winid wid, const glyph_info *glyphinfo,
const ANY_P *identifier,
- char accelerator, char group_accel, int attr,
+ char accelerator, char group_accel, int attr, int clr,
const char *str, unsigned int itemflags)
{
boolean presel = ((itemflags & MENU_ITEMFLAGS_SELECTED) != 0);
- logDebug("mswin_add_menu(%d, %d, %u, %p, %c, %c, %d, %s, %u)\n", wid,
+ logDebug("mswin_add_menu(%d, %d, %u, %p, %c, %c, %d, %d, %s, %u)\n", wid,
glyphinfo->glyph, glyphinfo->gm.glyphflags,
- identifier, (char) accelerator, (char) group_accel, attr, str,
+ identifier, (char) accelerator, (char) group_accel, attr, clr, str,
itemflags);
if ((wid >= 0) && (wid < MAXWINDOWS)
&& (GetNHApp()->windowlist[wid].win != NULL)) {
void mswin_add_menu(winid wid, const glyph_info *glyphinfo,
const ANY_P *identifier,
char accelerator, char group_accel, int attr,
- const char *str, unsigned int itemflags);
+ int clr, const char *str, unsigned int itemflags);
void mswin_end_menu(winid wid, const char *prompt);
int mswin_select_menu(winid wid, int how, MENU_ITEM_P **selected);
void mswin_mark_synch(void);