interface groundwork for core-side color decisions

(user-side decisions really, but as it stands right now
user-side decisions/options are made and processed by the core)

add a parameter to add_menu so color can be passed
This commit is contained in:
nhmall
2022-06-25 13:21:51 -04:00
parent b60dae1706
commit 2770223d10
44 changed files with 437 additions and 306 deletions
+25 -1
View File
@@ -327,7 +327,7 @@ start_menu(window, unsigned long mbehavior)
-- mbehavior allows flags to be passed to alter the appearance -- mbehavior allows flags to be passed to alter the appearance
and/or behavior of the menu. and/or behavior of the menu.
add_menu(windid window, glyphinfo, const anything identifier, char accelerator, 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) unsigned itemflags)
-- Add a text line str to the given menu window. If identifier -- Add a text line str to the given menu window. If identifier
is 0, then the line cannot be selected (e.g. a title). is 0, then the line cannot be selected (e.g. a title).
@@ -356,6 +356,30 @@ add_menu(windid window, glyphinfo, const anything identifier, char accelerator,
the menu command (or their user defined aliases), it loses. the menu command (or their user defined aliases), it loses.
The menu commands and aliases take care not to interfere The menu commands and aliases take care not to interfere
with the default object class symbols. 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.). -- itemflags on this item (such as MENU_ITEMFLAGS_SELECTED etc.).
end_menu(window, prompt) end_menu(window, prompt)
+1 -1
View File
@@ -447,7 +447,7 @@ extern void X11_putstr(winid, int, const char *);
extern void X11_display_file(const char *, boolean); extern void X11_display_file(const char *, boolean);
extern void X11_start_menu(winid, unsigned long); extern void X11_start_menu(winid, unsigned long);
extern void X11_add_menu(winid, const glyph_info *, const ANY_P *, char, 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 void X11_end_menu(winid, const char *);
extern int X11_select_menu(winid, int, MENU_ITEM_P **); extern int X11_select_menu(winid, int, MENU_ITEM_P **);
extern void X11_mark_synch(void); extern void X11_mark_synch(void);
+1 -1
View File
@@ -86,7 +86,7 @@ extern void curses_start_menu(winid wid, unsigned long);
extern void curses_add_menu(winid wid, const glyph_info *, extern void curses_add_menu(winid wid, const glyph_info *,
const ANY_P * identifier, const ANY_P * identifier,
char accelerator, char group_accel, int attr, 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 void curses_end_menu(winid wid, const char *prompt);
extern int curses_select_menu(winid wid, int how, MENU_ITEM_P **selected); extern int curses_select_menu(winid wid, int how, MENU_ITEM_P **selected);
extern void curses_mark_synch(void); extern void curses_mark_synch(void);
+3 -3
View File
@@ -32,7 +32,7 @@ struct window_procs {
void (*win_display_file)(const char *, boolean); void (*win_display_file)(const char *, boolean);
void (*win_start_menu)(winid, unsigned long); void (*win_start_menu)(winid, unsigned long);
void (*win_add_menu)(winid, const glyph_info *, const ANY_P *, void (*win_add_menu)(winid, const glyph_info *, const ANY_P *,
char, char, int, char, char, int, int,
const char *, unsigned int); const char *, unsigned int);
void (*win_end_menu)(winid, const char *); void (*win_end_menu)(winid, const char *);
int (*win_select_menu)(winid, int, MENU_ITEM_P **); int (*win_select_menu)(winid, int, MENU_ITEM_P **);
@@ -341,7 +341,7 @@ struct chain_procs {
void (*win_start_menu)(CARGS, winid, unsigned long); void (*win_start_menu)(CARGS, winid, unsigned long);
void (*win_add_menu)(CARGS, winid, const glyph_info *, void (*win_add_menu)(CARGS, winid, const glyph_info *,
const ANY_P *, char, char, int, const ANY_P *, char, char, int,
const char *, unsigned int); int, const char *, unsigned int);
void (*win_end_menu)(CARGS, winid, const char *); void (*win_end_menu)(CARGS, winid, const char *);
int (*win_select_menu)(CARGS, winid, int, MENU_ITEM_P **); int (*win_select_menu)(CARGS, winid, int, MENU_ITEM_P **);
char (*win_message_menu)(CARGS, char, int, const char *); char (*win_message_menu)(CARGS, char, int, const char *);
@@ -418,7 +418,7 @@ extern void safe_putmixed(winid, int, const char *);
extern void safe_display_file(const char *, boolean); extern void safe_display_file(const char *, boolean);
extern void safe_start_menu(winid, unsigned long); extern void safe_start_menu(winid, unsigned long);
extern void safe_add_menu(winid, const glyph_info *, const ANY_P *, 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); unsigned int);
extern void safe_end_menu(winid, const char *); extern void safe_end_menu(winid, const char *);
extern int safe_select_menu(winid, int, MENU_ITEM_P **); extern int safe_select_menu(winid, int, MENU_ITEM_P **);
+5 -3
View File
@@ -22,9 +22,11 @@ struct tty_perminvent_cell {
Bitfield(refresh, 1); Bitfield(refresh, 1);
Bitfield(text, 1); Bitfield(text, 1);
Bitfield(glyph, 1); Bitfield(glyph, 1);
Bitfield(colorbits, 5);
union ttycellcontent content; 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 #endif
@@ -235,7 +237,7 @@ E void tty_putmixed(winid window, int attr, const char *str);
E void tty_display_file(const char *, boolean); E void tty_display_file(const char *, boolean);
E void tty_start_menu(winid, unsigned long); E void tty_start_menu(winid, unsigned long);
E void tty_add_menu(winid, const glyph_info *, const ANY_P *, char, char, 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 void tty_end_menu(winid, const char *);
E int tty_select_menu(winid, int, MENU_ITEM_P **); E int tty_select_menu(winid, int, MENU_ITEM_P **);
E char tty_message_menu(char, int, const char *); E char tty_message_menu(char, int, const char *);
+5 -1
View File
@@ -192,9 +192,13 @@ struct from_core {
enum from_core_requests core_request; enum from_core_requests core_request;
enum inv_modes invmode; enum inv_modes invmode;
boolean force_redraw; boolean force_redraw;
int slot; /* which inventory slot; 0 indicates request */ int slot; /* which inventory slot + 1; 0 indicates request */
int invlet; int invlet;
char text[BUFSZ]; 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 { struct perminvent_info_t {
+6 -5
View File
@@ -3523,21 +3523,22 @@ use_grapple(struct obj *obj)
anything any; anything any;
char buf[BUFSZ]; char buf[BUFSZ];
menu_item *selected; menu_item *selected;
int clr = 0;
any = cg.zeroany; /* set all bits to zero */ any = cg.zeroany; /* set all bits to zero */
any.a_int = 1; /* use index+1 (cant use 0) as identifier */ any.a_int = 1; /* use index+1 (cant use 0) as identifier */
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any.a_int++; any.a_int++;
Sprintf(buf, "an object on the %s", surface(cc.x, cc.y)); Sprintf(buf, "an object on the %s", surface(cc.x, cc.y));
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
any.a_int++; any.a_int++;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
"a monster", MENU_ITEMFLAGS_NONE); clr, "a monster", MENU_ITEMFLAGS_NONE);
any.a_int++; any.a_int++;
Sprintf(buf, "the %s", surface(cc.x, cc.y)); Sprintf(buf, "the %s", surface(cc.x, cc.y));
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, buf, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, clr,
MENU_ITEMFLAGS_NONE); buf, MENU_ITEMFLAGS_NONE);
end_menu(tmpwin, "Aim for what?"); end_menu(tmpwin, "Aim for what?");
tohit = rn2(4); tohit = rn2(4);
if (select_menu(tmpwin, PICK_ONE, &selected) > 0 if (select_menu(tmpwin, PICK_ONE, &selected) > 0
+3 -1
View File
@@ -1749,6 +1749,7 @@ arti_invoke(struct obj *obj)
d_level newlev; d_level newlev;
winid tmpwin = create_nhwindow(NHW_MENU); winid tmpwin = create_nhwindow(NHW_MENU);
anything any; anything any;
int clr = 0;
any = cg.zeroany; /* set all bits to zero */ any = cg.zeroany; /* set all bits to zero */
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -1758,7 +1759,8 @@ arti_invoke(struct obj *obj)
continue; continue;
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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++; num_ok_dungeons++;
last_ok_dungeon = i; last_ok_dungeon = i;
} }
+34 -26
View File
@@ -1074,6 +1074,7 @@ cond_menu(void)
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
char mbuf[QBUFSZ]; char mbuf[QBUFSZ];
boolean showmenu = TRUE; boolean showmenu = TRUE;
int clr = 0;
do { do {
for (i = 0; i < CONDITION_COUNT; ++i) { for (i = 0; i < CONDITION_COUNT; ++i) {
@@ -1092,11 +1093,11 @@ cond_menu(void)
menutitle[g.condmenu_sortorder], menutitle[g.condmenu_sortorder],
menutitle[1 - g.condmenu_sortorder]); menutitle[1 - g.condmenu_sortorder]);
add_menu(tmpwin, &nul_glyphinfo, &any, 'S', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'S', 0, ATR_NONE,
mbuf, MENU_ITEMFLAGS_NONE); clr, mbuf, MENU_ITEMFLAGS_NONE);
any = cg.zeroany; any = cg.zeroany;
Sprintf(mbuf, "sorted %s", menutitle[g.condmenu_sortorder]); Sprintf(mbuf, "sorted %s", menutitle[g.condmenu_sortorder]);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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++) { for (i = 0; i < SIZE(condtests); i++) {
idx = sequence[i]; idx = sequence[i];
Sprintf(mbuf, "cond_%-14s", condtests[idx].useroption); Sprintf(mbuf, "cond_%-14s", condtests[idx].useroption);
@@ -1104,7 +1105,7 @@ cond_menu(void)
any.a_int = idx + 2; /* avoid zero and the sort change pick */ any.a_int = idx + 2; /* avoid zero and the sort change pick */
condtests[idx].choice = FALSE; condtests[idx].choice = FALSE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
mbuf, clr, mbuf,
condtests[idx].enabled condtests[idx].enabled
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
@@ -2332,6 +2333,7 @@ query_arrayvalue(
anything any; anything any;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int adj = (arrmin > 0) ? 1 : arrmax; int adj = (arrmin > 0) ? 1 : arrmax;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -2340,7 +2342,7 @@ query_arrayvalue(
any = cg.zeroany; any = cg.zeroany;
any.a_int = i + adj; any.a_int = i + adj;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); end_menu(tmpwin, querystr);
@@ -2683,6 +2685,7 @@ query_conditions(void)
winid tmpwin; winid tmpwin;
anything any; anything any;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -2691,7 +2694,7 @@ query_conditions(void)
any = cg.zeroany; any = cg.zeroany;
any.a_ulong = conditions[i].mask; any.a_ulong = conditions[i].mask;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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"); end_menu(tmpwin, "Choose status conditions");
@@ -3237,6 +3240,7 @@ status_hilite_menu_choose_field(void)
int i, res, fld = BL_FLUSH; int i, res, fld = BL_FLUSH;
anything any; anything any;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -3250,7 +3254,7 @@ status_hilite_menu_choose_field(void)
any = cg.zeroany; any = cg.zeroany;
any.a_int = (i + 1); 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,
initblstats[i].fldname, MENU_ITEMFLAGS_NONE); clr, initblstats[i].fldname, MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Select a hilite field:"); end_menu(tmpwin, "Select a hilite field:");
@@ -3274,6 +3278,7 @@ status_hilite_menu_choose_behavior(int fld)
char buf[BUFSZ]; char buf[BUFSZ];
int at; int at;
int onlybeh = BL_TH_NONE, nopts = 0; int onlybeh = BL_TH_NONE, nopts = 0;
int clr = 0;
if (fld < 0 || fld >= MAXBLSTATS) if (fld < 0 || fld >= MAXBLSTATS)
return BL_TH_NONE; return BL_TH_NONE;
@@ -3288,7 +3293,7 @@ status_hilite_menu_choose_behavior(int fld)
any.a_int = onlybeh = BL_TH_ALWAYS_HILITE; any.a_int = onlybeh = BL_TH_ALWAYS_HILITE;
Sprintf(buf, "Always highlight %s", initblstats[fld].fldname); Sprintf(buf, "Always highlight %s", initblstats[fld].fldname);
add_menu(tmpwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'a', 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
nopts++; nopts++;
} }
@@ -3296,7 +3301,7 @@ status_hilite_menu_choose_behavior(int fld)
any = cg.zeroany; any = cg.zeroany;
any.a_int = onlybeh = BL_TH_CONDITION; any.a_int = onlybeh = BL_TH_CONDITION;
add_menu(tmpwin, &nul_glyphinfo, &any, 'b', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'b', 0, ATR_NONE,
"Bitmask of conditions", MENU_ITEMFLAGS_NONE); clr, "Bitmask of conditions", MENU_ITEMFLAGS_NONE);
nopts++; nopts++;
} }
@@ -3305,7 +3310,7 @@ status_hilite_menu_choose_behavior(int fld)
any.a_int = onlybeh = BL_TH_UPDOWN; any.a_int = onlybeh = BL_TH_UPDOWN;
Sprintf(buf, "%s value changes", initblstats[fld].fldname); Sprintf(buf, "%s value changes", initblstats[fld].fldname);
add_menu(tmpwin, &nul_glyphinfo, &any, 'c', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'c', 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
nopts++; nopts++;
} }
@@ -3314,7 +3319,7 @@ status_hilite_menu_choose_behavior(int fld)
any = cg.zeroany; any = cg.zeroany;
any.a_int = onlybeh = BL_TH_VAL_ABSOLUTE; any.a_int = onlybeh = BL_TH_VAL_ABSOLUTE;
add_menu(tmpwin, &nul_glyphinfo, &any, 'n', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'n', 0, ATR_NONE,
"Number threshold", MENU_ITEMFLAGS_NONE); clr, "Number threshold", MENU_ITEMFLAGS_NONE);
nopts++; nopts++;
} }
@@ -3322,7 +3327,7 @@ status_hilite_menu_choose_behavior(int fld)
any = cg.zeroany; any = cg.zeroany;
any.a_int = onlybeh = BL_TH_VAL_PERCENTAGE; any.a_int = onlybeh = BL_TH_VAL_PERCENTAGE;
add_menu(tmpwin, &nul_glyphinfo, &any, 'p', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'p', 0, ATR_NONE,
"Percentage threshold", MENU_ITEMFLAGS_NONE); clr, "Percentage threshold", MENU_ITEMFLAGS_NONE);
nopts++; nopts++;
} }
@@ -3332,7 +3337,7 @@ status_hilite_menu_choose_behavior(int fld)
any.a_int = onlybeh = BL_TH_TEXTMATCH; any.a_int = onlybeh = BL_TH_TEXTMATCH;
Sprintf(buf, "%s text match", initblstats[fld].fldname); Sprintf(buf, "%s text match", initblstats[fld].fldname);
add_menu(tmpwin, &nul_glyphinfo, &any, 't', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 't', 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
nopts++; nopts++;
} }
@@ -3365,6 +3370,7 @@ status_hilite_menu_choose_updownboth(int fld, const char *str,
char buf[BUFSZ]; char buf[BUFSZ];
anything any; anything any;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -3378,7 +3384,7 @@ status_hilite_menu_choose_updownboth(int fld, const char *str,
any = cg.zeroany; any = cg.zeroany;
any.a_int = 10 + LT_VALUE; any.a_int = 10 + LT_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
if (str) { if (str) {
Sprintf(buf, "%s or %s", Sprintf(buf, "%s or %s",
@@ -3386,7 +3392,7 @@ status_hilite_menu_choose_updownboth(int fld, const char *str,
any = cg.zeroany; any = cg.zeroany;
any.a_int = 10 + LE_VALUE; any.a_int = 10 + LE_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
} }
} }
@@ -3397,7 +3403,7 @@ status_hilite_menu_choose_updownboth(int fld, const char *str,
any = cg.zeroany; any = cg.zeroany;
any.a_int = 10 + EQ_VALUE; any.a_int = 10 + EQ_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
if (gtok) { if (gtok) {
if (str) { if (str) {
@@ -3406,7 +3412,7 @@ status_hilite_menu_choose_updownboth(int fld, const char *str,
any = cg.zeroany; any = cg.zeroany;
any.a_int = 10 + GE_VALUE; any.a_int = 10 + GE_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
} }
if (str) if (str)
@@ -3417,7 +3423,7 @@ status_hilite_menu_choose_updownboth(int fld, const char *str,
any = cg.zeroany; any = cg.zeroany;
any.a_int = 10 + GT_VALUE; any.a_int = 10 + GT_VALUE;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); Sprintf(buf, "Select field %s value:", initblstats[fld].fldname);
end_menu(tmpwin, buf); end_menu(tmpwin, buf);
@@ -3901,6 +3907,7 @@ status_hilite_menu_fld(int fld)
struct _status_hilite_line_str *hlstr; struct _status_hilite_line_str *hlstr;
char buf[BUFSZ]; char buf[BUFSZ];
boolean acted; boolean acted;
int clr = 0;
if (!count) { if (!count) {
if (status_hilite_menu_add(fld)) { if (status_hilite_menu_add(fld)) {
@@ -3921,27 +3928,27 @@ status_hilite_menu_fld(int fld)
any = cg.zeroany; any = cg.zeroany;
any.a_int = hlstr->id; any.a_int = hlstr->id;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
hlstr->str, MENU_ITEMFLAGS_NONE); clr, hlstr->str, MENU_ITEMFLAGS_NONE);
} }
hlstr = hlstr->next; hlstr = hlstr->next;
} }
} else { } else {
any = cg.zeroany; any = cg.zeroany;
Sprintf(buf, "No current hilites for %s", initblstats[fld].fldname); 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); MENU_ITEMFLAGS_NONE);
} }
/* separator line */ /* separator line */
any = cg.zeroany; 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); MENU_ITEMFLAGS_NONE);
if (count) { if (count) {
any = cg.zeroany; any = cg.zeroany;
any.a_int = -1; any.a_int = -1;
add_menu(tmpwin, &nul_glyphinfo, &any, 'X', 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 'X', 0, ATR_NONE,
"Remove selected hilites", clr, "Remove selected hilites",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
} }
@@ -3958,7 +3965,7 @@ status_hilite_menu_fld(int fld)
any = cg.zeroany; any = cg.zeroany;
any.a_int = -2; any.a_int = -2;
add_menu(tmpwin, &nul_glyphinfo, &any, 'Z', 0, ATR_NONE, 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); Sprintf(buf, "Current %s hilites:", initblstats[fld].fldname);
@@ -4023,6 +4030,7 @@ status_hilite_menu(void)
anything any; anything any;
boolean redo; boolean redo;
int countall; int countall;
int clr = 0;
shlmenu_redo: shlmenu_redo:
redo = FALSE; redo = FALSE;
@@ -4036,12 +4044,12 @@ status_hilite_menu(void)
any = cg.zeroany; any = cg.zeroany;
any.a_int = -1; any.a_int = -1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); MENU_ITEMFLAGS_NONE);
any = cg.zeroany; any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, "", add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
MENU_ITEMFLAGS_NONE); clr, "", MENU_ITEMFLAGS_NONE);
} }
for (i = 0; i < MAXBLSTATS; i++) { for (i = 0; i < MAXBLSTATS; i++) {
@@ -4062,7 +4070,7 @@ status_hilite_menu(void)
if (count) if (count)
Sprintf(eos(buf), " (%d defined)", count); Sprintf(eos(buf), " (%d defined)", count);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Status hilites:"); end_menu(tmpwin, "Status hilites:");
+31 -25
View File
@@ -496,6 +496,7 @@ doc_extcmd_flagstr(
const struct ext_func_tab *efp) /* if Null, add a footnote to the menu */ const struct ext_func_tab *efp) /* if Null, add a footnote to the menu */
{ {
static char Abuf[10]; /* 5 would suffice: {'[','m','A',']','\0'} */ 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 /* note: tag shown for menu prefix is 'm' even if m-prefix action
has been bound to some other key */ has been bound to some other key */
@@ -503,11 +504,11 @@ doc_extcmd_flagstr(
char qbuf[QBUFSZ]; char qbuf[QBUFSZ];
anything any = cg.zeroany; 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); "[A] Command autocompletes", MENU_ITEMFLAGS_NONE);
Sprintf(qbuf, "[m] Command accepts '%s' prefix", Sprintf(qbuf, "[m] Command accepts '%s' prefix",
visctrl(cmd_from_func(do_reqmenu))); 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); MENU_ITEMFLAGS_NONE);
return (char *) 0; return (char *) 0;
} else { } else {
@@ -544,6 +545,7 @@ doextlist(void)
boolean redisplay = TRUE, search = FALSE; boolean redisplay = TRUE, search = FALSE;
static const char *const headings[] = { "Extended commands", static const char *const headings[] = { "Extended commands",
"Debugging Extended Commands" }; "Debugging Extended Commands" };
int clr = 0;
searchbuf[0] = '\0'; searchbuf[0] = '\0';
menuwin = create_nhwindow(NHW_MENU); menuwin = create_nhwindow(NHW_MENU);
@@ -552,16 +554,16 @@ doextlist(void)
redisplay = FALSE; redisplay = FALSE;
any = cg.zeroany; any = cg.zeroany;
start_menu(menuwin, MENU_BEHAVE_STANDARD); 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", "Extended Commands List",
MENU_ITEMFLAGS_NONE); 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); "", MENU_ITEMFLAGS_NONE);
Sprintf(buf, "Switch to %s commands that don't autocomplete", Sprintf(buf, "Switch to %s commands that don't autocomplete",
menumode ? "including" : "excluding"); menumode ? "including" : "excluding");
any.a_int = 1; 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); MENU_ITEMFLAGS_NONE);
if (!*searchbuf) { if (!*searchbuf) {
@@ -572,7 +574,7 @@ doextlist(void)
having ':' as an explicit selector overrides the default having ':' as an explicit selector overrides the default
menu behavior for it; we retain 's' as a group accelerator */ menu behavior for it; we retain 's' as a group accelerator */
add_menu(menuwin, &nul_glyphinfo, &any, ':', 's', ATR_NONE, add_menu(menuwin, &nul_glyphinfo, &any, ':', 's', ATR_NONE,
"Search extended commands", clr, "Search extended commands",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
} else { } else {
Strcpy(buf, "Switch back from search"); Strcpy(buf, "Switch back from search");
@@ -585,17 +587,17 @@ doextlist(void)
work for interfaces which support ':' to search; use as a work for interfaces which support ':' to search; use as a
general menu command takes precedence over group accelerator */ general menu command takes precedence over group accelerator */
add_menu(menuwin, &nul_glyphinfo, &any, 's', ':', ATR_NONE, add_menu(menuwin, &nul_glyphinfo, &any, 's', ':', ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
} }
if (wizard) { if (wizard) {
any.a_int = 4; 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" onelist ? "Switch to showing debugging commands in separate section"
: "Switch to showing all alphabetically, including debugging commands", : "Switch to showing all alphabetically, including debugging commands",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
} }
any = cg.zeroany; 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); "", MENU_ITEMFLAGS_NONE);
menushown[0] = menushown[1] = 0; menushown[0] = menushown[1] = 0;
n = 0; n = 0;
@@ -638,7 +640,7 @@ doextlist(void)
if (!menushown[pass]) { if (!menushown[pass]) {
Strcpy(buf, headings[pass]); Strcpy(buf, headings[pass]);
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, add_menu(menuwin, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, buf, iflags.menu_headings, clr, buf,
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
menushown[pass] = 1; menushown[pass] = 1;
} }
@@ -647,16 +649,16 @@ doextlist(void)
Sprintf(buf, " %-14s %4s %s", efp->ef_txt, Sprintf(buf, " %-14s %4s %s", efp->ef_txt,
doc_extcmd_flagstr(menuwin, efp), efp->ef_desc); doc_extcmd_flagstr(menuwin, efp), efp->ef_desc);
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
buf, MENU_ITEMFLAGS_NONE); clr, buf, MENU_ITEMFLAGS_NONE);
++n; ++n;
} }
if (n) if (n)
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
"", MENU_ITEMFLAGS_NONE); clr, "", MENU_ITEMFLAGS_NONE);
} }
if (*searchbuf && !n) if (*searchbuf && !n)
add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(menuwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
"no matches", MENU_ITEMFLAGS_NONE); clr, "no matches", MENU_ITEMFLAGS_NONE);
else else
(void) doc_extcmd_flagstr(menuwin, (struct ext_func_tab *) 0); (void) doc_extcmd_flagstr(menuwin, (struct ext_func_tab *) 0);
@@ -734,6 +736,7 @@ extcmd_via_menu(void)
int accelerator, prevaccelerator; int accelerator, prevaccelerator;
int matchlevel = 0; int matchlevel = 0;
boolean wastoolong, one_per_line; boolean wastoolong, one_per_line;
int clr = 0;
ret = 0; ret = 0;
cbuf[0] = '\0'; cbuf[0] = '\0';
@@ -797,7 +800,7 @@ extcmd_via_menu(void)
Sprintf(buf, fmtstr, prompt); Sprintf(buf, fmtstr, prompt);
any.a_char = prevaccelerator; any.a_char = prevaccelerator;
add_menu(win, &nul_glyphinfo, &any, any.a_char, 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; acount = 0;
if (!(accelerator != prevaccelerator || one_per_line)) if (!(accelerator != prevaccelerator || one_per_line))
wastoolong = TRUE; wastoolong = TRUE;
@@ -821,7 +824,7 @@ extcmd_via_menu(void)
Sprintf(buf, fmtstr, prompt); Sprintf(buf, fmtstr, prompt);
any.a_char = prevaccelerator; any.a_char = prevaccelerator;
add_menu(win, &nul_glyphinfo, &any, any.a_char, 0, 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); Snprintf(prompt, sizeof(prompt), "Extended Command: %s", cbuf);
end_menu(win, prompt); end_menu(win, prompt);
@@ -1838,6 +1841,7 @@ wiz_intrinsic(void)
long oldtimeout, newtimeout; long oldtimeout, newtimeout;
const char *propname; const char *propname;
menu_item *pick_list = (menu_item *) 0; menu_item *pick_list = (menu_item *) 0;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
win = create_nhwindow(NHW_MENU); win = create_nhwindow(NHW_MENU);
@@ -1848,7 +1852,7 @@ wiz_intrinsic(void)
"[Precede any selection with a count to increment by other than %d.]", "[Precede any selection with a count to increment by other than %d.]",
DEFAULT_TIMEOUT_INCR); DEFAULT_TIMEOUT_INCR);
any.a_int = 0; 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); MENU_ITEMFLAGS_NONE);
} }
for (i = 0; (propname = propertynames[i].prop_name) != 0; ++i) { for (i = 0; (propname = propertynames[i].prop_name) != 0; ++i) {
@@ -1866,7 +1870,7 @@ wiz_intrinsic(void)
set to timed values here so show a separator */ set to timed values here so show a separator */
any.a_int = 0; any.a_int = 0;
add_menu(win, &nul_glyphinfo, &any, 0, 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 */ any.a_int = i + 1; /* +1: avoid 0 */
oldtimeout = u.uprops[p].intrinsic & TIMEOUT; oldtimeout = u.uprops[p].intrinsic & TIMEOUT;
@@ -1874,7 +1878,7 @@ wiz_intrinsic(void)
Sprintf(buf, "%-27s [%li]", propname, oldtimeout); Sprintf(buf, "%-27s [%li]", propname, oldtimeout);
else else
Sprintf(buf, "%s", propname); 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); MENU_ITEMFLAGS_NONE);
} }
end_menu(win, "Which intrinsics?"); end_menu(win, "Which intrinsics?");
@@ -1991,6 +1995,7 @@ doterrain(void)
anything any; anything any;
int n; int n;
int which; int which;
int clr = 0;
/* /*
* normal play: choose between known map without mons, obj, and traps * normal play: choose between known map without mons, obj, and traps
@@ -2006,30 +2011,30 @@ doterrain(void)
start_menu(men, MENU_BEHAVE_STANDARD); start_menu(men, MENU_BEHAVE_STANDARD);
any = cg.zeroany; any = cg.zeroany;
any.a_int = 1; 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", "known map without monsters, objects, and traps",
MENU_ITEMFLAGS_SELECTED); MENU_ITEMFLAGS_SELECTED);
any.a_int = 2; any.a_int = 2;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); MENU_ITEMFLAGS_NONE);
any.a_int = 3; any.a_int = 3;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
"known map without monsters", clr, "known map without monsters",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
if (discover || wizard) { if (discover || wizard) {
any.a_int = 4; any.a_int = 4;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); MENU_ITEMFLAGS_NONE);
if (wizard) { if (wizard) {
any.a_int = 5; any.a_int = 5;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); MENU_ITEMFLAGS_NONE);
any.a_int = 6; any.a_int = 6;
add_menu(men, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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); MENU_ITEMFLAGS_NONE);
} }
} }
@@ -4812,11 +4817,12 @@ static void
mcmd_addmenu(winid win, int act, const char *txt) mcmd_addmenu(winid win, int act, const char *txt)
{ {
anything any; anything any;
int clr = 0;
/* TODO: fixed letters for the menu entries? */ /* TODO: fixed letters for the menu entries? */
any = cg.zeroany; any = cg.zeroany;
any.a_int = act; 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); MENU_ITEMFLAGS_NONE);
} }
+9 -7
View File
@@ -586,6 +586,7 @@ getpos_menu(coord *ccp, int gloc)
int i, pick_cnt; int i, pick_cnt;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
char tmpbuf[BUFSZ]; char tmpbuf[BUFSZ];
int clr = 0;
gather_locs(&garr, &gcount, gloc); gather_locs(&garr, &gcount, gloc);
@@ -618,7 +619,7 @@ getpos_menu(coord *ccp, int gloc)
Snprintf(fullbuf, sizeof fullbuf, "%s%s%s", firstmatch, Snprintf(fullbuf, sizeof fullbuf, "%s%s%s", firstmatch,
(*tmpbuf ? " " : ""), tmpbuf); (*tmpbuf ? " " : ""), tmpbuf);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, fullbuf, MENU_ITEMFLAGS_NONE); ATR_NONE, clr, fullbuf, MENU_ITEMFLAGS_NONE);
} }
} }
@@ -1461,6 +1462,7 @@ docallcmd(void)
char ch = 0; char ch = 0;
/* if player wants a,b,c instead of i,o when looting, do that here too */ /* if player wants a,b,c instead of i,o when looting, do that here too */
boolean abc = flags.lootabc; boolean abc = flags.lootabc;
int clr = 0;
if ((cmdq = cmdq_pop()) != 0) { if ((cmdq = cmdq_pop()) != 0) {
cq = *cmdq; cq = *cmdq;
@@ -1476,30 +1478,30 @@ docallcmd(void)
any = cg.zeroany; any = cg.zeroany;
any.a_char = 'm'; /* group accelerator 'C' */ any.a_char = 'm'; /* group accelerator 'C' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, '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) { if (g.invent) {
/* we use y and n as accelerators so that we can accept user's /* we use y and n as accelerators so that we can accept user's
response keyed to old "name an individual object?" prompt */ response keyed to old "name an individual object?" prompt */
any.a_char = 'i'; /* group accelerator 'y' */ any.a_char = 'i'; /* group accelerator 'y' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, '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); MENU_ITEMFLAGS_NONE);
any.a_char = 'o'; /* group accelerator 'n' */ any.a_char = 'o'; /* group accelerator 'n' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, '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); MENU_ITEMFLAGS_NONE);
} }
any.a_char = 'f'; /* group accelerator ',' (or ':' instead?) */ any.a_char = 'f'; /* group accelerator ',' (or ':' instead?) */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, ',', 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); MENU_ITEMFLAGS_NONE);
any.a_char = 'd'; /* group accelerator '\' */ any.a_char = 'd'; /* group accelerator '\' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, '\\', 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); MENU_ITEMFLAGS_NONE);
any.a_char = 'a'; /* group accelerator 'l' */ any.a_char = 'a'; /* group accelerator 'l' */
add_menu(win, &nul_glyphinfo, &any, abc ? 0 : any.a_char, '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); MENU_ITEMFLAGS_NONE);
end_menu(win, "What do you want to name?"); end_menu(win, "What do you want to name?");
if (select_menu(win, PICK_ONE, &pick_list) > 0) { if (select_menu(win, PICK_ONE, &pick_list) > 0) {
+4 -2
View File
@@ -2090,6 +2090,7 @@ tport_menu(winid win, char *entry, struct lchoice *lchoices,
{ {
char tmpbuf[BUFSZ]; char tmpbuf[BUFSZ];
anything any; anything any;
int clr = 0;
lchoices->lev[lchoices->idx] = lvl_p->dlevel; lchoices->lev[lchoices->idx] = lvl_p->dlevel;
lchoices->dgn[lchoices->idx] = lvl_p->dnum; lchoices->dgn[lchoices->idx] = lvl_p->dnum;
@@ -2104,7 +2105,7 @@ tport_menu(winid win, char *entry, struct lchoice *lchoices,
any.a_int = lchoices->idx + 1; any.a_int = lchoices->idx + 1;
} }
add_menu(win, &nul_glyphinfo, &any, lchoices->menuletter, 0, 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 */ /* this assumes there are at most 52 interesting levels */
if (lchoices->menuletter == 'z') if (lchoices->menuletter == 'z')
lchoices->menuletter = 'A'; lchoices->menuletter = 'A';
@@ -2236,6 +2237,7 @@ print_dungeon(boolean bymenu, schar *rlev, xchar *rdgn)
anything any; anything any;
struct lchoice lchoices; struct lchoice lchoices;
winid win = create_nhwindow(NHW_MENU); winid win = create_nhwindow(NHW_MENU);
int clr = 0;
if (bymenu) { if (bymenu) {
start_menu(win, MENU_BEHAVE_STANDARD); start_menu(win, MENU_BEHAVE_STANDARD);
@@ -2268,7 +2270,7 @@ print_dungeon(boolean bymenu, schar *rlev, xchar *rdgn)
if (bymenu) { if (bymenu) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, buf, MENU_ITEMFLAGS_NONE); iflags.menu_headings, clr, buf, MENU_ITEMFLAGS_NONE);
} else } else
putstr(win, 0, buf); putstr(win, 0, buf);
+6 -3
View File
@@ -113,11 +113,13 @@ static struct ll_achieve_msg achieve_msg [] = {
static void static void
enlght_out(const char *buf) enlght_out(const char *buf)
{ {
int clr = 0;
if (g.en_via_menu) { if (g.en_via_menu) {
anything any; anything any;
any = cg.zeroany; 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); MENU_ITEMFLAGS_NONE);
} else } else
putstr(g.en_win, 0, buf); putstr(g.en_win, 0, buf);
@@ -2567,7 +2569,8 @@ set_vanq_order(void)
winid tmpwin; winid tmpwin;
menu_item *selected; menu_item *selected;
anything any; anything any;
int i, n, choice; int i, n, choice,
clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -2576,7 +2579,7 @@ set_vanq_order(void)
if (i == VANQ_ALPHA_MIX || i == VANQ_MCLS_HTOL) /* skip these */ if (i == VANQ_ALPHA_MIX || i == VANQ_MCLS_HTOL) /* skip these */
continue; continue;
any.a_int = i + 1; 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], vanqorders[i],
(i == g.vanq_sortmode) (i == g.vanq_sortmode)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
+20 -16
View File
@@ -2676,11 +2676,12 @@ static void
ia_addmenu(winid win, int act, char let, const char *txt) ia_addmenu(winid win, int act, char let, const char *txt)
{ {
anything any; anything any;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
any.a_int = act; any.a_int = act;
add_menu(win, &nul_glyphinfo, &any, let, 0, 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 */ /* Show menu of possible actions hero could do with item otmp */
@@ -3177,6 +3178,7 @@ display_pickinv(
unsigned sortflags; unsigned sortflags;
Loot *sortedinvent, *srtinv; Loot *sortedinvent, *srtinv;
boolean wizid = (wizard && iflags.override_ID), gotsomething = FALSE; boolean wizid = (wizard && iflags.override_ID), gotsomething = FALSE;
int clr = 0;
if (lets && !*lets) if (lets && !*lets)
lets = 0; /* simplify tests: (lets) instead of (lets && *lets) */ lets = 0; /* simplify tests: (lets) instead of (lets && *lets) */
@@ -3268,10 +3270,10 @@ display_pickinv(
Sprintf(eos(prompt), Sprintf(eos(prompt),
" -- unidentified or partially identified item%s", " -- unidentified or partially identified item%s",
plur(unid_cnt)); 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); MENU_ITEMFLAGS_NONE);
if (!unid_cnt) { 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)", "(all items are permanently identified already)",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
gotsomething = TRUE; gotsomething = TRUE;
@@ -3288,18 +3290,18 @@ display_pickinv(
Sprintf(eos(prompt), " (%s for all)", Sprintf(eos(prompt), " (%s for all)",
visctrl(iflags.override_ID)); visctrl(iflags.override_ID));
add_menu(win, &nul_glyphinfo, &any, '_', 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; gotsomething = TRUE;
} }
} else if (xtra_choice) { } else if (xtra_choice) {
/* wizard override ID and xtra_choice are mutually exclusive */ /* wizard override ID and xtra_choice are mutually exclusive */
if (flags.sortpack) if (flags.sortpack)
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
"Miscellaneous", MENU_ITEMFLAGS_NONE); "Miscellaneous", MENU_ITEMFLAGS_NONE);
any.a_char = HANDS_SYM; /* '-' */ any.a_char = HANDS_SYM; /* '-' */
add_menu(win, &nul_glyphinfo, &any, HANDS_SYM, 0, ATR_NONE, add_menu(win, &nul_glyphinfo, &any, HANDS_SYM, 0, ATR_NONE,
xtra_choice, MENU_ITEMFLAGS_NONE); clr, xtra_choice, MENU_ITEMFLAGS_NONE);
gotsomething = TRUE; gotsomething = TRUE;
} }
@@ -3318,7 +3320,7 @@ display_pickinv(
ilet = otmp->invlet; ilet = otmp->invlet;
if (flags.sortpack && !classcount) { if (flags.sortpack && !classcount) {
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
let_to_name(*invlet, FALSE, let_to_name(*invlet, FALSE,
(want_reply && iflags.menu_head_objsym)), (want_reply && iflags.menu_head_objsym)),
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
@@ -3333,7 +3335,7 @@ display_pickinv(
formattedobj = doname(otmp); formattedobj = doname(otmp);
add_menu(win, &tmpglyphinfo, &any, ilet, add_menu(win, &tmpglyphinfo, &any, ilet,
wizid ? def_oc_syms[(int) otmp->oclass].sym : 0, 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 /* doname() uses a static pool of obuf[] output buffers and
we don't want inventory display to overwrite all of them, we don't want inventory display to overwrite all of them,
so when we've used one we release it for re-use */ so when we've used one we release it for re-use */
@@ -3357,9 +3359,9 @@ display_pickinv(
&& (int) strlen(lets) < inv_cnt(TRUE)) { && (int) strlen(lets) < inv_cnt(TRUE)) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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 = '*'; 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); "(list everything)", MENU_ITEMFLAGS_NONE);
gotsomething = TRUE; gotsomething = TRUE;
} }
@@ -3370,7 +3372,7 @@ display_pickinv(
into the menu */ into the menu */
if (iflags.perm_invent && !lets && !gotsomething) { if (iflags.perm_invent && !lets && !gotsomething) {
any = cg.zeroany; 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); not_carrying_anything, MENU_ITEMFLAGS_NONE);
want_reply = FALSE; want_reply = FALSE;
} }
@@ -3465,6 +3467,7 @@ display_used_invlets(char avoidlet)
winid win; winid win;
anything any; anything any;
menu_item *selected; menu_item *selected;
int clr = 0;
if (g.invent) { if (g.invent) {
win = create_nhwindow(NHW_MENU); win = create_nhwindow(NHW_MENU);
@@ -3480,7 +3483,7 @@ display_used_invlets(char avoidlet)
if (flags.sortpack && !classcount) { if (flags.sortpack && !classcount) {
any = cg.zeroany; /* zero */ any = cg.zeroany; /* zero */
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
let_to_name(*invlet, FALSE, FALSE), let_to_name(*invlet, FALSE, FALSE),
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
classcount++; classcount++;
@@ -3489,7 +3492,7 @@ display_used_invlets(char avoidlet)
tmpglyph = obj_to_glyph(otmp, rn2_on_display_rng); tmpglyph = obj_to_glyph(otmp, rn2_on_display_rng);
map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo); map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo);
add_menu(win, &tmpglyphinfo, &any, ilet, 0, 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) if (flags.sortpack && *++invlet)
@@ -5116,15 +5119,16 @@ invdisp_nothing(const char *hdr, const char *txt)
winid win; winid win;
anything any; anything any;
menu_item *selected; menu_item *selected;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
win = create_nhwindow(NHW_MENU); win = create_nhwindow(NHW_MENU);
start_menu(win, MENU_BEHAVE_STANDARD); 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); 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); "", 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); MENU_ITEMFLAGS_NONE);
end_menu(win, (char *) 0); end_menu(win, (char *) 0);
if (select_menu(win, PICK_NONE, &selected) > 0) if (select_menu(win, PICK_NONE, &selected) > 0)
+2 -1
View File
@@ -667,6 +667,7 @@ nhl_menu(lua_State *L)
winid tmpwin; winid tmpwin;
anything any; anything any;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int clr = 0;
if (argc < 2 || argc > 4) { if (argc < 2 || argc > 4) {
nhl_error(L, "Wrong args"); nhl_error(L, "Wrong args");
@@ -709,7 +710,7 @@ nhl_menu(lua_State *L)
any = cg.zeroany; any = cg.zeroany;
if (*key) if (*key)
any.a_char = key[0]; 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]) (*defval && *key && defval[0] == key[0])
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
+13 -10
View File
@@ -561,6 +561,7 @@ choose_disco_sort(
menu_item *selected; menu_item *selected;
anything any; anything any;
int i, n, choice; int i, n, choice;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -568,7 +569,7 @@ choose_disco_sort(
for (i = 0; disco_orders_descr[i]; ++i) { for (i = 0; disco_orders_descr[i]; ++i) {
any.a_int = disco_order_let[i]; any.a_int = disco_order_let[i];
add_menu(tmpwin, &nul_glyphinfo, &any, (char) any.a_int, add_menu(tmpwin, &nul_glyphinfo, &any, (char) any.a_int,
0, ATR_NONE, 0, ATR_NONE, clr,
disco_orders_descr[i], disco_orders_descr[i],
(disco_order_let[i] == flags.discosort) (disco_order_let[i] == flags.discosort)
? MENU_ITEMFLAGS_SELECTED ? MENU_ITEMFLAGS_SELECTED
@@ -579,15 +580,15 @@ choose_disco_sort(
(only showing one class so can't span all classes) but the (only showing one class so can't span all classes) but the
chosen sort will stick and also apply to '\' usage */ chosen sort will stick and also apply to '\' usage */
any = cg.zeroany; 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); "", 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", "Note: full alphabetical and alphabetical within class",
MENU_ITEMFLAGS_NONE); 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", " are equivalent for single class discovery, but",
MENU_ITEMFLAGS_NONE); 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.", " will matter for future use of total discoveries.",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
} }
@@ -755,6 +756,7 @@ doclassdisco(void)
*sorted_lines[NUM_OBJECTS]; /* overkill */ *sorted_lines[NUM_OBJECTS]; /* overkill */
int i, ct, dis, xtras, sorted_ct; int i, ct, dis, xtras, sorted_ct;
boolean traditional, alphabetized, lootsort; boolean traditional, alphabetized, lootsort;
int clr = 0;
if (!flags.discosort || !(p = index(disco_order_let, flags.discosort))) if (!flags.discosort || !(p = index(disco_order_let, flags.discosort)))
flags.discosort = 'o'; flags.discosort = 'o';
@@ -783,7 +785,7 @@ doclassdisco(void)
if (!traditional) { if (!traditional) {
any.a_int = 'u'; any.a_int = 'u';
add_menu(tmpwin, &nul_glyphinfo, &any, menulet++, 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; break;
} }
@@ -794,7 +796,7 @@ doclassdisco(void)
if (!traditional) { if (!traditional) {
any.a_int = 'a'; any.a_int = 'a';
add_menu(tmpwin, &nul_glyphinfo, &any, menulet++, add_menu(tmpwin, &nul_glyphinfo, &any, menulet++,
0, ATR_NONE, artifact_items, MENU_ITEMFLAGS_NONE); 0, ATR_NONE, clr, artifact_items, MENU_ITEMFLAGS_NONE);
} }
} }
@@ -815,7 +817,7 @@ doclassdisco(void)
if (!traditional) { if (!traditional) {
any.a_int = c; any.a_int = c;
add_menu(tmpwin, &nul_glyphinfo, &any, add_menu(tmpwin, &nul_glyphinfo, &any,
menulet++, c, ATR_NONE, menulet++, c, ATR_NONE, clr,
oclass_to_name(oclass, buf), oclass_to_name(oclass, buf),
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
} }
@@ -961,6 +963,7 @@ rename_disco(void)
winid tmpwin; winid tmpwin;
anything any; anything any;
menu_item *selected = 0; menu_item *selected = 0;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
@@ -990,14 +993,14 @@ rename_disco(void)
if (oclass != prev_class) { if (oclass != prev_class) {
any.a_int = 0; any.a_int = 0;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
let_to_name(oclass, FALSE, FALSE), let_to_name(oclass, FALSE, FALSE),
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
prev_class = oclass; prev_class = oclass;
} }
any.a_int = dis; any.a_int = dis;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, ATR_NONE, clr,
obj_typename(dis), MENU_ITEMFLAGS_NONE); obj_typename(dis), MENU_ITEMFLAGS_NONE);
} }
} }
+83 -58
View File
@@ -4614,6 +4614,7 @@ handler_menustyle(void)
int i, n, old_menu_style = flags.menu_style; int i, n, old_menu_style = flags.menu_style;
char buf[BUFSZ], sep = iflags.menu_tab_sep ? '\t' : ' '; char buf[BUFSZ], sep = iflags.menu_tab_sep ? '\t' : ' ';
menu_item *style_pick = (menu_item *) 0; menu_item *style_pick = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -4621,13 +4622,13 @@ handler_menustyle(void)
for (i = 0; i < SIZE(menutype); i++) { for (i = 0; i < SIZE(menutype); i++) {
Sprintf(buf, "%-12.12s%c%.60s", menutype[i][0], sep, menutype[i][1]); Sprintf(buf, "%-12.12s%c%.60s", menutype[i][0], sep, menutype[i][1]);
any.a_int = 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 (i == flags.menu_style) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
/* second line is prefixed by spaces that "c - " would use */ /* second line is prefixed by spaces that "c - " would use */
Sprintf(buf, "%4s%-12.12s%c%.60s", "", "", sep, menutype[i][2]); Sprintf(buf, "%4s%-12.12s%c%.60s", "", "", sep, menutype[i][2]);
any.a_int = 0; 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); MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Select menustyle:"); end_menu(tmpwin, "Select menustyle:");
@@ -4655,21 +4656,22 @@ handler_align_misc(int optidx)
anything any; anything any;
menu_item *window_pick = (menu_item *) 0; menu_item *window_pick = (menu_item *) 0;
char abuf[BUFSZ]; char abuf[BUFSZ];
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; any = cg.zeroany;
any.a_int = ALIGN_TOP; 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); MENU_ITEMFLAGS_NONE);
any.a_int = ALIGN_BOTTOM; 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); MENU_ITEMFLAGS_NONE);
any.a_int = ALIGN_LEFT; 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); MENU_ITEMFLAGS_NONE);
any.a_int = ALIGN_RIGHT; 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); MENU_ITEMFLAGS_NONE);
Sprintf(abuf, "Select %s window placement relative to the map:", Sprintf(abuf, "Select %s window placement relative to the map:",
(optidx == opt_align_message) ? "message" : "status"); (optidx == opt_align_message) ? "message" : "status");
@@ -4696,6 +4698,7 @@ handler_autounlock(int optidx)
char buf[BUFSZ], sep = iflags.menu_tab_sep ? '\t' : ' '; char buf[BUFSZ], sep = iflags.menu_tab_sep ? '\t' : ' ';
menu_item *window_pick = (menu_item *) 0; menu_item *window_pick = (menu_item *) 0;
int i, n, presel, res = optn_ok; int i, n, presel, res = optn_ok;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -4706,7 +4709,7 @@ handler_autounlock(int optidx)
presel = !i ? !flags.autounlock : (flags.autounlock & (1 << (i - 1))); presel = !i ? !flags.autounlock : (flags.autounlock & (1 << (i - 1)));
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, *unlocktypes[i][0], 0, add_menu(tmpwin, &nul_glyphinfo, &any, *unlocktypes[i][0], 0,
ATR_NONE, buf, ATR_NONE, clr, buf,
((presel ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE) ((presel ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE)
| (!i ? MENU_ITEMFLAGS_SKIPINVERT : 0))); | (!i ? MENU_ITEMFLAGS_SKIPINVERT : 0)));
} }
@@ -4769,6 +4772,7 @@ handler_disclose(void)
int pick_cnt, pick_idx, opt_idx; int pick_cnt, pick_idx, opt_idx;
char c; char c;
menu_item *disclosure_pick = (menu_item *) 0; menu_item *disclosure_pick = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -4778,7 +4782,7 @@ handler_disclose(void)
flags.end_disclose[i], disclosure_options[i]); flags.end_disclose[i], disclosure_options[i]);
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, disclosure_options[i], 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; disc_cat[i] = 0;
} }
end_menu(tmpwin, "Change which disclosure options categories:"); end_menu(tmpwin, "Change which disclosure options categories:");
@@ -4804,40 +4808,40 @@ handler_disclose(void)
/* 'y','n',and '+' work as alternate selectors; '-' doesn't */ /* 'y','n',and '+' work as alternate selectors; '-' doesn't */
any.a_char = DISCLOSE_NO_WITHOUT_PROMPT; any.a_char = DISCLOSE_NO_WITHOUT_PROMPT;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0,
any.a_char, ATR_NONE, any.a_char, ATR_NONE, clr,
"Never disclose, without prompting", "Never disclose, without prompting",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED (c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
any.a_char = DISCLOSE_YES_WITHOUT_PROMPT; any.a_char = DISCLOSE_YES_WITHOUT_PROMPT;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0,
any.a_char, ATR_NONE, any.a_char, ATR_NONE, clr,
"Always disclose, without prompting", "Always disclose, without prompting",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED (c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
if (*disclosure_names[i] == 'v') { if (*disclosure_names[i] == 'v') {
any.a_char = DISCLOSE_SPECIAL_WITHOUT_PROMPT; /* '#' */ any.a_char = DISCLOSE_SPECIAL_WITHOUT_PROMPT; /* '#' */
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 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", "Always disclose, pick sort order from menu",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED (c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
} }
any.a_char = DISCLOSE_PROMPT_DEFAULT_NO; any.a_char = DISCLOSE_PROMPT_DEFAULT_NO;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0,
any.a_char, ATR_NONE, any.a_char, ATR_NONE, clr,
"Prompt, with default answer of \"No\"", "Prompt, with default answer of \"No\"",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED (c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
any.a_char = DISCLOSE_PROMPT_DEFAULT_YES; any.a_char = DISCLOSE_PROMPT_DEFAULT_YES;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0,
any.a_char, ATR_NONE, any.a_char, ATR_NONE, clr,
"Prompt, with default answer of \"Yes\"", "Prompt, with default answer of \"Yes\"",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED (c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
if (*disclosure_names[i] == 'v') { if (*disclosure_names[i] == 'v') {
any.a_char = DISCLOSE_PROMPT_DEFAULT_SPECIAL; /* '?' */ any.a_char = DISCLOSE_PROMPT_DEFAULT_SPECIAL; /* '?' */
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 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", "Prompt, with default answer of \"Ask\" to request sort menu",
(c == any.a_char) ? MENU_ITEMFLAGS_SELECTED (c == any.a_char) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
@@ -4877,6 +4881,7 @@ handler_msg_window(void)
winid tmpwin; winid tmpwin;
anything any; anything any;
boolean is_tty = WINDOWPORT("tty"), is_curses = WINDOWPORT("curses"); boolean is_tty = WINDOWPORT("tty"), is_curses = WINDOWPORT("curses");
int clr = 0;
if (is_tty || is_curses) { if (is_tty || is_curses) {
/* by Christian W. Cooper */ /* by Christian W. Cooper */
@@ -4896,13 +4901,13 @@ handler_msg_window(void)
continue; continue;
Sprintf(buf, "%-12.12s%c%.60s", msgwind[i][0], sep, msgwind[i][1]); Sprintf(buf, "%-12.12s%c%.60s", msgwind[i][0], sep, msgwind[i][1]);
any.a_char = c = *msgwind[i][0]; 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 (c == iflags.prevmsg_window) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
/* second line is prefixed by spaces that "c - " would use */ /* second line is prefixed by spaces that "c - " would use */
Sprintf(buf, "%4s%-12.12s%c%.60s", "", "", sep, msgwind[i][2]); Sprintf(buf, "%4s%-12.12s%c%.60s", "", "", sep, msgwind[i][2]);
any.a_char = '\0'; 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); MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Select message history display type:"); end_menu(tmpwin, "Select message history display type:");
@@ -4943,6 +4948,7 @@ handler_number_pad(void)
"-1 (off, 'z' to move upper-left, 'y' to zap wands)" "-1 (off, 'z' to move upper-left, 'y' to zap wands)"
}; };
menu_item *mode_pick = (menu_item *) 0; menu_item *mode_pick = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -4950,7 +4956,7 @@ handler_number_pad(void)
for (i = 0; i < SIZE(npchoices); i++) { for (i = 0; i < SIZE(npchoices); i++) {
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i, '0' + i, 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:"); end_menu(tmpwin, "Select number_pad mode:");
if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) { if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) {
@@ -4996,6 +5002,7 @@ handler_paranoid_confirmation(void)
anything any; anything any;
int i; int i;
menu_item *paranoia_picks = (menu_item *) 0; menu_item *paranoia_picks = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -5005,7 +5012,7 @@ handler_paranoid_confirmation(void)
continue; continue;
any.a_int = paranoia[i].flagmask; any.a_int = paranoia[i].flagmask;
add_menu(tmpwin, &nul_glyphinfo, &any, *paranoia[i].argname, 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) (flags.paranoia_bits & paranoia[i].flagmask)
? MENU_ITEMFLAGS_SELECTED ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
@@ -5036,6 +5043,7 @@ handler_pickup_burden(void)
int i; int i;
const char *burden_name, *burden_letters = "ubsntl"; const char *burden_name, *burden_letters = "ubsntl";
menu_item *burden_pick = (menu_item *) 0; menu_item *burden_pick = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -5044,7 +5052,7 @@ handler_pickup_burden(void)
burden_name = burdentype[i]; burden_name = burdentype[i];
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, burden_letters[i], 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:"); end_menu(tmpwin, "Select encumbrance level:");
if (select_menu(tmpwin, PICK_ONE, &burden_pick) > 0) { if (select_menu(tmpwin, PICK_ONE, &burden_pick) > 0) {
@@ -5073,6 +5081,7 @@ handler_runmode(void)
int i; int i;
const char *mode_name; const char *mode_name;
menu_item *mode_pick = (menu_item *) 0; menu_item *mode_pick = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -5081,7 +5090,7 @@ handler_runmode(void)
mode_name = runmodes[i]; mode_name = runmodes[i];
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, *mode_name, 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:"); end_menu(tmpwin, "Select run/travel display mode:");
if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) { if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) {
@@ -5100,6 +5109,7 @@ handler_sortloot(void)
int i, n; int i, n;
const char *sortl_name; const char *sortl_name;
menu_item *sortl_pick = (menu_item *) 0; menu_item *sortl_pick = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -5108,7 +5118,7 @@ handler_sortloot(void)
sortl_name = sortltype[i]; sortl_name = sortltype[i];
any.a_char = *sortl_name; any.a_char = *sortl_name;
add_menu(tmpwin, &nul_glyphinfo, &any, *sortl_name, add_menu(tmpwin, &nul_glyphinfo, &any, *sortl_name,
0, ATR_NONE, 0, ATR_NONE, clr,
sortl_name, (flags.sortloot == *sortl_name) sortl_name, (flags.sortloot == *sortl_name)
? MENU_ITEMFLAGS_SELECTED ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
@@ -5139,48 +5149,49 @@ handler_whatis_coord(void)
menu_item *window_pick = (menu_item *) 0; menu_item *window_pick = (menu_item *) 0;
int pick_cnt; int pick_cnt;
char gp = iflags.getpos_coords; char gp = iflags.getpos_coords;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; any = cg.zeroany;
any.a_char = GPCOORDS_COMPASS; any.a_char = GPCOORDS_COMPASS;
add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_COMPASS, add_menu(tmpwin, &nul_glyphinfo, &any, GPCOORDS_COMPASS,
0, ATR_NONE, 0, ATR_NONE, clr,
"compass ('east' or '3s' or '2n,4w')", "compass ('east' or '3s' or '2n,4w')",
(gp == GPCOORDS_COMPASS) (gp == GPCOORDS_COMPASS)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_COMFULL; any.a_char = GPCOORDS_COMFULL;
add_menu(tmpwin, &nul_glyphinfo, &any, 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')", "full compass ('east' or '3south' or '2north,4west')",
(gp == GPCOORDS_COMFULL) (gp == GPCOORDS_COMFULL)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_MAP; any.a_char = GPCOORDS_MAP;
add_menu(tmpwin, &nul_glyphinfo, &any, 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) (gp == GPCOORDS_MAP)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_SCREEN; any.a_char = GPCOORDS_SCREEN;
add_menu(tmpwin, &nul_glyphinfo, &any, 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) (gp == GPCOORDS_SCREEN)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = GPCOORDS_NONE; any.a_char = GPCOORDS_NONE;
add_menu(tmpwin, &nul_glyphinfo, &any, 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) (gp == GPCOORDS_NONE)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_long = 0L; 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); "", MENU_ITEMFLAGS_NONE);
Sprintf(buf, "map: upper-left: <%d,%d>, lower-right: <%d,%d>%s", Sprintf(buf, "map: upper-left: <%d,%d>, lower-right: <%d,%d>%s",
1, 0, COLNO - 1, ROWNO - 1, 1, 0, COLNO - 1, ROWNO - 1,
Verbose(2, handler_whatis_coord1) Verbose(2, handler_whatis_coord1)
? "; column 0 unused, off left edge" : ""); ? "; column 0 unused, off left edge" : "");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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 */ 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", "screen: row is offset to accommodate tty interface's use of top line",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
#if COLNO == 80 #if COLNO == 80
@@ -5191,9 +5202,9 @@ handler_whatis_coord(void)
Sprintf(buf, "screen: upper-left: [%02d,%02d], lower-right: [%d,%d]%s", Sprintf(buf, "screen: upper-left: [%02d,%02d], lower-right: [%d,%d]%s",
0 + 2, 1, ROWNO - 1 + 2, COLNO - 1, COL80ARG); 0 + 2, 1, ROWNO - 1 + 2, COLNO - 1, COL80ARG);
#undef 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); 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); "", MENU_ITEMFLAGS_NONE);
end_menu(tmpwin, end_menu(tmpwin,
"Select coordinate display when auto-describing a map position:"); "Select coordinate display when auto-describing a map position:");
@@ -5217,23 +5228,24 @@ handler_whatis_filter(void)
menu_item *window_pick = (menu_item *) 0; menu_item *window_pick = (menu_item *) 0;
int pick_cnt; int pick_cnt;
char gf = iflags.getloc_filter; char gf = iflags.getloc_filter;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; any = cg.zeroany;
any.a_char = (GFILTER_NONE + 1); any.a_char = (GFILTER_NONE + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 'n', add_menu(tmpwin, &nul_glyphinfo, &any, 'n',
0, ATR_NONE, "no filtering", 0, ATR_NONE, clr, "no filtering",
(gf == GFILTER_NONE) (gf == GFILTER_NONE)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = (GFILTER_VIEW + 1); any.a_char = (GFILTER_VIEW + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 'v', add_menu(tmpwin, &nul_glyphinfo, &any, 'v',
0, ATR_NONE, "in view only", 0, ATR_NONE, clr, "in view only",
(gf == GFILTER_VIEW) (gf == GFILTER_VIEW)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
any.a_char = (GFILTER_AREA + 1); any.a_char = (GFILTER_AREA + 1);
add_menu(tmpwin, &nul_glyphinfo, &any, 'a', add_menu(tmpwin, &nul_glyphinfo, &any, 'a',
0, ATR_NONE, "in same area", 0, ATR_NONE, clr, "in same area",
(gf == GFILTER_AREA) (gf == GFILTER_AREA)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
end_menu(tmpwin, end_menu(tmpwin,
@@ -5269,6 +5281,7 @@ handler_autopickup_exception(void)
int opt_idx, numapes = 0; int opt_idx, numapes = 0;
char apebuf[2 + BUFSZ]; /* so &apebuf[1] is BUFSZ long for getlin() */ char apebuf[2 + BUFSZ]; /* so &apebuf[1] is BUFSZ long for getlin() */
struct autopickup_exception *ape; struct autopickup_exception *ape;
int clr = 0;
ape_again: ape_again:
numapes = count_apes(); numapes = count_apes();
@@ -5303,7 +5316,7 @@ handler_autopickup_exception(void)
ape = g.apelist; ape = g.apelist;
any = cg.zeroany; any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
"Always pickup '<'; never pickup '>'", "Always pickup '<'; never pickup '>'",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
for (i = 0; i < numapes && ape; i++) { for (i = 0; i < numapes && ape; i++) {
@@ -5313,7 +5326,7 @@ handler_autopickup_exception(void)
Sprintf(apebuf, "\"%c%s\"", ape->grab ? '<' : '>', Sprintf(apebuf, "\"%c%s\"", ape->grab ? '<' : '>',
ape->pattern); ape->pattern);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, apebuf, MENU_ITEMFLAGS_NONE); ATR_NONE, clr, apebuf, MENU_ITEMFLAGS_NONE);
ape = ape->next; ape = ape->next;
} }
} }
@@ -5345,6 +5358,7 @@ handler_menu_colors(void)
char buf[BUFSZ]; char buf[BUFSZ];
int opt_idx, nmc, mcclr, mcattr; int opt_idx, nmc, mcclr, mcattr;
char mcbuf[BUFSZ]; char mcbuf[BUFSZ];
int clr = 0;
menucolors_again: menucolors_again:
nmc = count_menucolors(); nmc = count_menucolors();
@@ -5414,7 +5428,7 @@ handler_menu_colors(void)
/* combine main string and suffix */ /* combine main string and suffix */
Strcat(mcbuf, &buf[1]); /* skip buf[]'s initial quote */ Strcat(mcbuf, &buf[1]); /* skip buf[]'s initial quote */
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, mcbuf, MENU_ITEMFLAGS_NONE); ATR_NONE, clr, mcbuf, MENU_ITEMFLAGS_NONE);
tmp = tmp->next; tmp = tmp->next;
} }
Sprintf(mcbuf, "%s menu colors", Sprintf(mcbuf, "%s menu colors",
@@ -5469,6 +5483,7 @@ handler_msgtype(void)
const char *mtype; const char *mtype;
menu_item *pick_list = (menu_item *) 0; menu_item *pick_list = (menu_item *) 0;
struct plinemsg_type *tmp = g.plinemsg_types; struct plinemsg_type *tmp = g.plinemsg_types;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -5484,7 +5499,7 @@ handler_msgtype(void)
else else
Strcat(strcat(mtbuf, tmp->pattern), "\""); Strcat(strcat(mtbuf, tmp->pattern), "\"");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, mtbuf, MENU_ITEMFLAGS_NONE); ATR_NONE, clr, mtbuf, MENU_ITEMFLAGS_NONE);
tmp = tmp->next; tmp = tmp->next;
} }
Sprintf(mtbuf, "%s message types", Sprintf(mtbuf, "%s message types",
@@ -5524,20 +5539,21 @@ handler_verbose(int optidx)
" verbose_suppressor[%d] =%08X", " verbose_suppressor[%d] =%08X",
}; };
char vbbuf[QBUFSZ]; char vbbuf[QBUFSZ];
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; any = cg.zeroany;
Snprintf(vbbuf, sizeof vbbuf, vbstrings[0], flags.verbose ? "On" : "Off"); Snprintf(vbbuf, sizeof vbbuf, vbstrings[0], flags.verbose ? "On" : "Off");
any.a_int = 1; 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); vbbuf, MENU_ITEMFLAGS_NONE);
for (i = 0; i < vb_elements; i++) { for (i = 0; i < vb_elements; i++) {
Snprintf(vbbuf, sizeof vbbuf, vbstrings[1], i, Snprintf(vbbuf, sizeof vbbuf, vbstrings[1], i,
verbosity_suppressions[i]); verbosity_suppressions[i]);
any.a_int = i + 2; any.a_int = i + 2;
add_menu(tmpwin, &nul_glyphinfo, &any, 'b' + i, 0, 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:"); end_menu(tmpwin, "Select verbosity choices:");
@@ -6714,6 +6730,7 @@ query_color(const char *prompt)
anything any; anything any;
int i, pick_cnt; int i, pick_cnt;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int clr = 0;
/* replace user patterns with color name ones and force 'menucolors' On */ /* replace user patterns with color name ones and force 'menucolors' On */
basic_menu_colors(TRUE); basic_menu_colors(TRUE);
@@ -6726,7 +6743,7 @@ query_color(const char *prompt)
break; break;
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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 (colornames[i].color == NO_COLOR) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
} }
@@ -6766,6 +6783,7 @@ query_attr(const char *prompt)
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
boolean allow_many = (prompt && !strncmpi(prompt, "Choose", 6)); boolean allow_many = (prompt && !strncmpi(prompt, "Choose", 6));
int default_attr = ATR_NONE; int default_attr = ATR_NONE;
int clr = 0;
if (prompt && strstri(prompt, "menu headings")) if (prompt && strstri(prompt, "menu headings"))
default_attr = iflags.menu_headings; default_attr = iflags.menu_headings;
@@ -6777,7 +6795,7 @@ query_attr(const char *prompt)
break; break;
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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 (attrnames[i].attr == default_attr) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
} }
@@ -6866,6 +6884,7 @@ query_msgtype(void)
anything any; anything any;
int i, pick_cnt; int i, pick_cnt;
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -6874,7 +6893,8 @@ query_msgtype(void)
if (msgtype_names[i].descr) { if (msgtype_names[i].descr) {
any.a_int = msgtype_names[i].msgtyp + 1; any.a_int = msgtype_names[i].msgtyp + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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"); end_menu(tmpwin, "How to show the message");
pick_cnt = select_menu(tmpwin, PICK_ONE, &picks); pick_cnt = select_menu(tmpwin, PICK_ONE, &picks);
@@ -7705,6 +7725,7 @@ doset(void) /* changing options via menu by Per Liboriussen */
int indexoffset, startpass, endpass; int indexoffset, startpass, endpass;
boolean setinitial = FALSE, fromfile = FALSE, boolean setinitial = FALSE, fromfile = FALSE,
gavehelp = FALSE, skiphelp = !iflags.cmdassist; gavehelp = FALSE, skiphelp = !iflags.cmdassist;
int clr = 0;
/* if we offer '?' as a choice and it is the only thing chosen, /* 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 */ we'll end up coming back here after showing the explanatory text */
@@ -7727,12 +7748,12 @@ doset(void) /* changing options via menu by Per Liboriussen */
if (helptext[i]) { if (helptext[i]) {
Sprintf(buf, "%4s%.75s", "", helptext[i]); Sprintf(buf, "%4s%.75s", "", helptext[i]);
any.a_int = 0; 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); buf, MENU_ITEMFLAGS_NONE);
} else { } else {
any.a_int = '?' + 1; /* processing pick_list subtracts 1 */ any.a_int = '?' + 1; /* processing pick_list subtracts 1 */
add_menu(tmpwin, &nul_glyphinfo, &any, '?', '?', ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, '?', '?', ATR_NONE,
"view help for options menu", clr, "view help for options menu",
MENU_ITEMFLAGS_SKIPINVERT); MENU_ITEMFLAGS_SKIPINVERT);
} }
} }
@@ -7756,7 +7777,7 @@ doset(void) /* changing options via menu by Per Liboriussen */
indexoffset = 1; indexoffset = 1;
any = cg.zeroany; 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); "Booleans (selecting will toggle value):", MENU_ITEMFLAGS_NONE);
any.a_int = 0; any.a_int = 0;
/* first list any other non-modifiable booleans, then modifiable ones */ /* first list any other non-modifiable booleans, then modifiable ones */
@@ -7784,12 +7805,12 @@ doset(void) /* changing options via menu by Per Liboriussen */
if (pass == 0) if (pass == 0)
enhance_menu_text(buf, sizeof buf, pass, bool_p, &allopt[i]); enhance_menu_text(buf, sizeof buf, pass, bool_p, &allopt[i]);
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, buf, MENU_ITEMFLAGS_NONE); ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
} }
any = cg.zeroany; any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings, clr,
"Compounds (selecting will prompt for new value):", "Compounds (selecting will prompt for new value):",
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
@@ -7821,9 +7842,10 @@ doset(void) /* changing options via menu by Per Liboriussen */
any = cg.zeroany; any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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, 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 (pass = startpass; pass <= endpass; pass++)
for (i = 0; (name = allopt[i].name) != 0; i++) { for (i = 0; (name = allopt[i].name) != 0; i++) {
@@ -7842,9 +7864,9 @@ doset(void) /* changing options via menu by Per Liboriussen */
#ifdef PREFIXES_IN_USE #ifdef PREFIXES_IN_USE
any = cg.zeroany; any = cg.zeroany;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
"Variable playground locations:", MENU_ITEMFLAGS_NONE); "Variable playground locations:", MENU_ITEMFLAGS_NONE);
for (i = 0; i < PREFIX_COUNT; i++) for (i = 0; i < PREFIX_COUNT; i++)
doset_add_menu(tmpwin, fqn_prefix_names[i], -1, 0); doset_add_menu(tmpwin, fqn_prefix_names[i], -1, 0);
@@ -7943,6 +7965,7 @@ doset_add_menu(winid win, /* window to add to */
#ifdef PREFIXES_IN_USE #ifdef PREFIXES_IN_USE
int j; int j;
#endif #endif
int clr = 0;
buf2[0] = '\0'; /* per opt functs may not guarantee this, so do it */ buf2[0] = '\0'; /* per opt functs may not guarantee this, so do it */
any = cg.zeroany; any = cg.zeroany;
@@ -7975,7 +7998,7 @@ doset_add_menu(winid win, /* window to add to */
else else
Sprintf(buf, fmtstr_doset_tab, option, value); Sprintf(buf, fmtstr_doset_tab, option, value);
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, buf, MENU_ITEMFLAGS_NONE); ATR_NONE, clr, buf, MENU_ITEMFLAGS_NONE);
} }
@@ -8134,6 +8157,7 @@ handle_add_list_remove(const char *optname, int numtotal)
{ 'r', "remove existing %s" }, /* [2] */ { 'r', "remove existing %s" }, /* [2] */
{ 'x', "exit this menu" }, /* [3] */ { 'x', "exit this menu" }, /* [3] */
}; };
int clr = 0;
opt_idx = 0; opt_idx = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
@@ -8149,7 +8173,7 @@ handle_add_list_remove(const char *optname, int numtotal)
Sprintf(tmpbuf, action_titles[i].desc, Sprintf(tmpbuf, action_titles[i].desc,
(i == 1) ? makeplural(optname) : optname); (i == 1) ? makeplural(optname) : optname);
add_menu(tmpwin, &nul_glyphinfo,&any, action_titles[i].letr, 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); (i == 3) ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Do what?"); end_menu(tmpwin, "Do what?");
@@ -8504,6 +8528,7 @@ choose_classes_menu(const char *prompt,
int i, n; int i, n;
int ret; int ret;
int next_accelerator, accelerator; int next_accelerator, accelerator;
int clr = 0;
if (class_list == (char *) 0 || class_select == (char *) 0) if (class_list == (char *) 0 || class_select == (char *) 0)
return 0; return 0;
@@ -8539,7 +8564,7 @@ choose_classes_menu(const char *prompt,
} }
any.a_int = *class_list; any.a_int = *class_list;
add_menu(win, &nul_glyphinfo, &any, accelerator, 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); selected ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
++class_list; ++class_list;
if (category > 0) { if (category > 0) {
@@ -8554,14 +8579,14 @@ choose_classes_menu(const char *prompt,
/* for objects, add "A - ' ' all classes", after a separator */ /* for objects, add "A - ' ' all classes", after a separator */
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, "", MENU_ITEMFLAGS_NONE); ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
any.a_int = (int) ' '; any.a_int = (int) ' ';
Sprintf(buf, "%c %s", (char) any.a_int, "all classes of objects"); Sprintf(buf, "%c %s", (char) any.a_int, "all classes of objects");
/* we won't preselect this even if the incoming list is empty; /* we won't preselect this even if the incoming list is empty;
having it selected means that it would have to be explicitly having it selected means that it would have to be explicitly
de-selected in order to select anything else */ de-selected in order to select anything else */
add_menu(win, &nul_glyphinfo, &any, 'A', 0, 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); end_menu(win, prompt);
n = select_menu(win, way ? PICK_ANY : PICK_ONE, &pick_list); n = select_menu(win, way ? PICK_ANY : PICK_ONE, &pick_list);
+14 -11
View File
@@ -1412,6 +1412,7 @@ do_look(int mode, coord *click_cc)
coord cc; /* screen pos of unknown glyph */ coord cc; /* screen pos of unknown glyph */
boolean save_verbose; /* saved value of flags.verbose */ boolean save_verbose; /* saved value of flags.verbose */
boolean from_screen; /* question from the screen */ boolean from_screen; /* question from the screen */
int clr = 0;
cc.x = 0; cc.x = 0;
cc.y = 0; cc.y = 0;
@@ -1433,20 +1434,20 @@ do_look(int mode, coord *click_cc)
versions: "Specify unknown object by cursor?" */ versions: "Specify unknown object by cursor?" */
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 'y', ATR_NONE, 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'; any.a_char = 'i';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, 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 = '?'; any.a_char = '?';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 'n', ATR_NONE, 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); MENU_ITEMFLAGS_NONE);
if (!u.uswallow && !Hallucination) { if (!u.uswallow && !Hallucination) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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, /* these options work sensibly for the swallowed case,
but there's no reason for the player to use them then; but there's no reason for the player to use them then;
objects work fine when hallucinating, but screen objects work fine when hallucinating, but screen
@@ -1455,27 +1456,28 @@ do_look(int mode, coord *click_cc)
any.a_char = 'm'; any.a_char = 'm';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
"nearby monsters", MENU_ITEMFLAGS_NONE); clr, "nearby monsters", MENU_ITEMFLAGS_NONE);
any.a_char = 'M'; any.a_char = 'M';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, 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'; any.a_char = 'o';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
"nearby objects", MENU_ITEMFLAGS_NONE); clr, "nearby objects", MENU_ITEMFLAGS_NONE);
any.a_char = 'O'; any.a_char = 'O';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, 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 = '^'; any.a_char = '^';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, flags.lootabc ? 0 : any.a_char, 0, ATR_NONE,
"nearby traps", MENU_ITEMFLAGS_NONE); clr, "nearby traps", MENU_ITEMFLAGS_NONE);
any.a_char = '\"'; any.a_char = '\"';
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
flags.lootabc ? 0 : any.a_char, 0, ATR_NONE, 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:"); end_menu(win, "What do you want to look at:");
if (select_menu(win, PICK_ONE, &pick_list) > 0) { if (select_menu(win, PICK_ONE, &pick_list) > 0) {
@@ -2418,6 +2420,7 @@ dohelp(void)
menu_item *selected; menu_item *selected;
anything any; anything any;
int sel; int sel;
int clr = 0;
any = cg.zeroany; /* zero all bits */ any = cg.zeroany; /* zero all bits */
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -2433,7 +2436,7 @@ dohelp(void)
Strcpy(helpbuf, help_menu_items[i].text); Strcpy(helpbuf, help_menu_items[i].text);
} }
any.a_int = i + 1; 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); helpbuf, MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Select one item:"); end_menu(tmpwin, "Select one item:");
+42 -36
View File
@@ -955,6 +955,7 @@ query_objlist(const char *qstr, /* query string */
unsigned sortflags; unsigned sortflags;
glyph_info tmpglyphinfo = nul_glyphinfo; glyph_info tmpglyphinfo = nul_glyphinfo;
Loot *sortedolist, *srtoli; Loot *sortedolist, *srtoli;
int clr = 0;
*pick_list = (menu_item *) 0; *pick_list = (menu_item *) 0;
if (!olist && !engulfer) if (!olist && !engulfer)
@@ -1005,7 +1006,7 @@ query_objlist(const char *qstr, /* query string */
/* dotypeinv() supplies g.this_title to display as initial header; /* dotypeinv() supplies g.this_title to display as initial header;
intentionally avoid the menu_headings highlight attribute here */ intentionally avoid the menu_headings highlight attribute here */
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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 * Run through the list and add the objects to the menu. If
@@ -1034,7 +1035,7 @@ query_objlist(const char *qstr, /* query string */
if (sorted && !printed_type_name) { if (sorted && !printed_type_name) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
let_to_name(*pack, FALSE, let_to_name(*pack, FALSE,
((how != PICK_NONE) ((how != PICK_NONE)
&& iflags.menu_head_objsym)), && iflags.menu_head_objsym)),
@@ -1049,7 +1050,7 @@ query_objlist(const char *qstr, /* query string */
(qflags & USE_INVLET) ? curr->invlet (qflags & USE_INVLET) ? curr->invlet
: (first && curr->oclass == COIN_CLASS) ? '$' : 0, : (first && curr->oclass == COIN_CLASS) ? '$' : 0,
def_oc_syms[(int) objects[curr->otyp].oc_class].sym, 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); MENU_ITEMFLAGS_NONE);
first = FALSE; first = FALSE;
} }
@@ -1066,7 +1067,7 @@ query_objlist(const char *qstr, /* query string */
Sprintf(buf, "%s Creatures", Sprintf(buf, "%s Creatures",
is_animal(u.ustuck->data) ? "Swallowed" : "Engulfed"); is_animal(u.ustuck->data) ? "Swallowed" : "Engulfed");
add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings, 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 = cg.zeroobj;
fake_hero_object.quan = 1L; /* not strictly necessary... */ fake_hero_object.quan = 1L; /* not strictly necessary... */
@@ -1075,7 +1076,7 @@ query_objlist(const char *qstr, /* query string */
map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo); map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo);
add_menu(win, &tmpglyphinfo, &any, add_menu(win, &tmpglyphinfo, &any,
/* fake inventory letter, no group accelerator */ /* 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); MENU_ITEMFLAGS_NONE);
} }
@@ -1157,6 +1158,7 @@ query_category(const char *qstr, /* query string */
int num_buc_types = 0; int num_buc_types = 0;
unsigned itemflags = MENU_ITEMFLAGS_NONE; unsigned itemflags = MENU_ITEMFLAGS_NONE;
int num_justpicked = 0; int num_justpicked = 0;
int clr = 0;
*pick_list = (menu_item *) 0; *pick_list = (menu_item *) 0;
if (!olist) if (!olist)
@@ -1218,14 +1220,14 @@ query_category(const char *qstr, /* query string */
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'A'; any.a_int = 'A';
itemflags = MENU_ITEMFLAGS_SKIPINVERT; 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" (qflags & WORN_TYPES) ? "Auto-select every item being worn"
: "Auto-select every relevant item", : "Auto-select every relevant item",
itemflags); itemflags);
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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)) { if ((qflags & ALL_TYPES) && (ccount > 1)) {
@@ -1233,7 +1235,7 @@ query_category(const char *qstr, /* query string */
any = cg.zeroany; any = cg.zeroany;
any.a_int = ALL_TYPES_SELECTED; any.a_int = ALL_TYPES_SELECTED;
itemflags = MENU_ITEMFLAGS_SKIPINVERT; 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", (qflags & WORN_TYPES) ? "All worn types" : "All types",
itemflags); itemflags);
invlet = 'b'; invlet = 'b';
@@ -1251,9 +1253,9 @@ query_category(const char *qstr, /* query string */
add_menu( add_menu(
win, &nul_glyphinfo, &any, invlet++, win, &nul_glyphinfo, &any, invlet++,
def_oc_syms[(int) objects[curr->otyp].oc_class].sym, def_oc_syms[(int) objects[curr->otyp].oc_class].sym,
ATR_NONE, let_to_name(*pack, FALSE, ATR_NONE, clr, let_to_name(*pack, FALSE,
(how != PICK_NONE) (how != PICK_NONE)
&& iflags.menu_head_objsym), && iflags.menu_head_objsym),
MENU_ITEMFLAGS_NONE); MENU_ITEMFLAGS_NONE);
collected_type_name = TRUE; collected_type_name = TRUE;
} }
@@ -1271,7 +1273,7 @@ query_category(const char *qstr, /* query string */
|| do_uncursed || do_buc_unknown) { || do_uncursed || do_buc_unknown) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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 */ /* unpaid items if there are any */
@@ -1280,14 +1282,14 @@ query_category(const char *qstr, /* query string */
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'u'; any.a_int = 'u';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, 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 */ /* billed items: checked by caller, so always include if BILLED_TYPES */
if (qflags & BILLED_TYPES) { if (qflags & BILLED_TYPES) {
invlet = 'x'; invlet = 'x';
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'x'; 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); "Unpaid items already used up", MENU_ITEMFLAGS_NONE);
} }
@@ -1300,28 +1302,28 @@ query_category(const char *qstr, /* query string */
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'B'; any.a_int = 'B';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, 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) { if (do_cursed) {
invlet = 'C'; invlet = 'C';
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'C'; any.a_int = 'C';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, 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) { if (do_uncursed) {
invlet = 'U'; invlet = 'U';
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'U'; any.a_int = 'U';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, 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) { if (do_buc_unknown) {
invlet = 'X'; invlet = 'X';
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'X'; any.a_int = 'X';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, 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) { if (num_justpicked) {
char tmpbuf[BUFSZ]; char tmpbuf[BUFSZ];
@@ -1335,7 +1337,7 @@ query_category(const char *qstr, /* query string */
any = cg.zeroany; any = cg.zeroany;
any.a_int = 'P'; any.a_int = 'P';
add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE, add_menu(win, &nul_glyphinfo, &any, invlet, 0, ATR_NONE,
tmpbuf, itemflags); clr, tmpbuf, itemflags);
} }
end_menu(win, qstr); end_menu(win, qstr);
n = select_menu(win, how, pick_list); n = select_menu(win, how, pick_list);
@@ -1983,6 +1985,7 @@ doloot_core(void)
int prev_inquiry = 0; int prev_inquiry = 0;
boolean prev_loot = FALSE; boolean prev_loot = FALSE;
int num_conts = 0; int num_conts = 0;
int clr = 0;
g.abort_looting = FALSE; g.abort_looting = FALSE;
@@ -2045,7 +2048,7 @@ doloot_core(void)
if (Is_container(cobj)) { if (Is_container(cobj)) {
any.a_obj = cobj; any.a_obj = cobj;
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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?"); end_menu(win, "Loot which containers?");
n = select_menu(win, PICK_ANY, &pick_list); n = select_menu(win, PICK_ANY, &pick_list);
@@ -3174,6 +3177,7 @@ in_or_out_menu(
char buf[BUFSZ]; char buf[BUFSZ];
int n; int n;
const char *menuselector = flags.lootabc ? abc_chars : lootchars; const char *menuselector = flags.lootabc ? abc_chars : lootchars;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
win = create_nhwindow(NHW_MENU); win = create_nhwindow(NHW_MENU);
@@ -3182,48 +3186,48 @@ in_or_out_menu(
any.a_int = 1; /* ':' */ any.a_int = 1; /* ':' */
Sprintf(buf, "Look inside %s", thesimpleoname(obj)); Sprintf(buf, "Look inside %s", thesimpleoname(obj));
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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) { if (outokay) {
any.a_int = 2; /* 'o' */ any.a_int = 2; /* 'o' */
Sprintf(buf, "take %s out", something); Sprintf(buf, "take %s out", something);
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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) { if (inokay) {
any.a_int = 3; /* 'i' */ any.a_int = 3; /* 'i' */
Sprintf(buf, "put %s in", something); Sprintf(buf, "put %s in", something);
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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) { if (outokay) {
any.a_int = 4; /* 'b' */ any.a_int = 4; /* 'b' */
Sprintf(buf, "%stake out, then put in", inokay ? "both; " : ""); Sprintf(buf, "%stake out, then put in", inokay ? "both; " : "");
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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) { if (inokay) {
any.a_int = 5; /* 'r' */ any.a_int = 5; /* 'r' */
Sprintf(buf, "%sput in, then take out", Sprintf(buf, "%sput in, then take out",
outokay ? "both reversed; " : ""); outokay ? "both reversed; " : "");
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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' */ any.a_int = 6; /* 's' */
Sprintf(buf, "stash one item into %s", thesimpleoname(obj)); Sprintf(buf, "stash one item into %s", thesimpleoname(obj));
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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; any.a_int = 0;
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, "", MENU_ITEMFLAGS_NONE); ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
if (more_containers) { if (more_containers) {
any.a_int = 7; /* 'n' */ any.a_int = 7; /* 'n' */
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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' */ any.a_int = 8; /* 'q' */
Strcpy(buf, alreadyused ? "done" : "do nothing"); Strcpy(buf, alreadyused ? "done" : "do nothing");
add_menu(win, &nul_glyphinfo, &any, menuselector[any.a_int], 0, 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); more_containers ? MENU_ITEMFLAGS_NONE : MENU_ITEMFLAGS_SELECTED);
end_menu(win, prompt); end_menu(win, prompt);
@@ -3292,6 +3296,7 @@ dotip(void)
anything any; anything any;
menu_item *pick_list = (menu_item *) 0; menu_item *pick_list = (menu_item *) 0;
struct obj dummyobj, *otmp; struct obj dummyobj, *otmp;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
win = create_nhwindow(NHW_MENU); win = create_nhwindow(NHW_MENU);
@@ -3302,19 +3307,19 @@ dotip(void)
if (Is_container(cobj)) { if (Is_container(cobj)) {
++i; ++i;
any.a_obj = cobj; any.a_obj = cobj;
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
ATR_NONE, doname(cobj), MENU_ITEMFLAGS_NONE); clr, doname(cobj), MENU_ITEMFLAGS_NONE);
} }
if (g.invent) { if (g.invent) {
any = cg.zeroany; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
"", MENU_ITEMFLAGS_NONE); clr, "", MENU_ITEMFLAGS_NONE);
any.a_obj = &dummyobj; any.a_obj = &dummyobj;
/* use 'i' for inventory unless there are so many /* use 'i' for inventory unless there are so many
containers that it's already being used */ containers that it's already being used */
i = (i <= 'i' - 'a' && !flags.lootabc) ? 'i' : 0; i = (i <= 'i' - 'a' && !flags.lootabc) ? 'i' : 0;
add_menu(win, &nul_glyphinfo, &any, i, 0, ATR_NONE, add_menu(win, &nul_glyphinfo, &any, i, 0, ATR_NONE,
"tip something being carried", clr, "tip something being carried",
MENU_ITEMFLAGS_SELECTED); MENU_ITEMFLAGS_SELECTED);
} }
end_menu(win, "Tip which container?"); end_menu(win, "Tip which container?");
@@ -3566,6 +3571,7 @@ tipcontainer_gettarget(struct obj *box, boolean *cancelled)
menu_item *pick_list = (menu_item *) 0; menu_item *pick_list = (menu_item *) 0;
struct obj dummyobj, *otmp; struct obj dummyobj, *otmp;
int n_conts = count_containers(g.invent); int n_conts = count_containers(g.invent);
int clr = 0;
/* we're carrying the box, don't count it as possible target */ /* we're carrying the box, don't count it as possible target */
if (box->where == OBJ_INVENT) if (box->where == OBJ_INVENT)
@@ -3583,18 +3589,18 @@ tipcontainer_gettarget(struct obj *box, boolean *cancelled)
any = cg.zeroany; any = cg.zeroany;
any.a_obj = &dummyobj; any.a_obj = &dummyobj;
add_menu(win, &nul_glyphinfo, &any, '-', 0, ATR_NONE, 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; any = cg.zeroany;
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, 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) for (otmp = g.invent; otmp; otmp = otmp->nobj)
if (Is_container(otmp) && (otmp != box)) { if (Is_container(otmp) && (otmp != box)) {
any = cg.zeroany; any = cg.zeroany;
any.a_obj = otmp; any.a_obj = otmp;
add_menu(win, &nul_glyphinfo, &any, otmp->invlet, 0, 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)); Sprintf(buf, "Where to tip the contents of %s", doname(box));
+7 -6
View File
@@ -1392,6 +1392,7 @@ restore_menu(
char **saved; char **saved;
menu_item *chosen_game = (menu_item *) 0; menu_item *chosen_game = (menu_item *) 0;
int k, clet, ch = 0; /* ch: 0 => new game */ int k, clet, ch = 0; /* ch: 0 => new game */
int clr = 0;
*g.plname = '\0'; *g.plname = '\0';
saved = get_saved_games(); /* array of character names */ saved = get_saved_games(); /* array of character names */
@@ -1405,25 +1406,25 @@ restore_menu(
/* COPYRIGHT_BANNER_[ABCD] */ /* COPYRIGHT_BANNER_[ABCD] */
for (k = 1; k <= 4; ++k) for (k = 1; k <= 4; ++k)
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
copyright_banner_line(k), MENU_ITEMFLAGS_NONE); clr, copyright_banner_line(k), 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); MENU_ITEMFLAGS_NONE);
} }
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_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) { for (k = 0; saved[k]; ++k) {
any.a_int = k + 1; any.a_int = k + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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 */ clet = (k <= 'n' - 'a') ? 'n' : 0; /* new game */
any.a_int = -1; /* not >= 0 */ any.a_int = -1; /* not >= 0 */
add_menu(tmpwin, &nul_glyphinfo, &any, clet, 0, ATR_NONE, 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 */ clet = (k + 1 <= 'q' - 'a') ? 'q' : 0; /* quit */
any.a_int = -2; any.a_int = -2;
add_menu(tmpwin, &nul_glyphinfo, &any, clet, 0, ATR_NONE, 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 */ /* no prompt on end_menu, as we've done our own at the top */
end_menu(tmpwin, (char *) 0); end_menu(tmpwin, (char *) 0);
if (select_menu(tmpwin, PICK_ONE, &chosen_game) > 0) { if (select_menu(tmpwin, PICK_ONE, &chosen_game) > 0) {
+6 -5
View File
@@ -1749,6 +1749,7 @@ role_menu_extra(int which, winid where, boolean preselect)
char buf[BUFSZ]; char buf[BUFSZ];
const char *what = 0, *constrainer = 0, *forcedvalue = 0; const char *what = 0, *constrainer = 0, *forcedvalue = 0;
int f = 0, r, c, gend, a, i, allowmask; int f = 0, r, c, gend, a, i, allowmask;
int clr = 0;
r = flags.initrole; r = flags.initrole;
c = flags.initrace; c = flags.initrace;
@@ -1852,13 +1853,13 @@ role_menu_extra(int which, winid where, boolean preselect)
any.a_int = 0; any.a_int = 0;
/* use four spaces of padding to fake a grayed out menu choice */ /* use four spaces of padding to fake a grayed out menu choice */
Sprintf(buf, "%4s%s forces %s", "", constrainer, forcedvalue); 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); MENU_ITEMFLAGS_NONE);
} else if (what) { } else if (what) {
any.a_int = RS_menu_arg(which); any.a_int = RS_menu_arg(which);
Sprintf(buf, "Pick%s %s first", (f >= 0) ? " another" : "", what); Sprintf(buf, "Pick%s %s first", (f >= 0) ? " another" : "", what);
add_menu(where, &nul_glyphinfo, &any, RS_menu_let[which], 0, 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) { } else if (which == RS_filter) {
char setfiltering[40]; char setfiltering[40];
@@ -1866,16 +1867,16 @@ role_menu_extra(int which, winid where, boolean preselect)
Sprintf(setfiltering, "%s role/race/&c filtering", Sprintf(setfiltering, "%s role/race/&c filtering",
gotrolefilter() ? "Reset" : "Set"); gotrolefilter() ? "Reset" : "Set");
add_menu(where, &nul_glyphinfo, &any, '~', 0, ATR_NONE, add_menu(where, &nul_glyphinfo, &any, '~', 0, ATR_NONE,
setfiltering, MENU_ITEMFLAGS_NONE); clr, setfiltering, MENU_ITEMFLAGS_NONE);
} else if (which == ROLE_RANDOM) { } else if (which == ROLE_RANDOM) {
any.a_int = ROLE_RANDOM; any.a_int = ROLE_RANDOM;
add_menu(where, &nul_glyphinfo, &any, '*', 0, add_menu(where, &nul_glyphinfo, &any, '*', 0,
ATR_NONE, "Random", ATR_NONE, clr, "Random",
preselect ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); preselect ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} else if (which == ROLE_NONE) { } else if (which == ROLE_NONE) {
any.a_int = ROLE_NONE; any.a_int = ROLE_NONE;
add_menu(where, &nul_glyphinfo, &any, 'q', 0, add_menu(where, &nul_glyphinfo, &any, 'q', 0,
ATR_NONE, "Quit", ATR_NONE, clr, "Quit",
preselect ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); preselect ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} else { } else {
impossible("role_menu_extra: bad arg (%d)", which); impossible("role_menu_extra: bad arg (%d)", which);
+7 -5
View File
@@ -1583,6 +1583,7 @@ spellsortmenu(void)
anything any; anything any;
char let; char let;
int i, n, choice; int i, n, choice;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -1594,13 +1595,13 @@ spellsortmenu(void)
/* separate final choice from others with a blank line */ /* separate final choice from others with a blank line */
any.a_int = 0; any.a_int = 0;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, "", MENU_ITEMFLAGS_NONE); ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
} else { } else {
let = 'a' + i; let = 'a' + i;
} }
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, let, 0, 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); (i == g.spl_sortmode) ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "View known spells list sorted"); end_menu(tmpwin, "View known spells list sorted");
@@ -1672,6 +1673,7 @@ dospellmenu(
const char *fmt; const char *fmt;
menu_item *selected; menu_item *selected;
anything any; anything any;
int clr = 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin, MENU_BEHAVE_STANDARD); start_menu(tmpwin, MENU_BEHAVE_STANDARD);
@@ -1698,7 +1700,7 @@ dospellmenu(
Sprintf(eos(buf), "%c%6s", sep, "turns"); Sprintf(eos(buf), "%c%6s", sep, "turns");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, 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++) { for (i = 0; i < MAXSPELL && spellid(i) != NO_SPELL; i++) {
splnum = !g.spl_orderindx ? i : g.spl_orderindx[i]; splnum = !g.spl_orderindx ? i : g.spl_orderindx[i];
Sprintf(buf, fmt, spellname(splnum), spellev(splnum), Sprintf(buf, fmt, spellname(splnum), spellev(splnum),
@@ -1710,7 +1712,7 @@ dospellmenu(
any.a_int = splnum + 1; /* must be non-zero */ any.a_int = splnum + 1; /* must be non-zero */
add_menu(tmpwin, &nul_glyphinfo, &any, spellet(splnum), 0, add_menu(tmpwin, &nul_glyphinfo, &any, spellet(splnum), 0,
ATR_NONE, buf, ATR_NONE, clr, buf,
(splnum == splaction) (splnum == splaction)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
@@ -1723,7 +1725,7 @@ dospellmenu(
/* more than 1 spell, add an extra menu entry */ /* more than 1 spell, add an extra menu entry */
any.a_int = SPELLMENU_SORT + 1; any.a_int = SPELLMENU_SORT + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, '+', 0, 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); end_menu(tmpwin, prompt);
+3 -2
View File
@@ -787,6 +787,7 @@ do_symset(boolean rogueflag)
char *symset_name, fmtstr[20]; char *symset_name, fmtstr[20];
struct symsetentry *sl; struct symsetentry *sl;
int res, which_set, setcount = 0, chosen = -2, defindx = 0; int res, which_set, setcount = 0, chosen = -2, defindx = 0;
int clr = 0;
which_set = rogueflag ? ROGUESET : PRIMARYSET; which_set = rogueflag ? ROGUESET : PRIMARYSET;
g.symset_list = (struct symsetentry *) 0; g.symset_list = (struct symsetentry *) 0;
@@ -838,7 +839,7 @@ do_symset(boolean rogueflag)
if (!symset_name) if (!symset_name)
defindx = any.a_int; defindx = any.a_int;
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
"Default Symbols", clr, "Default Symbols",
(any.a_int == defindx) ? MENU_ITEMFLAGS_SELECTED (any.a_int == defindx) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
@@ -863,7 +864,7 @@ do_symset(boolean rogueflag)
defindx = any.a_int; defindx = any.a_int;
Sprintf(buf, fmtstr, sl->name, sl->desc ? sl->desc : ""); Sprintf(buf, fmtstr, sl->name, sl->desc ? sl->desc : "");
add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0, add_menu(tmpwin, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, buf, ATR_NONE, clr, buf,
(any.a_int == defindx) ? MENU_ITEMFLAGS_SELECTED (any.a_int == defindx) ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
} }
+2 -2
View File
@@ -661,7 +661,7 @@ dotelecmd(void)
menu_item *picks = (menu_item *) 0; menu_item *picks = (menu_item *) 0;
anything any; anything any;
winid win; winid win;
int i, tmode; int i, tmode, clr = 0;
win = create_nhwindow(NHW_MENU); win = create_nhwindow(NHW_MENU);
start_menu(win, MENU_BEHAVE_STANDARD); start_menu(win, MENU_BEHAVE_STANDARD);
@@ -669,7 +669,7 @@ dotelecmd(void)
for (i = 0; i < SIZE(tports); ++i) { for (i = 0; i < SIZE(tports); ++i) {
any.a_int = (int) tports[i].menulet; any.a_int = (int) tports[i].menulet;
add_menu(win, &nul_glyphinfo, &any, (char) any.a_int, 0, 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 (tports[i].menulet == 'w') ? MENU_ITEMFLAGS_SELECTED
: MENU_ITEMFLAGS_NONE); : MENU_ITEMFLAGS_NONE);
} }
+6 -5
View File
@@ -1161,6 +1161,7 @@ enhance_weapon_skill(void)
anything any; anything any;
winid win; winid win;
boolean speedy = FALSE; boolean speedy = FALSE;
int clr = 0;
/* player knows about #enhance, don't show tip anymore */ /* player knows about #enhance, don't show tip anymore */
g.context.enhance_tip = TRUE; g.context.enhance_tip = TRUE;
@@ -1198,17 +1199,17 @@ enhance_weapon_skill(void)
? "when you're more experienced" ? "when you're more experienced"
: "if skill slots become available"); : "if skill slots become available");
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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) { if (maxxed_cnt > 0) {
Sprintf(buf, Sprintf(buf,
"(Skill%s flagged by \"#\" cannot be enhanced any further.)", "(Skill%s flagged by \"#\" cannot be enhanced any further.)",
plur(maxxed_cnt)); plur(maxxed_cnt));
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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, 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 /* List the skills, making ones that could be advanced
@@ -1222,7 +1223,7 @@ enhance_weapon_skill(void)
any = cg.zeroany; any = cg.zeroany;
if (i == skill_ranges[pass].first) if (i == skill_ranges[pass].first)
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
iflags.menu_headings, iflags.menu_headings, clr,
skill_ranges[pass].name, MENU_ITEMFLAGS_NONE); skill_ranges[pass].name, MENU_ITEMFLAGS_NONE);
if (P_RESTRICTED(i)) if (P_RESTRICTED(i))
@@ -1265,7 +1266,7 @@ enhance_weapon_skill(void)
} }
any.a_int = can_advance(i, speedy) ? i + 1 : 0; any.a_int = can_advance(i, speedy) ? i + 1 : 0;
add_menu(win, &nul_glyphinfo, &any, 0, 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:" Strcpy(buf, (to_advance > 0) ? "Pick a skill to advance:"
+4 -2
View File
@@ -71,7 +71,7 @@ static void dump_display_nhwindow(winid, boolean);
static void dump_destroy_nhwindow(winid); static void dump_destroy_nhwindow(winid);
static void dump_start_menu(winid, unsigned long); static void dump_start_menu(winid, unsigned long);
static void dump_add_menu(winid, const glyph_info *, const ANY_P *, char, 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 void dump_end_menu(winid, const char *);
static int dump_select_menu(winid, int, MENU_ITEM_P **); static int dump_select_menu(winid, int, MENU_ITEM_P **);
static void dump_putstr(winid, int, const char *); static void dump_putstr(winid, int, const char *);
@@ -508,7 +508,7 @@ static void hup_exit_nhwindows(const char *);
static winid hup_create_nhwindow(int); static winid hup_create_nhwindow(int);
static int hup_select_menu(winid, int, MENU_ITEM_P **); static int hup_select_menu(winid, int, MENU_ITEM_P **);
static void hup_add_menu(winid, const glyph_info *, const anything *, char, 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_end_menu(winid, const char *);
static void hup_putstr(winid, int, const char *); static void hup_putstr(winid, int, const char *);
static void hup_print_glyph(winid, xchar, xchar, const glyph_info *, static void hup_print_glyph(winid, xchar, xchar, const glyph_info *,
@@ -694,6 +694,7 @@ hup_add_menu(winid window UNUSED,
char sel UNUSED, char sel UNUSED,
char grpsel UNUSED, char grpsel UNUSED,
int attr UNUSED, int attr UNUSED,
int clr UNUSED,
const char *txt UNUSED, const char *txt UNUSED,
unsigned int itemflags UNUSED) unsigned int itemflags UNUSED)
{ {
@@ -1298,6 +1299,7 @@ dump_add_menu(winid win UNUSED,
char ch, char ch,
char gch UNUSED, char gch UNUSED,
int attr UNUSED, int attr UNUSED,
int clr UNUSED,
const char *str, const char *str,
unsigned int itemflags UNUSED) unsigned int itemflags UNUSED)
{ {
+2 -2
View File
@@ -2785,7 +2785,7 @@ set_keyhandling_via_option(void)
{ {
winid tmpwin; winid tmpwin;
anything any; anything any;
int i; int i, clr = 0;
menu_item *console_key_handling_pick = (menu_item *) 0; menu_item *console_key_handling_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU); tmpwin = create_nhwindow(NHW_MENU);
@@ -2794,7 +2794,7 @@ set_keyhandling_via_option(void)
for (i = default_keyhandling; i < SIZE(legal_key_handling); i++) { for (i = default_keyhandling; i < SIZE(legal_key_handling); i++) {
any.a_int = i + 1; any.a_int = i + 1;
add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i, add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i,
0, ATR_NONE, 0, ATR_NONE, clr,
legal_key_handling[i], MENU_ITEMFLAGS_NONE); legal_key_handling[i], MENU_ITEMFLAGS_NONE);
} }
end_menu(tmpwin, "Select windows console key handling:"); end_menu(tmpwin, "Select windows console key handling:");
+1 -1
View File
@@ -458,7 +458,7 @@ void NetHackQtBind::qt_start_menu(winid wid, unsigned long mbehavior UNUSED)
} }
void NetHackQtBind::qt_add_menu(winid wid, const glyph_info *glyphinfo, 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) const char *str, unsigned itemflags)
{ {
NetHackQtWindow* window=id_to_window[(int)wid]; NetHackQtWindow* window=id_to_window[(int)wid];
+1 -1
View File
@@ -54,7 +54,7 @@ public:
static void qt_display_file(const char *filename, boolean must_exist); static void qt_display_file(const char *filename, boolean must_exist);
static void qt_start_menu(winid wid, unsigned long mbehavior); static void qt_start_menu(winid wid, unsigned long mbehavior);
static void qt_add_menu(winid wid, const glyph_info *glyphinfo, 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); const char *str, unsigned int itemflags);
static void qt_end_menu(winid wid, const char *prompt); static void qt_end_menu(winid wid, const char *prompt);
static int qt_select_menu(winid wid, int how, MENU_ITEM_P **menu_list); static int qt_select_menu(winid wid, int how, MENU_ITEM_P **menu_list);
+2 -1
View File
@@ -2011,6 +2011,7 @@ X11_display_file(const char *str, boolean complain)
menu_item *menu_list; menu_item *menu_list;
#define LLEN 128 #define LLEN 128
char line[LLEN]; char line[LLEN];
int clr = 0;
/* Use the port-independent file opener to see if the file exists. */ /* Use the port-independent file opener to see if the file exists. */
fp = dlb_fopen(str, RDTMODE); fp = dlb_fopen(str, RDTMODE);
@@ -2027,7 +2028,7 @@ X11_display_file(const char *str, boolean complain)
any = cg.zeroany; any = cg.zeroany;
while (dlb_fgets(line, LLEN, fp)) { while (dlb_fgets(line, LLEN, fp)) {
X11_add_menu(newwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE, X11_add_menu(newwin, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
line, MENU_ITEMFLAGS_NONE); clr, line, MENU_ITEMFLAGS_NONE);
} }
(void) dlb_fclose(fp); (void) dlb_fclose(fp);
+1
View File
@@ -787,6 +787,7 @@ X11_add_menu(winid window,
char ch, /* selector letter; 0 if not selectable */ char ch, /* selector letter; 0 if not selectable */
char gch, /* group accelerator (0 = no group) */ char gch, /* group accelerator (0 = no group) */
int attr, int attr,
int clr UNUSED,
const char *str, const char *str,
unsigned itemflags) unsigned itemflags)
{ {
+3 -2
View File
@@ -24,7 +24,7 @@ void chainin_putmixed(winid, int, const char *);
void chainin_display_file(const char *, boolean); void chainin_display_file(const char *, boolean);
void chainin_start_menu(winid, unsigned long); void chainin_start_menu(winid, unsigned long);
void chainin_add_menu(winid, const glyph_info *, const ANY_P *, void chainin_add_menu(winid, const glyph_info *, const ANY_P *,
char, char, int, char, char, int, int,
const char *, unsigned int); const char *, unsigned int);
void chainin_end_menu(winid, const char *); void chainin_end_menu(winid, const char *);
int chainin_select_menu(winid, int, MENU_ITEM_P **); int chainin_select_menu(winid, int, MENU_ITEM_P **);
@@ -263,12 +263,13 @@ chainin_add_menu(
char ch, /* keyboard accelerator (0 = pick our own) */ char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */ char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */ int attr, /* attribute for string (like tty_putstr()) */
int clr, /* attribute for string (like tty_putstr()) */
const char *str, /* menu string */ const char *str, /* menu string */
unsigned int itemflags) /* flags such as item is marked as selected unsigned int itemflags) /* flags such as item is marked as selected
MENU_ITEMFLAGS_SELECTED */ MENU_ITEMFLAGS_SELECTED */
{ {
(*cibase->nprocs->win_add_menu)(cibase->ndata, window, glyphinfo, (*cibase->nprocs->win_add_menu)(cibase->ndata, window, glyphinfo,
identifier, ch, gch, attr, str, itemflags); identifier, ch, gch, attr, clr, str, itemflags);
} }
void void
+3 -2
View File
@@ -24,7 +24,7 @@ void chainout_putmixed(void *,winid, int, const char *);
void chainout_display_file(void *,const char *, boolean); void chainout_display_file(void *,const char *, boolean);
void chainout_start_menu(void *,winid, unsigned long); void chainout_start_menu(void *,winid, unsigned long);
void chainout_add_menu(void *,winid, const glyph_info *, const ANY_P *, void chainout_add_menu(void *,winid, const glyph_info *, const ANY_P *,
char, char, int, char, char, int, int,
const char *, unsigned int); const char *, unsigned int);
void chainout_end_menu(void *,winid, const char *); void chainout_end_menu(void *,winid, const char *);
int chainout_select_menu(void *,winid, int, MENU_ITEM_P **); int chainout_select_menu(void *,winid, int, MENU_ITEM_P **);
@@ -300,13 +300,14 @@ chainout_add_menu(
char ch, /* keyboard accelerator (0 = pick our own) */ char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */ char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */ int attr, /* attribute for string (like tty_putstr()) */
int clr, /* clr for string */
const char *str, /* menu string */ const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as marked as selected */ unsigned int itemflags) /* itemflags such as marked as selected */
{ {
struct chainout_data *tdp = vp; struct chainout_data *tdp = vp;
(*tdp->nprocs->win_add_menu)(window, glyphinfo, identifier, ch, gch, (*tdp->nprocs->win_add_menu)(window, glyphinfo, identifier, ch, gch,
attr, str, itemflags); attr, clr, str, itemflags);
} }
void void
+3 -2
View File
@@ -50,7 +50,7 @@ void trace_putmixed(void *,winid, int, const char *);
void trace_display_file(void *,const char *, boolean); void trace_display_file(void *,const char *, boolean);
void trace_start_menu(void *,winid, unsigned long); void trace_start_menu(void *,winid, unsigned long);
void trace_add_menu(void *,winid, const glyph_info *, const ANY_P *, void trace_add_menu(void *,winid, const glyph_info *, const ANY_P *,
char, char, int, char, char, int, int,
const char *, unsigned int); const char *, unsigned int);
void trace_end_menu(void *,winid, const char *); void trace_end_menu(void *,winid, const char *);
int trace_select_menu(void *,winid, int, MENU_ITEM_P **); int trace_select_menu(void *,winid, int, MENU_ITEM_P **);
@@ -446,6 +446,7 @@ trace_add_menu(
char ch, /* keyboard accelerator (0 = pick our own) */ char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */ char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */ int attr, /* attribute for string (like tty_putstr()) */
int clr, /* color for string */
const char *str, /* menu string */ const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as marked as selected */ unsigned int itemflags) /* itemflags such as marked as selected */
{ {
@@ -480,7 +481,7 @@ trace_add_menu(
PRE; PRE;
(*tdp->nprocs->win_add_menu)(tdp->ndata, window, glyphinfo, (*tdp->nprocs->win_add_menu)(tdp->ndata, window, glyphinfo,
identifier,ch, gch, attr, str, itemflags); identifier,ch, gch, attr, clr, str, itemflags);
POST; POST;
} }
+4 -3
View File
@@ -686,6 +686,7 @@ curses_character_dialog(const char **choices, const char *prompt)
anything identifier; anything identifier;
menu_item *selected = NULL; menu_item *selected = NULL;
winid wid = curses_get_wid(NHW_MENU); winid wid = curses_get_wid(NHW_MENU);
int clr = 0;
identifier.a_void = 0; identifier.a_void = 0;
curses_start_menu(wid, MENU_BEHAVE_STANDARD); curses_start_menu(wid, MENU_BEHAVE_STANDARD);
@@ -700,19 +701,19 @@ curses_character_dialog(const char **choices, const char *prompt)
identifier.a_int = (count + 1); /* Must be non-zero */ identifier.a_int = (count + 1); /* Must be non-zero */
curses_add_menu(wid, &nul_glyphinfo, &identifier, curletter, 0, 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; used_letters[count] = curletter;
} }
/* Random Selection */ /* Random Selection */
identifier.a_int = ROLE_RANDOM; identifier.a_int = ROLE_RANDOM;
curses_add_menu(wid, &nul_glyphinfo, &identifier, '*', 0, curses_add_menu(wid, &nul_glyphinfo, &identifier, '*', 0,
A_NORMAL, "Random", MENU_ITEMFLAGS_NONE); A_NORMAL, clr, "Random", MENU_ITEMFLAGS_NONE);
/* Quit prompt */ /* Quit prompt */
identifier.a_int = ROLE_NONE; identifier.a_int = ROLE_NONE;
curses_add_menu(wid, &nul_glyphinfo, &identifier, 'q', 0, 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); curses_end_menu(wid, prompt);
ret = curses_select_menu(wid, PICK_ONE, &selected); ret = curses_select_menu(wid, PICK_ONE, &selected);
if (ret == 1) { if (ret == 1) {
+3 -2
View File
@@ -557,7 +557,8 @@ curses_start_menu(winid wid, unsigned long mbehavior)
add_menu(winid wid, const glyph_info *glyphinfo, add_menu(winid wid, const glyph_info *glyphinfo,
const anything identifier, const anything identifier,
char accelerator, char groupacc, 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 -- Add a text line str to the given menu window. If identifier
is 0, then the line cannot be selected (e.g. a title). is 0, then the line cannot be selected (e.g. a title).
Otherwise, identifier is the value returned if the line is Otherwise, identifier is the value returned if the line is
@@ -590,7 +591,7 @@ void
curses_add_menu(winid wid, const glyph_info *glyphinfo, curses_add_menu(winid wid, const glyph_info *glyphinfo,
const ANY_P *identifier, const ANY_P *identifier,
char accelerator, char group_accel, int attr, char accelerator, char group_accel, int attr,
const char *str, unsigned itemflags) int clr UNUSED, const char *str, unsigned itemflags)
{ {
int curses_attr; int curses_attr;
+4 -3
View File
@@ -373,6 +373,7 @@ curses_prev_mesg(void)
boolean do_lifo = (iflags.prevmsg_window != 'f'); boolean do_lifo = (iflags.prevmsg_window != 'f');
#ifdef DEBUG #ifdef DEBUG
static int showturn = 0; /* 1: show hero_seq value in separators */ static int showturn = 0; /* 1: show hero_seq value in separators */
int clr = 0;
/* /*
* Set DEBUGFILES=MesgTurn in environment or sysconf to decorate * Set DEBUGFILES=MesgTurn in environment or sysconf to decorate
@@ -400,16 +401,16 @@ curses_prev_mesg(void)
(mesg->turn >> 3), (mesg->turn & 7L)); (mesg->turn >> 3), (mesg->turn & 7L));
#endif #endif
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0, 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; turn = mesg->turn;
} }
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0, 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) if (!count)
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0, 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); MENU_ITEMFLAGS_NONE);
curses_end_menu(wid, ""); curses_end_menu(wid, "");
+2 -1
View File
@@ -650,6 +650,7 @@ curses_view_file(const char *filename, boolean must_exist)
char buf[BUFSZ]; char buf[BUFSZ];
menu_item *selected = NULL; menu_item *selected = NULL;
dlb *fp = dlb_fopen(filename, "r"); dlb *fp = dlb_fopen(filename, "r");
int clr = 0;
if (fp == NULL) { if (fp == NULL) {
if (must_exist) if (must_exist)
@@ -663,7 +664,7 @@ curses_view_file(const char *filename, boolean must_exist)
while (dlb_fgets(buf, BUFSZ, fp) != NULL) { while (dlb_fgets(buf, BUFSZ, fp) != NULL) {
curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0, curses_add_menu(wid, &nul_glyphinfo, &Id, 0, 0,
A_NORMAL, buf, FALSE); A_NORMAL, clr, buf, FALSE);
} }
dlb_fclose(fp); dlb_fclose(fp);
+1
View File
@@ -236,6 +236,7 @@ safe_add_menu(
char ch, /* keyboard accelerator (0 = pick our own) */ char ch, /* keyboard accelerator (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */ char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like safe_putstr()) */ int attr, /* attribute for string (like safe_putstr()) */
int clr, /* colour for string */
const char *str, /* menu string */ const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as marked as selected */ unsigned int itemflags) /* itemflags such as marked as selected */
{ {
+2 -2
View File
@@ -130,9 +130,9 @@ VDECLCB(shim_putstr,(winid w, int attr, const char *str), "viis", A2P w, A2P att
VDECLCB(shim_display_file,(const char *name, boolean complain), "vsi", P2V name, A2P complain) 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_start_menu,(winid window, unsigned long mbehavior), "vii", A2P window, A2P mbehavior)
VDECLCB(shim_add_menu, 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", "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) VDECLCB(shim_end_menu,(winid window, const char *prompt), "vis", A2P window, P2V prompt)
/* XXX: shim_select_menu menu_list is an output */ /* 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) DECLCB(int, shim_select_menu,(winid window, int how, MENU_ITEM_P **menu_list), "iiio", A2P window, A2P how, P2V menu_list)
+42 -28
View File
@@ -273,7 +273,7 @@ static void tty_invent_box_glyph_init(struct WinDesc *cw);
static boolean calling_from_update_inventory = FALSE; static boolean calling_from_update_inventory = FALSE;
static boolean assesstty(enum inv_modes, short *, short *, static boolean assesstty(enum inv_modes, short *, short *,
long *, long *, long *, long *, long *); 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 #endif
/* /*
@@ -585,6 +585,7 @@ tty_player_selection(void)
winid win; winid win;
anything any; anything any;
menu_item *selected = 0; menu_item *selected = 0;
int clr = 0;
/* Used to avoid "Is this ok?" if player has already specified all /* Used to avoid "Is this ok?" if player has already specified all
* four facets of role. * four facets of role.
@@ -679,7 +680,7 @@ tty_player_selection(void)
role_menu_extra(ROLE_RANDOM, win, TRUE); role_menu_extra(ROLE_RANDOM, win, TRUE);
any = cg.zeroany; /* separator, not a choice */ any = cg.zeroany; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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_RACE, win, FALSE);
role_menu_extra(RS_GENDER, win, FALSE); role_menu_extra(RS_GENDER, win, FALSE);
role_menu_extra(RS_ALGNMNT, win, FALSE); role_menu_extra(RS_ALGNMNT, win, FALSE);
@@ -777,7 +778,7 @@ tty_player_selection(void)
role_menu_extra(ROLE_RANDOM, win, TRUE); role_menu_extra(ROLE_RANDOM, win, TRUE);
any.a_int = 0; /* separator, not a choice */ any.a_int = 0; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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_ROLE, win, FALSE);
role_menu_extra(RS_GENDER, win, FALSE); role_menu_extra(RS_GENDER, win, FALSE);
role_menu_extra(RS_ALGNMNT, win, FALSE); role_menu_extra(RS_ALGNMNT, win, FALSE);
@@ -869,7 +870,7 @@ tty_player_selection(void)
role_menu_extra(ROLE_RANDOM, win, TRUE); role_menu_extra(ROLE_RANDOM, win, TRUE);
any.a_int = 0; /* separator, not a choice */ any.a_int = 0; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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_ROLE, win, FALSE);
role_menu_extra(RS_RACE, win, FALSE); role_menu_extra(RS_RACE, win, FALSE);
role_menu_extra(RS_ALGNMNT, win, FALSE); role_menu_extra(RS_ALGNMNT, win, FALSE);
@@ -957,7 +958,7 @@ tty_player_selection(void)
role_menu_extra(ROLE_RANDOM, win, TRUE); role_menu_extra(ROLE_RANDOM, win, TRUE);
any.a_int = 0; /* separator, not a choice */ any.a_int = 0; /* separator, not a choice */
add_menu(win, &nul_glyphinfo, &any, 0, 0, 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_ROLE, win, FALSE);
role_menu_extra(RS_RACE, win, FALSE); role_menu_extra(RS_RACE, win, FALSE);
role_menu_extra(RS_GENDER, win, FALSE); role_menu_extra(RS_GENDER, win, FALSE);
@@ -1043,27 +1044,27 @@ tty_player_selection(void)
aligns[ALGN].adj, plbuf, races[RACE].adj, aligns[ALGN].adj, plbuf, races[RACE].adj,
(GEND == 1 && roles[ROLE].name.f) ? roles[ROLE].name.f (GEND == 1 && roles[ROLE].name.f) ? roles[ROLE].name.f
: roles[ROLE].name.m); : 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); MENU_ITEMFLAGS_NONE);
/* blank separator */ /* blank separator */
any.a_int = 0; any.a_int = 0;
add_menu(win, &nul_glyphinfo, &any, 0, 0, add_menu(win, &nul_glyphinfo, &any, 0, 0,
ATR_NONE, "", MENU_ITEMFLAGS_NONE); ATR_NONE, clr, "", MENU_ITEMFLAGS_NONE);
/* [ynaq] menu choices */ /* [ynaq] menu choices */
any.a_int = 1; any.a_int = 1;
add_menu(win, &nul_glyphinfo, &any, 'y', 0, 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; any.a_int = 2;
add_menu(win, &nul_glyphinfo, &any, 'n', 0, 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) { if (iflags.renameallowed) {
any.a_int = 3; any.a_int = 3;
add_menu(win, &nul_glyphinfo, &any, 'a', 0, ATR_NONE, 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; any.a_int = -1;
add_menu(win, &nul_glyphinfo, &any, 'q', 0, 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" : ""); Sprintf(pbuf, "Is this ok? [yn%sq]", iflags.renameallowed ? "a" : "");
end_menu(win, pbuf); end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected); n = select_menu(win, PICK_ONE, &selected);
@@ -1129,7 +1130,7 @@ reset_role_filtering(void)
{ {
winid win; winid win;
anything any; anything any;
int i, n; int i, n, clr = 0;
char filterprompt[QBUFSZ]; char filterprompt[QBUFSZ];
menu_item *selected = 0; menu_item *selected = 0;
@@ -1138,23 +1139,26 @@ reset_role_filtering(void)
any = cg.zeroany; any = cg.zeroany;
/* no extra blank line preceding this entry; end_menu supplies one */ /* 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); "Unacceptable roles", MENU_ITEMFLAGS_NONE);
setup_rolemenu(win, FALSE, ROLE_NONE, ROLE_NONE, ROLE_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, 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); 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, 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); 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, 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); setup_algnmenu(win, FALSE, ROLE_NONE, ROLE_NONE, ROLE_NONE);
Sprintf(filterprompt, "Pick all that apply%s", Sprintf(filterprompt, "Pick all that apply%s",
@@ -1192,6 +1196,7 @@ setup_rolemenu(
int i; int i;
boolean role_ok; boolean role_ok;
char thisch, lastch = '\0', rolenamebuf[50]; char thisch, lastch = '\0', rolenamebuf[50];
int clr = 0;
any = cg.zeroany; /* zero out all bits */ any = cg.zeroany; /* zero out all bits */
for (i = 0; roles[i].name.m; i++) { for (i = 0; roles[i].name.m; i++) {
@@ -1224,7 +1229,7 @@ setup_rolemenu(
/* !filtering implies reset_role_filtering() where we want to /* !filtering implies reset_role_filtering() where we want to
mark this role as preseleted if current filter excludes it */ mark this role as preseleted if current filter excludes it */
add_menu(win, &nul_glyphinfo, &any, thisch, 0, add_menu(win, &nul_glyphinfo, &any, thisch, 0,
ATR_NONE, an(rolenamebuf), ATR_NONE, clr, an(rolenamebuf),
(!filtering && !role_ok) (!filtering && !role_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
lastch = thisch; lastch = thisch;
@@ -1238,6 +1243,7 @@ setup_racemenu(winid win, boolean filtering, int role, int gend, int algn)
boolean race_ok; boolean race_ok;
int i; int i;
char this_ch; char this_ch;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
for (i = 0; races[i].noun; i++) { for (i = 0; races[i].noun; i++) {
@@ -1259,7 +1265,7 @@ setup_racemenu(winid win, boolean filtering, int role, int gend, int algn)
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
filtering ? this_ch : highc(this_ch), filtering ? this_ch : highc(this_ch),
filtering ? highc(this_ch) : 0, filtering ? highc(this_ch) : 0,
ATR_NONE, races[i].noun, ATR_NONE, clr, races[i].noun,
(!filtering && !race_ok) (!filtering && !race_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
@@ -1272,6 +1278,7 @@ setup_gendmenu(winid win, boolean filtering, int role, int race, int algn)
boolean gend_ok; boolean gend_ok;
int i; int i;
char this_ch; char this_ch;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
for (i = 0; i < ROLE_GENDERS; i++) { for (i = 0; i < ROLE_GENDERS; i++) {
@@ -1291,7 +1298,7 @@ setup_gendmenu(winid win, boolean filtering, int role, int race, int algn)
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
filtering ? this_ch : highc(this_ch), filtering ? this_ch : highc(this_ch),
filtering ? highc(this_ch) : 0, filtering ? highc(this_ch) : 0,
ATR_NONE, genders[i].adj, ATR_NONE, clr, genders[i].adj,
(!filtering && !gend_ok) (!filtering && !gend_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
@@ -1304,6 +1311,7 @@ setup_algnmenu(winid win, boolean filtering, int role, int race, int gend)
boolean algn_ok; boolean algn_ok;
int i; int i;
char this_ch; char this_ch;
int clr = 0;
any = cg.zeroany; any = cg.zeroany;
for (i = 0; i < ROLE_ALIGNS; i++) { for (i = 0; i < ROLE_ALIGNS; i++) {
@@ -1323,7 +1331,7 @@ setup_algnmenu(winid win, boolean filtering, int role, int race, int gend)
add_menu(win, &nul_glyphinfo, &any, add_menu(win, &nul_glyphinfo, &any,
filtering ? this_ch : highc(this_ch), filtering ? this_ch : highc(this_ch),
filtering ? highc(this_ch) : 0, filtering ? highc(this_ch) : 0,
ATR_NONE, aligns[i].adj, ATR_NONE, clr, aligns[i].adj,
(!filtering && !algn_ok) (!filtering && !algn_ok)
? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE); ? MENU_ITEMFLAGS_SELECTED : MENU_ITEMFLAGS_NONE);
} }
@@ -3229,6 +3237,7 @@ tty_add_menu(
char ch, /* selector letter (0 = pick our own) */ char ch, /* selector letter (0 = pick our own) */
char gch, /* group accelerator (0 = no group) */ char gch, /* group accelerator (0 = no group) */
int attr, /* attribute for string (like tty_putstr()) */ int attr, /* attribute for string (like tty_putstr()) */
int clr UNUSED, /* color for string */
const char *str, /* menu string */ const char *str, /* menu string */
unsigned int itemflags) /* itemflags such as MENU_ITEMFLAGS_SELECTED */ unsigned int itemflags) /* itemflags such as MENU_ITEMFLAGS_SELECTED */
{ {
@@ -3307,6 +3316,7 @@ tty_end_menu(winid window, /* menu to use */
short len; short len;
int lmax, n; int lmax, n;
char menu_ch; char menu_ch;
int clr = 0;
if (window == WIN_ERR || (cw = wins[window]) == (struct WinDesc *) 0 if (window == WIN_ERR || (cw = wins[window]) == (struct WinDesc *) 0
|| cw->type != NHW_MENU) || cw->type != NHW_MENU)
@@ -3321,9 +3331,9 @@ tty_end_menu(winid window, /* menu to use */
any = cg.zeroany; /* not selectable */ any = cg.zeroany; /* not selectable */
tty_add_menu(window, &nul_glyphinfo, &any, 0, 0, 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, 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 */ /* 52: 'a'..'z' and 'A'..'Z'; avoids selector duplication within a page */
@@ -3591,7 +3601,7 @@ tty_update_inventory(int arg UNUSED)
/* side: left side panel or right side panel, not a window column */ /* side: left side panel or right side panel, not a window column */
side = slot < (!show_gold ? 26 : 27) ? 0 : 1; 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; calling_from_update_inventory = TRUE;
@@ -3679,7 +3689,8 @@ tty_update_invent_slot(
row = (slot % (!show_gold ? 26 : 27)) + 1; /* +1: top border */ row = (slot % (!show_gold ? 26 : 27)) + 1; /* +1: top border */
/* side: left side panel or right side panel, not a window column */ /* side: left side panel or right side panel, not a window column */
side = slot < (!show_gold ? 26 : 27) ? 0 : 1; 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; break;
case render: case render:
if ((cw = wins[window]) == (struct WinDesc *) 0) if ((cw = wins[window]) == (struct WinDesc *) 0)
@@ -3761,7 +3772,7 @@ ttyinv_populate_slot(
struct WinDesc *cw, struct WinDesc *cw,
int row, /* 'row' within the window, not within screen */ int row, /* 'row' within the window, not within screen */
int side, /* 'side'==0 is left panel or ==1 is right panel */ 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; struct tty_perminvent_cell *cell;
char c; char c;
@@ -3770,6 +3781,9 @@ ttyinv_populate_slot(
col = bordercol[side] + 1; col = bordercol[side] + 1;
endcol = bordercol[side + 1] - 1; endcol = bordercol[side + 1] - 1;
cell = &cw->cells[row][col]; cell = &cw->cells[row][col];
if (cell->color != color)
cell->refresh = 1;
cell->color = color;
for (ccnt = col; ccnt <= endcol; ++ccnt, ++cell) { for (ccnt = col; ccnt <= endcol; ++ccnt, ++cell) {
/* [don't expect this to happen] if there was a glyph here, release /* [don't expect this to happen] if there was a glyph here, release
memory allocated for it; gi pointer and ttychar character overlay memory allocated for it; gi pointer and ttychar character overlay
+1
View File
@@ -51,6 +51,7 @@ typedef struct mswin_nhmsg_add_menu {
char accelerator; char accelerator;
char group_accel; char group_accel;
int attr; int attr;
int clr;
const char *str; const char *str;
boolean presel; boolean presel;
unsigned int itemflags; unsigned int itemflags;
+19 -17
View File
@@ -334,6 +334,7 @@ prompt_for_player_selection(void)
anything any; anything any;
menu_item *selected = 0; menu_item *selected = 0;
DWORD box_result; DWORD box_result;
int clr = 0;
logDebug("prompt_for_player_selection()\n"); logDebug("prompt_for_player_selection()\n");
@@ -431,8 +432,8 @@ prompt_for_player_selection(void)
} else } else
Strcpy(rolenamebuf, roles[i].name.m); Strcpy(rolenamebuf, roles[i].name.m);
} }
add_menu(win, &nul_glyphinfo, &any, thisch, 0, add_menu(win, &nul_glyphinfo, &any, thisch, 0, ATR_NONE,
ATR_NONE, an(rolenamebuf), MENU_ITEMFLAGS_NONE); clr, an(rolenamebuf), MENU_ITEMFLAGS_NONE);
lastch = thisch; lastch = thisch;
} }
} }
@@ -441,10 +442,10 @@ prompt_for_player_selection(void)
if (any.a_int == 0) /* must be non-zero */ if (any.a_int == 0) /* must be non-zero */
any.a_int = randrole(FALSE) + 1; any.a_int = randrole(FALSE) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0, 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 */ any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0, 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); Sprintf(pbuf, "Pick a role for your %s", plbuf);
end_menu(win, pbuf); end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected); n = select_menu(win, PICK_ONE, &selected);
@@ -507,7 +508,7 @@ prompt_for_player_selection(void)
flags.initalign)) { flags.initalign)) {
any.a_int = i + 1; /* must be non-zero */ any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 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); races[i].noun, MENU_ITEMFLAGS_NONE);
} }
any.a_int = pick_race(flags.initrole, flags.initgend, any.a_int = pick_race(flags.initrole, flags.initgend,
@@ -515,10 +516,10 @@ prompt_for_player_selection(void)
if (any.a_int == 0) /* must be non-zero */ if (any.a_int == 0) /* must be non-zero */
any.a_int = randrace(flags.initrole) + 1; any.a_int = randrace(flags.initrole) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0, 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 */ any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0, 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); Sprintf(pbuf, "Pick the race of your %s", plbuf);
end_menu(win, pbuf); end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected); n = select_menu(win, PICK_ONE, &selected);
@@ -582,7 +583,7 @@ prompt_for_player_selection(void)
flags.initalign)) { flags.initalign)) {
any.a_int = i + 1; any.a_int = i + 1;
add_menu(win, &nul_glyphinfo, &any, 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); genders[i].adj, MENU_ITEMFLAGS_NONE);
} }
any.a_int = pick_gend(flags.initrole, flags.initrace, any.a_int = pick_gend(flags.initrole, flags.initrace,
@@ -590,10 +591,10 @@ prompt_for_player_selection(void)
if (any.a_int == 0) /* must be non-zero */ if (any.a_int == 0) /* must be non-zero */
any.a_int = randgend(flags.initrole, flags.initrace) + 1; any.a_int = randgend(flags.initrole, flags.initrace) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0, 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 */ any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0, 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); Sprintf(pbuf, "Pick the gender of your %s", plbuf);
end_menu(win, pbuf); end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected); n = select_menu(win, PICK_ONE, &selected);
@@ -656,7 +657,7 @@ prompt_for_player_selection(void)
flags.initgend, i)) { flags.initgend, i)) {
any.a_int = i + 1; any.a_int = i + 1;
add_menu(win, &nul_glyphinfo, &any, 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); aligns[i].adj, MENU_ITEMFLAGS_NONE);
} }
any.a_int = pick_align(flags.initrole, flags.initrace, any.a_int = pick_align(flags.initrole, flags.initrace,
@@ -664,10 +665,10 @@ prompt_for_player_selection(void)
if (any.a_int == 0) /* must be non-zero */ if (any.a_int == 0) /* must be non-zero */
any.a_int = randalign(flags.initrole, flags.initrace) + 1; any.a_int = randalign(flags.initrole, flags.initrace) + 1;
add_menu(win, &nul_glyphinfo, &any, '*', 0, 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 */ any.a_int = i + 1; /* must be non-zero */
add_menu(win, &nul_glyphinfo, &any, 'q', 0, 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); Sprintf(pbuf, "Pick the alignment of your %s", plbuf);
end_menu(win, pbuf); end_menu(win, pbuf);
n = select_menu(win, PICK_ONE, &selected); n = select_menu(win, PICK_ONE, &selected);
@@ -1102,7 +1103,8 @@ mswin_start_menu(winid wid, unsigned long mbehavior)
add_menu(windid window, const glyph_info *glyphinfo, add_menu(windid window, const glyph_info *glyphinfo,
const anything identifier, const anything identifier,
char accelerator, char groupacc, 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 -- Add a text line str to the given menu window. If
identifier is 0, then the line cannot be selected (e.g. a title). identifier is 0, then the line cannot be selected (e.g. a title).
Otherwise, identifier is the value returned if the line is Otherwise, identifier is the value returned if the line is
@@ -1133,13 +1135,13 @@ add_menu(windid window, const glyph_info *glyphinfo,
void void
mswin_add_menu(winid wid, const glyph_info *glyphinfo, mswin_add_menu(winid wid, const glyph_info *glyphinfo,
const ANY_P *identifier, 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) const char *str, unsigned int itemflags)
{ {
boolean presel = ((itemflags & MENU_ITEMFLAGS_SELECTED) != 0); 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, glyphinfo->glyph, glyphinfo->gm.glyphflags,
identifier, (char) accelerator, (char) group_accel, attr, str, identifier, (char) accelerator, (char) group_accel, attr, clr, str,
itemflags); itemflags);
if ((wid >= 0) && (wid < MAXWINDOWS) if ((wid >= 0) && (wid < MAXWINDOWS)
&& (GetNHApp()->windowlist[wid].win != NULL)) { && (GetNHApp()->windowlist[wid].win != NULL)) {
+1 -1
View File
@@ -158,7 +158,7 @@ void mswin_start_menu(winid wid, unsigned long mbehavior);
void mswin_add_menu(winid wid, const glyph_info *glyphinfo, void mswin_add_menu(winid wid, const glyph_info *glyphinfo,
const ANY_P *identifier, const ANY_P *identifier,
char accelerator, char group_accel, int attr, 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); void mswin_end_menu(winid wid, const char *prompt);
int mswin_select_menu(winid wid, int how, MENU_ITEM_P **selected); int mswin_select_menu(winid wid, int how, MENU_ITEM_P **selected);
void mswin_mark_synch(void); void mswin_mark_synch(void);