Merge branch 'options-overhaul' into NetHack-3.7

This commit is contained in:
nhmall
2020-02-26 14:36:20 -05:00
23 changed files with 7213 additions and 4831 deletions
+6 -1
View File
@@ -228,4 +228,9 @@ unified the code for obtaining the inventory letter value for sortloot
unified the code for (un)locking boxes in inventory
unified the code for finding room pos for some features
unified the code for revealing hiding monsters for mvm attacks
options overhaul: moved the option definitions into include/optlist.h;
combined the boolean and compound options into one allopt[] array;
each option has its own individual function for setting the option,
for retrieving the option value, and for processing the option
following its selection in the 'O' menu, added doc/options.doc file.
recglyph_darkroom() relocated from options.c to display.c
+86
View File
@@ -0,0 +1,86 @@
The definitition for each OPTIONS= option resides in include/optlish.h as of
February 2020 in 3.7 WIP.
Boolean and compound options are combined into a single allopt[] array.
To add an option:
1. Add an entry to include/optlist.h, using the NHOPTB macro for a
boolean on/off option, or NHOPTC macro for a compound option. The
list of options is kept in alphabetical order.
When the list of options is processed during the compile of options.c,
the following will be automatically generated and included in
options.c:
i) an optfn_xxxx function prototype (xxxx is the option name).
ii) an opt_xxxx enum value for referencing that option index by
name throughout options.c (xxxx is the option name).
iii) an initialization of an element in the allopt[] array, at
index opt_xxxx from step ii (xxxx is the option name).
2. Create the optn_xxxx() function in options.c. Failure to do that will
result in a link error of "undefined function xxxx." The functions are
in options.c in alphabetical sequence by function name.
The skeletal template for an optn_xxxx() function is:
int
optfn_xxxx(optidx, req, negated, opts, op)
int optidx /* the index of this option opt_xxxx */
int req; /* the request ID from core functions */
boolean negated; /* will be true if opt was negated */
char *opts; /* points to the complete opt string */
char *op; /* points to value portion of opt string */
{
if (req == do_init) {
return optn_ok;
}
if (req == do_set) {
/* do option set processing for the option */
/* if successful, return optn_ok; */
/* if unsuccessful, return optn_err; */
}
if (req == get_val) {
/* return the current val of option in supplied opts buf */
if (!opts)
return optn_err;
Sprintf(opts, "%s", fakefunction to get xxxx value);
return optn_ok;
}
if (req == do_handler) {
/* this is optional. If the option needs its own
special handling after the doset menu, do it here
or call a function to do it. The naming convention
for such a function in options.c has been
handler_xxxx(), but the function does not need to
reside in options.c */
return optn_ok;
}
return optn_ok;
}
3. NOTE: If you add (or delete) an option, please update the short
options help (option_help()), the long options help (dat/opthelp)
and also the Guidebooks.
Here's some information about the req ID's passed to optn_xxxx() functions.
Each optfn_xxxx() function can be called with a req id of: do_init, do_set,
do_handler or get_val.
req do_init is called from options_init, and if initialization or memory
allocation or other initialization for that particular option is needed,
it can be done in response to the init req
req do_set is called from parseoptions() for each option it encounters
and the optfn_xxxx() function is expected to react and set the option
based on the string values that parseoptions() passes to it.
req get_val is passed a buffer from its caller that the optfn_xxxx() is
expected to fill with the current value of the opton.
req do_handler is called during doset() operations processing in response
to player selections, most likely from the 'O' option-setting menu. The
do_handler req is only called for options that were marked as supporting
do_handler in the option definition in include/optlist.h
+9 -9
View File
@@ -691,8 +691,8 @@ Two things control whether any preference setting appears in the
'O' command options menu during the game:
1. The option must be marked as being supported by having its
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
to be able to set the option, or marked DISP_IN_GAME if you just
2. The option must have its optflag field set to set_in_game in order
to be able to set the option, or marked set_gameview if you just
want to reveal what the option is set to.
Both conditions must be true to be able to see or set the option from
within NetHack.
@@ -703,8 +703,8 @@ the wc_ options can be altered by calling
set_wc_option_mod_status(optmask, status)
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.
In each case, set the option modification status to one of set_in_config,
set_gameview, or set_in_game.
The setting of any wincap or wincap2 option is handled by the NetHack
core option processing code. You do not have to provide a parser in
@@ -874,7 +874,7 @@ the option's bit in the port's wincap mask. The port can choose to adjust
for the change to an option that it receives notification about, or ignore it.
The former approach is recommended. If you don't want to deal with a
user-initiated setting change, then the port should call
set_wc_option_mod_status(mask, SET_IN_FILE) to make the option invisible to
set_wc_option_mod_status(mask, set_in_config) to make the option invisible to
the user.
Functions available for the window port to call:
@@ -883,16 +883,16 @@ set_wc_option_mod_status(optmask, status)
-- 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
"status" can be set to set_in_config, set_gameview,
or set_in_game (set_in_config 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
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
"status" can be set to set_in_config, set_gameview,
or set_in_game (set_in_config implies that the option
is completely hidden during the game).
set_option_mod_status(optnam, status)
+1 -2
View File
@@ -127,11 +127,10 @@ struct conditions_t {
};
extern const struct conditions_t conditions[CONDITION_COUNT];
enum condchoice { opt_in, opt_out};
struct condtests_t {
enum blconditions c;
const char *useroption;
enum condchoice opt;
enum optchoice opt;
boolean enabled;
boolean choice;
boolean test;
+2
View File
@@ -107,6 +107,8 @@ struct sinfo {
int in_moveloop;
int in_impossible;
int in_self_recover;
int in_parseoptions; /* in parseoptions */
int config_error_ready; /* config_error_add is ready, available */
#ifdef PANICLOG
int in_paniclog;
#endif
+1 -1
View File
@@ -384,6 +384,7 @@ E void FDECL(flush_screen, (int));
E int FDECL(back_to_glyph, (XCHAR_P, XCHAR_P));
E int FDECL(zapdir_to_glyph, (int, int, int));
E int FDECL(glyph_at, (XCHAR_P, XCHAR_P));
E void NDECL(reglyph_darkroom);
E void NDECL(set_wall_state);
E void FDECL(unset_seenv, (struct rm *, int, int, int, int));
E int FDECL(warning_of, (struct monst *));
@@ -1847,7 +1848,6 @@ E int FDECL(shiny_obj, (CHAR_P));
/* ### options.c ### */
E void NDECL(reglyph_darkroom);
E boolean FDECL(match_optname, (const char *, const char *, int, BOOLEAN_P));
E void NDECL(initoptions);
E void NDECL(initoptions_init);
+2
View File
@@ -86,6 +86,8 @@ typedef xchar boolean; /* 0 or 1 */
#define FALSE ((boolean) 0)
#endif
enum optchoice { opt_in, opt_out};
/*
* type nhsym: loadable symbols go into this type
*/
+12 -12
View File
@@ -497,19 +497,19 @@ enum bodypart_types {
#define TELEDS_TELEPORT 2
/*
* Option flags
* Each higher number includes the characteristics of the numbers
* below it.
* option setting restrictions
*/
/* XXX This should be replaced with a bitmap. */
#define SET_IN_SYS 0 /* system config file option only */
#define SET_IN_FILE 1 /* config file option only */
#define SET_VIA_PROG 2 /* may be set via extern program, not seen in game */
#define DISP_IN_GAME 3 /* may be set via extern program, displayed in game \
*/
#define SET_IN_GAME 4 /* may be set via extern program or set in the game */
#define SET_IN_WIZGAME 5 /* may be set set in the game if wizmode */
#define SET__IS_VALUE_VALID(s) ((s < SET_IN_SYS) || (s > SET_IN_WIZGAME))
enum optset_restrictions {
set_in_sysconf = 0, /* system config file option only */
set_in_config = 1, /* config file option only */
set_viaprog = 2, /* may be set via extern program, not seen in game */
set_gameview = 3, /* may be set via extern program, displayed in game */
set_in_game = 4, /* may be set set in the game if wizmode */
set_wizonly = 5, /* may be set via extern program or set in the game */
set_hidden = 6 /* placeholder for prefixed entries, never show it */
};
#define SET__IS_VALUE_VALID(s) ((s < set_in_sysconf) || (s > set_wizonly))
#define FEATURE_NOTICE_VER(major, minor, patch) \
(((unsigned long) major << 24) | ((unsigned long) minor << 16) \
+566
View File
@@ -0,0 +1,566 @@
/* NetHack 3.7 optlist.h */
/* NetHack may be freely redistributed. See license for details. */
#ifndef OPTLIST_H
#define OPTLIST_H
/*
* NOTE: If you add (or delete) an option, please review:
* doc/options.doc
*
* It contains how-to info and outlines some required/suggested
* updates that should accompany your change.
*/
extern int FDECL(optfn_boolean, (int, int, BOOLEAN_P, char *, char *));
enum OptType {BoolOpt, CompOpt};
enum Y_N {No, Yes};
enum Off_On {Off, On};
struct allopt_t {
const char *name;
int minmatch;
int expectedbuf;
int idx;
enum optset_restrictions setwhere;
enum OptType opttyp;
enum Y_N negateok;
enum Y_N valok;
enum Y_N dupeok;
enum Y_N pfx;
boolean opt_in_out, *addr;
int FDECL((*optfn), (int, int, BOOLEAN_P, char *, char *));
const char *alias;
const char *descr;
const char *prefixgw;
boolean initval, has_handler, unused;
};
#endif /* OPTLIST_H */
#if defined(NHOPT_PROTO) || defined(NHOPT_ENUM) || defined(NHOPT_PARSE)
#define NoAlias ((const char *) 0)
#if defined(NHOPT_PROTO)
#define NHOPTB(a, b, c, s, i, n, v, d, al, bp)
#define NHOPTC(a, b, c, s, n, v, d, h, al, z) \
int FDECL(optfn_##a, (int, int, BOOLEAN_P, char *, char *));
#define NHOPTP(a, b, c, s, n, v, d, h, al, z) \
int FDECL(pfxfn_##a, (int, int, BOOLEAN_P, char *, char *));
#elif defined(NHOPT_ENUM)
#define NHOPTB(a, b, c, s, i, n, v, d, al, bp) \
opt_##a,
#define NHOPTC(a, b, c, s, n, v, d, h, al, z) \
opt_##a,
#define NHOPTP(a, b, c, s, n, v, d, h, al, z) \
pfx_##a,
#elif defined(NHOPT_PARSE)
#define NHOPTB(a, b, c, s, i, n, v, d, al, bp) \
{ #a, 0, b, opt_##a, s, BoolOpt, n, v, d, No, c, bp, &optfn_boolean, \
al, (const char *) 0, (const char *) 0, i, 0, 0 },
#define NHOPTC(a, b, c, s, n, v, d, h, al, z) \
{ #a, 0, b, opt_##a, s, CompOpt, n, v, d, No, c, (boolean *) 0, &optfn_##a, \
al, z, (const char *) 0, Off, h, 0 },
#define NHOPTP(a, b, c, s, n, v, d, h, al, z) \
{ #a, 0, b, pfx_##a, s, CompOpt, n, v, d, Yes, c, (boolean *) 0, &pfxfn_##a, \
al, z, #a, Off, h, 0 },
#endif
/* B:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, boolptr */
/* C:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, descr */
/* P:pfx, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, descr */
NHOPTB(acoustics, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.acoustics)
NHOPTC(align, 8, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"your starting alignment (lawful, neutral, or chaotic)")
NHOPTC(align_message, 20, opt_in, set_gameview, Yes, Yes, No, Yes, NoAlias,
"message window alignment")
NHOPTC(align_status, 20, opt_in, set_gameview, No, Yes, No, Yes, NoAlias,
"status window alignment")
NHOPTC(altkeyhandler, 20, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"alternate key handler")
#if defined(SYSFLAGS) && defined(AMIGA)
NHOPTB(altmeta, 0, opt_out, set_in_config, On, No, No, No, NoAlias,
&sysflags.altmeta)
#else
#ifdef ALTMETA
NHOPTB(altmeta, 0, opt_out, set_in_config, Off, No, No, No, NoAlias,
&iflags.altmeta)
#else
NHOPTB(altmeta, 0, opt_out, set_in_config, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
#endif
NHOPTB(ascii_map, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.wc_ascii_map)
#if defined(SYSFLAGS) && defined(MFLOPPY)
NHOPTB(asksavedisk, 0, opt_in, set_gameview, Off, No, No, No, NoAlias,
&sysflags.asksavedisk)
#else
NHOPTB(asksavedisk, 0, opt_in, set_gameview, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(autodescribe, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&iflags.autodescribe)
NHOPTB(autodig, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.autodig)
NHOPTB(autoopen, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.autoopen)
NHOPTB(autopickup, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.pickup)
NHOPTB(autoquiver, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.autoquiver)
NHOPTB(autounlock, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.autounlock)
#if defined(MICRO) && !defined(AMIGA)
NHOPTB(BIOS, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.BIOS)
#else
NHOPTB(BIOS, 0, opt_in, set_in_config, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(blind, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&u.uroleplay.blind)
NHOPTB(bones, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&flags.bones)
#ifdef BACKWARD_COMPAT
NHOPTC(boulder, 1, opt_in, set_in_game , No, Yes, No, No, NoAlias,
"deprecated (use S_boulder in sym file instead)")
#endif
NHOPTC(catname, PL_PSIZ, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"the name of your (first) cat (e.g., catname:Tabby)")
#ifdef INSURANCE
NHOPTB(checkpoint, 0, opt_out, set_in_game, Off, Yes, No, No, NoAlias,
&flags.ins_chkpt)
#else
NHOPTB(checkpoint, 0, opt_out, set_in_game, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(clicklook, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.clicklook)
NHOPTB(cmdassist, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&iflags.cmdassist)
NHOPTB(color, 0, opt_in, set_in_game, Off, Yes, No, No, "colour",
&iflags.wc_color)
NHOPTB(confirm, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.confirm)
#ifdef CURSES_GRAPHICS
NHOPTC(cursesgraphics, 70, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"load curses display symbols")
#endif
NHOPTB(dark_room, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.dark_room)
#ifdef BACKWARD_COMPAT
NHOPTC(DECgraphics, 70, opt_in, set_in_config, Yes, Yes, No, No, NoAlias,
"load DECGraphics display symbols")
#endif
NHOPTC(disclose, sizeof flags.end_disclose * 2,
opt_in, set_in_game, Yes, Yes, No, Yes, NoAlias,
"the kinds of information to disclose at end of game")
NHOPTC(dogname, PL_PSIZ, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"the name of your (first) dog (e.g., dogname:Fang)")
NHOPTC(dungeon, MAXDCHARS + 1,opt_in, set_in_config, No, Yes, No, No, NoAlias,
"the symbols to use in drawing the dungeon map")
NHOPTC(effects, MAXECHARS + 1, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"the symbols to use in drawing special effects")
NHOPTB(eight_bit_tty, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.wc_eight_bit_input)
NHOPTB(extmenu, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.extmenu)
NHOPTB(female, 0, opt_in, set_in_config, Off, Yes, No, No, "male",
&flags.female)
NHOPTB(fixinv, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.invlet_constant)
NHOPTC(font_map, 40, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the font to use in the map window")
NHOPTC(font_menu, 40, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the font to use in menus")
NHOPTC(font_message, 40, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the font to use in the message window")
NHOPTC(font_size_map, 20, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the size of the map font")
NHOPTC(font_size_menu, 20, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the size of the menu font")
NHOPTC(font_size_message, 20, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the size of the message font")
NHOPTC(font_size_status, 20, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the size of the status font")
NHOPTC(font_size_text, 20, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the size of the text font")
NHOPTC(font_status, 40, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the font to use in status window")
NHOPTC(font_text, 40, opt_in, set_gameview, Yes, Yes, Yes, No, NoAlias,
"the font to use in text windows")
NHOPTB(force_invmenu, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.force_invmenu)
NHOPTC(fruit, PL_FSIZ, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"the name of a fruit you enjoy eating")
NHOPTB(fullscreen, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.wc2_fullscreen)
NHOPTC(gender, 8, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"your starting gender (male or female)")
NHOPTB(goldX, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.goldX)
NHOPTB(guicolor, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&iflags.wc2_guicolor)
NHOPTB(help, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.help)
NHOPTB(herecmd_menu, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.herecmd_menu)
#if defined(MAC)
NHOPTC(hicolor, 15, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"same as palette, only order is reversed")
#endif
NHOPTB(hilite_pet, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.wc_hilite_pet)
NHOPTB(hilite_pile, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.hilite_pile)
#ifdef STATUS_HILITES
NHOPTC(hilite_status, 13, opt_out, set_in_game, Yes, Yes, Yes, No, NoAlias,
"hilite_status")
#endif
NHOPTB(hitpointbar, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.wc2_hitpointbar)
NHOPTC(horsename, PL_PSIZ, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"the name of your (first) horse (e.g., horsename:Silver)")
#ifdef BACKWARD_COMPAT
NHOPTC(IBMgraphics, 70, opt_in, set_in_config, Yes, Yes, No, No, NoAlias,
"load IBMGraphics display symbols")
#endif
#ifndef MAC
NHOPTB(ignintr, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.ignintr)
#else
NHOPTB(ignintr, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(implicit_uncursed, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.implicit_uncursed)
NHOPTB(large_font, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.obsolete)
NHOPTB(legacy, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&flags.legacy)
NHOPTB(lit_corridor, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.lit_corridor)
NHOPTB(lootabc, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.lootabc)
#ifdef BACKWARD_COMPAT
#ifdef MAC_GRAPHICS_ENV
NHOPTC(Macgraphics, 70, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"load MACGraphics display symbols")
#endif
#endif
NHOPTB(mail, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.biff)
NHOPTC(map_mode, 20, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"map display mode under Windows")
NHOPTB(mention_decor, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.mention_decor)
NHOPTB(mention_walls, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.mention_walls)
NHOPTC(menu_deselect_all, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"deselect all items in a menu")
NHOPTC(menu_deselect_page, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"deselect all items on this page of a menu")
NHOPTC(menu_first_page, 4, opt_in, set_in_config, No, No, Yes, No, NoAlias,
"jump to the first page in a menu")
NHOPTC(menu_headings, 4, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"display style for menu headings")
NHOPTC(menu_invert_all, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"invert all items in a menu")
NHOPTC(menu_invert_page, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"invert all items on this page of a menu")
NHOPTC(menu_last_page, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"jump to the last page in a menu")
NHOPTC(menu_next_page, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"goto the next menu page")
NHOPTB(menu_objsyms, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.menu_head_objsym)
#ifdef TTY_GRAPHICS
NHOPTB(menu_overlay, 0, opt_in, set_in_game, On, No, No, No, NoAlias,
&iflags.menu_overlay)
#else
NHOPTB(menu_overlay, 0, opt_in, set_in_config, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTC(menu_previous_page, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"goto the previous menu page")
NHOPTC(menu_search, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"search for a menu item")
NHOPTC(menu_select_all, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"select all items in a menu")
NHOPTC(menu_select_page, 4, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"select all items on this page of a menu")
NHOPTB(menu_tab_sep, 0, opt_in, set_wizonly, Off, Yes, No, No, NoAlias,
&iflags.menu_tab_sep)
NHOPTB(menucolors, 0, opt_in, set_in_game, Off, Yes, Yes, No, NoAlias,
&iflags.use_menu_color)
NHOPTC(menuinvertmode, 5, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"behaviour of menu iverts")
NHOPTC(menustyle, MENUTYPELEN, opt_in, set_in_game, Yes, Yes, No, Yes, NoAlias,
"user interface for object selection")
NHOPTB(monpolycontrol, 0, opt_in, set_wizonly, Off, Yes, No, No, NoAlias,
&iflags.mon_polycontrol)
NHOPTC(monsters, MAXMCLASSES, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"the symbols to use for monsters")
NHOPTC(mouse_support, 0, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"game receives click info from mouse")
#if defined(TTY_GRAPHICS) || defined(CURSES_GRAPHICS)
NHOPTC(msg_window, 1, opt_in, set_in_game, Yes, Yes, No, Yes, NoAlias,
"the type of message window required")
#else
NHOPTC(msg_window, 1, opt_in, set_in_config, Yes, Yes, No, Yes, NoAlias,
"the type of message window required")
#endif
NHOPTC(msghistory, 5, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"number of top line messages to save")
NHOPTC(name, PL_NSIZ, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"your character's name (e.g., name:Merlin-W)")
#ifdef NEWS
NHOPTB(news, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.news)
#else
NHOPTB(news, 0, opt_in, set_in_config, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(nudist, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&u.uroleplay.nudist)
NHOPTB(null, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.null)
NHOPTC(number_pad, 1, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"use the number pad for movement")
NHOPTC(objects, MAXOCLASSES, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"the symbols to use for objects")
NHOPTC(packorder, MAXOCLASSES, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"the inventory order of the items in your pack")
#ifdef CHANGE_COLOR
#ifndef WIN32
NHOPTC(palette, 15, opt_in, set_in_game, No, Yes, No, "hicolor",
"palette (00c/880/-fff is blue/yellow/reverse white)")
#else
NHOPTC(palette, 15, opt_in, set_in_config, No, Yes, No, "hicolor",
"palette (adjust an RGB color in palette (color-R-G-B)")
#endif
#endif
NHOPTC(paranoid_confirmation, 28, opt_in, set_in_game, Yes, Yes, Yes, Yes,
"prayconfirm", "extra prompting in certain situations")
NHOPTB(perm_invent, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.perm_invent)
NHOPTC(petattr, 88, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"attributes for highlighting pets")
NHOPTC(pettype, 4, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"your preferred initial pet type")
NHOPTC(pickup_burden, 20, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"maximum burden picked up before prompt")
NHOPTB(pickup_thrown, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.pickup_thrown)
NHOPTC(pickup_types, MAXOCLASSES, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"types of objects to pick up automatically")
NHOPTC(pile_limit, 24, opt_in, set_in_game, Yes, Yes, No, No, NoAlias,
"threshold for \"there are many objects here\"")
NHOPTC(player_selection, 12, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"choose character via dialog or prompts")
NHOPTC(playmode, 8, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"normal play, non-scoring explore mode, or debug mode")
NHOPTB(popup_dialog, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.wc_popup_dialog)
NHOPTB(preload_tiles, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&iflags.wc_preload_tiles)
NHOPTB(pushweapon, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.pushweapon)
NHOPTB(quick_farsight, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.quick_farsight)
NHOPTC(race, PL_CSIZ, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"your starting race (e.g., Human, Elf)")
#ifdef MICRO
NHOPTB(rawio, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.rawio)
#else
NHOPTB(rawio, 0, opt_in, set_in_config, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(rest_on_space, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.rest_on_space)
NHOPTC(roguesymset, 70, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"load a set of rogue display symbols from the symbols file")
NHOPTC(role, PL_CSIZ, opt_in, set_gameview, No, Yes, No, No, "character",
"your starting role (e.g., Barbarian, Valkyrie)")
NHOPTC(runmode, sizeof "teleport", opt_in, set_in_game, Yes, Yes, No, Yes,
NoAlias, "display frequency when `running' or `travelling'")
NHOPTB(safe_pet, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.safe_dog)
NHOPTB(sanity_check, 0, opt_in, set_wizonly, Off, Yes, No, No, NoAlias,
&iflags.sanity_check)
NHOPTC(scores, 32, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"the parts of the score list you wish to see")
NHOPTC(scroll_amount, 20, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"amount to scroll map when scroll_margin is reached")
NHOPTC(scroll_margin, 20, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"scroll map when this far from the edge")
NHOPTB(selectsaved, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&iflags.wc2_selectsaved)
NHOPTB(showexp, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.showexp)
NHOPTB(showrace, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.showrace)
#ifdef SCORE_ON_BOTL
NHOPTB(showscore, 0, opt_in, set_in_game, Off, No, No, No, NoAlias,
&flags.showscore)
#else
NHOPTB(showscore, 0, opt_in, set_in_config, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(silent, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.silent)
NHOPTB(softkeyboard, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.wc2_softkeyboard)
NHOPTC(sortloot, 4, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"sort object selection lists by description")
NHOPTB(sortpack, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.sortpack)
NHOPTB(sparkle, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.sparkle)
NHOPTB(splash_screen, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&iflags.wc_splash_screen)
NHOPTB(standout, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.standout)
NHOPTB(status_updates, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&iflags.status_updates)
#ifdef STATUS_HILITES
NHOPTC(statushilites, 20, opt_in, set_in_game, Yes, Yes, Yes, No, NoAlias,
"0=no status highlighting, N=show highlights for N turns")
#else
NHOPTC(statushilites, 20, opt_in, set_in_config, Yes, Yes, Yes, No, NoAlias,
"highlight control")
#endif
#ifdef CURSES_GRAPHICS
NHOPTC(statuslines, 20, opt_in, set_in_game, No, Yes, No, No, NoAlias,
"2 or 3 lines for horizontal (bottom or top) status display")
#else
NHOPTC(statuslines, 20, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"2 or 3 lines for status display")
#endif
#ifdef WIN32
NHOPTC(subkeyvalue, 7, opt_in, set_in_config, No, Yes, Yes, No, NoAlias,
"override keystroke value")
#endif
NHOPTC(suppress_alert, 8, opt_in, set_in_game, No, Yes, Yes, No, NoAlias,
"suppress alerts about version-specific features")
NHOPTC(symset, 70, opt_in, set_in_game, No, Yes, No, Yes, NoAlias,
"load a set of display symbols from the symbols file")
NHOPTC(term_cols, 6, opt_in, set_in_config, No, Yes, No, No, "termcolumns",
"number of columns")
NHOPTC(term_rows, 6, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"number of rows")
NHOPTC(tile_file, 70, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"name of tile file")
NHOPTC(tile_height, 20, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"height of tiles")
NHOPTC(tile_width, 20, opt_in, set_gameview, Yes, Yes, No, No, NoAlias,
"width of tiles")
NHOPTB(tiled_map, 0, opt_in, set_in_config, On, Yes, No, No, NoAlias,
&iflags.wc_tiled_map)
NHOPTB(time, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&flags.time)
#ifdef TIMED_DELAY
NHOPTB(timed_delay, 0, opt_out, set_in_game, Off, Yes, No, No, NoAlias,
&flags.nap)
#else
NHOPTB(timed_delay, 0, opt_in, set_in_game, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(tombstone, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.tombstone)
NHOPTB(toptenwin, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.toptenwin)
NHOPTC(traps, MAXTCHARS + 1, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"the symbols to use in drawing traps")
NHOPTB(travel, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.travelcmd)
#ifdef DEBUG
NHOPTB(travel_debug, 0, opt_out, set_wizonly, Off, Yes, No, No, NoAlias,
&iflags.trav_debug)
#else
NHOPTB(travel_debug, 0, opt_out, set_wizonly, Off, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTB(use_darkgray, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
&iflags.wc2_darkgray)
#ifdef WIN32
NHOPTB(use_inverse, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&iflags.wc_inverse)
#else
NHOPTB(use_inverse, 0, opt_in, set_in_game, On, No, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTC(vary_msgcount, 20, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"show more old messages at a time")
NHOPTB(verbose, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.verbose)
#ifdef MSDOS
NHOPTC(video, 20, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"method of video updating")
#endif
#ifdef VIDEOSHADES
NHOPTC(videocolors, 40, opt_in, set_gameview, No, Yes, No, "videocolours",
"color mappings for internal screen routines")
NHOPTC(videoshades, 32, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"gray shades to map to black/gray/white")
#endif
#ifdef MSDOS
NHOPTC(video_width, 10, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"video width")
NHOPTC(video_height, 10, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"video height")
#endif
NHOPTC(warnings, 10, opt_in, set_in_config, No, Yes, No, No, NoAlias,
"display characters for warnings")
NHOPTC(whatis_coord, 1, opt_in, set_in_game, Yes, Yes, No, Yes, NoAlias,
"show coordinates when auto-describing cursor position")
NHOPTC(whatis_filter, 1, opt_in, set_in_game, Yes, Yes, No, Yes, NoAlias,
"filter coordinate locations when targeting next or previous")
NHOPTB(whatis_menu, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.getloc_usemenu)
NHOPTB(whatis_moveskip, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.getloc_moveskip)
NHOPTC(windowborders, 9, opt_in, set_in_game, Yes, Yes, No, No, NoAlias,
"0 (off), 1 (on), 2 (auto)")
#ifdef WINCHAIN
NHOPTC(windowchain, WINTYPELEN, opt_in, set_in_sysconf, No, Yes, No, No,
NoAlias, "window processor to use")
#endif
NHOPTC(windowcolors, 80, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"the foreground/background colors of windows")
NHOPTC(windowtype, WINTYPELEN, opt_in, set_gameview, No, Yes, No, No, NoAlias,
"windowing system to use")
NHOPTB(wizweight, 0, opt_in, set_wizonly, Off, Yes, No, No, NoAlias,
&iflags.wizweight)
NHOPTB(wraptext, 0, opt_in, set_in_game, Off, Yes, No, No, NoAlias,
&iflags.wc2_wraptext)
/*
* Prefix-based Options
*/
NHOPTP(cond_, 0, opt_in, set_hidden, No, No, Yes, Yes, NoAlias,
"prefix for cond_ options")
NHOPTP(font, 0, opt_in, set_hidden, Yes, Yes, Yes, No, NoAlias,
"prefix for font options")
#if defined(MICRO) && !defined(AMIGA)
/* included for compatibility with old NetHack.cnf files */
NHOPTP(IBM_, 0, opt_in, set_hidden, No, No, Yes, NoAlias,
"prefix for old micro IBM_ options")
#endif /* MICRO */
#undef NoAlias
#undef NHOPTB
#undef NHOPTC
#undef NHOPTP
#endif /* NHOPT_PROTO || NHOPT_ENUM || NHOPT_PARSE */
/* end of optlist */
+32
View File
@@ -1459,6 +1459,38 @@ redraw_map()
flush_screen(1);
}
/*
* =======================================================
*/
void
reglyph_darkroom()
{
xchar x, y;
for (x = 0; x < COLNO; x++)
for (y = 0; y < ROWNO; y++) {
struct rm *lev = &levl[x][y];
if (!flags.dark_room || !iflags.use_color
|| Is_rogue_level(&u.uz)) {
if (lev->glyph == cmap_to_glyph(S_darkroom))
lev->glyph = lev->waslit ? cmap_to_glyph(S_room)
: GLYPH_NOTHING;
} else {
if (lev->glyph == cmap_to_glyph(S_room) && lev->seenv
&& lev->waslit && !cansee(x, y))
lev->glyph = cmap_to_glyph(S_darkroom);
else if (lev->glyph == GLYPH_NOTHING
&& lev->typ == ROOM && lev->seenv && !cansee(x, y))
lev->glyph = cmap_to_glyph(S_darkroom);
}
}
if (flags.dark_room && iflags.use_color)
g.showsyms[S_darkroom] = g.showsyms[S_room];
else
g.showsyms[S_darkroom] = g.showsyms[SYM_NOTHING + SYM_OFF_X];
}
/* ======================================================================== */
/* Glyph Buffering (3rd screen) =========================================== */
+30 -28
View File
@@ -2099,7 +2099,7 @@ int src;
char *envp;
#endif
if (src == SET_IN_SYS) {
if (src == set_in_sysconf) {
/* SYSCF_FILE; if we can't open it, caller will bail */
if (filename && *filename) {
set_configfile_name(fqname(filename, SYSCONFPREFIX, 0));
@@ -2108,7 +2108,7 @@ int src;
fp = (FILE *) 0;
return fp;
}
/* If src != SET_IN_SYS, "filename" is an environment variable, so it
/* If src != set_in_sysconf, "filename" is an environment variable, so it
* should hang around. If set, it is expected to be a full path name
* (if relevant)
*/
@@ -2556,7 +2556,7 @@ char *origbuf;
(void) strncpy(g.catname, bufp, PL_PSIZ - 1);
#ifdef SYSCF
} else if (src == SET_IN_SYS && match_varname(buf, "WIZARDS", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "WIZARDS", 7)) {
if (sysopt.wizards)
free((genericptr_t) sysopt.wizards);
sysopt.wizards = dupstr(bufp);
@@ -2568,15 +2568,15 @@ char *origbuf;
free((genericptr_t) sysopt.fmtd_wizard_list);
sysopt.fmtd_wizard_list = build_english_list(sysopt.wizards);
}
} else if (src == SET_IN_SYS && match_varname(buf, "SHELLERS", 8)) {
} else if (src == set_in_sysconf && match_varname(buf, "SHELLERS", 8)) {
if (sysopt.shellers)
free((genericptr_t) sysopt.shellers);
sysopt.shellers = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "EXPLORERS", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "EXPLORERS", 7)) {
if (sysopt.explorers)
free((genericptr_t) sysopt.explorers);
sysopt.explorers = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "DEBUGFILES", 5)) {
} else if (src == set_in_sysconf && match_varname(buf, "DEBUGFILES", 5)) {
/* if showdebug() has already been called (perhaps we've added
some debugpline() calls to option processing) and has found
a value for getenv("DEBUGFILES"), don't override that */
@@ -2585,17 +2585,17 @@ char *origbuf;
free((genericptr_t) sysopt.debugfiles);
sysopt.debugfiles = dupstr(bufp);
}
} else if (src == SET_IN_SYS && match_varname(buf, "DUMPLOGFILE", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "DUMPLOGFILE", 7)) {
#ifdef DUMPLOG
if (sysopt.dumplogfile)
free((genericptr_t) sysopt.dumplogfile);
sysopt.dumplogfile = dupstr(bufp);
#endif
} else if (src == SET_IN_SYS && match_varname(buf, "GENERICUSERS", 12)) {
} else if (src == set_in_sysconf && match_varname(buf, "GENERICUSERS", 12)) {
if (sysopt.genericusers)
free((genericptr_t) sysopt.genericusers);
sysopt.genericusers = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "BONES_POOLS", 10)) {
} else if (src == set_in_sysconf && match_varname(buf, "BONES_POOLS", 10)) {
/* max value of 10 guarantees (N % bones.pools) will be one digit
so we don't lose control of the length of bones file names */
n = atoi(bufp);
@@ -2603,32 +2603,32 @@ char *origbuf;
/* note: right now bones_pools==0 is the same as bones_pools==1,
but we could change that and make bones_pools==0 become an
indicator to suppress bones usage altogether */
} else if (src == SET_IN_SYS && match_varname(buf, "SUPPORT", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "SUPPORT", 7)) {
if (sysopt.support)
free((genericptr_t) sysopt.support);
sysopt.support = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "RECOVER", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "RECOVER", 7)) {
if (sysopt.recover)
free((genericptr_t) sysopt.recover);
sysopt.recover = dupstr(bufp);
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "CHECK_SAVE_UID", 14)) {
n = atoi(bufp);
sysopt.check_save_uid = n;
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "CHECK_PLNAME", 12)) {
n = atoi(bufp);
sysopt.check_plname = n;
} else if (match_varname(buf, "SEDUCE", 6)) {
n = !!atoi(bufp); /* XXX this could be tighter */
/* allow anyone to turn it off, but only sysconf to turn it on*/
if (src != SET_IN_SYS && n != 0) {
if (src != set_in_sysconf && n != 0) {
config_error_add("Illegal value in SEDUCE");
return FALSE;
}
sysopt.seduce = n;
sysopt_seduce_set(sysopt.seduce);
} else if (src == SET_IN_SYS && match_varname(buf, "MAXPLAYERS", 10)) {
} else if (src == set_in_sysconf && match_varname(buf, "MAXPLAYERS", 10)) {
n = atoi(bufp);
/* XXX to get more than 25, need to rewrite all lock code */
if (n < 0 || n > 25) {
@@ -2636,35 +2636,35 @@ char *origbuf;
return FALSE;
}
sysopt.maxplayers = n;
} else if (src == SET_IN_SYS && match_varname(buf, "PERSMAX", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "PERSMAX", 7)) {
n = atoi(bufp);
if (n < 1) {
config_error_add("Illegal value in PERSMAX (minimum is 1).");
return FALSE;
}
sysopt.persmax = n;
} else if (src == SET_IN_SYS && match_varname(buf, "PERS_IS_UID", 11)) {
} else if (src == set_in_sysconf && match_varname(buf, "PERS_IS_UID", 11)) {
n = atoi(bufp);
if (n != 0 && n != 1) {
config_error_add("Illegal value in PERS_IS_UID (must be 0 or 1).");
return FALSE;
}
sysopt.pers_is_uid = n;
} else if (src == SET_IN_SYS && match_varname(buf, "ENTRYMAX", 8)) {
} else if (src == set_in_sysconf && match_varname(buf, "ENTRYMAX", 8)) {
n = atoi(bufp);
if (n < 10) {
config_error_add("Illegal value in ENTRYMAX (minimum is 10).");
return FALSE;
}
sysopt.entrymax = n;
} else if ((src == SET_IN_SYS) && match_varname(buf, "POINTSMIN", 9)) {
} else if ((src == set_in_sysconf) && match_varname(buf, "POINTSMIN", 9)) {
n = atoi(bufp);
if (n < 1) {
config_error_add("Illegal value in POINTSMIN (minimum is 1).");
return FALSE;
}
sysopt.pointsmin = n;
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "MAX_STATUENAME_RANK", 10)) {
n = atoi(bufp);
if (n < 1) {
@@ -2675,7 +2675,7 @@ char *origbuf;
sysopt.tt_oname_maxrank = n;
/* SYSCF PANICTRACE options */
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "PANICTRACE_LIBC", 15)) {
n = atoi(bufp);
#if defined(PANICTRACE) && defined(PANICTRACE_LIBC)
@@ -2685,7 +2685,7 @@ char *origbuf;
}
#endif
sysopt.panictrace_libc = n;
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "PANICTRACE_GDB", 14)) {
n = atoi(bufp);
#if defined(PANICTRACE)
@@ -2695,7 +2695,7 @@ char *origbuf;
}
#endif
sysopt.panictrace_gdb = n;
} else if (src == SET_IN_SYS && match_varname(buf, "GDBPATH", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "GDBPATH", 7)) {
#if defined(PANICTRACE) && !defined(VMS)
if (!file_exists(bufp)) {
config_error_add("File specified in GDBPATH does not exist.");
@@ -2705,7 +2705,7 @@ char *origbuf;
if (sysopt.gdbpath)
free((genericptr_t) sysopt.gdbpath);
sysopt.gdbpath = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "GREPPATH", 7)) {
} else if (src == set_in_sysconf && match_varname(buf, "GREPPATH", 7)) {
#if defined(PANICTRACE) && !defined(VMS)
if (!file_exists(bufp)) {
config_error_add("File specified in GREPPATH does not exist.");
@@ -2716,13 +2716,13 @@ char *origbuf;
free((genericptr_t) sysopt.greppath);
sysopt.greppath = dupstr(bufp);
/* SYSCF SAVE and BONES format options */
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "SAVEFORMAT", 10)) {
parseformat(sysopt.saveformat, bufp);
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "BONESFORMAT", 11)) {
parseformat(sysopt.bonesformat, bufp);
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "ACCESSIBILITY", 13)) {
n = atoi(bufp);
if (n < 0 || n > 1) {
@@ -2731,7 +2731,7 @@ char *origbuf;
}
sysopt.accessibility = n;
#ifdef WIN32
} else if (src == SET_IN_SYS
} else if (src == set_in_sysconf
&& match_varname(buf, "portable_device_paths", 8)) {
n = atoi(bufp);
if (n < 0 || n > 1) {
@@ -2967,6 +2967,7 @@ boolean secure;
tmp->next = config_error_data;
config_error_data = tmp;
g.program_state.config_error_ready = TRUE;
}
static boolean
@@ -3042,6 +3043,7 @@ config_error_done()
}
config_error_data = tmp->next;
free(tmp);
g.program_state.config_error_ready = FALSE;
return n;
}
+6435 -4749
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -499,10 +499,10 @@ HACKINCL = align.h amiconf.h artifact.h artilist.h attrib.h beconf.h botl.h \
func_tab.h global.h hack.h lint.h macconf.h mextra.h mfndpos.h \
micro.h mkroom.h \
monattk.h mondata.h monflag.h monst.h monsym.h obj.h objclass.h \
os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h region.h \
rm.h sp_lev.h spell.h sys.h system.h tcap.h timeout.h tosconf.h \
tradstdc.h trampoli.h trap.h unixconf.h vision.h vmsconf.h wintty.h \
wincurs.h winX.h winprocs.h wintype.h you.h youprop.h
optlist.h os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h \
region.h rm.h sp_lev.h spell.h sys.h system.h tcap.h timeout.h \
tosconf.h tradstdc.h trampoli.h trap.h unixconf.h vision.h vmsconf.h \
wintty.h wincurs.h winX.h winprocs.h wintype.h you.h youprop.h
HSOURCES = $(HACKINCL) date.h onames.h pm.h vis_tab.h dgn_file.h
@@ -1118,7 +1118,7 @@ objects.o: objects.c $(CONFIG_H) ../include/obj.h ../include/objclass.h \
../include/prop.h ../include/skills.h ../include/color.h
objnam.o: objnam.c $(HACK_H)
options.o: options.c $(CONFIG_H) ../include/objclass.h ../include/flag.h \
$(HACK_H) ../include/tcap.h
$(HACK_H) ../include/tcap.h ../include/optlist.h
pager.o: pager.c $(HACK_H) ../include/dlb.h
pickup.o: pickup.c $(HACK_H)
pline.o: pline.c $(HACK_H)
+4 -4
View File
@@ -158,7 +158,7 @@ mswin_init_nhwindows(int *argc, char **argv)
* non-console applications
*/
iflags.toptenwin = 1;
set_option_mod_status("toptenwin", SET_IN_FILE);
set_option_mod_status("toptenwin", set_in_config);
/* initialize map tiles bitmap */
initMapTiles();
@@ -176,14 +176,14 @@ mswin_init_nhwindows(int *argc, char **argv)
| WC_MAP_MODE | WC_FONT_MESSAGE | WC_FONT_STATUS | WC_FONT_MENU
| WC_FONT_TEXT | WC_FONTSIZ_MESSAGE | WC_FONTSIZ_STATUS
| WC_FONTSIZ_MENU | WC_FONTSIZ_TEXT | WC_VARY_MSGCOUNT,
SET_IN_GAME);
set_in_game);
/* WC2 options */
set_wc2_option_mod_status(WC2_FULLSCREEN | WC2_SOFTKEYBOARD, SET_IN_FILE);
set_wc2_option_mod_status(WC2_FULLSCREEN | WC2_SOFTKEYBOARD, set_in_config);
GetNHApp()->bFullScreen = iflags.wc2_fullscreen;
GetNHApp()->bUseSIP = iflags.wc2_softkeyboard;
set_wc2_option_mod_status(WC2_WRAPTEXT, SET_IN_GAME);
set_wc2_option_mod_status(WC2_WRAPTEXT, set_in_game);
GetNHApp()->bWrapText = iflags.wc2_wraptext;
/* create the main nethack window */
+3 -1
View File
@@ -2068,8 +2068,10 @@ $(O)o_init.o: o_init.c $(HACK_H)
$(O)objects.o: objects.c $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
$(INCL)\prop.h $(INCL)\skills.h $(INCL)\color.h
$(O)objnam.o: objnam.c $(HACK_H)
$(O)options.o: options.c $(CONFIG_H) $(INCL)\objclass.h $(INCL)\flag.h \
$(O)options.o: options.c $(INCL)\optlist.h $(CONFIG_H) $(INCL)\objclass.h $(INCL)\flag.h \
$(HACK_H) $(INCL)\tcap.h
$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) /EP options.c >$(@B).preproc
$(cc) $(cflagsBuild) $(CROSSCOMPILE) $(CROSSCOMPILE_TARGET) -Fo$@ options.c
$(O)pager.o: pager.c $(HACK_H) $(INCL)\dlb.h
$(O)pickup.o: pickup.c $(HACK_H)
$(O)pline.o: pline.c $(HACK_H)
+1 -1
View File
@@ -339,7 +339,7 @@ int *wid, *hgt;
{
*wid = console.width;
*hgt = console.height;
set_option_mod_status("mouse_support", SET_IN_GAME);
set_option_mod_status("mouse_support", set_in_game);
}
void
+1 -1
View File
@@ -209,7 +209,7 @@ test_portable_config(
/* assure_syscf_file(); */
config_error_init(TRUE, tmppath, FALSE);
/* ... and _must_ parse correctly. */
if (read_config_file(tmppath, SET_IN_SYS)
if (read_config_file(tmppath, set_in_sysconf)
&& sysopt.portable_device_paths)
retval = TRUE;
(void) config_error_done();
+2 -2
View File
@@ -1492,8 +1492,8 @@ char **argv;
window_list[i].type = NHW_NONE;
/* add another option that can be set */
set_wc_option_mod_status(WC_TILED_MAP, SET_IN_GAME);
set_option_mod_status("mouse_support", SET_IN_GAME);
set_wc_option_mod_status(WC_TILED_MAP, set_in_game);
set_option_mod_status("mouse_support", set_in_game);
load_default_resources(); /* create default_resource_data[] */
+3 -3
View File
@@ -778,11 +778,11 @@ curses_character_dialog(const char **choices, const char *prompt)
void
curses_init_options()
{
/* change these from DISP_IN_GAME to SET_IN_GAME */
set_wc_option_mod_status(WC_ALIGN_MESSAGE | WC_ALIGN_STATUS, SET_IN_GAME);
/* change these from set_gameview to set_in_game */
set_wc_option_mod_status(WC_ALIGN_MESSAGE | WC_ALIGN_STATUS, set_in_game);
/* Remove a few options that are irrelevant to this windowport */
set_option_mod_status("eight_bit_tty", SET_IN_FILE);
set_option_mod_status("eight_bit_tty", set_in_config);
/* If we don't have a symset defined, load the curses symset by default */
if (!g.symset[PRIMARY].explicitly)
+4 -4
View File
@@ -162,15 +162,15 @@ curses_init_nhwindows(int *argcp UNUSED,
curses_init_nhcolors();
} else {
iflags.use_color = FALSE;
set_option_mod_status("color", SET_IN_FILE);
set_option_mod_status("color", set_in_config);
iflags.wc2_guicolor = FALSE;
set_wc2_option_mod_status(WC2_GUICOLOR, SET_IN_FILE);
set_wc2_option_mod_status(WC2_GUICOLOR, set_in_config);
}
#else
iflags.use_color = FALSE;
set_option_mod_status("color", SET_IN_FILE);
set_option_mod_status("color", set_in_config);
iflags.wc2_guicolor = FALSE;
set_wc2_option_mod_status(WC2_GUICOLOR, SET_IN_FILE);
set_wc2_option_mod_status(WC2_GUICOLOR, set_in_config);
#endif
noecho();
raw();
+1 -1
View File
@@ -159,7 +159,7 @@ char **argv;
| WC_FONT_STATUS | WC_FONT_MENU | WC_FONT_TEXT
| WC_FONTSIZ_MESSAGE | WC_FONTSIZ_MAP | WC_FONTSIZ_STATUS
| WC_FONTSIZ_MENU | WC_FONTSIZ_TEXT | WC_VARY_MSGCOUNT,
SET_IN_GAME);
set_in_game);
if (iflags.wc_align_message == 0)
iflags.wc_align_message = ALIGN_TOP;
if (iflags.wc_align_status == 0)
+2 -2
View File
@@ -440,14 +440,14 @@ char **argv UNUSED;
tty_putstr(BASE_WINDOW, 0, "");
tty_display_nhwindow(BASE_WINDOW, FALSE);
/* 'statuslines' defaults to SET_IN_FILE, allowed but invisible;
/* 'statuslines' defaults to set_in_config, allowed but invisible;
make it dynamically settable if feasible, otherwise visible */
if (tty_procs.wincap2 & WC2_STATUSLINES)
set_wc2_option_mod_status(WC2_STATUSLINES,
#ifndef CLIPPING
(LI < 1 + ROWNO + 2) ? DISP_IN_GAME :
#endif
SET_IN_GAME);
set_in_game);
}
void
+5 -5
View File
@@ -213,16 +213,16 @@ mswin_init_nhwindows(int *argc, char **argv)
* non-console applications
*/
iflags.toptenwin = 1;
set_option_mod_status("toptenwin", SET_IN_FILE);
//set_option_mod_status("perm_invent", SET_IN_FILE);
set_option_mod_status("mouse_support", SET_IN_GAME);
set_option_mod_status("toptenwin", set_in_config);
//set_option_mod_status("perm_invent", set_in_config);
set_option_mod_status("mouse_support", set_in_game);
/* initialize map tiles bitmap */
initMapTiles();
/* set tile-related options to readonly */
set_wc_option_mod_status(WC_TILE_WIDTH | WC_TILE_HEIGHT | WC_TILE_FILE,
DISP_IN_GAME);
set_gameview);
/* set font-related options to change in the game */
set_wc_option_mod_status(
@@ -231,7 +231,7 @@ mswin_init_nhwindows(int *argc, char **argv)
| WC_FONT_STATUS | WC_FONT_MENU | WC_FONT_TEXT
| WC_FONTSIZ_MESSAGE | WC_FONTSIZ_STATUS | WC_FONTSIZ_MENU
| WC_FONTSIZ_TEXT | WC_VARY_MSGCOUNT,
SET_IN_GAME);
set_in_game);
mswin_color_from_string(iflags.wc_foregrnd_menu, &menu_fg_brush,
&menu_fg_color);