expand wincap options to second field
<Someone> wishes to add a couple of new options to the wince port ("run fullscreen" and "do not use CE software keyboard").
The wincap field was full, so this adds a second field for
additional options.
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
.ds vr "NetHack 3.4
|
.ds vr "NetHack 3.4
|
||||||
.ds f0 "\*(vr
|
.ds f0 "\*(vr
|
||||||
.ds f1
|
.ds f1
|
||||||
.ds f2 "June 29, 2003
|
.ds f2 "July 16, 2003
|
||||||
.mt
|
.mt
|
||||||
A Guide to the Mazes of Menace
|
A Guide to the Mazes of Menace
|
||||||
(Guidebook for NetHack)
|
(Guidebook for NetHack)
|
||||||
@@ -2139,6 +2139,8 @@ NetHack should use this size font for the message window.
|
|||||||
NetHack should use this size font for the status window.
|
NetHack should use this size font for the status window.
|
||||||
.lp font_size_text
|
.lp font_size_text
|
||||||
NetHack should use this size font for text windows.
|
NetHack should use this size font for text windows.
|
||||||
|
.lp fullscreen
|
||||||
|
NetHack should try and display on the entire screen rather than in a window.
|
||||||
.lp hilite_pet
|
.lp hilite_pet
|
||||||
Visually distinguish pets from similar animals (default off).
|
Visually distinguish pets from similar animals (default off).
|
||||||
The behavior of this option depends on the type of windowing you use.
|
The behavior of this option depends on the type of windowing you use.
|
||||||
@@ -2166,6 +2168,8 @@ when the hero reaches the scroll_margin.
|
|||||||
.lp scroll_margin
|
.lp scroll_margin
|
||||||
NetHack should scroll the display when the hero or cursor
|
NetHack should scroll the display when the hero or cursor
|
||||||
is this number of cells away from the edge of the window.
|
is this number of cells away from the edge of the window.
|
||||||
|
.lp softkeyboard
|
||||||
|
Display an onscreen keyboard. Handhelds are most likely to support this option.
|
||||||
.lp splash_screen
|
.lp splash_screen
|
||||||
NetHack should display an opening splash screen when it starts up (default yes).
|
NetHack should display an opening splash screen when it starts up (default yes).
|
||||||
.lp tiled_map
|
.lp tiled_map
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
\begin{document}
|
\begin{document}
|
||||||
%
|
%
|
||||||
% input file: guidebook.mn
|
% input file: guidebook.mn
|
||||||
% $Revision: 1.66 $ $Date: 2003/06/06 03:49:35 $
|
% $Revision: 1.67 $ $Date: 2003/06/30 02:08:55 $
|
||||||
%
|
%
|
||||||
%.ds h0 "
|
%.ds h0 "
|
||||||
%.ds h1 %.ds h2 \%
|
%.ds h1 %.ds h2 \%
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
%.au
|
%.au
|
||||||
\author{Eric S. Raymond\\
|
\author{Eric S. Raymond\\
|
||||||
(Extensively edited and expanded for 3.4)}
|
(Extensively edited and expanded for 3.4)}
|
||||||
\date{June 29, 2003}
|
\date{July 16, 2003}
|
||||||
|
|
||||||
\maketitle
|
\maketitle
|
||||||
|
|
||||||
@@ -2631,6 +2631,9 @@ NetHack should use this size font for the status window.
|
|||||||
\item[\ib{font\_size\_text}]
|
\item[\ib{font\_size\_text}]
|
||||||
NetHack should use this size font for text windows.
|
NetHack should use this size font for text windows.
|
||||||
%.lp
|
%.lp
|
||||||
|
\item[\ib{fullscreen}]
|
||||||
|
NetHack should try and display on the entire screen rather than in a window.
|
||||||
|
%.lp
|
||||||
\item[\ib{hilite\_pet}]
|
\item[\ib{hilite\_pet}]
|
||||||
Visually distinguish pets from similar animals (default off).
|
Visually distinguish pets from similar animals (default off).
|
||||||
The behavior of this option depends on the type of windowing you use.
|
The behavior of this option depends on the type of windowing you use.
|
||||||
@@ -2667,6 +2670,9 @@ when the hero reaches the scroll\_margin.
|
|||||||
NetHack should scroll the display when the hero or cursor
|
NetHack should scroll the display when the hero or cursor
|
||||||
is this number of cells away from the edge of the window.
|
is this number of cells away from the edge of the window.
|
||||||
%.lp
|
%.lp
|
||||||
|
\item[\ib{softkeyboard}]
|
||||||
|
Display an onscreen keyboard. Handhelds are most likely to support this option.
|
||||||
|
%.lp
|
||||||
\item[\ib{splash\_screen}]
|
\item[\ib{splash\_screen}]
|
||||||
NetHack should display an opening splash screen when it starts up (default yes).
|
NetHack should display an opening splash screen when it starts up (default yes).
|
||||||
%.lp
|
%.lp
|
||||||
|
|||||||
@@ -404,17 +404,17 @@ and from the command line for some settings.
|
|||||||
|
|
||||||
The wincap preference settings all have their underlying values stored
|
The wincap preference settings all have their underlying values stored
|
||||||
in iflags fields. The names of the wincap related fields are all pre-
|
in iflags fields. The names of the wincap related fields are all pre-
|
||||||
fixed with wc_ to make it easy to identify them. Your window port can
|
fixed with wc_ or wc2_ to make it easy to identify them. Your window
|
||||||
access the fields directly.
|
port can access the fields directly.
|
||||||
|
|
||||||
Your window port identifies what options it will react to and support
|
Your window port identifies what options it will react to and support
|
||||||
by setting bits in the window_procs wincap mask. See section IX for
|
by setting bits in the window_procs wincap mask and/or wincap2 mask.
|
||||||
details of where the wincap mask resides.
|
See section IX for details of where the wincap masks reside.
|
||||||
|
|
||||||
Two things control whether any preference setting appears in the
|
Two things control whether any preference setting appears in the
|
||||||
'O' command options menu during the game:
|
'O' command options menu during the game:
|
||||||
1. The option must be marked as being supported by having its
|
1. The option must be marked as being supported by having its
|
||||||
bit set in the window_procs wincap mask.
|
bit set in the window_procs wincap or wincap2 mask.
|
||||||
2. The option must have its optflag field set to SET_IN_GAME in order
|
2. The option must have its optflag field set to SET_IN_GAME in order
|
||||||
to be able to set the option, or marked DISP_IN_GAME if you just
|
to be able to set the option, or marked DISP_IN_GAME if you just
|
||||||
want to reveal what the option is set to.
|
want to reveal what the option is set to.
|
||||||
@@ -423,26 +423,28 @@ within NetHack.
|
|||||||
|
|
||||||
The default values for the optflag field for all the options are
|
The default values for the optflag field for all the options are
|
||||||
hard-coded into the option in options.c. The default value for
|
hard-coded into the option in options.c. The default value for
|
||||||
the options can be altered by calling
|
the wc_ options can be altered by calling
|
||||||
set_wc_option_mod_status(optmask, status)
|
set_wc_option_mod_status(optmask, status)
|
||||||
specifying the option modification status to one of SET_IN_FILE,
|
The default value for the wc2_ options can be altered by calling
|
||||||
|
set_wc2_option_mod_status(optmask, status)
|
||||||
|
In each case, set the option modification status to one of SET_IN_FILE,
|
||||||
DISP_IN_GAME, or SET_IN_GAME.
|
DISP_IN_GAME, or SET_IN_GAME.
|
||||||
|
|
||||||
The setting of any wincap option is handled by the NetHack core option
|
The setting of any wincap or wincap2 option is handled by the NetHack
|
||||||
processing code. You do not have to provide a parser in your window
|
core option processing code. You do not have to provide a parser in
|
||||||
port, nor should you set the values for the iflags.wc_* fields
|
your window port, nor should you set the values for the
|
||||||
directly within the port code. The port code should honor whatever
|
iflags.wc_* and iflags.wc2_* fields directly within the port code.
|
||||||
values were put there by the core when processing options, either
|
The port code should honor whatever values were put there by the core
|
||||||
in the config file, or by the 'O' command.
|
when processing options, either in the config file, or by the 'O' command.
|
||||||
|
|
||||||
You may be wondering what values your window port will find in the
|
You may be wondering what values your window port will find in the
|
||||||
iflags.wc_* fields for options that the user has not specified
|
iflags.wc_* and iflags.wc2_* fields for options that the user has not
|
||||||
in his/her config file. Put another way, how does you port code
|
specified in his/her config file. Put another way, how does you port code
|
||||||
tell if an option has not been set? The next paragraph explains that.
|
tell if an option has not been set? The next paragraph explains that.
|
||||||
|
|
||||||
If the core does not set an option, it will still be initialized
|
If the core does not set an option, it will still be initialized
|
||||||
to its default value. Those default values for the
|
to its default value. Those default values for the
|
||||||
iflags.wc_* fields are:
|
iflags.wc_* and iflags.wc_* fields are:
|
||||||
|
|
||||||
o All boolean fields are initialized to the starting
|
o All boolean fields are initialized to the starting
|
||||||
value specified for that option in the boolopt array in
|
value specified for that option in the boolopt array in
|
||||||
@@ -460,9 +462,10 @@ iflags.wc_* fields are:
|
|||||||
that in your window-port code before using such a pointer, or
|
that in your window-port code before using such a pointer, or
|
||||||
you'll end up triggering a nasty fault.
|
you'll end up triggering a nasty fault.
|
||||||
|
|
||||||
Here are the wincap preference settings that your port can choose
|
Here are the wincap and wincap2 preference settings that your port can choose
|
||||||
to support:
|
to support:
|
||||||
|
|
||||||
|
wincap
|
||||||
+--------------------+--------------------+--------------------+--------+
|
+--------------------+--------------------+--------------------+--------+
|
||||||
| | | iflags field | data |
|
| | | iflags field | data |
|
||||||
| player option | bit in wincap mask | for value | type |
|
| player option | bit in wincap mask | for value | type |
|
||||||
@@ -507,6 +510,15 @@ to support:
|
|||||||
| mouse | WC_MOUSE_SUPPORT | wc_mouse_support |boolean |
|
| mouse | WC_MOUSE_SUPPORT | wc_mouse_support |boolean |
|
||||||
+--------------------+--------------------+--------------------+--------+
|
+--------------------+--------------------+--------------------+--------+
|
||||||
|
|
||||||
|
wincap2
|
||||||
|
+--------------------+--------------------+--------------------+--------+
|
||||||
|
| | | iflags field | data |
|
||||||
|
| player option | bit in wincap mask | for value | type |
|
||||||
|
|--------------------+--------------------+--------------------+--------+
|
||||||
|
| fullscreen | WC2_FULLSCREEN | wc2_fullscreen |boolean |
|
||||||
|
| softkeyboard | WC2_SOFTKEYBOARD | wc2_softkeyboard |boolean |
|
||||||
|
+--------------------+--------------------+--------------------+--------+
|
||||||
|
|
||||||
align_message -- where to place message window (top, bottom, left, right)
|
align_message -- where to place message window (top, bottom, left, right)
|
||||||
align_status -- where to place status window (top, bottom, left, right).
|
align_status -- where to place status window (top, bottom, left, right).
|
||||||
ascii_map -- port should display an ascii map if it can.
|
ascii_map -- port should display an ascii map if it can.
|
||||||
@@ -523,6 +535,7 @@ font_size_status-- port should use this size font for the status window.
|
|||||||
font_size_text -- port should use this size font for text windows.
|
font_size_text -- port should use this size font for text windows.
|
||||||
font_status -- port should use a font by this name for status window.
|
font_status -- port should use a font by this name for status window.
|
||||||
font_text -- port should use a font by this name for text windows.
|
font_text -- port should use a font by this name for text windows.
|
||||||
|
fullscreen -- port should try to use the whole screen.
|
||||||
hilite_pet -- port should mark pets in some special way on the map.
|
hilite_pet -- port should mark pets in some special way on the map.
|
||||||
map_mode -- port should display the map in the manner specified.
|
map_mode -- port should display the map in the manner specified.
|
||||||
player_selection
|
player_selection
|
||||||
@@ -532,6 +545,7 @@ preload_tiles -- port should preload tiles into memory.
|
|||||||
scroll_amount -- scroll this amount when scroll_margin is reached.
|
scroll_amount -- scroll this amount when scroll_margin is reached.
|
||||||
scroll_margin -- port should scroll the display when the hero or cursor
|
scroll_margin -- port should scroll the display when the hero or cursor
|
||||||
is this number of cells away from the edge of the window.
|
is this number of cells away from the edge of the window.
|
||||||
|
softkeyboard -- handhelds should display an on-screen keyboard if possible.
|
||||||
splash_screen -- port should/should not display an opening splashscreen.
|
splash_screen -- port should/should not display an opening splashscreen.
|
||||||
tiled_map -- port should display a tiled map if it can.
|
tiled_map -- port should display a tiled map if it can.
|
||||||
tile_width -- port should display tiles with this width or round to closest
|
tile_width -- port should display tiles with this width or round to closest
|
||||||
@@ -562,7 +576,15 @@ the user.
|
|||||||
Functions available for the window port to call:
|
Functions available for the window port to call:
|
||||||
|
|
||||||
set_wc_option_mod_status(optmask, status)
|
set_wc_option_mod_status(optmask, status)
|
||||||
-- Adjust the optflag field for a set of options to
|
-- Adjust the optflag field for a set of wincap options to
|
||||||
|
specify whether the port wants the option to appear
|
||||||
|
in the 'O' command options menu, The second parameter,
|
||||||
|
"status" can be set to SET_IN_FILE, DISP_IN_GAME,
|
||||||
|
or SET_IN_GAME (SET_IN_FILE implies that the option
|
||||||
|
is completely hidden during the game).
|
||||||
|
|
||||||
|
set_wc2_option_mod_status(optmask, status)
|
||||||
|
-- Adjust the optflag field for a set of wincap2 options to
|
||||||
specify whether the port wants the option to appear
|
specify whether the port wants the option to appear
|
||||||
in the 'O' command options menu, The second parameter,
|
in the 'O' command options menu, The second parameter,
|
||||||
"status" can be set to SET_IN_FILE, DISP_IN_GAME,
|
"status" can be set to SET_IN_FILE, DISP_IN_GAME,
|
||||||
@@ -581,11 +603,13 @@ set_option_mod_status(optnam, status)
|
|||||||
Adding a new wincap option:
|
Adding a new wincap option:
|
||||||
|
|
||||||
To add a new wincap option, please follow all these steps:
|
To add a new wincap option, please follow all these steps:
|
||||||
1. Add the option to the wincap preference settings table above.
|
1. Add the option to the wincap preference settings table above. Since
|
||||||
|
wincap is full, your option will likely target wincap2 field.
|
||||||
2. Add the description to the paragraph below the chart.
|
2. Add the description to the paragraph below the chart.
|
||||||
3. Add the WC_ to the bit list in include/winprocs.h (if there is room).
|
3. Add the WC_ or WC2_ to the bit list in include/winprocs.h
|
||||||
4. Add the wc_ field(s) to the iflags structure in flag.h.
|
(in wincap2 if there is no room in wincap).
|
||||||
5. Add the name and value to wc_options[] in options.c
|
4. Add the wc_ or wc2_ field(s) to the iflags structure in flag.h.
|
||||||
|
5. Add the name and value to wc_options[] or wc2_options[] in options.c
|
||||||
6. Add an appropriate parser to parseoptions() in options.c.
|
6. Add an appropriate parser to parseoptions() in options.c.
|
||||||
7. Add code to display current value to get_compopt_value() in options.c.
|
7. Add code to display current value to get_compopt_value() in options.c.
|
||||||
8. Document the option in Guidebook.mn and Guidebook.tex.
|
8. Document the option in Guidebook.mn and Guidebook.tex.
|
||||||
|
|||||||
@@ -1394,6 +1394,7 @@ E void FDECL(assign_warnings, (uchar *));
|
|||||||
E char *FDECL(nh_getenv, (const char *));
|
E char *FDECL(nh_getenv, (const char *));
|
||||||
E void FDECL(set_duplicate_opt_detection, (int));
|
E void FDECL(set_duplicate_opt_detection, (int));
|
||||||
E void FDECL(set_wc_option_mod_status, (unsigned long, int));
|
E void FDECL(set_wc_option_mod_status, (unsigned long, int));
|
||||||
|
E void FDECL(set_wc2_option_mod_status, (unsigned long, int));
|
||||||
E void FDECL(set_option_mod_status, (const char *,int));
|
E void FDECL(set_option_mod_status, (const char *,int));
|
||||||
|
|
||||||
/* ### pager.c ### */
|
/* ### pager.c ### */
|
||||||
|
|||||||
@@ -261,6 +261,8 @@ struct instance_flags {
|
|||||||
in the message window */
|
in the message window */
|
||||||
boolean wc_eight_bit_input; /* allow eight bit input */
|
boolean wc_eight_bit_input; /* allow eight bit input */
|
||||||
boolean wc_mouse_support; /* allow mouse support */
|
boolean wc_mouse_support; /* allow mouse support */
|
||||||
|
boolean wc2_fullscreen; /* run fullscreen */
|
||||||
|
boolean wc2_softkeyboard; /* use software keyboard */
|
||||||
|
|
||||||
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 */
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
struct window_procs {
|
struct window_procs {
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned long wincap; /* window port capability options supported */
|
unsigned long wincap; /* window port capability options supported */
|
||||||
|
unsigned long wincap2; /* additional window port capability options supported */
|
||||||
void FDECL((*win_init_nhwindows), (int *, char **));
|
void FDECL((*win_init_nhwindows), (int *, char **));
|
||||||
void NDECL((*win_player_selection));
|
void NDECL((*win_player_selection));
|
||||||
void NDECL((*win_askname));
|
void NDECL((*win_askname));
|
||||||
@@ -173,6 +174,10 @@ extern NEARDATA struct window_procs windowprocs;
|
|||||||
#define WC_MOUSE_SUPPORT 0x80000000L /* 32 mouse support */
|
#define WC_MOUSE_SUPPORT 0x80000000L /* 32 mouse support */
|
||||||
/* no free bits */
|
/* no free bits */
|
||||||
|
|
||||||
|
#define WC2_FULLSCREEN 0x01L /* 01 mouse support */
|
||||||
|
#define WC2_SOFTKEYBOARD 0x02L /* 02 software keyboard */
|
||||||
|
/* 30 free bits */
|
||||||
|
|
||||||
#define ALIGN_LEFT 1
|
#define ALIGN_LEFT 1
|
||||||
#define ALIGN_RIGHT 2
|
#define ALIGN_RIGHT 2
|
||||||
#define ALIGN_TOP 3
|
#define ALIGN_TOP 3
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ static struct Bool_Opt
|
|||||||
#else
|
#else
|
||||||
{"flush", (boolean *)0, FALSE, SET_IN_FILE},
|
{"flush", (boolean *)0, FALSE, SET_IN_FILE},
|
||||||
#endif
|
#endif
|
||||||
|
{"fullscreen", &iflags.wc2_fullscreen, FALSE, SET_IN_FILE},
|
||||||
{"help", &flags.help, TRUE, SET_IN_GAME},
|
{"help", &flags.help, TRUE, SET_IN_GAME},
|
||||||
{"hilite_pet", &iflags.wc_hilite_pet, FALSE, SET_IN_GAME}, /*WC*/
|
{"hilite_pet", &iflags.wc_hilite_pet, FALSE, SET_IN_GAME}, /*WC*/
|
||||||
#ifdef ASCIIGRAPH
|
#ifdef ASCIIGRAPH
|
||||||
@@ -172,6 +173,7 @@ static struct Bool_Opt
|
|||||||
{"showscore", (boolean *)0, FALSE, SET_IN_FILE},
|
{"showscore", (boolean *)0, FALSE, SET_IN_FILE},
|
||||||
#endif
|
#endif
|
||||||
{"silent", &flags.silent, TRUE, SET_IN_GAME},
|
{"silent", &flags.silent, TRUE, SET_IN_GAME},
|
||||||
|
{"softkeyboard", &iflags.wc2_softkeyboard, FALSE, SET_IN_FILE},
|
||||||
{"sortpack", &flags.sortpack, TRUE, SET_IN_GAME},
|
{"sortpack", &flags.sortpack, TRUE, SET_IN_GAME},
|
||||||
{"sound", &flags.soundok, TRUE, SET_IN_GAME},
|
{"sound", &flags.soundok, TRUE, SET_IN_GAME},
|
||||||
{"sparkle", &flags.sparkle, TRUE, SET_IN_GAME},
|
{"sparkle", &flags.sparkle, TRUE, SET_IN_GAME},
|
||||||
@@ -433,6 +435,8 @@ STATIC_OVL void FDECL(wc_set_font_name, (int, char *));
|
|||||||
STATIC_OVL int FDECL(wc_set_window_colors, (char *));
|
STATIC_OVL int FDECL(wc_set_window_colors, (char *));
|
||||||
STATIC_OVL boolean FDECL(is_wc_option, (const char *));
|
STATIC_OVL boolean FDECL(is_wc_option, (const char *));
|
||||||
STATIC_OVL boolean FDECL(wc_supported, (const char *));
|
STATIC_OVL boolean FDECL(wc_supported, (const char *));
|
||||||
|
STATIC_OVL boolean FDECL(is_wc2_option, (const char *));
|
||||||
|
STATIC_OVL boolean FDECL(wc2_supported, (const char *));
|
||||||
|
|
||||||
/* check whether a user-supplied option string is a proper leading
|
/* check whether a user-supplied option string is a proper leading
|
||||||
substring of a particular option name; option string might have
|
substring of a particular option name; option string might have
|
||||||
@@ -2355,6 +2359,8 @@ doset()
|
|||||||
#endif
|
#endif
|
||||||
if (is_wc_option(boolopt[i].name) &&
|
if (is_wc_option(boolopt[i].name) &&
|
||||||
!wc_supported(boolopt[i].name)) continue;
|
!wc_supported(boolopt[i].name)) continue;
|
||||||
|
if (is_wc2_option(boolopt[i].name) &&
|
||||||
|
!wc2_supported(boolopt[i].name)) continue;
|
||||||
any.a_int = (pass == 0) ? 0 : i + 1;
|
any.a_int = (pass == 0) ? 0 : i + 1;
|
||||||
if (!iflags.menu_tab_sep)
|
if (!iflags.menu_tab_sep)
|
||||||
Sprintf(buf, "%s%-13s [%s]",
|
Sprintf(buf, "%s%-13s [%s]",
|
||||||
@@ -2406,6 +2412,9 @@ doset()
|
|||||||
else if (is_wc_option(compopt[i].name) &&
|
else if (is_wc_option(compopt[i].name) &&
|
||||||
!wc_supported(compopt[i].name))
|
!wc_supported(compopt[i].name))
|
||||||
continue;
|
continue;
|
||||||
|
else if (is_wc2_option(compopt[i].name) &&
|
||||||
|
!wc2_supported(compopt[i].name))
|
||||||
|
continue;
|
||||||
else
|
else
|
||||||
doset_add_menu(tmpwin, compopt[i].name,
|
doset_add_menu(tmpwin, compopt[i].name,
|
||||||
(pass == DISP_IN_GAME) ? 0 : indexoffset);
|
(pass == DISP_IN_GAME) ? 0 : indexoffset);
|
||||||
@@ -2433,7 +2442,8 @@ doset()
|
|||||||
Sprintf(buf, "%s%s", *boolopt[opt_indx].addr ? "!" : "",
|
Sprintf(buf, "%s%s", *boolopt[opt_indx].addr ? "!" : "",
|
||||||
boolopt[opt_indx].name);
|
boolopt[opt_indx].name);
|
||||||
parseoptions(buf, setinitial, fromfile);
|
parseoptions(buf, setinitial, fromfile);
|
||||||
if (wc_supported(boolopt[opt_indx].name))
|
if (wc_supported(boolopt[opt_indx].name) ||
|
||||||
|
wc2_supported(boolopt[opt_indx].name))
|
||||||
preference_update(boolopt[opt_indx].name);
|
preference_update(boolopt[opt_indx].name);
|
||||||
} else {
|
} else {
|
||||||
/* compound option */
|
/* compound option */
|
||||||
@@ -2449,7 +2459,8 @@ doset()
|
|||||||
/* pass the buck */
|
/* pass the buck */
|
||||||
parseoptions(buf, setinitial, fromfile);
|
parseoptions(buf, setinitial, fromfile);
|
||||||
}
|
}
|
||||||
if (wc_supported(compopt[opt_indx].name))
|
if (wc_supported(compopt[opt_indx].name) ||
|
||||||
|
wc2_supported(compopt[opt_indx].name))
|
||||||
preference_update(compopt[opt_indx].name);
|
preference_update(compopt[opt_indx].name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3300,6 +3311,12 @@ struct wc_Opt wc_options[] = {
|
|||||||
{(char *)0, 0L}
|
{(char *)0, 0L}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct wc_Opt wc2_options[] = {
|
||||||
|
{"fullscreen", WC2_FULLSCREEN},
|
||||||
|
{"softkeyboard", WC2_SOFTKEYBOARD},
|
||||||
|
{(char *)0, 0L}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If a port wants to change or ensure that the
|
* If a port wants to change or ensure that the
|
||||||
@@ -3348,7 +3365,7 @@ int status;
|
|||||||
{
|
{
|
||||||
int k = 0;
|
int k = 0;
|
||||||
if (status < SET_IN_FILE || status > SET_IN_GAME) {
|
if (status < SET_IN_FILE || status > SET_IN_GAME) {
|
||||||
impossible("set_option_mod_status: status out of range %d.",
|
impossible("set_wc_option_mod_status: status out of range %d.",
|
||||||
status);
|
status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3387,6 +3404,63 @@ const char *optnam;
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You can set several wc2_options in one call to
|
||||||
|
* set_wc2_option_mod_status() by setting
|
||||||
|
* the appropriate bits for each option that you
|
||||||
|
* are setting in the optmask argument
|
||||||
|
* prior to calling.
|
||||||
|
* example: set_wc2_option_mod_status(WC2_FULLSCREEN|WC2_SOFTKEYBOARD, SET_IN_FILE);
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
set_wc2_option_mod_status(optmask, status)
|
||||||
|
unsigned long optmask;
|
||||||
|
int status;
|
||||||
|
{
|
||||||
|
int k = 0;
|
||||||
|
if (status < SET_IN_FILE || status > SET_IN_GAME) {
|
||||||
|
impossible("set_wc2_option_mod_status: status out of range %d.",
|
||||||
|
status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (wc2_options[k].wc_name) {
|
||||||
|
if (optmask & wc2_options[k].wc_bit) {
|
||||||
|
set_option_mod_status(wc2_options[k].wc_name, status);
|
||||||
|
}
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
STATIC_OVL boolean
|
||||||
|
is_wc2_option(optnam)
|
||||||
|
const char *optnam;
|
||||||
|
{
|
||||||
|
int k = 0;
|
||||||
|
while (wc2_options[k].wc_name) {
|
||||||
|
if (strcmp(wc2_options[k].wc_name, optnam) == 0)
|
||||||
|
return TRUE;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
STATIC_OVL boolean
|
||||||
|
wc2_supported(optnam)
|
||||||
|
const char *optnam;
|
||||||
|
{
|
||||||
|
int k = 0;
|
||||||
|
while (wc2_options[k].wc_name) {
|
||||||
|
if (!strcmp(wc2_options[k].wc_name, optnam) &&
|
||||||
|
(windowprocs.wincap2 & wc2_options[k].wc_bit))
|
||||||
|
return TRUE;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
STATIC_OVL void
|
STATIC_OVL void
|
||||||
wc_set_font_name(wtype, fontname)
|
wc_set_font_name(wtype, fontname)
|
||||||
int wtype;
|
int wtype;
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ struct window_procs amii_procs =
|
|||||||
{
|
{
|
||||||
"amii",
|
"amii",
|
||||||
WC_COLOR|WC_HILITE_PET|WC_INVERSE,
|
WC_COLOR|WC_HILITE_PET|WC_INVERSE,
|
||||||
|
0L,
|
||||||
amii_init_nhwindows,
|
amii_init_nhwindows,
|
||||||
amii_player_selection,
|
amii_player_selection,
|
||||||
amii_askname,
|
amii_askname,
|
||||||
@@ -88,6 +89,7 @@ struct window_procs amiv_procs =
|
|||||||
{
|
{
|
||||||
"amitile",
|
"amitile",
|
||||||
WC_COLOR|WC_HILITE_PET|WC_INVERSE,
|
WC_COLOR|WC_HILITE_PET|WC_INVERSE,
|
||||||
|
0L,
|
||||||
amii_init_nhwindows,
|
amii_init_nhwindows,
|
||||||
amii_player_selection,
|
amii_player_selection,
|
||||||
amii_askname,
|
amii_askname,
|
||||||
|
|||||||
@@ -2495,6 +2495,7 @@ struct window_procs mac_procs = {
|
|||||||
WC_LARGE_FONT | /* obsolete */
|
WC_LARGE_FONT | /* obsolete */
|
||||||
WC_FONT_MAP | WC_FONT_MENU | WC_FONT_MESSAGE | WC_FONT_STATUS | WC_FONT_TEXT |
|
WC_FONT_MAP | WC_FONT_MENU | WC_FONT_MESSAGE | WC_FONT_STATUS | WC_FONT_TEXT |
|
||||||
WC_FONTSIZ_MAP | WC_FONTSIZ_MENU | WC_FONTSIZ_MESSAGE | WC_FONTSIZ_STATUS | WC_FONTSIZ_TEXT,
|
WC_FONTSIZ_MAP | WC_FONTSIZ_MENU | WC_FONTSIZ_MESSAGE | WC_FONTSIZ_STATUS | WC_FONTSIZ_TEXT,
|
||||||
|
0L,
|
||||||
mac_init_nhwindows,
|
mac_init_nhwindows,
|
||||||
mac_unimplemented, /* see macmenu.c:mac_askname() for player selection */
|
mac_unimplemented, /* see macmenu.c:mac_askname() for player selection */
|
||||||
mac_askname,
|
mac_askname,
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ struct window_procs mswin_procs = {
|
|||||||
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|
|
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|
|
||||||
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|
|
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|
|
||||||
WC_WINDOWCOLORS|WC_PLAYER_SELECTION,
|
WC_WINDOWCOLORS|WC_PLAYER_SELECTION,
|
||||||
|
0L,
|
||||||
mswin_init_nhwindows,
|
mswin_init_nhwindows,
|
||||||
mswin_player_selection,
|
mswin_player_selection,
|
||||||
mswin_askname,
|
mswin_askname,
|
||||||
|
|||||||
@@ -5192,6 +5192,7 @@ struct window_procs Qt_procs = {
|
|||||||
WC_ASCII_MAP|WC_TILED_MAP|
|
WC_ASCII_MAP|WC_TILED_MAP|
|
||||||
WC_FONT_MAP|WC_TILE_FILE|WC_TILE_WIDTH|WC_TILE_HEIGHT|
|
WC_FONT_MAP|WC_TILE_FILE|WC_TILE_WIDTH|WC_TILE_HEIGHT|
|
||||||
WC_PLAYER_SELECTION|WC_SPLASH_SCREEN,
|
WC_PLAYER_SELECTION|WC_SPLASH_SCREEN,
|
||||||
|
0L,
|
||||||
NetHackQtBind::qt_init_nhwindows,
|
NetHackQtBind::qt_init_nhwindows,
|
||||||
NetHackQtBind::qt_player_selection,
|
NetHackQtBind::qt_player_selection,
|
||||||
NetHackQtBind::qt_askname,
|
NetHackQtBind::qt_askname,
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ int updated_inventory;
|
|||||||
struct window_procs X11_procs = {
|
struct window_procs X11_procs = {
|
||||||
"X11",
|
"X11",
|
||||||
WC_COLOR|WC_HILITE_PET,
|
WC_COLOR|WC_HILITE_PET,
|
||||||
|
0L,
|
||||||
X11_init_nhwindows,
|
X11_init_nhwindows,
|
||||||
X11_player_selection,
|
X11_player_selection,
|
||||||
X11_askname,
|
X11_askname,
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ struct window_procs Gem_procs = {
|
|||||||
WC_FONT_MESSAGE|WC_FONT_STATUS|WC_FONT_MENU|WC_FONT_TEXT|WC_FONT_MAP|
|
WC_FONT_MESSAGE|WC_FONT_STATUS|WC_FONT_MENU|WC_FONT_TEXT|WC_FONT_MAP|
|
||||||
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|WC_FONTSIZ_MAP|
|
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|WC_FONTSIZ_MAP|
|
||||||
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|WC_ASCII_MAP,
|
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|WC_ASCII_MAP,
|
||||||
|
0L,
|
||||||
Gem_init_nhwindows,
|
Gem_init_nhwindows,
|
||||||
Gem_player_selection,
|
Gem_player_selection,
|
||||||
Gem_askname,
|
Gem_askname,
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ extern void tty_raw_print_bold(const char *);
|
|||||||
struct window_procs Gnome_procs = {
|
struct window_procs Gnome_procs = {
|
||||||
"Gnome",
|
"Gnome",
|
||||||
WC_COLOR|WC_HILITE_PET|WC_INVERSE,
|
WC_COLOR|WC_HILITE_PET|WC_INVERSE,
|
||||||
|
0L,
|
||||||
gnome_init_nhwindows,
|
gnome_init_nhwindows,
|
||||||
gnome_player_selection,
|
gnome_player_selection,
|
||||||
gnome_askname,
|
gnome_askname,
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ struct window_procs tty_procs = {
|
|||||||
WC_MOUSE_SUPPORT|
|
WC_MOUSE_SUPPORT|
|
||||||
#endif
|
#endif
|
||||||
WC_COLOR|WC_HILITE_PET|WC_INVERSE|WC_EIGHT_BIT_IN,
|
WC_COLOR|WC_HILITE_PET|WC_INVERSE|WC_EIGHT_BIT_IN,
|
||||||
|
0L,
|
||||||
tty_init_nhwindows,
|
tty_init_nhwindows,
|
||||||
tty_player_selection,
|
tty_player_selection,
|
||||||
tty_askname,
|
tty_askname,
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ struct window_procs mswin_procs = {
|
|||||||
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|
|
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|
|
||||||
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|
|
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|
|
||||||
WC_WINDOWCOLORS|WC_PLAYER_SELECTION|WC_SPLASH_SCREEN|WC_POPUP_DIALOG,
|
WC_WINDOWCOLORS|WC_PLAYER_SELECTION|WC_SPLASH_SCREEN|WC_POPUP_DIALOG,
|
||||||
|
0L,
|
||||||
mswin_init_nhwindows,
|
mswin_init_nhwindows,
|
||||||
mswin_player_selection,
|
mswin_player_selection,
|
||||||
mswin_askname,
|
mswin_askname,
|
||||||
|
|||||||
Reference in New Issue
Block a user