Show object symbols in menu headings
... in menus where those object symbols act as menu accelerators. Toggleable via "menu_objsyms" boolean option, defaults to off.
This commit is contained in:
@@ -2100,6 +2100,9 @@ Default '|'.
|
|||||||
Menu character accelerator to goto the next menu page.
|
Menu character accelerator to goto the next menu page.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
Default '>'.
|
Default '>'.
|
||||||
|
.lp menu_objsyms
|
||||||
|
Show object symbols in menu headings in menus where
|
||||||
|
the object symbols act as menu accelerators (default off).
|
||||||
.lp menu_previous_page
|
.lp menu_previous_page
|
||||||
Menu character accelerator to goto the previous menu page.
|
Menu character accelerator to goto the previous menu page.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
|
|||||||
@@ -883,6 +883,8 @@ add option mention_walls, which gives feedback when bumping against a wall
|
|||||||
fix invalid pointer dereference in morguemon if ndemon returns NON_PM
|
fix invalid pointer dereference in morguemon if ndemon returns NON_PM
|
||||||
after object loss through polyshudder don't get left hiding under nothing
|
after object loss through polyshudder don't get left hiding under nothing
|
||||||
if you're polymorphed into a hider
|
if you're polymorphed into a hider
|
||||||
|
show object symbols in menu headings in menus where those object symbols
|
||||||
|
act as menu accelerators, toggleable via "menu_objsyms" option
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
+1
-1
@@ -911,7 +911,7 @@ E int NDECL(dopramulet);
|
|||||||
E int NDECL(doprtool);
|
E int NDECL(doprtool);
|
||||||
E int NDECL(doprinuse);
|
E int NDECL(doprinuse);
|
||||||
E void FDECL(useupf, (struct obj *,long));
|
E void FDECL(useupf, (struct obj *,long));
|
||||||
E char *FDECL(let_to_name, (CHAR_P,BOOLEAN_P));
|
E char *FDECL(let_to_name, (CHAR_P,BOOLEAN_P,BOOLEAN_P));
|
||||||
E void NDECL(free_invbuf);
|
E void NDECL(free_invbuf);
|
||||||
E void NDECL(reassign);
|
E void NDECL(reassign);
|
||||||
E int NDECL(doorganize);
|
E int NDECL(doorganize);
|
||||||
|
|||||||
@@ -191,6 +191,7 @@ struct instance_flags {
|
|||||||
boolean news; /* print news */
|
boolean news; /* print news */
|
||||||
boolean mention_walls; /* give feedback when bumping walls */
|
boolean mention_walls; /* give feedback when bumping walls */
|
||||||
boolean menu_tab_sep; /* Use tabs to separate option menu fields */
|
boolean menu_tab_sep; /* Use tabs to separate option menu fields */
|
||||||
|
boolean menu_head_objsym; /* Show obj symbol in menu headings */
|
||||||
boolean menu_requested; /* Flag for overloaded use of 'm' prefix
|
boolean menu_requested; /* Flag for overloaded use of 'm' prefix
|
||||||
* on some non-move commands */
|
* on some non-move commands */
|
||||||
boolean renameallowed; /* can change hero name during role selection */
|
boolean renameallowed; /* can change hero name during role selection */
|
||||||
|
|||||||
+19
-7
@@ -1789,7 +1789,7 @@ nextclass:
|
|||||||
if (!flags.sortpack || otmp->oclass == *invlet) {
|
if (!flags.sortpack || otmp->oclass == *invlet) {
|
||||||
if (flags.sortpack && !classcount) {
|
if (flags.sortpack && !classcount) {
|
||||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||||
let_to_name(*invlet, FALSE), MENU_UNSELECTED);
|
let_to_name(*invlet, FALSE, (want_reply && iflags.menu_head_objsym)), MENU_UNSELECTED);
|
||||||
classcount++;
|
classcount++;
|
||||||
}
|
}
|
||||||
any.a_char = ilet;
|
any.a_char = ilet;
|
||||||
@@ -1863,7 +1863,7 @@ char avoidlet;
|
|||||||
if (flags.sortpack && !classcount) {
|
if (flags.sortpack && !classcount) {
|
||||||
any = zeroany; /* zero */
|
any = zeroany; /* zero */
|
||||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||||
let_to_name(*invlet, FALSE), MENU_UNSELECTED);
|
let_to_name(*invlet, FALSE, FALSE), MENU_UNSELECTED);
|
||||||
classcount++;
|
classcount++;
|
||||||
}
|
}
|
||||||
any.a_char = ilet;
|
any.a_char = ilet;
|
||||||
@@ -1991,7 +1991,7 @@ dounpaid()
|
|||||||
if (otmp->unpaid) {
|
if (otmp->unpaid) {
|
||||||
if (!flags.sortpack || otmp->oclass == *invlet) {
|
if (!flags.sortpack || otmp->oclass == *invlet) {
|
||||||
if (flags.sortpack && !classcount) {
|
if (flags.sortpack && !classcount) {
|
||||||
putstr(win, 0, let_to_name(*invlet, TRUE));
|
putstr(win, 0, let_to_name(*invlet, TRUE, FALSE));
|
||||||
classcount++;
|
classcount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2009,7 +2009,7 @@ dounpaid()
|
|||||||
if (count > num_so_far) {
|
if (count > num_so_far) {
|
||||||
/* something unpaid is contained */
|
/* something unpaid is contained */
|
||||||
if (flags.sortpack)
|
if (flags.sortpack)
|
||||||
putstr(win, 0, let_to_name(CONTAINED_SYM, TRUE));
|
putstr(win, 0, let_to_name(CONTAINED_SYM, TRUE, FALSE));
|
||||||
/*
|
/*
|
||||||
* Search through the container objects in the inventory for
|
* Search through the container objects in the inventory for
|
||||||
* unpaid items. The top level inventory items have already
|
* unpaid items. The top level inventory items have already
|
||||||
@@ -2701,10 +2701,12 @@ static NEARDATA char *invbuf = (char *)0;
|
|||||||
static NEARDATA unsigned invbufsiz = 0;
|
static NEARDATA unsigned invbufsiz = 0;
|
||||||
|
|
||||||
char *
|
char *
|
||||||
let_to_name(let,unpaid)
|
let_to_name(let,unpaid,showsym)
|
||||||
char let;
|
char let;
|
||||||
boolean unpaid;
|
boolean unpaid,showsym;
|
||||||
{
|
{
|
||||||
|
const char *ocsymfmt = " ('%c')";
|
||||||
|
const int invbuf_sympadding = 8; /* arbitrary */
|
||||||
const char *class_name;
|
const char *class_name;
|
||||||
const char *pos;
|
const char *pos;
|
||||||
int oclass = (let >= 1 && let < MAXOCLASSES) ? let : 0;
|
int oclass = (let >= 1 && let < MAXOCLASSES) ? let : 0;
|
||||||
@@ -2717,7 +2719,8 @@ boolean unpaid;
|
|||||||
else
|
else
|
||||||
class_name = names[0];
|
class_name = names[0];
|
||||||
|
|
||||||
len = strlen(class_name) + (unpaid ? sizeof "unpaid_" : sizeof "");
|
len = strlen(class_name) + (unpaid ? sizeof "unpaid_" : sizeof "") +
|
||||||
|
(oclass ? (strlen(ocsymfmt)+invbuf_sympadding) : 0);
|
||||||
if (len > invbufsiz) {
|
if (len > invbufsiz) {
|
||||||
if (invbuf) free((genericptr_t)invbuf);
|
if (invbuf) free((genericptr_t)invbuf);
|
||||||
invbufsiz = len + 10; /* add slop to reduce incremental realloc */
|
invbufsiz = len + 10; /* add slop to reduce incremental realloc */
|
||||||
@@ -2727,6 +2730,15 @@ boolean unpaid;
|
|||||||
Strcat(strcpy(invbuf, "Unpaid "), class_name);
|
Strcat(strcpy(invbuf, "Unpaid "), class_name);
|
||||||
else
|
else
|
||||||
Strcpy(invbuf, class_name);
|
Strcpy(invbuf, class_name);
|
||||||
|
if ((oclass != 0) && showsym) {
|
||||||
|
char *bp = eos(invbuf);
|
||||||
|
int mlen = invbuf_sympadding - strlen(class_name);
|
||||||
|
while (--mlen > 0) {
|
||||||
|
*bp = ' '; bp++;
|
||||||
|
}
|
||||||
|
*bp = '\0';
|
||||||
|
Sprintf(eos(invbuf), ocsymfmt, def_oc_syms[oclass].sym);
|
||||||
|
}
|
||||||
return invbuf;
|
return invbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -446,7 +446,7 @@ dodiscovered() /* free after Robert Viduya */
|
|||||||
if ((dis = disco[i]) != 0 && interesting_to_discover(dis)) {
|
if ((dis = disco[i]) != 0 && interesting_to_discover(dis)) {
|
||||||
ct++;
|
ct++;
|
||||||
if (oclass != prev_class) {
|
if (oclass != prev_class) {
|
||||||
putstr(tmpwin, iflags.menu_headings, let_to_name(oclass, FALSE));
|
putstr(tmpwin, iflags.menu_headings, let_to_name(oclass, FALSE, FALSE));
|
||||||
prev_class = oclass;
|
prev_class = oclass;
|
||||||
}
|
}
|
||||||
Sprintf(buf, "%s %s",(objects[dis].oc_pre_discovered ? "*" : " "),
|
Sprintf(buf, "%s %s",(objects[dis].oc_pre_discovered ? "*" : " "),
|
||||||
@@ -472,7 +472,7 @@ char *buf;
|
|||||||
{
|
{
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
Strcpy(buf, let_to_name(oclass, FALSE));
|
Strcpy(buf, let_to_name(oclass, FALSE, FALSE));
|
||||||
for (s = buf; *s; ++s) *s = lowc(*s);
|
for (s = buf; *s; ++s) *s = lowc(*s);
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
@@ -615,7 +615,7 @@ doclassdisco()
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
oclass = def_char_to_objclass(c);
|
oclass = def_char_to_objclass(c);
|
||||||
Sprintf(buf, "Discovered %s", let_to_name(oclass, FALSE));
|
Sprintf(buf, "Discovered %s", let_to_name(oclass, FALSE, FALSE));
|
||||||
putstr(tmpwin, iflags.menu_headings, buf);
|
putstr(tmpwin, iflags.menu_headings, buf);
|
||||||
for (i = bases[(int)oclass];
|
for (i = bases[(int)oclass];
|
||||||
i < NUM_OBJECTS && objects[i].oc_class == oclass; ++i) {
|
i < NUM_OBJECTS && objects[i].oc_class == oclass; ++i) {
|
||||||
@@ -672,7 +672,7 @@ rename_disco()
|
|||||||
if (oclass != prev_class) {
|
if (oclass != prev_class) {
|
||||||
any.a_int = 0;
|
any.a_int = 0;
|
||||||
add_menu(tmpwin, NO_GLYPH, &any, ' ', iflags.menu_headings,
|
add_menu(tmpwin, NO_GLYPH, &any, ' ', iflags.menu_headings,
|
||||||
ATR_NONE, let_to_name(oclass, FALSE), MENU_UNSELECTED);
|
ATR_NONE, let_to_name(oclass, FALSE, FALSE), MENU_UNSELECTED);
|
||||||
prev_class = oclass;
|
prev_class = oclass;
|
||||||
}
|
}
|
||||||
any.a_int = dis;
|
any.a_int = dis;
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ static struct Bool_Opt
|
|||||||
{"mention_walls", &iflags.mention_walls, FALSE, SET_IN_GAME},
|
{"mention_walls", &iflags.mention_walls, FALSE, SET_IN_GAME},
|
||||||
/* for menu debugging only*/
|
/* for menu debugging only*/
|
||||||
{"menu_tab_sep", &iflags.menu_tab_sep, FALSE, SET_IN_GAME},
|
{"menu_tab_sep", &iflags.menu_tab_sep, FALSE, SET_IN_GAME},
|
||||||
|
{"menu_objsyms", &iflags.menu_head_objsym, FALSE, SET_IN_GAME},
|
||||||
{"mouse_support", &iflags.wc_mouse_support, TRUE, DISP_IN_GAME}, /*WC*/
|
{"mouse_support", &iflags.wc_mouse_support, TRUE, DISP_IN_GAME}, /*WC*/
|
||||||
#ifdef NEWS
|
#ifdef NEWS
|
||||||
{"news", &iflags.news, TRUE, DISP_IN_GAME},
|
{"news", &iflags.news, TRUE, DISP_IN_GAME},
|
||||||
|
|||||||
+7
-3
@@ -769,7 +769,9 @@ boolean FDECL((*allow), (OBJ_P));/* allow function */
|
|||||||
if (sorted && !printed_type_name) {
|
if (sorted && !printed_type_name) {
|
||||||
any = zeroany;
|
any = zeroany;
|
||||||
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||||
let_to_name(*pack, FALSE), MENU_UNSELECTED);
|
let_to_name(*pack, FALSE,
|
||||||
|
(how != PICK_NONE) && iflags.menu_head_objsym),
|
||||||
|
MENU_UNSELECTED);
|
||||||
printed_type_name = TRUE;
|
printed_type_name = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -928,8 +930,10 @@ int how; /* type of query */
|
|||||||
any.a_int = curr->oclass;
|
any.a_int = curr->oclass;
|
||||||
add_menu(win, NO_GLYPH, &any, invlet++,
|
add_menu(win, NO_GLYPH, &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,
|
||||||
MENU_UNSELECTED);
|
let_to_name(*pack, FALSE,
|
||||||
|
(how != PICK_NONE) && iflags.menu_head_objsym),
|
||||||
|
MENU_UNSELECTED);
|
||||||
collected_type_name = TRUE;
|
collected_type_name = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user