Commit Graph

1261 Commits

Author SHA1 Message Date
nhmall
2a5d7ed536 Merge branch 'NetHack-3.6' 2019-06-20 10:18:32 -04:00
PatR
9f6588af49 curses text windows
Most of the entries for '?' looked awful because curses was using
((terminal_width / 2) - 2) for the window width ('- 2' was to make
for for a border around the popup window, regardless of what the
'windowborder' option was set to).  Splitting text that has been
manually formatted for 80 columns "worked" but looked bad when not
required.

Some of the help files are using 79 characters on a few lines,
producing wrapped text when displayed.  Those would look better if
limited them to 78 or if curses can be modified to suppress the
window border when the entire display is being covered by a popup.
2019-06-20 01:14:50 -07:00
nhmall
30cfcf3b12 Merge branch 'NetHack-3.6' 2019-06-18 21:43:54 -04:00
PatR
1c03d09701 curses map window
tty ignores map column #0 (0-based index), like the core, and draws
the map in screen columns 1 (1-based index) through 79, leaving screen
column 80 blank.  curses was drawing all 80 map columns and since #0
was always unused, screen column 1 was blank and the map was shown in
2 through 80.  Change curses to work like tty.

This was too easy; there may be problems lurking.  One known issue: it
should be made smarter about when clipping/panning is necessary since
it thinks that a full 80 columns are needed but 79 suffice.
2019-06-18 03:52:28 -07:00
nhmall
2b754e0c92 Merge branch 'NetHack-3.6' 2019-06-15 18:54:28 -04:00
PatR
747981d0c5 take two: tty bug with long 'autodescribe' text
Messages on tty which bypass message history weren't handling long
lines properly.  If the text wrapped to line 2, that continuation
portion was left on the screen after whatever operation that put it
here was finished.  (To reproduce:  assign a long name to a monster
with a long type name so that the combined length exceeds the display
width, then move the cursor over it with ';' or '/' while autodescribe
is On.)

This time prompting isn't adversely affected.
2019-06-15 07:18:47 -07:00
nhmall
938a2c1b64 Merge branch 'NetHack-3.6' 2019-06-15 08:54:45 -04:00
PatR
9cbc8ace42 tty bug with multi-line prompts
This effectively reverts 1ad2415315
because it was interfering with prompts that spanned more than one
line (by inserting '--More-- + erase' between displaying of prompt and
getting input for the answer).

So we're back to the situation where autodescribe feedback when moving
the cursor will leave text on the second line if it generates text too
wide for one line.  (^R redraws the screen correctly.)
2019-06-15 05:11:08 -07:00
PatR
1ad2415315 tty bug with displaying long 'autodescribe' text
Messages on tty which bypass message history weren't handling long
lines properly.  If the text wrapped to line 2, that continuation
portion was left on the screen after whatever operation that put it
here was finished.  (To reproduce:  assign a long name to a monster
with a long type name so that the combined length exceeds the display
width, then move the cursor over it with ';' or '/' while autodescribe
is On.)
2019-06-12 17:57:24 -07:00
nhmall
9ac8e07d9e Merge branch 'NetHack-3.6' 2019-06-09 14:09:18 -04:00
PatR
319dcf4746 curses EDIT_GETLIN - discarding preloaded answer
EDIT_GETLIN is more complicated on curses than on tty due to way that
long lines are handled....

Using ESC to get rid of the default response removed it from the
answer buffer but didn't erase back to the end of actual prompt,
making it look as if it was still there.  Fixing that for a one-line
prompt+answer was needed and would have been easy but it also needs to
be prepared to go back to prior lines.  Both the prompt and the answer
could conceivably span lines although in practice it will usually just
be one line or else prompt+answer combined spanning to a second line.

This hasn't been exhaustively tested been seems to be working correctly.
2019-06-09 07:07:34 -07:00
nhmall
2f5013670d Merge branch 'NetHack-3.6' 2019-06-08 14:39:36 -04:00
PatR
a64a2f85f4 fix github pull request #197 - curses CR handling
Fixes #197
Fixes #195

Add a call to nonl() to tell curses not to convert carriage return (^M)
to newline.  Line input accepts both ^J and ^M as end of line/end of
input, but the core's command processing treats ^M as "unknown command"
(by default; someone could use the BIND option to assign some command
to that character).  The end result is that accidentally pressing the
<return> or <enter> key (or Ctrl+M key combination) won't make the hero
run towards the bottom of the screen as if the user had typed ^J.  The
curses docs also claim that it allows more optimization during screen
updating by making ^J work as plain linefeed rather than ^M^J newline.

The tty interface can achieve this (the 'do not convert ^M to ^J part',
not the 'more optimization' part) by issuing the command 'stty -icrnl'
(on Unix or sufficiently Unix-like system) prior to running nethack,
but that has no effect when using the curses interface (at least with
ncurses on OSX where I've tested it).

A better fix would be to look up the current terminal settings at
program startup and only call nonl() if -crnl was in effect so that
curses and tty would behave the same in this regard, but curses is
supposed to let us avoid those sorts of messy details....
2019-06-08 08:55:44 -07:00
PatR
e107fdb4ab 3.7 X11 collission with variable 'g' 2019-06-08 07:51:45 -07:00
nhmall
bfc4445537 Merge branch 'NetHack-3.6' 2019-06-05 08:08:32 -04:00
nhmall
0b74f2adeb makedefs: add enum support when generating pm.h
Only changes pm.h content if ENUM_PM is defined when compiling
util/makedefs.c

While NON_PM and LOW_PM could be included, it would require
for the makedefs.c compile, as well as an
around their macro definitions in permonst.h so for now those
particular lines are commented out in makedefs.c
2019-06-02 17:21:35 -04:00
nhmall
e786098572 Merge branch 'NetHack-3.6' 2019-05-31 17:59:11 -04:00
PatR
cdb4a9e8b3 fix github issue #193 - curses: menu search
Fixes #193

Under curses interface, make characters which are both entry selectors
and menu commands function as a selector.  Needed to support using ':'
to look inside a container when applying/looting it via menu, instead
of performing a menu search operation.  (There was another case like
this but I can't remember what the circumstances are.  The fix is
general enough to cover it, whatever it is.)

For menus which don't have ':' as a choice, make sure search prompt
doesn't offer garbage default input when built with EDIT_GETLIN.

Bug?  If player has 'popup_dialog' option On, EDIT_GETLIN is ignored.
Plain curses I/O doesn't seem to offer a way to implement it.
2019-05-31 10:11:45 -07:00
Bart House
3427d1ce85 Deleting test file which was just checked-in. 2019-05-28 20:30:10 -07:00
Bart House
9dea6c77d8 Merge branch 'NetHack-3.6' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6 2019-05-28 20:19:33 -07:00
Bart House
7492b1da6c Testing ability to cause chaos. 2019-05-28 20:18:27 -07:00
nhmall
0cec0a6725 Merge branch 'NetHack-3.6' 2019-05-28 13:11:26 -04:00
PatR
f478b4ec95 curses getline()
After going back and forth between prompts causing message lines
to be overwritten and to be skipped, this yoyo might have finally
run out of string.  Fingers crossed....
2019-05-28 02:27:40 -07:00
PatR
c61d3d6403 curses message window
Fix a 'FIXME': don't follow a message with two spaces in anticipation
of combining with the next one, precede the next one with two spaces
when they're being combined.  Keeps nethack's message window <mx,my>
coordinates in sync with curses' internal coordinates.
2019-05-28 01:52:37 -07:00
nhmall
969247cc14 Merge branch 'NetHack-3.6' 2019-05-27 18:44:33 -04:00
nhmall
6f71f483d2 make the rc file match the build target name for Windows 2019-05-27 18:42:25 -04:00
nhmall
34d6f8654b merge branch NetHack-3.6 and update version info 2019-05-27 18:23:50 -04:00
nhmall
0cf9e2e487 Merge branch 'NetHack-3.6' 2019-05-27 18:21:34 -04:00
nhmall
09412274e6 Windows .rc files
bump the version in the win/win32/*.rc files

side note: winhack.rc wasn't properly updated for the 3.6.2 release
2019-05-27 17:38:54 -04:00
nhmall
3fae8c7ce6 Merge branch 'NetHack-3.6' 2019-05-26 08:18:03 -04:00
PatR
6bd2f4979c curses memory leak
Back in February, my e991dd1b0c added
ESC (when there's no input) as an early return for curses' getline,
but it neglected to clean up some allocated memory.
2019-05-25 07:37:08 -07:00
nhmall
8e06eeeb9d Merge branch 'NetHack-3.6' 2019-05-24 08:01:50 -04:00
PatR
ba5efe7f61 curses message window vs prompting
Fix a problem introduced by f218e3f15e
and/or a19e64e470.  Sometimes the line
after a prompt would be empty and the next message get shown on the
line after that.  a19e64e470 was intended to fix the opposite problem
so probably overshot the mark....
2019-05-24 01:33:45 -07:00
PatR
5de1666f9c curses message window refresh
Sometimes curses tears down and recreates all its windows (when the
display is resized, for instance) and after doing that it repopulates
the message window with data saved for use by ^P.  But it was showing
the oldest messages available rather than the most recent ones.

There is still room for improvement.  That process combines short
messages but the refresh is based on the available number of lines;
combining messages can result in lines at the bottom of the message
window being left blank.  This could be fixed by reverse-scrolling the
window and inserting more messages at the top, or by combining short
messages in history data instead of at refresh time.  The second seems
easier but won't handle changing the message window's width sensibly,
and neither method handles wrapped, long lines well.  A More>> prompt
(possibly more than one) is issued if the refresh shows too many lines
(either because long messages already took multiple lines or because
the window has become narrower and ones which used to fit now need to
be wrapped).
2019-05-23 18:56:20 -07:00
PatR
3863b17384 curses: remove duplicate wincap2 bit
WC2_HITPOINTBAR was OR'd into wincap2 bitmask twice.
2019-05-23 17:54:37 -07:00
nhmall
91d93cd46b Merge branch 'NetHack-3.6' 2019-05-20 22:10:01 -04:00
PatR
716b72d682 wintty.c comments
Some minor stuff I had pending that I stripped away for the status
conditions patch.
2019-05-20 18:08:32 -07:00
nhmall
c7ed4920b0 Merge branch 'NetHack-3.6' 2019-05-20 15:50:17 -04:00
nhmall
cd6c2ebcdf status line count (word two) bit 2019-05-20 15:16:57 -04:00
nhmall
7d7111ec03 status_sanity_check is most useful in WIP and beta so restrict it 2019-05-20 12:08:51 -04:00
PatR
4c93e1fa21 more #H8609 - tty status condition rendering
The earlier fix removed a valid optimization which happened to be
implemented incorrectly.  Put that back.  It also left an invalid
optimization when applied to conditions.  Remove that one.

I don't think either of these explains truncating 'y' off of "Hungry"
which was shown in one of the reports.
2019-05-20 05:26:19 -07:00
nhmall
cbb3dbb5f5 make it tougher for incomplete render_status() to go unnoticed
Adds a sanity check that will write a paniclog
message if a code change prevents completion of
render_status() for each dirty (changed) field.
2019-05-20 01:33:33 -04:00
nhmall
e653868833 fix a botl status display issue
Reported as #H8609 (1679)

Some code recently added to render_status() for BL_CONDITION:
    if (!tty_condition_bits)
        continue;
was short-circuiting the required copy of NOW
values to BEFORE values for later comparison
further down in the for-loop.
    tty_status[BEFORE][idx] = tty_status[NOW][idx];

This caused some fields to be bypassed for rendering
once no more tty_condition_bits were set because the
length comparisons would match.
2019-05-19 23:35:21 -04:00
nhmall
4be2f98063 Merge branch 'NetHack-3.6' 2019-05-19 10:12:39 -04:00
PatR
d1ce0aac89 fixes github issue #190 - EDIT_GETLIN for curses
Fixes #190

Add EDIT_GETLIN support for curses.  It remains disabled by default.
2019-05-18 23:52:04 -07:00
nhmall
8e972874b2 Merge branch 'NetHack-3.6' 2019-05-18 16:30:43 -04:00
PatR
a19e64e470 curses followup
Some prompts were being overwritten by the message that followed.

And clear_nhwindow(WIN_MESSAGE) gets called for just about every
keystroke so try to reduce the overhead I unwittingly added.  The
"scroll up one line earlier than the next message" mentioned in
the prior commit is much more obvious that I realized and prompt
erasure might need to be redone.
2019-05-18 08:12:43 -07:00
PatR
f218e3f15e fix #H8753 - curses message window anomalies
Autodescribe feedback and multi-digit count prompts are always shown
on the last line of the message window and are suppressed from message
history (both ^P and DUMPLOG).  When the message window is using all
available lines, the last one was being overwritten (until the count
or the feedback was completed or dismissed, then last line returned).
Adopt the suggestion that it be scrolled up a line instead of being
overwritten.  [I haven't been able to reproduce the reported problem
where shorter overlaid text left some of longer underlying text visible
but that should now become moot.]

Bonus fix:  while testing, I noticed that if your screen only has room
for a one-line message window and you used ESC to cancel 'pick a spot
with cursor' prompting before moving the cursor, the prompt was left
intact on the message line.  tty erases it in that situation, but the
clear_nhwindow(WIN_MESSAGE) was a no-op for curses because it usually
doesn't erase old messages.  This changes the curses behavior when the
core asks it to erase the message window:  now it forces one blank line
of fake autodesribe feedback (causing the prompt or other most recent
message to scroll off top), then removes that fake feedback (leaving
a blank message line).  For multi-line message window, the old messages
scroll up by one line sooner than they would when waiting for the next
real message but are otherwise unaffected.
2019-05-18 02:25:48 -07:00
nhmall
06941dcd2f match the vs version info values with include/patchlevel.h in 3.7 2019-05-12 15:50:33 -04:00
nhmall
357165cf68 Merge branch 'NetHack-3.6' 2019-05-12 15:31:31 -04:00