This patch implements Michael's idea to have a "NetHack mode" for
keypresses. It only does the Alt-keys now, but it should be easy
to extend to pressing space in dialogs; I left that out as we still
have to agree on a new dialog look.
The setting that you choose from the menu is stored in the registry.
Reading and writing the registry is done on init_nhwindows and
exit_nhwindows; there also is a menu item to delete the registry
settings (which makes sure they are not stored again this session.)
This provides a framework for future registry settings.
Also,
Alt-tab should show the app title when a menu or text window is up.
I left the app title as it was, although I still favour "Graphical
Version" or "With Graphics"; Anyway, that's only one resource string.
Here's a patch that checks whether the common control
library is available and up-to-date
[slightly modified from <Someone>'s version to reduce
indentation one level, and to fix wrap-around
in the patch]
Addresses <Someone>'s point that ALT-F4 in game-over, still brings up the
save/quit/cancel dialog box. This makes ALT-F4 equivalent to quitting
without any further disclosure/windows, but makes sure the game exits
properly so it will save the bones and the record file. I also cleaned
up the mhrip.c to use macros for all magic numbers.
win32gui: more splash screen integration
The Makefile have rip.uu/splash.uu added to them. However, this won't
work if you don't have splash.uu. Instead, just copy rip.uu or another
.uu and name it splash.uu. Make expects to have splash.uu present (at
least Borland's make). It doesn't add splash.uu decoding to the IDE
framework. It does a bit in winhack.rc and Makefile.bcc to bring
winhack.rc up to sync with Borland's compiler. If you don't like the
splash screen, then I'll have to redo that part of the patch apart from
the others.
The splash screen uses the VERSION_MAJOR,
VERSION_MINOR, and PATCHLEVEL macros, but there is no room in case one
of these goes into two digits. That seems like a safe assumption to
make.
The Makefile have rip.uu/splash.uu added to them. However, this won't
work if you don't have splash.uu. Instead, just copy rip.uu or another
.uu and name it splash.uu. Make expects to have splash.uu present (at
least Borland's make). It doesn't add splash.uu decoding to the IDE
framework. It does a bit in winhack.rc and Makefile.bcc to bring
winhack.rc up to sync with Borland's compiler. If you don't like the
splash screen, then I'll have to redo that part of the patch apart from
the others.
- set OPTIONS_FILE in ntconf.h so makedefs will use it
- it gets set to either "ttyoptions" or "guioptions" depending on window port
being built
- dlb nhdat creation stuffs both into the dlb file
accelerators).
[...]
- added F4/F5 functionality - same as in MSDOS port
F4 toggles between fitting the tiled display to the screen
and full size (compresses the tiles to fit / uncompresses).
F5 alternates between ascii and tiles.
- added support for wc_vary_msgcount
- menu-window code could access a null pointer when there was no data
- menu-window code can't handle empty contents, because there's no place
to position the cursor, so force text mode
- still looked ugly, so added a check to avoid displaying anything if
the file was empty
1) Removal of bmp placement in binary directory in NT
2) No use of "intrinsic function" optimization in dsp
3) Compilation of resource file for NT Console
Untested on Borland yet. Tested on console/graphical/ide Microsoft C 6.0
Ctrl-left_arrow - scroll left
Ctrl-right_arrow - scroll right
Ctrl-up_arrow - scroll up
Ctrl-down_arrow - scroll down
Ctrl-home - scroll to upper left corner
Ctrl-end - scroll to lower right corner
Ctrl-PgUp - scroll one page up (vertical)
Ctrl-PgDown - scroll one page down (vertical)
- F3/F4 keys switch between tiles / fit-to-screen ASCII mode (Yitzhak's
suggestion)
also corrects a cut-and-paste error that I made in options.c
The following options can be set in the game now:
WC_HILITE_PET
WC_ALIGN_MESSAGE
WC_ALIGN_STATUS
WC_SCROLL_MARGIN
WC_MAP_MODE
WC_FONT_MESSAGE
WC_FONT_STATUS
WC_FONT_MENU
WC_FONT_TEXT
WC_FONTSIZ_MESSAGE
WC_FONTSIZ_STATUS
WC_FONTSIZ_MENU
WC_FONTSIZ_TEXT
Several boolean options were mis-categorized and became
unsettable during play. Also, the eight_bit_tty option got
dropped into limbo. Fixing that revealed a typo which would
have broken compilation for MSDOS.
`eight_bit_tty' has been renamed `wc_eight_bit_input',
but its only use anywhere in the code is for output.
- added support for new options
- fixed couple of typos in options.c
- added sunken edge around message window
- added capability to replace font in the font table (if we will want to
change font sizes dynamically later)
- visual feedback after a prompt: append an empty line to the message
window when clear_nhwindow(WIN_MESSAGE) is called. Filter
out empty lines in the buffer except for the active slot.
- append ellipses to the status line text if the text is truncated
- get rid of message boxes at the end of the game (ignore empty lines in
raw_print as Yitzhak suggested)
Add absent prototypes to some core routines.
Also add some port function() to function(void) in some win32 routines.
Also updates the Borland C Makefile for win32.
- attempt to determine if tty_wait_synch() is called during the ending
dialogs due to an interrupt, and not re-display the previous message
at the wrong time
- also, "msg_window display anomaly" fix was missing code to still treat ^P
properly while in a prompt
The following fixes several bugs:
1) Mismatch between docs and game in definition of what '+' resolved in
favor of docs...
2) When game needs to be recovered a message box is shown. This is a very
deprecated fix. It pretty much answers just the conditions that require
this (a yn question to an erroneous winid), and is not useful for other
purposes.
3) The score file is written.
If you interrupt nethack (^C) in tty windowport mode while a pompt is
displayed and and msg_window=true, it can display the full message history
at an unexpected time. Detect this and display only the topl, as expected.
to allow common parsing in the core, and direct access to the
results by the window port.
Notes:
o Adds a new field, wincap, to the window_procs
structure for setting bits related to the preference
features that the window port supports. This allows
run-time determination of whether a particular option
setting is applicable to the running window port. A
window-port is free to support as many, or as few,
of the available options as it wants. Ensure that
only the ones supported have their corresponding bit
set in window_proc.wincap. [see chart in
doc/window.doc for help with that.]
o The settings I stuck into wincap for each window
port are almost certainly not accurate, so each port
team should review them. You should only include
the ones that you will actually react to and make
adjustments for if the user changes that option.
Without the setting in wincap, the option won't even
show up in the 'O'ptions menu.
o preference_update() added to the window-port
interface, so that the window-port can be notified
if an option of interest (an option with its
corresponding bit set in wincap field) is
changed.
o provided a genl_preference_update() routine in
windows.c and used it for all the existing
window ports since they don't have a functional
one of their own yet.
o this messes around heavily with iflags and the options
arrays in options.c
o I hope I didn't break any port's existing code. I
tried not to. The Mac however, in particular, should
be looked at because it suffered a namespace collision
with what I was working on around fontname. It had
Mac specific font stuff in options.c. Please test
the Mac.