more window port interface adjustments
further adjustments to the window port interface to pass a pointer to a glyph_info struct which describes not just the glyph number itself, but also the ttychar, the color, the glyphflags, and the symset index. This affects two existing window port calls that get passed glyphs and does the parameter consistently for both of them using the glyph_info struct pointer: print_glyph() add_menu(). The recently added glyphmod parameter is now unnecessary and has been removed.
This commit is contained in:
54
src/invent.c
54
src/invent.c
@@ -2747,9 +2747,10 @@ long *out_cnt;
|
||||
Sprintf(eos(prompt),
|
||||
" -- unidentified or partially identified item%s",
|
||||
plur(unid_cnt));
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, prompt, MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, prompt,
|
||||
MENU_ITEMFLAGS_NONE);
|
||||
if (!unid_cnt) {
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
|
||||
"(all items are permanently identified already)",
|
||||
MENU_ITEMFLAGS_NONE);
|
||||
gotsomething = TRUE;
|
||||
@@ -2765,23 +2766,27 @@ long *out_cnt;
|
||||
if (unid_cnt > 1)
|
||||
Sprintf(eos(prompt), " (%s for all)",
|
||||
visctrl(iflags.override_ID));
|
||||
add_menu(win, NO_GLYPH, &any, '_', iflags.override_ID, ATR_NONE,
|
||||
prompt, MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, &nul_glyphinfo, &any, '_', iflags.override_ID,
|
||||
ATR_NONE, prompt, MENU_ITEMFLAGS_NONE);
|
||||
gotsomething = TRUE;
|
||||
}
|
||||
} else if (xtra_choice) {
|
||||
/* wizard override ID and xtra_choice are mutually exclusive */
|
||||
if (flags.sortpack)
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||
"Miscellaneous", MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0,
|
||||
iflags.menu_headings,
|
||||
"Miscellaneous", MENU_ITEMFLAGS_NONE);
|
||||
any.a_char = HANDS_SYM; /* '-' */
|
||||
add_menu(win, NO_GLYPH, &any, HANDS_SYM, 0, ATR_NONE,
|
||||
add_menu(win, &nul_glyphinfo, &any, HANDS_SYM, 0, ATR_NONE,
|
||||
xtra_choice, MENU_ITEMFLAGS_NONE);
|
||||
gotsomething = TRUE;
|
||||
}
|
||||
nextclass:
|
||||
classcount = 0;
|
||||
for (srtinv = sortedinvent; (otmp = srtinv->obj) != 0; ++srtinv) {
|
||||
int tmpglyph;
|
||||
glyph_info tmpglyphinfo = nul_glyphinfo;
|
||||
|
||||
if (lets && !index(lets, otmp->invlet))
|
||||
continue;
|
||||
if (!flags.sortpack || otmp->oclass == *invlet) {
|
||||
@@ -2790,7 +2795,8 @@ long *out_cnt;
|
||||
any = cg.zeroany; /* all bits zero */
|
||||
ilet = otmp->invlet;
|
||||
if (flags.sortpack && !classcount) {
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0,
|
||||
iflags.menu_headings,
|
||||
let_to_name(*invlet, FALSE,
|
||||
(want_reply && iflags.menu_head_objsym)),
|
||||
MENU_ITEMFLAGS_NONE);
|
||||
@@ -2800,7 +2806,9 @@ long *out_cnt;
|
||||
any.a_obj = otmp;
|
||||
else
|
||||
any.a_char = ilet;
|
||||
add_menu(win, obj_to_glyph(otmp, rn2_on_display_rng), &any, ilet,
|
||||
tmpglyph = obj_to_glyph(otmp, rn2_on_display_rng);
|
||||
map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo);
|
||||
add_menu(win, &tmpglyphinfo, &any, ilet,
|
||||
wizid ? def_oc_syms[(int) otmp->oclass].sym : 0,
|
||||
ATR_NONE, doname(otmp), MENU_ITEMFLAGS_NONE);
|
||||
gotsomething = TRUE;
|
||||
@@ -2816,10 +2824,10 @@ long *out_cnt;
|
||||
}
|
||||
if (iflags.force_invmenu && lets && want_reply) {
|
||||
any = cg.zeroany;
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||
"Special", MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0,
|
||||
iflags.menu_headings, "Special", MENU_ITEMFLAGS_NONE);
|
||||
any.a_char = '*';
|
||||
add_menu(win, NO_GLYPH, &any, '*', 0, ATR_NONE,
|
||||
add_menu(win, &nul_glyphinfo, &any, '*', 0, ATR_NONE,
|
||||
"(list everything)", MENU_ITEMFLAGS_NONE);
|
||||
gotsomething = TRUE;
|
||||
}
|
||||
@@ -2830,7 +2838,7 @@ long *out_cnt;
|
||||
into the menu */
|
||||
if (iflags.perm_invent && !lets && !gotsomething) {
|
||||
any = cg.zeroany;
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, 0,
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, 0,
|
||||
not_carrying_anything, MENU_ITEMFLAGS_NONE);
|
||||
want_reply = FALSE;
|
||||
}
|
||||
@@ -2896,7 +2904,8 @@ char avoidlet;
|
||||
struct obj *otmp;
|
||||
char ilet, ret = 0;
|
||||
char *invlet = flags.inv_order;
|
||||
int n, classcount, invdone = 0;
|
||||
int n, classcount, invdone = 0, tmpglyph;
|
||||
glyph_info tmpglyphinfo = nul_glyphinfo;
|
||||
winid win;
|
||||
anything any;
|
||||
menu_item *selected;
|
||||
@@ -2914,16 +2923,17 @@ char avoidlet;
|
||||
if (!flags.sortpack || otmp->oclass == *invlet) {
|
||||
if (flags.sortpack && !classcount) {
|
||||
any = cg.zeroany; /* zero */
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0,
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0,
|
||||
iflags.menu_headings,
|
||||
let_to_name(*invlet, FALSE, FALSE),
|
||||
MENU_ITEMFLAGS_NONE);
|
||||
classcount++;
|
||||
}
|
||||
any.a_char = ilet;
|
||||
add_menu(win, obj_to_glyph(otmp, rn2_on_display_rng),
|
||||
&any, ilet, 0, ATR_NONE,
|
||||
doname(otmp), MENU_ITEMFLAGS_NONE);
|
||||
tmpglyph = obj_to_glyph(otmp, rn2_on_display_rng);
|
||||
map_glyphinfo(0, 0, tmpglyph, 0U, &tmpglyphinfo);
|
||||
add_menu(win, &tmpglyphinfo, &any, ilet, 0,
|
||||
ATR_NONE, doname(otmp), MENU_ITEMFLAGS_NONE);
|
||||
}
|
||||
}
|
||||
if (flags.sortpack && *++invlet)
|
||||
@@ -4383,10 +4393,12 @@ const char *hdr, *txt;
|
||||
any = cg.zeroany;
|
||||
win = create_nhwindow(NHW_MENU);
|
||||
start_menu(win, MENU_BEHAVE_STANDARD);
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings, hdr,
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, iflags.menu_headings,
|
||||
hdr, MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE,
|
||||
"", MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, &nul_glyphinfo, &any, 0, 0, ATR_NONE, txt,
|
||||
MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "", MENU_ITEMFLAGS_NONE);
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, txt, MENU_ITEMFLAGS_NONE);
|
||||
end_menu(win, (char *) 0);
|
||||
if (select_menu(win, PICK_NONE, &selected) > 0)
|
||||
free((genericptr_t) selected);
|
||||
|
||||
Reference in New Issue
Block a user