Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
.\" $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.299 $ $NHDT-Date: 1551488947 2019/03/02 01:09:07 $
|
.\" $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.300 $ $NHDT-Date: 1553204011 2019/03/21 21:33:31 $
|
||||||
.\"
|
.\"
|
||||||
.\" This is an excerpt from the 'roff' man page from the 'groff' package.
|
.\" This is an excerpt from the 'roff' man page from the 'groff' package.
|
||||||
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
.ds vr "NetHack 3.6
|
.ds vr "NetHack 3.6
|
||||||
.ds f0 "\*(vr
|
.ds f0 "\*(vr
|
||||||
.ds f1
|
.ds f1
|
||||||
.ds f2 "February 27, 2019
|
.ds f2 "March 19, 2019
|
||||||
.
|
.
|
||||||
.\" A note on some special characters:
|
.\" A note on some special characters:
|
||||||
.\" \(lq = left double quote
|
.\" \(lq = left double quote
|
||||||
@@ -3010,10 +3010,6 @@ Gold is never blessed or cursed, but it is not described as \(lquncursed\(rq
|
|||||||
even when the
|
even when the
|
||||||
.op implicit_uncursed
|
.op implicit_uncursed
|
||||||
option is \(lqoff\(rq.
|
option is \(lqoff\(rq.
|
||||||
.lp guicolor
|
|
||||||
Use color text and/or highlighting attributes when displaying some
|
|
||||||
non-map data (such as menu selector letters).
|
|
||||||
Curses interface only; default is on.
|
|
||||||
.lp "help "
|
.lp "help "
|
||||||
If more information is available for an object looked at
|
If more information is available for an object looked at
|
||||||
with the \(oq/\(cq command, ask if you want to see it (default on).
|
with the \(oq/\(cq command, ask if you want to see it (default on).
|
||||||
@@ -3281,6 +3277,7 @@ such as \(lqparanoid_confirmation:attack pray Remove\(rq.
|
|||||||
.lp perm_invent
|
.lp perm_invent
|
||||||
If true, always display your current inventory in a window. This only
|
If true, always display your current inventory in a window. This only
|
||||||
makes sense for windowing system interfaces that implement this feature.
|
makes sense for windowing system interfaces that implement this feature.
|
||||||
|
.\" petattr is a wincap option but we'll document it here...
|
||||||
.lp petattr
|
.lp petattr
|
||||||
Specifies one or more text highlighting attributes to use when showing
|
Specifies one or more text highlighting attributes to use when showing
|
||||||
pets on the map.
|
pets on the map.
|
||||||
@@ -3308,7 +3305,7 @@ Currently multiple highlight-style letters can be combined by simply
|
|||||||
stringing them together (for example, \(lqbk\(rq), but in the future
|
stringing them together (for example, \(lqbk\(rq), but in the future
|
||||||
they might require being separated by plus signs (such as \(lqb+k\(rq,
|
they might require being separated by plus signs (such as \(lqb+k\(rq,
|
||||||
which works already).
|
which works already).
|
||||||
When using the \(oqN\(cq choice, it should be specified on its own,
|
When using the \(oqn\(cq choice, it should be specified on its own,
|
||||||
not in combination with any of the other letters.
|
not in combination with any of the other letters.
|
||||||
.lp pettype
|
.lp pettype
|
||||||
Specify the type of your initial pet, if you are playing a character class
|
Specify the type of your initial pet, if you are playing a character class
|
||||||
@@ -3473,13 +3470,6 @@ and prior versions (for example \(lqsuppress_alert:3.3.1\(rq).
|
|||||||
This option may be used to select one of the named symbol sets found within
|
This option may be used to select one of the named symbol sets found within
|
||||||
\(lqsymbols\(rq to alter the symbols displayed on the screen.
|
\(lqsymbols\(rq to alter the symbols displayed on the screen.
|
||||||
Use \(lqsymset:default\(rq to explicitly select the default symbols.
|
Use \(lqsymset:default\(rq to explicitly select the default symbols.
|
||||||
.lp "term_cols\ \ \fIand\fP"
|
|
||||||
.lp term_rows
|
|
||||||
Curses interface only.
|
|
||||||
Number of columns and rows to use for the display.
|
|
||||||
Curses will attempt to resize to the values specified but will settle
|
|
||||||
for smaller sizes if they are too big.
|
|
||||||
Default is the current window size.
|
|
||||||
.lp "time "
|
.lp "time "
|
||||||
Show the elapsed game time in turns on bottom line (default off).
|
Show the elapsed game time in turns on bottom line (default off).
|
||||||
Persistent.
|
Persistent.
|
||||||
@@ -3554,26 +3544,20 @@ When getting a location on the map, and using shifted movement keys or
|
|||||||
meta-digit keys to fast-move, instead of moving 8 units at a time,
|
meta-digit keys to fast-move, instead of moving 8 units at a time,
|
||||||
move by skipping the same glyphs.
|
move by skipping the same glyphs.
|
||||||
(default off)
|
(default off)
|
||||||
.lp windowborders
|
|
||||||
Whether to draw boxes around the map, status area, message area, and
|
|
||||||
persistent inventory window if enabled.
|
|
||||||
Curses interface only.
|
|
||||||
Acceptable values are
|
|
||||||
.sd
|
|
||||||
.si
|
|
||||||
.CC 1 "on, always show borders"
|
|
||||||
.CC 2 "off, never show borders"
|
|
||||||
.CC 3 "auto, on if terminal or window is at least (24+2)x(80+2)\ \ (default)"
|
|
||||||
.ei
|
|
||||||
.ed
|
|
||||||
.lp ""
|
|
||||||
(The 26x82 size threshold for \(oq3\(cq refers to number of rows and
|
|
||||||
columns of the display.)
|
|
||||||
.lp windowtype
|
.lp windowtype
|
||||||
When the program has been built to support multiple interfaces,
|
When the program has been built to support multiple interfaces,
|
||||||
select which one to use, such as \(lqtty\(rq or \(lqX11\(rq
|
select which one to use, such as \(lqtty\(rq or \(lqX11\(rq
|
||||||
(default depends on build-time settings; use \(lq#version\(rq to check).
|
(default depends on build-time settings; use \(lq#version\(rq to check).
|
||||||
Cannot be set with the \(oqO\(cq command.
|
Cannot be set with the \(oqO\(cq command.
|
||||||
|
.lp ""
|
||||||
|
When used, it should be the first option set since its value might
|
||||||
|
enable or disable the availability of various other options.
|
||||||
|
For multiple lines in a configuration file, that would be the first
|
||||||
|
non-comment line.
|
||||||
|
For a comma-separated list in NETHACKOPTIONS or an OPTIONS line in a
|
||||||
|
configuration file,
|
||||||
|
that would
|
||||||
|
be the \fIrightmost\fP option in the list.
|
||||||
.lp wizweight
|
.lp wizweight
|
||||||
Augment object descriptions with their objects' weight (default off).
|
Augment object descriptions with their objects' weight (default off).
|
||||||
Debug mode only.
|
Debug mode only.
|
||||||
@@ -3634,6 +3618,10 @@ If NetHack can, it should use this size font for text windows.
|
|||||||
.lp fullscreen
|
.lp fullscreen
|
||||||
If NetHack can, it should try and display on the entire screen rather than
|
If NetHack can, it should try and display on the entire screen rather than
|
||||||
in a window.
|
in a window.
|
||||||
|
.lp guicolor
|
||||||
|
Use color text and/or highlighting attributes when displaying some
|
||||||
|
non-map data (such as menu selector letters).
|
||||||
|
Curses interface only; default is on.
|
||||||
.lp large_font
|
.lp large_font
|
||||||
If NetHack can, it should use a large font.
|
If NetHack can, it should use a large font.
|
||||||
.lp map_mode
|
.lp map_mode
|
||||||
@@ -3665,6 +3653,17 @@ Handhelds are most likely to support this option.
|
|||||||
.lp splash_screen
|
.lp splash_screen
|
||||||
If NetHack can, it should display an opening splash screen when it starts
|
If NetHack can, it should display an opening splash screen when it starts
|
||||||
up (default yes).
|
up (default yes).
|
||||||
|
.lp statuslines
|
||||||
|
Number of lines for traditional below-the-map status display.
|
||||||
|
Acceptable values are 2 and 3 (default is 2).
|
||||||
|
Curses interface only.
|
||||||
|
.lp "term_cols\ \ \fIand\fP"
|
||||||
|
.lp term_rows
|
||||||
|
Curses interface only.
|
||||||
|
Number of columns and rows to use for the display.
|
||||||
|
Curses will attempt to resize to the values specified but will settle
|
||||||
|
for smaller sizes if they are too big.
|
||||||
|
Default is the current window size.
|
||||||
.lp tiled_map
|
.lp tiled_map
|
||||||
If NetHack can, it should display a tiled map if it can.
|
If NetHack can, it should display a tiled map if it can.
|
||||||
.lp tile_file
|
.lp tile_file
|
||||||
@@ -3680,6 +3679,24 @@ If NetHack can, it should display inverse when the game specifies it.
|
|||||||
.lp vary_msgcount
|
.lp vary_msgcount
|
||||||
If NetHack can, it should display this number of messages at a time in
|
If NetHack can, it should display this number of messages at a time in
|
||||||
the message window.
|
the message window.
|
||||||
|
.lp windowborders
|
||||||
|
Whether to draw boxes around the map, status area, message area, and
|
||||||
|
persistent inventory window if enabled.
|
||||||
|
Curses interface only.
|
||||||
|
Acceptable values are
|
||||||
|
.sd
|
||||||
|
.si
|
||||||
|
.CC 0 "off, never show borders"
|
||||||
|
.CC 1 "on, always show borders"
|
||||||
|
.CC 2 "auto, on if display is at least (24+2)x(80+2)\ \ (default)"
|
||||||
|
.ei
|
||||||
|
.ed
|
||||||
|
.lp ""
|
||||||
|
(The 26x82 size threshold for \(oq2\(cq refers to number of rows and
|
||||||
|
columns of the display.
|
||||||
|
A width of at least 110 columns (80+2+26+2) is needed for
|
||||||
|
.op align_status
|
||||||
|
set to \f(CRleft\fP or \f(CRright\fP.)
|
||||||
.lp windowcolors
|
.lp windowcolors
|
||||||
If NetHack can, it should display windows with the specified
|
If NetHack can, it should display windows with the specified
|
||||||
foreground/background colors. Windows GUI only. The format is
|
foreground/background colors. Windows GUI only. The format is
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
%.au
|
%.au
|
||||||
\author{Original version - Eric S. Raymond\\
|
\author{Original version - Eric S. Raymond\\
|
||||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||||
\date{February 27, 2019}
|
\date{March 19, 2019}
|
||||||
|
|
||||||
\maketitle
|
\maketitle
|
||||||
|
|
||||||
@@ -3305,11 +3305,6 @@ or {\tt U} (known to be uncursed, when `off', the default).
|
|||||||
Gold is never blessed or cursed, but it is not described as ``uncursed''
|
Gold is never blessed or cursed, but it is not described as ``uncursed''
|
||||||
even when the {\it implicit\verb+_+uncursed\/} option is `off'.
|
even when the {\it implicit\verb+_+uncursed\/} option is `off'.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{guicolor}]
|
|
||||||
Use color text and/or highlighting attributes when displaying some
|
|
||||||
non-map data (such as menu selector letters).
|
|
||||||
Curses interface only; default is on.
|
|
||||||
%.lp
|
|
||||||
\item[\ib{help}]
|
\item[\ib{help}]
|
||||||
If more information is available for an object looked at
|
If more information is available for an object looked at
|
||||||
with the `{\tt /}' command, ask if you want to see it (default on).
|
with the `{\tt /}' command, ask if you want to see it (default on).
|
||||||
@@ -3614,6 +3609,7 @@ such as ``{\it par\-a\-noid\verb+_+con\-fir\-ma\-tion:attack~pray~Remove}''.
|
|||||||
If true, always display your current inventory in a window. This only
|
If true, always display your current inventory in a window. This only
|
||||||
makes sense for windowing system interfaces that implement this feature.
|
makes sense for windowing system interfaces that implement this feature.
|
||||||
%.lp
|
%.lp
|
||||||
|
%.\" petattr is a wincap option but we'll document it here...
|
||||||
\item[\ib{petattr}]
|
\item[\ib{petattr}]
|
||||||
Specifies one or more text highlighting attributes to use when showing
|
Specifies one or more text highlighting attributes to use when showing
|
||||||
pets on the map.
|
pets on the map.
|
||||||
@@ -3642,7 +3638,7 @@ Currently multiple highlight-style letters can be combined by simply
|
|||||||
stringing them together (for example, ``bk''), but in the future
|
stringing them together (for example, ``bk''), but in the future
|
||||||
they might require being separated by plus signs (such as ``b\verb&+&k'',
|
they might require being separated by plus signs (such as ``b\verb&+&k'',
|
||||||
which works already).
|
which works already).
|
||||||
When using the `N' choice, it should be specified on its own,
|
When using the `n' choice, it should be specified on its own,
|
||||||
not in combination with any of the other letters.
|
not in combination with any of the other letters.
|
||||||
|
|
||||||
%.lp
|
%.lp
|
||||||
@@ -3754,8 +3750,8 @@ depend upon the window port used or on the type of terminal. Persistent.
|
|||||||
Prevent you from (knowingly) attacking your pets (default on). Persistent.
|
Prevent you from (knowingly) attacking your pets (default on). Persistent.
|
||||||
%+.lp
|
%+.lp
|
||||||
\item[\ib{sanity\verb+_+check}]
|
\item[\ib{sanity\verb+_+check}]
|
||||||
+Evaluate monsters, objects, and map prior to each turn (default off).
|
Evaluate monsters, objects, and map prior to each turn (default off).
|
||||||
+Debug mode only.
|
Debug mode only.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{scores}]
|
\item[\ib{scores}]
|
||||||
Control what parts of the score list you are shown at the end (for example,
|
Control what parts of the score list you are shown at the end (for example,
|
||||||
@@ -3823,15 +3819,6 @@ This option may be used to select one of the named symbol sets found within
|
|||||||
{\tt symbols} to alter the symbols displayed on the screen.
|
{\tt symbols} to alter the symbols displayed on the screen.
|
||||||
Use ``{\tt symset:default}'' to explicitly select the default symbols.
|
Use ``{\tt symset:default}'' to explicitly select the default symbols.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{term\verb+_+cols}\ \ {\it and}]"
|
|
||||||
%.lp
|
|
||||||
\item[\ib{term\verb+_+rows}]
|
|
||||||
Curses interface only.
|
|
||||||
Number of columns and rows to use for the display.
|
|
||||||
Curses will attempt to resize to the values specified but will settle
|
|
||||||
for smaller sizes if they are too big.
|
|
||||||
Default is the current window size.
|
|
||||||
%.lp
|
|
||||||
\item[\ib{time}]
|
\item[\ib{time}]
|
||||||
Show the elapsed game time in turns on bottom line (default off). Persistent.
|
Show the elapsed game time in turns on bottom line (default off). Persistent.
|
||||||
%.lp
|
%.lp
|
||||||
@@ -3923,30 +3910,19 @@ meta-digit keys to fast-move, instead of moving 8 units at a time,
|
|||||||
move by skipping the same glyphs.
|
move by skipping the same glyphs.
|
||||||
(default off)
|
(default off)
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{windowborders}]
|
|
||||||
Whether to draw boxes around the map, status area, message area, and
|
|
||||||
persistent inventory window if enabled.
|
|
||||||
Curses interface only.
|
|
||||||
Acceptable values are
|
|
||||||
|
|
||||||
%.sd
|
|
||||||
%.si
|
|
||||||
{\tt 1} --- on, always show borders\\
|
|
||||||
{\tt 2} --- off, never show borders\\
|
|
||||||
{\tt 3} --- auto, on if terminal or window is at least
|
|
||||||
(24\verb&+&2)x(80\verb&+&2)\ \ (default)\\
|
|
||||||
%.ei
|
|
||||||
%.ed
|
|
||||||
|
|
||||||
%.lp ""
|
|
||||||
(The 26x82 size threshold for `3' refers to number of rows and
|
|
||||||
columns of the display.)
|
|
||||||
%.lp
|
|
||||||
\item[\ib{windowtype}]
|
\item[\ib{windowtype}]
|
||||||
When the program has been built to support multiple interfaces,
|
When the program has been built to support multiple interfaces,
|
||||||
select whichone to use, such as ``{\tt tty}'' or ``{\tt X11}''
|
select whichone to use, such as ``{\tt tty}'' or ``{\tt X11}''
|
||||||
(default depends on build-time settings; use ``{\tt \#version}'' to check).
|
(default depends on build-time settings; use ``{\tt \#version}'' to check).
|
||||||
Cannot be set with the `{\tt O}' command.
|
Cannot be set with the `{\tt O}' command.
|
||||||
|
|
||||||
|
%.lp ""
|
||||||
|
When used, it should be the first option set since its value might
|
||||||
|
enable or disable the availability of various other options.
|
||||||
|
For multiple lines in a configuration file, that would be the first
|
||||||
|
non-comment line.
|
||||||
|
For a comma-separated list in NETHACKOPTIONS or an OPTIONS line in a
|
||||||
|
configuration file, that would be the {\it rightmost\/} option in the list.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{wizweight}]
|
\item[\ib{wizweight}]
|
||||||
Augment object descriptions with their objects' weight (default off).
|
Augment object descriptions with their objects' weight (default off).
|
||||||
@@ -4031,6 +4007,11 @@ If {\it NetHack\/} can, it should use this size font for text windows.
|
|||||||
\item[\ib{fullscreen}]
|
\item[\ib{fullscreen}]
|
||||||
If {\it NetHack\/} can, it should try and display on the entire screen rather than in a window.
|
If {\it NetHack\/} can, it should try and display on the entire screen rather than in a window.
|
||||||
%.lp
|
%.lp
|
||||||
|
\item[\ib{guicolor}]
|
||||||
|
Use color text and/or highlighting attributes when displaying some
|
||||||
|
non-map data (such as menu selector letters).
|
||||||
|
Curses interface only; default is on.
|
||||||
|
%.lp
|
||||||
\item[\ib{large\verb+_+font}]
|
\item[\ib{large\verb+_+font}]
|
||||||
If {\it NetHack\/} can, it should use a large font.
|
If {\it NetHack\/} can, it should use a large font.
|
||||||
%.lp
|
%.lp
|
||||||
@@ -4063,10 +4044,26 @@ If {\it NetHack\/} can, it should display a menu of existing saved games for the
|
|||||||
choose from at game startup, if it can. Not all ports support this option.
|
choose from at game startup, if it can. Not all ports support this option.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{softkeyboard}]
|
\item[\ib{softkeyboard}]
|
||||||
If {\it NetHack\/} can, it should display an onscreen keyboard. Handhelds are most likely to support this option.
|
If {\it NetHack\/} can, it should display an onscreen keyboard.
|
||||||
|
Handhelds are most likely to support this option.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{splash\verb+_+screen}]
|
\item[\ib{splash\verb+_+screen}]
|
||||||
If {\it NetHack\/} can, it should display an opening splash screen when it starts up (default yes).
|
If {\it NetHack\/} can, it should display an opening splash screen when
|
||||||
|
it starts up (default yes).
|
||||||
|
%.lp
|
||||||
|
\item[\ib{statuslines}]
|
||||||
|
Number of lines for traditional below-the-map status display.
|
||||||
|
Acceptable values are 2 and 3 (default is 2).
|
||||||
|
Curses interface only.
|
||||||
|
%.lp
|
||||||
|
\item[\ib{term\verb+_+cols}\ \ {\it and}]"
|
||||||
|
%.lp
|
||||||
|
\item[\ib{term\verb+_+rows}]
|
||||||
|
Curses interface only.
|
||||||
|
Number of columns and rows to use for the display.
|
||||||
|
Curses will attempt to resize to the values specified but will settle
|
||||||
|
for smaller sizes if they are too big.
|
||||||
|
Default is the current window size.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{tiled\verb+_+map}]
|
\item[\ib{tiled\verb+_+map}]
|
||||||
If {\it NetHack\/} can, it should display a tiled map if it can.
|
If {\it NetHack\/} can, it should display a tiled map if it can.
|
||||||
@@ -4090,6 +4087,28 @@ If {\it NetHack\/} can, it should display inverse when the game specifies it.
|
|||||||
If {\it NetHack\/} can, it should display this number of messages at a time
|
If {\it NetHack\/} can, it should display this number of messages at a time
|
||||||
in the message window.
|
in the message window.
|
||||||
%.lp
|
%.lp
|
||||||
|
\item[\ib{windowborders}]
|
||||||
|
Whether to draw boxes around the map, status area, message area, and
|
||||||
|
persistent inventory window if enabled.
|
||||||
|
Curses interface only.
|
||||||
|
Acceptable values are
|
||||||
|
|
||||||
|
%.sd
|
||||||
|
%.si
|
||||||
|
{\tt 0} --- off, never show borders\\
|
||||||
|
{\tt 1} --- on, always show borders\\
|
||||||
|
{\tt 2} --- auto, on display is at least
|
||||||
|
(\verb&24+2&)x(\verb&80+2&)\ \ (default)\\
|
||||||
|
%.ei
|
||||||
|
%.ed
|
||||||
|
|
||||||
|
%.lp "
|
||||||
|
(The 26x82 size threshold for `2' refers to number of rows and
|
||||||
|
columns of the display.
|
||||||
|
A width of at least 110 columns (\verb&80+2+26+2&) is needed for
|
||||||
|
{\it align_status\/}
|
||||||
|
set to {tt left} or {\tt right}.)
|
||||||
|
%.lp
|
||||||
\item[\ib{windowcolors}]
|
\item[\ib{windowcolors}]
|
||||||
If {\it NetHack\/} can, it should display windows with the specified
|
If {\it NetHack\/} can, it should display windows with the specified
|
||||||
foreground/background colors. Windows GUI only. The format is
|
foreground/background colors. Windows GUI only. The format is
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.276 $ $NHDT-Date: 1552697495 2019/03/16 00:51:35 $
|
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.277 $ $NHDT-Date: 1553204013 2019/03/21 21:33:33 $
|
||||||
|
|
||||||
This fixes36.2 file is here to capture information about updates in the 3.6.x
|
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,
|
lineage following the release of 3.6.1 in April 2018. Please note, however,
|
||||||
@@ -474,8 +474,8 @@ X11: rollback disabling of keystroke input for PICK_NONE menus (for scrolling)
|
|||||||
curses: catch up with tty to not put dolook/whatis autodescribe feedback into
|
curses: catch up with tty to not put dolook/whatis autodescribe feedback into
|
||||||
^P message recall (multi-digit count feedback was already handled)
|
^P message recall (multi-digit count feedback was already handled)
|
||||||
curses: if the interface code ran out of memory, it would crash rather than
|
curses: if the interface code ran out of memory, it would crash rather than
|
||||||
attempt a controlled panic (which is fairly likely crash anyway if
|
attempt a controlled panic (though that's fairly likely to crash anyway
|
||||||
done when there's no memory available)
|
if done when there's no more memory available)
|
||||||
curses: when getting multi-character responses from player, support <delete>
|
curses: when getting multi-character responses from player, support <delete>
|
||||||
as well as <backspace> to remove last character entered; also, return
|
as well as <backspace> to remove last character entered; also, return
|
||||||
<escape> to core if ESC is typed when there is no input entered
|
<escape> to core if ESC is typed when there is no input entered
|
||||||
@@ -483,7 +483,14 @@ curses: extend preceding <delete> support to typing of extended command names
|
|||||||
curses: support hilite_pet and hilite_pile even when color is disabled
|
curses: support hilite_pet and hilite_pile even when color is disabled
|
||||||
curses: support color hilite_status rules even if 'guicolor' is off
|
curses: support color hilite_status rules even if 'guicolor' is off
|
||||||
curses: update status if 'O' is used to add/change/remove hilite_status rules
|
curses: update status if 'O' is used to add/change/remove hilite_status rules
|
||||||
|
curses: was doing a full status update for every changed field even when more
|
||||||
|
than one field was being changed at the same time
|
||||||
|
curses: 'hitpointbar' now works even when status highlighting is disabled
|
||||||
|
curses: add 'statuslines' option (value is 2 or 3)
|
||||||
|
curses: change 'windowborders' option's value (0=Off, 1=On, or 2=Auto instead
|
||||||
|
of 1=On, 2=Off, 3=Auto; can now be changed via 'O' during play)
|
||||||
vms: add compile of isaac64.c to Makefile.src and vmsbuild.com
|
vms: add compile of isaac64.c to Makefile.src and vmsbuild.com
|
||||||
|
vms+curses: add compile support but it is known to fail to build
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes or Features
|
Platform- and/or Interface-Specific Fixes or Features
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 flag.h $NHDT-Date: 1514071158 2017/12/23 23:19:18 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.132 $ */
|
/* NetHack 3.6 flag.h $NHDT-Date: 1553204011 2019/03/21 21:33:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.148 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Michael Allison, 2006. */
|
/*-Copyright (c) Michael Allison, 2006. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -367,7 +367,6 @@ struct instance_flags {
|
|||||||
boolean wizweight; /* display weight of everything in wizard mode */
|
boolean wizweight; /* display weight of everything in wizard mode */
|
||||||
boolean cmdassist; /* provide detailed assistance for some commands */
|
boolean cmdassist; /* provide detailed assistance for some commands */
|
||||||
boolean clicklook; /* allow right-clicking for look */
|
boolean clicklook; /* allow right-clicking for look */
|
||||||
int statuslines; /* default = 2, code support for alternative 3 */
|
|
||||||
/*
|
/*
|
||||||
* Window capability support.
|
* Window capability support.
|
||||||
*/
|
*/
|
||||||
@@ -387,10 +386,8 @@ struct instance_flags {
|
|||||||
char *wc_backgrnd_menu; /* points to backgrnd color name for menu win */
|
char *wc_backgrnd_menu; /* points to backgrnd color name for menu win */
|
||||||
char *wc_foregrnd_message; /* points to foregrnd color name for msg win */
|
char *wc_foregrnd_message; /* points to foregrnd color name for msg win */
|
||||||
char *wc_backgrnd_message; /* points to backgrnd color name for msg win */
|
char *wc_backgrnd_message; /* points to backgrnd color name for msg win */
|
||||||
char *
|
char *wc_foregrnd_status; /* points to foregrnd color name for status */
|
||||||
wc_foregrnd_status; /* points to foregrnd color name for status win */
|
char *wc_backgrnd_status; /* points to backgrnd color name for status */
|
||||||
char *
|
|
||||||
wc_backgrnd_status; /* points to backgrnd color name for status win */
|
|
||||||
char *wc_foregrnd_text; /* points to foregrnd color name for text win */
|
char *wc_foregrnd_text; /* points to foregrnd color name for text win */
|
||||||
char *wc_backgrnd_text; /* points to backgrnd color name for text win */
|
char *wc_backgrnd_text; /* points to backgrnd color name for text win */
|
||||||
char *wc_font_map; /* points to font name for the map win */
|
char *wc_font_map; /* points to font name for the map win */
|
||||||
@@ -418,13 +415,13 @@ struct instance_flags {
|
|||||||
boolean wc2_selectsaved; /* display a menu of user's saved games */
|
boolean wc2_selectsaved; /* display a menu of user's saved games */
|
||||||
boolean wc2_darkgray; /* try to use dark-gray color for black glyphs */
|
boolean wc2_darkgray; /* try to use dark-gray color for black glyphs */
|
||||||
boolean wc2_hitpointbar; /* show graphical bar representing hit points */
|
boolean wc2_hitpointbar; /* show graphical bar representing hit points */
|
||||||
|
boolean wc2_guicolor; /* allow colours in gui (outside map) */
|
||||||
int wc_mouse_support; /* allow mouse support */
|
int wc_mouse_support; /* allow mouse support */
|
||||||
int wc2_term_cols; /* terminal width, in characters */
|
int wc2_term_cols; /* terminal width, in characters */
|
||||||
int wc2_term_rows; /* terminal height, in characters */
|
int wc2_term_rows; /* terminal height, in characters */
|
||||||
|
int wc2_statuslines; /* default = 2, curses can handle 3 */
|
||||||
int wc2_windowborders; /* display borders on NetHack windows */
|
int wc2_windowborders; /* display borders on NetHack windows */
|
||||||
int wc2_petattr; /* text attributes for pet */
|
int wc2_petattr; /* text attributes for pet */
|
||||||
boolean wc2_guicolor; /* allow colours in gui (outside map) */
|
|
||||||
boolean obsolete; /* obsolete options can point at this, it isn't used */
|
|
||||||
struct autopickup_exception *autopickup_exceptions[2];
|
struct autopickup_exception *autopickup_exceptions[2];
|
||||||
#define AP_LEAVE 0
|
#define AP_LEAVE 0
|
||||||
#define AP_GRAB 1
|
#define AP_GRAB 1
|
||||||
@@ -448,6 +445,7 @@ struct instance_flags {
|
|||||||
boolean windowtype_deferred; /* pick a windowport and store it in
|
boolean windowtype_deferred; /* pick a windowport and store it in
|
||||||
chosen_windowport[], but do not switch to
|
chosen_windowport[], but do not switch to
|
||||||
it in the midst of options processing */
|
it in the midst of options processing */
|
||||||
|
boolean obsolete; /* obsolete options can point at this, it isn't used */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 winprocs.h $NHDT-Date: 1549327479 2019/02/05 00:44:39 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.46 $ */
|
/* NetHack 3.6 winprocs.h $NHDT-Date: 1553204011 2019/03/21 21:33:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.47 $ */
|
||||||
/* Copyright (c) David Cohrs, 1992 */
|
/* Copyright (c) David Cohrs, 1992 */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -217,16 +217,17 @@ extern
|
|||||||
#define WC2_RESET_STATUS 0x0100L /* 09 call status_update(BL_RESET) to
|
#define WC2_RESET_STATUS 0x0100L /* 09 call status_update(BL_RESET) to
|
||||||
* indicate 'draw everything' */
|
* indicate 'draw everything' */
|
||||||
#define WC2_TERM_SIZE 0x0200L /* 10 support setting terminal size */
|
#define WC2_TERM_SIZE 0x0200L /* 10 support setting terminal size */
|
||||||
#define WC2_WINDOWBORDERS 0x0400L /* 11 display borders on nh windows */
|
#define WC2_STATUSLINES 0x0400L /* 16 switch between 2 or 3 lines of status */
|
||||||
#define WC2_PETATTR 0x0800L /* 12 attributes for hilite_pet */
|
#define WC2_WINDOWBORDERS 0x0800L /* 11 display borders on nh windows */
|
||||||
#define WC2_GUICOLOR 0x1000L /* 13 display colours outside map win */
|
#define WC2_PETATTR 0x1000L /* 12 attributes for hilite_pet */
|
||||||
|
#define WC2_GUICOLOR 0x2000L /* 13 display colours outside map win */
|
||||||
/* pline() can overload the display attributes argument passed to putstr()
|
/* pline() can overload the display attributes argument passed to putstr()
|
||||||
with one or more flags and at most one of bold/blink/inverse/&c */
|
with one or more flags and at most one of bold/blink/inverse/&c */
|
||||||
#define WC2_URGENT_MESG 0x2000L /* 14 putstr(WIN_MESSAGE) supports urgency
|
#define WC2_URGENT_MESG 0x4000L /* 14 putstr(WIN_MESSAGE) supports urgency
|
||||||
* via non-display attribute flag */
|
* via non-display attribute flag */
|
||||||
#define WC2_SUPPRESS_HIST 0x4000L /* 15 putstr(WIN_MESSAGE) supports history
|
#define WC2_SUPPRESS_HIST 0x8000L /* 15 putstr(WIN_MESSAGE) supports history
|
||||||
* suppression via non-disp attr */
|
* suppression via non-disp attr */
|
||||||
/* 17 free bits */
|
/* 16 free bits */
|
||||||
|
|
||||||
#define ALIGN_LEFT 1
|
#define ALIGN_LEFT 1
|
||||||
#define ALIGN_RIGHT 2
|
#define ALIGN_RIGHT 2
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* 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 $ */
|
/* NetHack 3.6 options.c $NHDT-Date: 1553204012 2019/03/21 21:33:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.358 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Michael Allison, 2008. */
|
/*-Copyright (c) Michael Allison, 2008. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -394,10 +394,10 @@ static struct Comp_Opt {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef CURSES_GRAPHICS
|
#ifdef CURSES_GRAPHICS
|
||||||
{ "statuslines",
|
{ "statuslines",
|
||||||
"0,1,2 = classic behavior, 3 = alternative behavior",
|
"2 or 3 lines for horizonal (bottom or top) status display",
|
||||||
20, DISP_IN_GAME },
|
20, SET_IN_GAME }, /*WC2*/
|
||||||
#else
|
#else
|
||||||
{ "statuslines", "# of status lines", 20, SET_IN_FILE },
|
{ "statuslines", "2 or 3 lines for status display", 20, SET_IN_FILE },
|
||||||
#endif
|
#endif
|
||||||
{ "symset", "load a set of display symbols from the symbols file", 70,
|
{ "symset", "load a set of display symbols from the symbols file", 70,
|
||||||
SET_IN_GAME },
|
SET_IN_GAME },
|
||||||
@@ -433,7 +433,7 @@ static struct Comp_Opt {
|
|||||||
{ "whatis_filter",
|
{ "whatis_filter",
|
||||||
"filter coordinate locations when targeting next or previous",
|
"filter coordinate locations when targeting next or previous",
|
||||||
1, SET_IN_GAME },
|
1, SET_IN_GAME },
|
||||||
{ "windowborders", "1 (on), 2 (off), 3 (auto)", 9, DISP_IN_GAME }, /*WC2*/
|
{ "windowborders", "0 (off), 1 (on), 2 (auto)", 9, SET_IN_GAME }, /*WC2*/
|
||||||
{ "windowcolors", "the foreground/background colors of windows", /*WC*/
|
{ "windowcolors", "the foreground/background colors of windows", /*WC*/
|
||||||
80, DISP_IN_GAME },
|
80, DISP_IN_GAME },
|
||||||
{ "windowtype", "windowing system to use", WINTYPELEN, DISP_IN_GAME },
|
{ "windowtype", "windowing system to use", WINTYPELEN, DISP_IN_GAME },
|
||||||
@@ -809,6 +809,12 @@ initoptions_init()
|
|||||||
#endif /* MAC_GRAPHICS_ENV */
|
#endif /* MAC_GRAPHICS_ENV */
|
||||||
flags.menu_style = MENU_FULL;
|
flags.menu_style = MENU_FULL;
|
||||||
|
|
||||||
|
iflags.wc_align_message = ALIGN_TOP;
|
||||||
|
iflags.wc_align_status = ALIGN_BOTTOM;
|
||||||
|
/* these are currently only used by curses */
|
||||||
|
iflags.wc2_statuslines = 2;
|
||||||
|
iflags.wc2_windowborders = 2; /* 'Auto' */
|
||||||
|
|
||||||
/* since this is done before init_objects(), do partial init here */
|
/* since this is done before init_objects(), do partial init here */
|
||||||
objects[SLIME_MOLD].oc_name_idx = SLIME_MOLD;
|
objects[SLIME_MOLD].oc_name_idx = SLIME_MOLD;
|
||||||
nmcpy(g.pl_fruit, OBJ_NAME(objects[SLIME_MOLD]), PL_FSIZ);
|
nmcpy(g.pl_fruit, OBJ_NAME(objects[SLIME_MOLD]), PL_FSIZ);
|
||||||
@@ -1360,7 +1366,8 @@ static const struct {
|
|||||||
{ "inverse", ATR_INVERSE },
|
{ "inverse", ATR_INVERSE },
|
||||||
{ NULL, ATR_NONE }, /* everything after this is an alias */
|
{ NULL, ATR_NONE }, /* everything after this is an alias */
|
||||||
{ "normal", ATR_NONE },
|
{ "normal", ATR_NONE },
|
||||||
{ "uline", ATR_ULINE }
|
{ "uline", ATR_ULINE },
|
||||||
|
{ "reverse", ATR_INVERSE },
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@@ -3666,14 +3673,15 @@ boolean tinitial, tfrom_file;
|
|||||||
int itmp;
|
int itmp;
|
||||||
|
|
||||||
if (negated)
|
if (negated)
|
||||||
itmp = 2; /* Off */
|
itmp = 0; /* Off */
|
||||||
else if (!op)
|
else if (!op)
|
||||||
itmp = 1; /* On */
|
itmp = 1; /* On */
|
||||||
else /* Value supplied; expect 1 (on), 2 (off), or 3 (auto) */
|
else /* Value supplied; expect 0 (off), 1 (on), or 2 (auto) */
|
||||||
itmp = atoi(op);
|
itmp = atoi(op);
|
||||||
|
|
||||||
if (itmp < 1 || itmp > 3) {
|
if (itmp < 0 || itmp > 2) {
|
||||||
config_error_add("Invalid %s: %s.", fullname, opts);
|
config_error_add("Invalid %s (should be 0, 1, or 2): %s",
|
||||||
|
fullname, opts);
|
||||||
retval = FALSE;
|
retval = FALSE;
|
||||||
} else {
|
} else {
|
||||||
iflags.wc2_windowborders = itmp;
|
iflags.wc2_windowborders = itmp;
|
||||||
@@ -3681,6 +3689,31 @@ boolean tinitial, tfrom_file;
|
|||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* WINCAP2
|
||||||
|
* statuslines:n */
|
||||||
|
fullname = "statuslines";
|
||||||
|
if (match_optname(opts, fullname, 11, TRUE)) {
|
||||||
|
int itmp = 0;
|
||||||
|
|
||||||
|
op = string_for_opt(opts, negated);
|
||||||
|
if (negated) {
|
||||||
|
bad_negation(fullname, TRUE);
|
||||||
|
itmp = 2;
|
||||||
|
retval = FALSE;
|
||||||
|
} else if (op) {
|
||||||
|
itmp = atoi(op);
|
||||||
|
}
|
||||||
|
if (itmp < 2 || itmp > 3) {
|
||||||
|
config_error_add("'%s' requires a value of 2 and 3", fullname);
|
||||||
|
retval = FALSE;
|
||||||
|
} else {
|
||||||
|
iflags.wc2_statuslines = itmp;
|
||||||
|
if (!initial)
|
||||||
|
need_redraw = TRUE;
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
#endif /* CURSES_GRAPHICS */
|
#endif /* CURSES_GRAPHICS */
|
||||||
|
|
||||||
/* menustyle:traditional or combination or full or partial */
|
/* menustyle:traditional or combination or full or partial */
|
||||||
@@ -5410,29 +5443,17 @@ char *buf;
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
if (!strcmp(optname, "align_message"))
|
if (!strcmp(optname, "align_message")
|
||||||
|
|| !strcmp(optname, "align_status")) {
|
||||||
|
int which = !strcmp(optname, "align_status") ? iflags.wc_align_status
|
||||||
|
: iflags.wc_align_message;
|
||||||
Sprintf(buf, "%s",
|
Sprintf(buf, "%s",
|
||||||
iflags.wc_align_message == ALIGN_TOP
|
(which == ALIGN_TOP) ? "top"
|
||||||
? "top"
|
: (which == ALIGN_LEFT) ? "left"
|
||||||
: iflags.wc_align_message == ALIGN_LEFT
|
: (which == ALIGN_BOTTOM) ? "bottom"
|
||||||
? "left"
|
: (which == ALIGN_RIGHT) ? "right"
|
||||||
: iflags.wc_align_message == ALIGN_BOTTOM
|
: defopt);
|
||||||
? "bottom"
|
} else if (!strcmp(optname, "align"))
|
||||||
: iflags.wc_align_message == ALIGN_RIGHT
|
|
||||||
? "right"
|
|
||||||
: defopt);
|
|
||||||
else if (!strcmp(optname, "align_status"))
|
|
||||||
Sprintf(buf, "%s",
|
|
||||||
iflags.wc_align_status == ALIGN_TOP
|
|
||||||
? "top"
|
|
||||||
: iflags.wc_align_status == ALIGN_LEFT
|
|
||||||
? "left"
|
|
||||||
: iflags.wc_align_status == ALIGN_BOTTOM
|
|
||||||
? "bottom"
|
|
||||||
: iflags.wc_align_status == ALIGN_RIGHT
|
|
||||||
? "right"
|
|
||||||
: defopt);
|
|
||||||
else if (!strcmp(optname, "align"))
|
|
||||||
Sprintf(buf, "%s", rolestring(flags.initalign, aligns, adj));
|
Sprintf(buf, "%s", rolestring(flags.initalign, aligns, adj));
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
else if (!strcmp(optname, "altkeyhandler"))
|
else if (!strcmp(optname, "altkeyhandler"))
|
||||||
@@ -5693,6 +5714,9 @@ char *buf;
|
|||||||
Sprintf(buf, "%ld (on: highlight status for %ld turns)",
|
Sprintf(buf, "%ld (on: highlight status for %ld turns)",
|
||||||
iflags.hilite_delta, iflags.hilite_delta);
|
iflags.hilite_delta, iflags.hilite_delta);
|
||||||
#endif
|
#endif
|
||||||
|
} else if (!strcmp(optname,"statuslines")) {
|
||||||
|
Strcpy(buf, (WINDOWPORT("curses")
|
||||||
|
&& iflags.wc2_statuslines < 3) ? "2" : "3");
|
||||||
} else if (!strcmp(optname, "suppress_alert")) {
|
} else if (!strcmp(optname, "suppress_alert")) {
|
||||||
if (flags.suppress_alert == 0L)
|
if (flags.suppress_alert == 0L)
|
||||||
Strcpy(buf, none);
|
Strcpy(buf, none);
|
||||||
@@ -5750,14 +5774,12 @@ char *buf;
|
|||||||
ttycolors[CLR_YELLOW], ttycolors[CLR_BRIGHT_BLUE],
|
ttycolors[CLR_YELLOW], ttycolors[CLR_BRIGHT_BLUE],
|
||||||
ttycolors[CLR_BRIGHT_MAGENTA], ttycolors[CLR_BRIGHT_CYAN]);
|
ttycolors[CLR_BRIGHT_MAGENTA], ttycolors[CLR_BRIGHT_CYAN]);
|
||||||
#endif /* VIDEOSHADES */
|
#endif /* VIDEOSHADES */
|
||||||
#ifdef CURSES_GRAPHICS
|
|
||||||
} else if (!strcmp(optname,"windowborders")) {
|
} else if (!strcmp(optname,"windowborders")) {
|
||||||
Sprintf(buf, "%s",
|
Sprintf(buf, "%s",
|
||||||
(iflags.wc2_windowborders == 1) ? "1=on"
|
(iflags.wc2_windowborders == 0) ? "0=off"
|
||||||
: (iflags.wc2_windowborders == 2) ? "2=off"
|
: (iflags.wc2_windowborders == 1) ? "1=on"
|
||||||
: (iflags.wc2_windowborders == 3) ? "3=auto"
|
: (iflags.wc2_windowborders == 2) ? "2=auto"
|
||||||
: defopt);
|
: defopt);
|
||||||
#endif
|
|
||||||
} else if (!strcmp(optname, "windowtype")) {
|
} else if (!strcmp(optname, "windowtype")) {
|
||||||
Sprintf(buf, "%s", windowprocs.name);
|
Sprintf(buf, "%s", windowprocs.name);
|
||||||
} else if (!strcmp(optname, "windowcolors")) {
|
} else if (!strcmp(optname, "windowcolors")) {
|
||||||
@@ -6465,6 +6487,7 @@ static struct wc_Opt wc2_options[] = {
|
|||||||
{ "term_rows", WC2_TERM_SIZE },
|
{ "term_rows", WC2_TERM_SIZE },
|
||||||
{ "petattr", WC2_PETATTR },
|
{ "petattr", WC2_PETATTR },
|
||||||
{ "guicolor", WC2_GUICOLOR },
|
{ "guicolor", WC2_GUICOLOR },
|
||||||
|
{ "statuslines", WC2_STATUSLINES },
|
||||||
{ "windowborders", WC2_WINDOWBORDERS },
|
{ "windowborders", WC2_WINDOWBORDERS },
|
||||||
{ (char *) 0, 0L }
|
{ (char *) 0, 0L }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -119,16 +119,14 @@ curses_create_main_windows()
|
|||||||
boolean borders = FALSE;
|
boolean borders = FALSE;
|
||||||
|
|
||||||
switch (iflags.wc2_windowborders) {
|
switch (iflags.wc2_windowborders) {
|
||||||
|
case 0: /* Off */
|
||||||
|
borders = FALSE;
|
||||||
|
break;
|
||||||
case 1: /* On */
|
case 1: /* On */
|
||||||
borders = TRUE;
|
borders = TRUE;
|
||||||
break;
|
break;
|
||||||
case 2: /* Off */
|
case 2: /* Auto */
|
||||||
borders = FALSE;
|
borders = (term_cols > 81 && term_rows > 25);
|
||||||
break;
|
|
||||||
case 3: /* Auto */
|
|
||||||
if ((term_cols > 81) && (term_rows > 25)) {
|
|
||||||
borders = TRUE;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
borders = FALSE;
|
borders = FALSE;
|
||||||
@@ -208,7 +206,7 @@ curses_create_main_windows()
|
|||||||
int inv_width = 0;
|
int inv_width = 0;
|
||||||
int map_height = (term_rows - border_space);
|
int map_height = (term_rows - border_space);
|
||||||
int map_width = (term_cols - border_space);
|
int map_width = (term_cols - border_space);
|
||||||
int statusheight = (iflags.statuslines < 3) ? 2 : 3;
|
int statusheight = (iflags.wc2_statuslines < 3) ? 2 : 3;
|
||||||
boolean status_vertical = (status_orientation == ALIGN_LEFT
|
boolean status_vertical = (status_orientation == ALIGN_LEFT
|
||||||
|| status_orientation == ALIGN_RIGHT);
|
|| status_orientation == ALIGN_RIGHT);
|
||||||
boolean msg_vertical = (message_orientation == ALIGN_LEFT
|
boolean msg_vertical = (message_orientation == ALIGN_LEFT
|
||||||
@@ -221,7 +219,7 @@ curses_create_main_windows()
|
|||||||
&status_width, &status_height,
|
&status_width, &status_height,
|
||||||
status_orientation,
|
status_orientation,
|
||||||
&map_x, &map_y, &map_width, &map_height,
|
&map_x, &map_y, &map_width, &map_height,
|
||||||
border_space, statusheight, 26);
|
border_space, 20, 26);
|
||||||
|
|
||||||
if (iflags.perm_invent) {
|
if (iflags.perm_invent) {
|
||||||
/* Take up all width unless msgbar is also vertical. */
|
/* Take up all width unless msgbar is also vertical. */
|
||||||
@@ -246,7 +244,7 @@ curses_create_main_windows()
|
|||||||
&status_width, &status_height,
|
&status_width, &status_height,
|
||||||
status_orientation,
|
status_orientation,
|
||||||
&map_x, &map_y, &map_width, &map_height,
|
&map_x, &map_y, &map_width, &map_height,
|
||||||
border_space, statusheight, 26);
|
border_space, statusheight, 0);
|
||||||
|
|
||||||
if (!msg_vertical)
|
if (!msg_vertical)
|
||||||
set_window_position(&message_x, &message_y,
|
set_window_position(&message_x, &message_y,
|
||||||
@@ -777,18 +775,13 @@ curses_character_dialog(const char **choices, const char *prompt)
|
|||||||
void
|
void
|
||||||
curses_init_options()
|
curses_init_options()
|
||||||
{
|
{
|
||||||
set_wc_option_mod_status(WC_ALIGN_MESSAGE | WC_ALIGN_STATUS | WC_COLOR
|
/* change these from DISP_IN_GAME to SET_IN_GAME */
|
||||||
| WC_HILITE_PET | WC_POPUP_DIALOG, SET_IN_GAME);
|
set_wc_option_mod_status(WC_ALIGN_MESSAGE | WC_ALIGN_STATUS, SET_IN_GAME);
|
||||||
|
|
||||||
set_wc2_option_mod_status(WC2_GUICOLOR, SET_IN_GAME);
|
|
||||||
|
|
||||||
/* Remove a few options that are irrelevant to this windowport */
|
/* Remove a few options that are irrelevant to this windowport */
|
||||||
/*set_option_mod_status("DECgraphics", SET_IN_FILE); */
|
/*set_option_mod_status("DECgraphics", SET_IN_FILE); */
|
||||||
set_option_mod_status("eight_bit_tty", SET_IN_FILE);
|
set_option_mod_status("eight_bit_tty", SET_IN_FILE);
|
||||||
|
|
||||||
/* Add those that are */
|
|
||||||
set_option_mod_status("statuslines", SET_IN_GAME);
|
|
||||||
|
|
||||||
/* Make sure that DECgraphics is not set to true via the config
|
/* Make sure that DECgraphics is not set to true via the config
|
||||||
file, as this will cause display issues. We can't disable it in
|
file, as this will cause display issues. We can't disable it in
|
||||||
options.c in case the game is compiled with both tty and curses. */
|
options.c in case the game is compiled with both tty and curses. */
|
||||||
@@ -800,15 +793,12 @@ curses_init_options()
|
|||||||
#ifdef PDCURSES
|
#ifdef PDCURSES
|
||||||
/* PDCurses for SDL, win32 and OS/2 has the ability to set the
|
/* PDCurses for SDL, win32 and OS/2 has the ability to set the
|
||||||
terminal size programatically. If the user does not specify a
|
terminal size programatically. If the user does not specify a
|
||||||
size in the config file, we will set it to a nice big 110x32 to
|
size in the config file, we will set it to a nice big 32x110 to
|
||||||
take advantage of some of the nice features of this windowport. */
|
take advantage of some of the nice features of this windowport. */
|
||||||
if (iflags.wc2_term_cols == 0) {
|
if (iflags.wc2_term_cols == 0)
|
||||||
iflags.wc2_term_cols = 110;
|
iflags.wc2_term_cols = 110;
|
||||||
}
|
if (iflags.wc2_term_rows == 0)
|
||||||
|
|
||||||
if (iflags.wc2_term_rows == 0) {
|
|
||||||
iflags.wc2_term_rows = 32;
|
iflags.wc2_term_rows = 32;
|
||||||
}
|
|
||||||
|
|
||||||
resize_term(iflags.wc2_term_rows, iflags.wc2_term_cols);
|
resize_term(iflags.wc2_term_rows, iflags.wc2_term_cols);
|
||||||
getmaxyx(base_term, term_rows, term_cols);
|
getmaxyx(base_term, term_rows, term_cols);
|
||||||
@@ -825,9 +815,6 @@ curses_init_options()
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
#endif /* PDCURSES */
|
#endif /* PDCURSES */
|
||||||
if (!iflags.wc2_windowborders) {
|
|
||||||
iflags.wc2_windowborders = 3; /* Set to auto if not specified */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* fix up pet highlighting */
|
/* fix up pet highlighting */
|
||||||
if (iflags.wc2_petattr == -1) /* shouldn't happen */
|
if (iflags.wc2_petattr == -1) /* shouldn't happen */
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ struct window_procs curses_procs = {
|
|||||||
#if defined(STATUS_HILITES)
|
#if defined(STATUS_HILITES)
|
||||||
| WC2_HILITE_STATUS
|
| WC2_HILITE_STATUS
|
||||||
#endif
|
#endif
|
||||||
| WC2_HITPOINTBAR | WC2_FLUSH_STATUS
|
| WC2_HITPOINTBAR | WC2_FLUSH_STATUS | WC2_TERM_SIZE
|
||||||
| WC2_TERM_SIZE | WC2_WINDOWBORDERS | WC2_PETATTR | WC2_GUICOLOR
|
| WC2_STATUSLINES | WC2_WINDOWBORDERS | WC2_PETATTR | WC2_GUICOLOR
|
||||||
| WC2_SUPPRESS_HIST),
|
| WC2_SUPPRESS_HIST),
|
||||||
curses_init_nhwindows,
|
curses_init_nhwindows,
|
||||||
curses_player_selection,
|
curses_player_selection,
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ curses_message_win_getline(const char *prompt, char *answer, int buffer)
|
|||||||
|
|
||||||
curses_get_window_size(MESSAGE_WIN, &height, &width);
|
curses_get_window_size(MESSAGE_WIN, &height, &width);
|
||||||
if (border) {
|
if (border) {
|
||||||
|
height -= 2, width -= 2;
|
||||||
border_space = 1;
|
border_space = 1;
|
||||||
if (mx < 1)
|
if (mx < 1)
|
||||||
mx = 1;
|
mx = 1;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
/* Copyright (c) Andy Thomson, 2018. */
|
/* Copyright (c) Andy Thomson, 2018. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
#include <ctype.h> /* toupper() */
|
|
||||||
#include "curses.h"
|
#include "curses.h"
|
||||||
#include "hack.h"
|
#include "hack.h"
|
||||||
#include "wincurs.h"
|
#include "wincurs.h"
|
||||||
@@ -28,9 +27,11 @@ static char *status_vals_long[MAXBLSTATS];
|
|||||||
#ifdef STATUS_HILITES
|
#ifdef STATUS_HILITES
|
||||||
static long curses_condition_bits;
|
static long curses_condition_bits;
|
||||||
static int curses_status_colors[MAXBLSTATS];
|
static int curses_status_colors[MAXBLSTATS];
|
||||||
int hpbar_percent, hpbar_color;
|
static int hpbar_percent, hpbar_color;
|
||||||
|
|
||||||
|
#ifdef TEXTCOLOR
|
||||||
static int FDECL(condcolor, (long, unsigned long *));
|
static int FDECL(condcolor, (long, unsigned long *));
|
||||||
|
#endif
|
||||||
static int FDECL(condattr, (long, unsigned long *));
|
static int FDECL(condattr, (long, unsigned long *));
|
||||||
#endif /* STATUS_HILITES */
|
#endif /* STATUS_HILITES */
|
||||||
static void FDECL(draw_status, (unsigned long *));
|
static void FDECL(draw_status, (unsigned long *));
|
||||||
@@ -45,8 +46,8 @@ curses_status_init()
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < MAXBLSTATS; ++i) {
|
for (i = 0; i < MAXBLSTATS; ++i) {
|
||||||
curses_status_colors[i] = NO_COLOR; /* no color */
|
curses_status_colors[i] = NO_COLOR; /* no color and no attributes */
|
||||||
status_vals_long[i] = (char *) alloc(MAXCO);
|
status_vals_long[i] = (char *) alloc(MAXCO);
|
||||||
*status_vals_long[i] = '\0';
|
*status_vals_long[i] = '\0';
|
||||||
}
|
}
|
||||||
curses_condition_bits = 0L;
|
curses_condition_bits = 0L;
|
||||||
@@ -189,18 +190,19 @@ curses_status_finish()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
curses_status_update(fldidx, ptr, chg, percent, color, colormasks)
|
curses_status_update(fldidx, ptr, chg, percent, color_and_attr, colormasks)
|
||||||
int fldidx, chg UNUSED, percent, color;
|
int fldidx, chg UNUSED,
|
||||||
|
percent, color_and_attr;
|
||||||
genericptr_t ptr;
|
genericptr_t ptr;
|
||||||
unsigned long *colormasks;
|
unsigned long *colormasks;
|
||||||
{
|
{
|
||||||
long *condptr = (long *) ptr;
|
long *condptr = (long *) ptr;
|
||||||
char *text = (char *) ptr;
|
char *text = (char *) ptr;
|
||||||
char *goldnum = NULL;
|
char *goldnum = NULL;
|
||||||
static boolean oncearound = FALSE; /* prevent premature partial display */
|
|
||||||
boolean use_name = TRUE;
|
boolean use_name = TRUE;
|
||||||
|
|
||||||
if (fldidx != BL_FLUSH) {
|
if (fldidx != BL_FLUSH) {
|
||||||
|
*status_vals[fldidx] = '\0';
|
||||||
if (!status_activefields[fldidx])
|
if (!status_activefields[fldidx])
|
||||||
return;
|
return;
|
||||||
if (fldidx == BL_GOLD)
|
if (fldidx == BL_GOLD)
|
||||||
@@ -208,7 +210,6 @@ unsigned long *colormasks;
|
|||||||
switch (fldidx) {
|
switch (fldidx) {
|
||||||
case BL_CONDITION:
|
case BL_CONDITION:
|
||||||
curses_condition_bits = *condptr;
|
curses_condition_bits = *condptr;
|
||||||
oncearound = TRUE;
|
|
||||||
break;
|
break;
|
||||||
case BL_TITLE:
|
case BL_TITLE:
|
||||||
case BL_HPMAX:
|
case BL_HPMAX:
|
||||||
@@ -219,6 +220,15 @@ unsigned long *colormasks;
|
|||||||
use_name = FALSE;
|
use_name = FALSE;
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
default:
|
default:
|
||||||
|
#ifndef TEXTCOLOR
|
||||||
|
color_and_attr = (color_and_attr & ~0x00FF) | NO_COLOR;
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
* status_vals[] are used for horizontal orientation
|
||||||
|
* (wide lines of multiple short values).
|
||||||
|
* status_vals_long[] are used for vertical orientation
|
||||||
|
* (narrow-ish lines of one long value each).
|
||||||
|
*/
|
||||||
Sprintf(status_vals[fldidx],
|
Sprintf(status_vals[fldidx],
|
||||||
(fldidx == BL_TITLE && iflags.wc2_hitpointbar) ? "%-30s" :
|
(fldidx == BL_TITLE && iflags.wc2_hitpointbar) ? "%-30s" :
|
||||||
status_fieldfmt[fldidx] ? status_fieldfmt[fldidx] : "%s",
|
status_fieldfmt[fldidx] ? status_fieldfmt[fldidx] : "%s",
|
||||||
@@ -226,51 +236,36 @@ unsigned long *colormasks;
|
|||||||
if (use_name) {
|
if (use_name) {
|
||||||
Sprintf(status_vals_long[fldidx], "%-16s: %s",
|
Sprintf(status_vals_long[fldidx], "%-16s: %s",
|
||||||
status_fieldnm[fldidx], goldnum ? goldnum : text);
|
status_fieldnm[fldidx], goldnum ? goldnum : text);
|
||||||
*(status_vals_long[fldidx]) = toupper((*status_vals_long[fldidx]));
|
*(status_vals_long[fldidx]) = highc(*status_vals_long[fldidx]);
|
||||||
} else
|
} else
|
||||||
Strcpy(status_vals_long[fldidx], status_vals[fldidx]);
|
Strcpy(status_vals_long[fldidx], status_vals[fldidx]);
|
||||||
#ifdef TEXTCOLOR
|
|
||||||
curses_status_colors[fldidx] = color;
|
curses_status_colors[fldidx] = color_and_attr;
|
||||||
#else
|
|
||||||
curses_status_colors[fldidx] = NO_COLOR;
|
|
||||||
#endif
|
|
||||||
if (iflags.wc2_hitpointbar && fldidx == BL_HP) {
|
if (iflags.wc2_hitpointbar && fldidx == BL_HP) {
|
||||||
hpbar_percent = percent;
|
hpbar_percent = percent;
|
||||||
#ifdef TEXTCOLOR
|
hpbar_color = color_and_attr;
|
||||||
hpbar_color = color;
|
|
||||||
#else
|
|
||||||
hpbar_color = NO_COLOR;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else { /* BL_FLUSH */
|
||||||
|
draw_status(colormasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!oncearound) return;
|
|
||||||
draw_status(colormasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
draw_status(colormasks)
|
draw_status(colormasks)
|
||||||
unsigned long *colormasks;
|
unsigned long *colormasks;
|
||||||
{
|
{
|
||||||
boolean horiz = FALSE;
|
|
||||||
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
||||||
int orient = curses_get_window_orientation(STATUS_WIN);
|
int orient = curses_get_window_orientation(STATUS_WIN);
|
||||||
|
boolean horiz = (orient != ALIGN_RIGHT && orient != ALIGN_LEFT);
|
||||||
boolean border = curses_window_has_border(STATUS_WIN);
|
boolean border = curses_window_has_border(STATUS_WIN);
|
||||||
|
|
||||||
if ((orient != ALIGN_RIGHT) && (orient != ALIGN_LEFT))
|
/* Figure out if we have proper window dimensions for horizontal
|
||||||
horiz = TRUE;
|
statusbar. */
|
||||||
|
|
||||||
/* Figure out if we have proper window dimensions for horizontal statusbar. */
|
|
||||||
if (horiz) {
|
if (horiz) {
|
||||||
int ax = 0;
|
int ax = 0, ay = 0;
|
||||||
int ay = 0;
|
int cy = (iflags.wc2_statuslines < 3) ? 2 : 3;
|
||||||
|
|
||||||
/* correct y */
|
|
||||||
int cy = 3;
|
|
||||||
if (iflags.statuslines < 3)
|
|
||||||
cy = 2;
|
|
||||||
|
|
||||||
/* actual y (and x) */
|
/* actual y (and x) */
|
||||||
getmaxyx(win, ay, ax);
|
getmaxyx(win, ay, ax);
|
||||||
@@ -278,16 +273,14 @@ unsigned long *colormasks;
|
|||||||
ay -= 2;
|
ay -= 2;
|
||||||
|
|
||||||
if (cy != ay) { /* something changed. Redo everything */
|
if (cy != ay) { /* something changed. Redo everything */
|
||||||
curses_create_main_windows();
|
curs_reset_windows(TRUE, TRUE);
|
||||||
curses_last_messages();
|
|
||||||
doredraw();
|
|
||||||
win = curses_get_nhwin(STATUS_WIN);
|
win = curses_get_nhwin(STATUS_WIN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
werase(win);
|
werase(win);
|
||||||
if (horiz) {
|
if (horiz) {
|
||||||
if (iflags.statuslines < 3)
|
if (iflags.wc2_statuslines < 3)
|
||||||
draw_classic(border, colormasks);
|
draw_classic(border, colormasks);
|
||||||
else
|
else
|
||||||
draw_horizontal(border, colormasks);
|
draw_horizontal(border, colormasks);
|
||||||
@@ -305,7 +298,7 @@ draw_classic(border, colormasks)
|
|||||||
boolean border;
|
boolean border;
|
||||||
unsigned long *colormasks;
|
unsigned long *colormasks;
|
||||||
{
|
{
|
||||||
enum statusfields fieldorder[2][15] = {
|
static const enum statusfields fieldorder[2][15] = {
|
||||||
{ BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
|
{ BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
|
||||||
BL_SCORE, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH,
|
BL_SCORE, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH,
|
||||||
BL_FLUSH },
|
BL_FLUSH },
|
||||||
@@ -313,33 +306,32 @@ unsigned long *colormasks;
|
|||||||
BL_AC, BL_XP, BL_EXP, BL_HD, BL_TIME, BL_HUNGER,
|
BL_AC, BL_XP, BL_EXP, BL_HD, BL_TIME, BL_HUNGER,
|
||||||
BL_CAP, BL_CONDITION, BL_FLUSH }
|
BL_CAP, BL_CONDITION, BL_FLUSH }
|
||||||
};
|
};
|
||||||
#ifdef TEXTCOLOR
|
int i, coloridx = NO_COLOR, attrmask = 0;
|
||||||
int coloridx = NO_COLOR;
|
|
||||||
#endif
|
|
||||||
int i, attrmask = 0;
|
|
||||||
char *text;
|
char *text;
|
||||||
int attridx = 0;
|
int attridx = 0;
|
||||||
|
|
||||||
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
||||||
if (border) wmove(win, 1, 1);
|
if (border)
|
||||||
else wmove(win, 0, 0);
|
wmove(win, 1, 1);
|
||||||
|
else
|
||||||
|
wmove(win, 0, 0);
|
||||||
for (i = 0; fieldorder[0][i] != BL_FLUSH; ++i) {
|
for (i = 0; fieldorder[0][i] != BL_FLUSH; ++i) {
|
||||||
int fldidx1 = fieldorder[0][i];
|
int fldidx1 = fieldorder[0][i];
|
||||||
|
|
||||||
if (status_activefields[fldidx1]) {
|
if (status_activefields[fldidx1]) {
|
||||||
if (fldidx1 != BL_TITLE || !iflags.wc2_hitpointbar) {
|
if (fldidx1 != BL_TITLE || !iflags.wc2_hitpointbar) {
|
||||||
#ifdef TEXTCOLOR
|
|
||||||
coloridx = curses_status_colors[fldidx1] & 0x00FF;
|
|
||||||
#endif
|
|
||||||
attridx = (curses_status_colors[fldidx1] & 0xFF00) >> 8;
|
|
||||||
text = status_vals[fldidx1];
|
text = status_vals[fldidx1];
|
||||||
if (iflags.hilite_delta) {
|
coloridx = curses_status_colors[fldidx1]; /* plus attributes */
|
||||||
|
if (iflags.hilite_delta && coloridx != NO_COLOR) {
|
||||||
if (*text == ' ') {
|
if (*text == ' ') {
|
||||||
putstr(STATUS_WIN, 0, " ");
|
putstr(STATUS_WIN, 0, " ");
|
||||||
text++;
|
text++;
|
||||||
}
|
}
|
||||||
/* multiple attributes can be in effect concurrently */
|
/* multiple attributes can be in effect concurrently */
|
||||||
|
attridx = (coloridx >> 8) & 0x00FF;
|
||||||
Begin_Attr(attridx);
|
Begin_Attr(attridx);
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
|
coloridx &= 0x00FF;
|
||||||
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
||||||
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
||||||
#endif
|
#endif
|
||||||
@@ -350,7 +342,7 @@ unsigned long *colormasks;
|
|||||||
if (iflags.hilite_delta) {
|
if (iflags.hilite_delta) {
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
if (coloridx != NO_COLOR)
|
if (coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win, coloridx,NONE,OFF);
|
curses_toggle_color_attr(win, coloridx, NONE, OFF);
|
||||||
#endif
|
#endif
|
||||||
End_Attr(attridx);
|
End_Attr(attridx);
|
||||||
}
|
}
|
||||||
@@ -377,54 +369,56 @@ unsigned long *colormasks;
|
|||||||
*bar2 = '\0';
|
*bar2 = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (iflags.hilite_delta && iflags.wc2_hitpointbar) {
|
|
||||||
putstr(STATUS_WIN, 0, "[");
|
putstr(STATUS_WIN, 0, "[");
|
||||||
|
/* fixed attribute, not ((hpbar_color >> 8) & 0x00FF) */
|
||||||
|
wattron(win, A_REVERSE);
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
|
if (iflags.hilite_delta) {
|
||||||
coloridx = hpbar_color & 0x00FF;
|
coloridx = hpbar_color & 0x00FF;
|
||||||
/* attridx = (hpbar_color & 0xFF00) >> 8; */
|
|
||||||
if (coloridx != NO_COLOR)
|
if (coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win,coloridx,NONE,ON);
|
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
wattron(win,A_REVERSE);
|
putstr(STATUS_WIN, 0, bar);
|
||||||
putstr(STATUS_WIN, 0, bar);
|
|
||||||
wattroff(win,A_REVERSE);
|
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
if (coloridx != NO_COLOR)
|
if (iflags.hilite_delta && coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win,coloridx,NONE,OFF);
|
curses_toggle_color_attr(win, coloridx, NONE, OFF);
|
||||||
#endif
|
#endif
|
||||||
if (twoparts) {
|
wattroff(win, A_REVERSE);
|
||||||
*bar2 = savedch;
|
if (twoparts) {
|
||||||
putstr(STATUS_WIN, 0, bar2);
|
*bar2 = savedch;
|
||||||
}
|
putstr(STATUS_WIN, 0, bar2);
|
||||||
putstr(STATUS_WIN, 0, "]");
|
}
|
||||||
} else
|
putstr(STATUS_WIN, 0, "]");
|
||||||
putstr(STATUS_WIN, 0, text);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wclrtoeol(win);
|
wclrtoeol(win);
|
||||||
if (border) wmove(win, 2, 1);
|
if (border)
|
||||||
else wmove (win, 1, 0);
|
wmove(win, 2, 1);
|
||||||
|
else
|
||||||
|
wmove (win, 1, 0);
|
||||||
for (i = 0; fieldorder[1][i] != BL_FLUSH; ++i) {
|
for (i = 0; fieldorder[1][i] != BL_FLUSH; ++i) {
|
||||||
int fldidx2 = fieldorder[1][i];
|
int fldidx2 = fieldorder[1][i];
|
||||||
|
|
||||||
if (status_activefields[fldidx2]) {
|
if (status_activefields[fldidx2]) {
|
||||||
if (fldidx2 != BL_CONDITION) {
|
if (fldidx2 != BL_CONDITION) {
|
||||||
#ifdef TEXTCOLOR
|
/* regular field, including title if no hitpointbar */
|
||||||
coloridx = curses_status_colors[fldidx2] & 0x00FF;
|
|
||||||
#endif
|
|
||||||
attridx = (curses_status_colors[fldidx2] & 0xFF00) >> 8;
|
|
||||||
text = status_vals[fldidx2];
|
text = status_vals[fldidx2];
|
||||||
if (iflags.hilite_delta) {
|
coloridx = curses_status_colors[fldidx2]; /* plus attribute */
|
||||||
|
if (iflags.hilite_delta && coloridx != NO_COLOR) {
|
||||||
if (*text == ' ') {
|
if (*text == ' ') {
|
||||||
putstr(STATUS_WIN, 0, " ");
|
putstr(STATUS_WIN, 0, " ");
|
||||||
text++;
|
text++;
|
||||||
}
|
}
|
||||||
|
attridx = (coloridx >> 8) & 0x00FF;
|
||||||
/* multiple attributes can be in effect concurrently */
|
/* multiple attributes can be in effect concurrently */
|
||||||
Begin_Attr(attridx);
|
Begin_Attr(attridx);
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
|
coloridx &= 0x00FF;
|
||||||
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
||||||
curses_toggle_color_attr(win,coloridx,NONE,ON);
|
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,11 +432,11 @@ unsigned long *colormasks;
|
|||||||
if (iflags.hilite_delta) {
|
if (iflags.hilite_delta) {
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
if (coloridx != NO_COLOR)
|
if (coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win,coloridx,NONE,OFF);
|
curses_toggle_color_attr(win, coloridx, NONE, OFF);
|
||||||
#endif
|
#endif
|
||||||
End_Attr(attridx);
|
End_Attr(attridx);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (curses_condition_bits) {
|
||||||
MaybeDisplayCond(BL_MASK_STONE, "Stone");
|
MaybeDisplayCond(BL_MASK_STONE, "Stone");
|
||||||
MaybeDisplayCond(BL_MASK_SLIME, "Slime");
|
MaybeDisplayCond(BL_MASK_SLIME, "Slime");
|
||||||
MaybeDisplayCond(BL_MASK_STRNGL, "Strngl");
|
MaybeDisplayCond(BL_MASK_STRNGL, "Strngl");
|
||||||
@@ -480,7 +474,7 @@ draw_vertical(border, colormasks)
|
|||||||
boolean border;
|
boolean border;
|
||||||
unsigned long *colormasks;
|
unsigned long *colormasks;
|
||||||
{
|
{
|
||||||
enum statusfields fieldorder[24] = {
|
static const enum statusfields fieldorder[24] = {
|
||||||
BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
|
BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
|
||||||
BL_SCORE, BL_LEVELDESC, BL_GOLD, BL_HP, BL_HPMAX, BL_ENE, BL_ENEMAX,
|
BL_SCORE, BL_LEVELDESC, BL_GOLD, BL_HP, BL_HPMAX, BL_ENE, BL_ENEMAX,
|
||||||
BL_AC, BL_XP, BL_EXP, BL_HD, BL_TIME, BL_HUNGER,
|
BL_AC, BL_XP, BL_EXP, BL_HD, BL_TIME, BL_HUNGER,
|
||||||
@@ -493,28 +487,29 @@ unsigned long *colormasks;
|
|||||||
char *text;
|
char *text;
|
||||||
int attridx = 0;
|
int attridx = 0;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
|
|
||||||
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
||||||
if (border) x++,y++;
|
|
||||||
|
if (border)
|
||||||
|
x++, y++;
|
||||||
for (i = 0; fieldorder[i] != BL_FLUSH; ++i) {
|
for (i = 0; fieldorder[i] != BL_FLUSH; ++i) {
|
||||||
int fldidx1 = fieldorder[i];
|
int fldidx1 = fieldorder[i];
|
||||||
|
|
||||||
if (status_activefields[fldidx1]) {
|
if (status_activefields[fldidx1]) {
|
||||||
if (fldidx1 != BL_TITLE || !iflags.wc2_hitpointbar) {
|
if (fldidx1 != BL_TITLE || !iflags.wc2_hitpointbar) {
|
||||||
|
|
||||||
if (fldidx1 != BL_CONDITION) {
|
if (fldidx1 != BL_CONDITION) {
|
||||||
#ifdef TEXTCOLOR
|
|
||||||
coloridx = curses_status_colors[fldidx1] & 0x00FF;
|
|
||||||
#endif
|
|
||||||
attridx = (curses_status_colors[fldidx1] & 0xFF00) >> 8;
|
|
||||||
text = status_vals_long[fldidx1];
|
text = status_vals_long[fldidx1];
|
||||||
if (iflags.hilite_delta) {
|
coloridx = curses_status_colors[fldidx1]; /* plus attr */
|
||||||
|
if (iflags.hilite_delta && coloridx != NO_COLOR) {
|
||||||
if (*text == ' ') {
|
if (*text == ' ') {
|
||||||
putstr(STATUS_WIN, 0, " ");
|
putstr(STATUS_WIN, 0, " ");
|
||||||
text++;
|
text++;
|
||||||
}
|
}
|
||||||
/* multiple attributes can be in effect concurrently */
|
/* multiple attributes can be in effect concurrently */
|
||||||
|
attridx = (coloridx >> 8) & 0x00FF;
|
||||||
Begin_Attr(attridx);
|
Begin_Attr(attridx);
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
|
coloridx &= 0x00FF;
|
||||||
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
||||||
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
||||||
#endif
|
#endif
|
||||||
@@ -523,20 +518,21 @@ unsigned long *colormasks;
|
|||||||
if (fldidx1 != BL_HPMAX
|
if (fldidx1 != BL_HPMAX
|
||||||
&& fldidx1 != BL_ENEMAX
|
&& fldidx1 != BL_ENEMAX
|
||||||
&& fldidx1 != BL_EXP)
|
&& fldidx1 != BL_EXP)
|
||||||
wmove(win, y++, x); /* everything on a new line except the above */
|
wmove(win, y++, x); /* on next line unless the above */
|
||||||
|
|
||||||
putstr(STATUS_WIN, 0, text);
|
putstr(STATUS_WIN, 0, text);
|
||||||
|
|
||||||
if (fldidx1 == BL_TITLE) y++;
|
if (fldidx1 == BL_TITLE)
|
||||||
|
y++;
|
||||||
|
|
||||||
if (iflags.hilite_delta) {
|
if (iflags.hilite_delta) {
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
if (coloridx != NO_COLOR)
|
if (coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win, coloridx,NONE,OFF);
|
curses_toggle_color_attr(win, coloridx, NONE, OFF);
|
||||||
#endif
|
#endif
|
||||||
End_Attr(attridx);
|
End_Attr(attridx);
|
||||||
}
|
}
|
||||||
} else { /* condition */
|
} else if (curses_condition_bits) { /* BL_CONDITION */
|
||||||
MaybeDisplayCond(BL_MASK_STONE, "Stone");
|
MaybeDisplayCond(BL_MASK_STONE, "Stone");
|
||||||
MaybeDisplayCond(BL_MASK_SLIME, "Slime");
|
MaybeDisplayCond(BL_MASK_SLIME, "Slime");
|
||||||
MaybeDisplayCond(BL_MASK_STRNGL, "Strngl");
|
MaybeDisplayCond(BL_MASK_STRNGL, "Strngl");
|
||||||
@@ -561,7 +557,7 @@ unsigned long *colormasks;
|
|||||||
|
|
||||||
text = status_vals[fldidx1];
|
text = status_vals[fldidx1];
|
||||||
getmaxyx(win, height, width);
|
getmaxyx(win, height, width);
|
||||||
bar_len = min(strlen(text), (size_t)width - (border ? 4 : 2));
|
bar_len = min((int) strlen(text), width - (border ? 4 : 2));
|
||||||
text[bar_len] = '\0';
|
text[bar_len] = '\0';
|
||||||
if (bar_len < MAXCO-1) {
|
if (bar_len < MAXCO-1) {
|
||||||
Strcpy(bar, text);
|
Strcpy(bar, text);
|
||||||
@@ -578,28 +574,29 @@ unsigned long *colormasks;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
wmove(win, y++, x);
|
wmove(win, y++, x);
|
||||||
if (iflags.hilite_delta && iflags.wc2_hitpointbar) {
|
putstr(STATUS_WIN, 0, "[");
|
||||||
putstr(STATUS_WIN, 0, "[");
|
wattron(win, A_REVERSE); /* not (hpbar_color >> 8) & 0x00FF) */
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
coloridx = hpbar_color & 0x00FF;
|
coloridx = hpbar_color & 0x00FF;
|
||||||
|
if (iflags.hilite_delta) {
|
||||||
/* attridx = (hpbar_color & 0xFF00) >> 8; */
|
/* attridx = (hpbar_color & 0xFF00) >> 8; */
|
||||||
if (coloridx != NO_COLOR)
|
if (coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win,coloridx,NONE,ON);
|
curses_toggle_color_attr(win, coloridx, NONE, ON);
|
||||||
#endif
|
#endif
|
||||||
wattron(win,A_REVERSE);
|
}
|
||||||
putstr(STATUS_WIN, 0, bar);
|
putstr(STATUS_WIN, 0, bar);
|
||||||
wattroff(win,A_REVERSE);
|
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
|
if (iflags.hilite_delta) {
|
||||||
if (coloridx != NO_COLOR)
|
if (coloridx != NO_COLOR)
|
||||||
curses_toggle_color_attr(win,coloridx,NONE,OFF);
|
curses_toggle_color_attr(win, coloridx, NONE, OFF);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
if (twoparts) {
|
wattroff(win,A_REVERSE);
|
||||||
*bar2 = savedch;
|
if (twoparts) {
|
||||||
putstr(STATUS_WIN, 0, bar2);
|
*bar2 = savedch;
|
||||||
}
|
putstr(STATUS_WIN, 0, bar2);
|
||||||
putstr(STATUS_WIN, 0, "]");
|
}
|
||||||
} else
|
putstr(STATUS_WIN, 0, "]");
|
||||||
putstr(STATUS_WIN, 0, text);
|
|
||||||
y++; /* blank line after title */
|
y++; /* blank line after title */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -612,7 +609,8 @@ unsigned long *colormasks;
|
|||||||
* Return what color this condition should
|
* Return what color this condition should
|
||||||
* be displayed in based on user settings.
|
* be displayed in based on user settings.
|
||||||
*/
|
*/
|
||||||
int condcolor(bm, bmarray)
|
static int
|
||||||
|
condcolor(bm, bmarray)
|
||||||
long bm;
|
long bm;
|
||||||
unsigned long *bmarray;
|
unsigned long *bmarray;
|
||||||
{
|
{
|
||||||
@@ -620,39 +618,41 @@ unsigned long *bmarray;
|
|||||||
|
|
||||||
if (bm && bmarray)
|
if (bm && bmarray)
|
||||||
for (i = 0; i < CLR_MAX; ++i) {
|
for (i = 0; i < CLR_MAX; ++i) {
|
||||||
if (bmarray[i] && (bm & bmarray[i]))
|
if ((bmarray[i] & bm) != 0)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
return NO_COLOR;
|
return NO_COLOR;
|
||||||
}
|
}
|
||||||
#endif /* TEXTCOLOR */
|
#endif /* TEXTCOLOR */
|
||||||
|
|
||||||
int condattr(bm, bmarray)
|
static int
|
||||||
|
condattr(bm, bmarray)
|
||||||
long bm;
|
long bm;
|
||||||
unsigned long *bmarray;
|
unsigned long *bmarray;
|
||||||
{
|
{
|
||||||
int attr = 0;
|
int i, attr = 0;
|
||||||
int i;
|
|
||||||
|
|
||||||
if (bm && bmarray) {
|
if (bm && bmarray) {
|
||||||
for (i = HL_ATTCLR_DIM; i < BL_ATTCLR_MAX; ++i) {
|
for (i = HL_ATTCLR_DIM; i < BL_ATTCLR_MAX; ++i) {
|
||||||
if (bmarray[i] && (bm & bmarray[i])) {
|
if ((bmarray[i] & bm) != 0) {
|
||||||
switch(i) {
|
switch (i) {
|
||||||
case HL_ATTCLR_DIM:
|
case HL_ATTCLR_DIM:
|
||||||
attr |= HL_DIM;
|
attr |= HL_DIM;
|
||||||
break;
|
break;
|
||||||
case HL_ATTCLR_BLINK:
|
case HL_ATTCLR_BLINK:
|
||||||
attr |= HL_BLINK;
|
attr |= HL_BLINK;
|
||||||
break;
|
break;
|
||||||
case HL_ATTCLR_ULINE:
|
case HL_ATTCLR_ULINE:
|
||||||
attr |= HL_ULINE;
|
attr |= HL_ULINE;
|
||||||
break;
|
break;
|
||||||
case HL_ATTCLR_INVERSE:
|
case HL_ATTCLR_INVERSE:
|
||||||
attr |= HL_INVERSE;
|
attr |= HL_INVERSE;
|
||||||
break;
|
break;
|
||||||
case HL_ATTCLR_BOLD:
|
case HL_ATTCLR_BOLD:
|
||||||
attr |= HL_BOLD;
|
attr |= HL_BOLD;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -661,7 +661,8 @@ unsigned long *bmarray;
|
|||||||
}
|
}
|
||||||
#endif /* STATUS_HILITES */
|
#endif /* STATUS_HILITES */
|
||||||
|
|
||||||
#if 0 /* old stuff to be re-incorporated */
|
|
||||||
|
#if 0 /* old stuff; some may be re-incorporated, most should be discarded */
|
||||||
/* Private declarations */
|
/* Private declarations */
|
||||||
|
|
||||||
/* Used to track previous value of things, to highlight changes. */
|
/* Used to track previous value of things, to highlight changes. */
|
||||||
@@ -673,7 +674,7 @@ typedef struct nhs {
|
|||||||
|
|
||||||
static attr_t get_trouble_color(const char *);
|
static attr_t get_trouble_color(const char *);
|
||||||
static void draw_trouble_str(const char *);
|
static void draw_trouble_str(const char *);
|
||||||
static void print_statdiff(const char *append, nhstat *, int, int);
|
static void print_statdiff(const char *append, nhstat *, long, int);
|
||||||
static void get_playerrank(char *);
|
static void get_playerrank(char *);
|
||||||
static int hpen_color(boolean, int, int);
|
static int hpen_color(boolean, int, int);
|
||||||
static void draw_bar(boolean, int, int, const char *);
|
static void draw_bar(boolean, int, int, const char *);
|
||||||
@@ -812,7 +813,7 @@ get_playerrank(char *rank)
|
|||||||
type is generally STAT_OTHER (generic "do nothing special"),
|
type is generally STAT_OTHER (generic "do nothing special"),
|
||||||
but is used if the stat needs to be handled in a special way. */
|
but is used if the stat needs to be handled in a special way. */
|
||||||
static void
|
static void
|
||||||
print_statdiff(const char *append, nhstat *stat, int new, int type)
|
print_statdiff(const char *append, nhstat *stat, long new, int type)
|
||||||
{
|
{
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
WINDOW *win = curses_get_nhwin(STATUS_WIN);
|
||||||
|
|||||||
Reference in New Issue
Block a user