Merge branch 'NetHack-3.6' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.168 $ $NHDT-Date: 1573290414 2019/11/09 09:06:54 $
|
||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.171 $ $NHDT-Date: 1573505739 2019/11/11 20:55:39 $
|
||||
|
||||
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
||||
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
||||
@@ -221,7 +221,8 @@ playing music while hallucinating: message misspelled "butterflies"
|
||||
putting on gloves while having slippery fingers transfered slipperiness to
|
||||
those gloves; taking off slippery gloves directly was disallowed but
|
||||
losing them in other ways transfered slipperiness to bare fingers
|
||||
fix use of bcsign on a freed obj
|
||||
when a monster reads a scroll of fire to cure sliming, don't access that
|
||||
scroll's memory after it has been used up (bcsign)
|
||||
|
||||
|
||||
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||
@@ -329,6 +330,7 @@ curses: enable the 'use_inverse' boolean option (via wincap WC_INVERSE flag)
|
||||
to override default of False (for tty's benefit)
|
||||
curses: force 'O' command's menus for 'symset' and 'roguesymset' options to
|
||||
be wider so that fewer entries with set descriptions will wrap
|
||||
curses: stop restricting menu width to half the display width
|
||||
curses+'perm_invent': entries were wrapping without any control; usually not
|
||||
noticeable because next entry overwrote, but visible for final entry
|
||||
when whole inventory fit within the available height; looked ok with
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 options.c $NHDT-Date: 1572303730 2019/10/28 23:02:10 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.383 $ */
|
||||
/* NetHack 3.6 options.c $NHDT-Date: 1573505739 2019/11/11 20:55:39 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.386 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2008. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -5432,44 +5432,6 @@ boolean setinitial, setfromfile;
|
||||
tmpwin = create_nhwindow(NHW_MENU);
|
||||
start_menu(tmpwin);
|
||||
any = zeroany;
|
||||
#ifdef CURSES_GRAPHICS /* this ought to be handled within curses... */
|
||||
/*
|
||||
* Symbol sets are formatted in two columns, "name description",
|
||||
* on selectable lines. curses bases menu width on the length
|
||||
* of non-selectable lines (main header, separators if present,
|
||||
* with trailing spaces ignored) and defaults to half the map.
|
||||
* Without something like this separator (shown after the menu
|
||||
* title and a blank line which follows that) to force a wider
|
||||
* menu, entries with long descriptions wrap. That would be
|
||||
* ok if wrapping operated on the same two columns, but the
|
||||
* menu doesn't know anything about those and the description
|
||||
* is wrapping into the next line's name column, making long
|
||||
* descriptions--and menus containing them--hard to read.
|
||||
*/
|
||||
if (WINDOWPORT("curses")) {
|
||||
char tmp1[BUFSZ], tmp2[BUFSZ], bigbuf[BUFSZ + 1 + BUFSZ];
|
||||
|
||||
/* 4: room for space+letter+paren+space, fake selector;
|
||||
2: added to 'biggest' when constructing 'fmtstr';
|
||||
1: space between symset name+2 and symset description */
|
||||
if (4 + biggest + 2 + 1 > (int) sizeof tmp1 - 1)
|
||||
biggest = (int) sizeof tmp1 - 1 - (4 + 2 + 1);
|
||||
(void) memset((genericptr_t) tmp1, '-', biggest);
|
||||
tmp1[biggest] = '\0';
|
||||
if (big_desc > (int) sizeof tmp2 - 1)
|
||||
big_desc = (int) sizeof tmp2 - 1;
|
||||
(void) memset((genericptr_t) tmp2, '-', big_desc);
|
||||
tmp2[big_desc] = '\0';
|
||||
Sprintf(bigbuf, "%4s", "");
|
||||
Sprintf(eos(bigbuf), fmtstr, tmp1, tmp2);
|
||||
bigbuf[BUFSZ - 1] = '\0';
|
||||
any.a_int = 0;
|
||||
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||
bigbuf, MENU_UNSELECTED);
|
||||
}
|
||||
#else
|
||||
nhUse(big_desc);
|
||||
#endif
|
||||
any.a_int = 1; /* -1 + 2 [see 'if (sl->name) {' below]*/
|
||||
if (!symset_name)
|
||||
defindx = any.a_int;
|
||||
|
||||
@@ -759,11 +759,10 @@ curses_display_nhmenu(winid wid, int how, MENU_ITEM_P ** _selected)
|
||||
menu_determine_pages(current_menu);
|
||||
|
||||
/* Display pre and post-game menus centered */
|
||||
if (((moves <= 1) && !invent) || program_state.gameover) {
|
||||
if ((moves <= 1 && !invent) || program_state.gameover) {
|
||||
win = curses_create_window(current_menu->width,
|
||||
current_menu->height, CENTER);
|
||||
} else { /* Display during-game menus on the right out of the way */
|
||||
|
||||
win = curses_create_window(current_menu->width,
|
||||
current_menu->height, RIGHT);
|
||||
}
|
||||
@@ -1000,13 +999,13 @@ static void
|
||||
menu_win_size(nhmenu *menu)
|
||||
{
|
||||
int maxwidth, maxheight, curentrywidth, lastline;
|
||||
int maxentrywidth = (int) strlen(menu->prompt);
|
||||
int maxheaderwidth = 0;
|
||||
int maxentrywidth = 0;
|
||||
int maxheaderwidth = menu->prompt ? (int) strlen(menu->prompt) : 0;
|
||||
nhmenu_item *menu_item_ptr;
|
||||
|
||||
if (program_state.gameover) {
|
||||
/* for final inventory disclosure, use full width */
|
||||
maxwidth = term_cols - 2;
|
||||
maxwidth = term_cols - 2; /* +2: borders assumed */
|
||||
} else {
|
||||
/* this used to be 38, which is 80/2 - 2 (half a 'normal' sized
|
||||
screen minus room for a border box), but some data files
|
||||
@@ -1029,7 +1028,7 @@ menu_win_size(nhmenu *menu)
|
||||
maxheaderwidth = curentrywidth;
|
||||
}
|
||||
} else {
|
||||
/* Add space for accelerator */
|
||||
/* Add space for accelerator (selector letter) */
|
||||
curentrywidth += 4;
|
||||
#if 0 /* FIXME: menu glyphs */
|
||||
if (menu_item_ptr->glyph != NO_GLYPH && iflags.use_menu_glyphs)
|
||||
@@ -1041,20 +1040,20 @@ menu_win_size(nhmenu *menu)
|
||||
}
|
||||
}
|
||||
|
||||
/* If widest entry is smaller than maxwidth, reduce maxwidth
|
||||
accordingly (but not too far; minimum width will be applied below) */
|
||||
if (maxentrywidth < maxwidth) {
|
||||
maxwidth = maxentrywidth;
|
||||
}
|
||||
|
||||
/* Try not to wrap headers/normal text lines if possible. We can
|
||||
go wider than half the screen for this purpose if need be */
|
||||
|
||||
if (maxheaderwidth > maxwidth) {
|
||||
if (maxheaderwidth < (term_cols - 2))
|
||||
maxwidth = maxheaderwidth;
|
||||
else
|
||||
maxwidth = term_cols - 2;
|
||||
/*
|
||||
* 3.6.3: This used to set maxwidth to maxheaderwidth when that was
|
||||
* bigger but only set it to maxentrywidth if the latter was smaller,
|
||||
* so entries wider than the default would always wrap unless at
|
||||
* least one header or separator line was long, even when there was
|
||||
* lots of space available to display them without wrapping. The
|
||||
* reason to force narrow menus isn't known. It may have been to
|
||||
* reduce the amount of map rewriting when menu is dismissed, but if
|
||||
* so, that was an issue due to excessive screen writing for the map
|
||||
* (output was flushed for each character) which was fixed long ago.
|
||||
*/
|
||||
maxwidth = max(maxentrywidth, maxheaderwidth);
|
||||
if (maxwidth > term_cols - 2) { /* -2: space for left and right borders */
|
||||
maxwidth = term_cols - 2;
|
||||
}
|
||||
|
||||
/* Possibly reduce height if only 1 page */
|
||||
|
||||
Reference in New Issue
Block a user