curses: hilite_pet, hilite_pile without color
The curses interface was ignoring video attributes (bold, inverse, &c) when color is toggled off or if built with TEXTCOLOR disabled. Honor attributes regardless of whether color is displayed. Also, toggling 'hilite_pet' On during play wouldn't do anything if the curses-specific 'petattr' option had been left as None. (It worked as intended if set in starting options.)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.273 $ $NHDT-Date: 1552425075 2019/03/12 21:11:15 $
|
||||
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.274 $ $NHDT-Date: 1552521022 2019/03/13 23:50:22 $
|
||||
|
||||
This fixes36.2 file is here to capture information about updates in the 3.6.x
|
||||
lineage following the release of 3.6.1 in April 2018. Please note, however,
|
||||
@@ -478,6 +478,7 @@ curses: when getting multi-character responses from player, support <delete>
|
||||
as well as <backspace> to remove last character entered; also, return
|
||||
<escape> to core if ESC is typed when there is no input entered
|
||||
curses: extend preceding <delete> support to typing of extended command names
|
||||
curses: support hilite_pet and hilite_pile even when color is disabled
|
||||
vms: add compile of isaac64.c to Makefile.src and vmsbuild.com
|
||||
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ extern void curses_view_file(const char *filename, boolean must_exist);
|
||||
extern void curses_rtrim(char *str);
|
||||
extern int curses_get_count(int first_digit);
|
||||
extern int curses_convert_attr(int attr);
|
||||
extern int curses_read_attrs(char *attrs);
|
||||
extern int curses_read_attrs(const char *attrs);
|
||||
extern char *curses_fmt_attrs(char *);
|
||||
extern int curses_convert_keys(int key);
|
||||
extern int curses_get_mouse(int *mousex, int *mousey, int *mod);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 options.c $NHDT-Date: 1551222973 2019/02/26 23:16:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.356 $ */
|
||||
/* NetHack 3.6 options.c $NHDT-Date: 1552521022 2019/03/13 23:50:22 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.357 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2008. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -28,7 +28,7 @@ NEARDATA struct instance_flags iflags; /* provide linkage */
|
||||
#endif
|
||||
|
||||
#ifdef CURSES_GRAPHICS
|
||||
extern int curses_read_attrs(char *attrs);
|
||||
extern int curses_read_attrs(const char *attrs);
|
||||
extern char *curses_fmt_attrs(char *);
|
||||
#endif
|
||||
|
||||
@@ -4030,7 +4030,6 @@ boolean tinitial, tfrom_file;
|
||||
} else if (boolopt[i].addr == &flags.showrace
|
||||
|| boolopt[i].addr == &iflags.use_inverse
|
||||
|| boolopt[i].addr == &iflags.hilite_pile
|
||||
|| boolopt[i].addr == &iflags.hilite_pet
|
||||
|| boolopt[i].addr == &iflags.perm_invent
|
||||
#ifdef CURSES_GRAPHICS
|
||||
|| boolopt[i].addr == &iflags.cursesgraphics
|
||||
@@ -4038,6 +4037,17 @@ boolean tinitial, tfrom_file;
|
||||
|| boolopt[i].addr == &iflags.wc_ascii_map
|
||||
|| boolopt[i].addr == &iflags.wc_tiled_map) {
|
||||
need_redraw = TRUE;
|
||||
} else if (boolopt[i].addr == &iflags.hilite_pet) {
|
||||
#ifdef CURSES_GRAPHICS
|
||||
if (WINDOWPORT("curses")) {
|
||||
/* if we're enabling hilite_pet and petattr isn't set,
|
||||
set it to Inverse; if we're disabling, leave petattr
|
||||
alone so that re-enabling will get current value back */
|
||||
if (iflags.hilite_pet && !iflags.wc2_petattr)
|
||||
iflags.wc2_petattr = curses_read_attrs("I");
|
||||
}
|
||||
#endif
|
||||
need_redraw = TRUE;
|
||||
#ifdef STATUS_HILITES
|
||||
} else if (boolopt[i].addr == &iflags.wc2_hitpointbar) {
|
||||
status_initialize(REASSESS_ONLY);
|
||||
|
||||
@@ -358,8 +358,7 @@ putstr(window, attr, str)
|
||||
-- Print str on the window with the given attribute. Only
|
||||
printable ASCII characters (040-0126) must be supported.
|
||||
Multiple putstr()s are output on separate lines.
|
||||
Attributes
|
||||
can be one of
|
||||
Attributes can be one of
|
||||
ATR_NONE (or 0)
|
||||
ATR_ULINE
|
||||
ATR_BOLD
|
||||
@@ -616,7 +615,10 @@ curses_print_glyph(winid wid, XCHAR_P x, XCHAR_P y, int glyph,
|
||||
} else
|
||||
*/
|
||||
if ((special & MG_OBJPILE) && iflags.hilite_pile) {
|
||||
color = 16 + (color * 2) + 1;
|
||||
if (iflags.wc_color)
|
||||
color = 16 + (color * 2) + 1;
|
||||
else
|
||||
attr = A_REVERSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,19 +81,22 @@ curses_read_char()
|
||||
/* Turn on or off the specified color and / or attribute */
|
||||
|
||||
void
|
||||
curses_toggle_color_attr(WINDOW * win, int color, int attr, int onoff)
|
||||
curses_toggle_color_attr(WINDOW *win, int color, int attr, int onoff)
|
||||
{
|
||||
#ifdef TEXTCOLOR
|
||||
int curses_color;
|
||||
|
||||
/* Map color disabled */
|
||||
if ((!iflags.wc_color) && (win == mapwin)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* GUI color disabled */
|
||||
if ((!iflags.wc2_guicolor) && (win != mapwin)) {
|
||||
/* if color is disabled, just show attribute */
|
||||
if ((win == mapwin) ? !iflags.wc_color : !iflags.wc2_guicolor) {
|
||||
#endif
|
||||
if (attr != NONE) {
|
||||
if (onoff == ON)
|
||||
wattron(win, attr);
|
||||
else
|
||||
wattroff(win, attr);
|
||||
}
|
||||
return;
|
||||
#ifdef TEXTCOLOR
|
||||
}
|
||||
|
||||
if (color == 0) { /* make black fg visible */
|
||||
@@ -149,6 +152,8 @@ curses_toggle_color_attr(WINDOW * win, int color, int attr, int onoff)
|
||||
wattroff(win, attr);
|
||||
}
|
||||
}
|
||||
#else
|
||||
nhUse(color);
|
||||
#endif /* TEXTCOLOR */
|
||||
}
|
||||
|
||||
@@ -685,7 +690,7 @@ curses_convert_attr(int attr)
|
||||
success (might be 0), or -1 if not found. */
|
||||
|
||||
int
|
||||
curses_read_attrs(char *attrs)
|
||||
curses_read_attrs(const char *attrs)
|
||||
{
|
||||
int retattr = 0;
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ void curses_view_file(const char *filename, boolean must_exist);
|
||||
void curses_rtrim(char *str);
|
||||
int curses_get_count(int first_digit);
|
||||
int curses_convert_attr(int attr);
|
||||
int curses_read_attrs(char *attrs);
|
||||
int curses_read_attrs(const char *attrs);
|
||||
char *curses_fmt_attrs(char *);
|
||||
int curses_convert_keys(int key);
|
||||
int curses_get_mouse(int *mousex, int *mousey, int *mod);
|
||||
|
||||
Reference in New Issue
Block a user