Commit Graph

14568 Commits

Author SHA1 Message Date
PatR
d3181e20ba qt_map.cpp source formatting
Clean up the Qt code a bit.  The only intended change is to use
a different check for being polymorphed.
2020-09-08 13:26:13 -07:00
PatR
0b67fd60df hints/{linux,macOS}.2020
A recent change was intended to allow specifying
  make CFLAGS=-O
on the command line to override our default of -g, but it didn't
work as intended.  foo=bar and foo+=bar don't work if foo has
been given a value on the command line.  The first was expected
behavior but the second wasn't, at least for me.  GNU make allows
'override foo+=bar' to cope with that.  (We're already implicitly
requiring GNU make for the linux and OSX hints.)
2020-09-08 12:36:13 -07:00
PatR
a48b4aa8ba fix #K1963 - warning after placing worm tail
Report described this as a panic triggered by the sanity_check
option, but that's because it was running under the fuzzer, which
escalates any impossible() to panic(), rather than because nethack
panicked.

I couldn't find anything wrong--which doesn't mean that there
isn't something wrong--with place_worm_tail_randomly() and
random_dir().  They use xchar for map coordinates which should be
fine as long as no negative values are generated and I couldn't
discover any such.  The suggested fix of changing xchar to int
might indicate a compiler bug (although the odds of that are low).
The bogus coordinate of -15000 in the report suggests that
 typedef short int schar;
(which changes xchar too) is being used in the configuration but
I don't recall having any problems attributable to that.

This switches from xchar to int as a side-effect of replacing the
offending code entirely.  The new code might produce an 'ny' of -1
before goodpos() rejects it, so xchar would be inappropriate now.
The old code is commented out via #if 0 _after_ changing it from
xchar to int.

This also adds an extra sanity_check for worm tails, unrelated to
the current bug.  I'm not aware of any instance where it fails.
EXTRA_SANITY_CHECKS needs to be defined for it to do anything.
2020-09-08 03:03:03 -07:00
Adam Powers
2e7e0c2325 change package name 2020-09-06 23:19:22 -07:00
Adam Powers
7b46e3d12c update lib tests 2020-09-06 17:35:03 -07:00
Adam Powers
96cf11ad71 fix JS event loop blocking 2020-09-06 17:32:08 -07:00
PatR
f20a6bb491 special level's lit state when changing terrain
Part of pull request #308:  when using des.terrain to set terrain,
default for lit state becomes 'unchanged' rather than 'unlit'.
des.replace_terrain already operates that way.  Replace lit state
magic numbers -1 and -2 with SET_LIT_RANDOM and SET_LIT_NOCHANGE.

Also change SET_TYPLIT() to not operate on map column 0 and move
it from rm.h to sp_lev.h.  It never belonged there, is only used
in sp_lev.c, and now because of the SET_LIT_ macros it couldn't be
used anywhere else unless sp_lev.h gets included too.
2020-09-06 16:17:33 -07:00
PatR
b48ebbfe15 update unix Makefile hints 2020-09-05 13:28:46 -07:00
PatR
bce7834f71 polearm context
Move clearing of polearm context from migrate_to_lev() to lower
level relmon().  Add missing transfer of polearm context from
old mon to new mon in replmon().  These days it seems to only be
used for creating a monster from saved traits, so polearm context
in it should be moot.
2020-09-05 11:35:28 -07:00
PatR
13cf558e6b more hunger checks
I don't know what I was thinking before.  'moves + rn2(20)' can
be simplified to just rn2(20) and ignore moves altogether.
2020-09-04 15:29:22 -07:00
PatR
bf3697c122 hunger checks
Eliminate the feasibility of micro-managing ring hunger by swapping
back and forth between a pair of rings of slow digestion.  Wearing
one at a time causes normal ring hunger (wearing both at once just
increases such hunger), but being able to put on the second ring
and take off the first just before the 1 out of 20 turns where it
affects hunger, then vice versa a few turns later, is an insanely
tedious way to avoid any hunger at all, made possible by the 'time'
option.  Make the turns where extra hunger get imposed be randomized
so that that can't be done reliably.

Also closes githib issue #336:  hunger caused by melee attacking
adds ring and amulet hunger a second time for that turn.  That has
always been intentional behavior; now the amount varies for any
given attack due to the randomization, but on average is the same
as before.

Closes #336
2020-09-04 14:31:44 -07:00
PatR
152187870c Qt input overhaul
Enable existing wc_popup_dialog option.  Use it in yn_function()
instead using a mystery value which apparently used to live in Qt
Settings but isn't there anymore so couldn't be turned on or off.
Also replaces conditional USE_POPUPS which isn't defined anywhere
either so presumably came from CFLAGS and only supported "yn?",
"ynq?", and "rl?" with hardcoded Qt popups rather than using
NetHackQtYnDialog.

Doing that revealed that the popup dialog for ynaq was in pretty
bad shape.  It's functional but still needs a lot of work, beyond
the limited Qt/C++ capability I possess.  The KeyPress issue which
accepts <shift> as input, thereby preventing <shift>+<character>
from being typed during ynaq prompting, is particularly nasty.

Append the ynaq dialog's response to the message line containing
the corresponding prompt similar to what's now done for regular
yn_function().

Add getlin() prompt+response to the message window.
2020-09-03 19:01:36 -07:00
Adam Powers
045a5879f1 npm doesn't allow 'hack' in package names 2020-09-02 07:42:29 -07:00
Adam Powers
a8373f2224 move package to npm organization 2020-09-02 07:28:01 -07:00
Adam Powers
caaa9b0588 remove stray printfs 2020-09-02 07:27:29 -07:00
Adam Powers
490b260454 remove stray console.log 2020-09-01 13:11:09 -07:00
PatR
aaa4c1d37c potential infinite loop on hangup (ring prompt)
Core issue noticed while working on some Qt stuff.  If hangup
occurred while prompting for "right or left?" ring finger, the
hangup yn_function() would return ESC and the accessory-on routine
would not see '\0', 'r', or 'l' so reprompt.  Endlessly.
2020-09-01 04:11:01 -07:00
PatR
a2782d47f5 Qt without tiles again
"Qt without tiles" (commit ae4c180cf6)
two weeks ago accidentally took out a line that should have stayed.
2020-08-31 15:47:49 -07:00
PatR
2a762ab641 Qt prompt responses in message window
When Qt issues a prompt string in the message window, update it
with the player's response once that has been obtained.
2020-08-31 00:30:36 -07:00
PatR
1f953fa959 Qt message [un]highlighting
The Qt interface highlights the last message issued (using a
mechanism for selection, as if for copy+paste or similar operation)
but it was staying highlighted until another message was eventually
given.  Having an old message seem to stick around is annoying and
is particularly bad when the message is a prompt.  If the player's
answer doesn't cause a message to be shown then it seems as if the
prompt is still pending.

This removes the highlighting (by bulk unselecting) once the player
gives another input keystroke or mouse click.

It would be much better if the selecting/highlighting was for all
messages issued since last time highlighting was cleared.  Figuring
out how to do that correctly is more effort than I want to expend.
2020-08-30 22:50:02 -07:00
PatR
3cd21e1d4f Qt keyboard fixups
Make ASCII control characters ^[, ^\, ^], ^^, and ^_ work on Qt,
at least partly.  Mainly for ^[ to be treated as ESC, which works
if you're aborting a count on the map but doesn't cancel out of
menus [yet?].  I didn't attempt to make ^@ send NUL.

Also, fix the hardcoded macros (activated by F1: rest 100 turns,
F2: search 20 times, and Tab: ^A to do-again).  The first two sent
'n' before the count so wouldn't work as intended with number_pad
off, and the third was executing twice as if Tab sent two ^A's
instead of just one.  Resting and searching might have been getting
duplicated too; I don't know how to simulate the relevant keys.
(I temporarily swapped definitions for F2 and Tab to test the
number_pad fix but hadn't done that earlier when I discovered the
Tab bug.)
2020-08-30 16:44:39 -07:00
PatR
0902d83d52 qt_win.cpp cleanup
Started out fixing a comment typo and ended up removing a bunch of
unnecessary stuff, plus a little bit of lackluster reformatting.
2020-08-30 16:00:18 -07:00
Adam Powers
0c8e4e555e complete API documentation 2020-08-30 12:09:42 -07:00
Adam Powers
b0e77f7729 initial npm package 2020-08-30 12:00:39 -07:00
Adam Powers
356e7432e7 ignore libnethack build files 2020-08-30 12:00:12 -07:00
Adam Powers
ffa5e319af ignore libnethack dev files 2020-08-30 11:59:23 -07:00
Adam Powers
efae5590e5 completed shim graphics callbacks 2020-08-30 11:01:34 -07:00
Adam Powers
4ffb8c9ce3 fix naming 2020-08-30 10:46:55 -07:00
Adam Powers
85108bf7ef add build section, fix naming 2020-08-30 10:45:54 -07:00
Adam Powers
42f948018d initial helpers 2020-08-30 10:31:17 -07:00
Adam Powers
ca9d1c5b97 update build notes 2020-08-30 10:30:03 -07:00
Adam Powers
863f914337 added void functions 2020-08-29 15:50:42 -07:00
Adam Powers
14084dc50c fix arg order 2020-08-29 14:48:22 -07:00
Adam Powers
4ef48ca49a fix syntax errors for libnethack.a 2020-08-29 14:48:02 -07:00
Adam Powers
22bc4ecfc0 initial docs 2020-08-29 11:10:52 -07:00
Adam Powers
1a70f77b2a more sensible arg order for callback 2020-08-29 11:10:09 -07:00
Adam Powers
e04b17911a delinting 2020-08-29 10:27:51 -07:00
Adam Powers
97a14eebbe functional shim graphics 2020-08-29 10:26:58 -07:00
PatR
fae20ad3e2 Qt menu fix
Menus have [ok], [cancel], [all], [none], [invert], and [search]
buttons across their top but the [all], [none], and [invert] choices
didn't redraw the menu after making changes to the pending selections
so it seemed as if they weren't doing anything.  Subsequently picking
[ok] revealed otherwise.

[search] is broken (instead of accepting a search string, the letters
I type are being used to toggle individual entries as I type).  This
doesn't attempt to address that.
2020-08-28 17:31:33 -07:00
Adam Powers
c9f5bb9ac4 replace -DWASM with compiler internal __EMSCRIPTEN__ 2020-08-27 22:15:12 -07:00
Adam Powers
18254eb291 make system cleanup 2020-08-27 21:38:21 -07:00
Adam Powers
e5604d575f fix undefined symbol in nhlib 2020-08-27 21:37:16 -07:00
Adam Powers
d3bbf02d2e fix 'spotless' bug noticed during cross-compile 2020-08-27 21:12:51 -07:00
PatR
1df2fdca44 fix pull request #379 - is_displacer()
A couple of places which could/should have been using existing
is_displacer() macro weren't.

No change in behavior.

Fixes #379
2020-08-27 17:38:11 -07:00
PatR
3f81bd5af6 fix pull request #380 - turning into slime
The turn-to-slime countdown is one of the ones that uses turns/2
to stretch the sequence out longer and it was displaying the hero
as green slime when there was another turn before it happened.
(In theory anyway.  I could not get my hero to be shown as slime
and still have one move left, even when hasted.)

Make the hero mimic green slime starting on the last turn before
being polymorphed instead of next to last.

Fixes #380
2020-08-27 16:14:17 -07:00
Adam Powers
1aa053d1d8 initial libnethack 2020-08-26 19:22:00 -07:00
Adam Powers
5939773971 initial shim graphics 2020-08-26 19:17:40 -07:00
PatR
1a11d67d58 fix commented-out debugging code
I was actually using fprintf(stderr,...) when testing and didn't
retry this bit after changing it to raw_printf(...).  It's commented
out but needs fixing.
2020-08-26 14:47:02 -07:00
nhmall
1079c01333 sys/winnt/Makefile.msc update for VS 2019 16.7.2 2020-08-25 22:41:54 -04:00
PatR
2d70d86ded qt_key.cpp
I've been trying to figure out how to make ^[ be treated as ESC but
so far have failed.  That key combination just acts like a dead key.
But one bit of cp_key.cpp can be implemented instead of ignored.

No change in behavior because the keyboard-state value isn't being
used anywhere.
2020-08-25 18:59:22 -07:00