February 2020 options.c overhaul

combine boolean and compound options into a single allopt[] array for
processing in options.c.

move the definitions of the options into new include/optlist.h file which
uses a set of macros to define them appropriately.

during compile of options.c each option described in include/optlist.h:
   1. automatically results in a function prototype for an optfn called
      optfn_xxxx (xxxx is the option name).
   2. automatically results in an opt_xxxx enum value for referencing
      its index throughout options.c (xxxx is the option name).
   3. is used to initialize an element of the allopt[] array at index
      opt_xxxx (xxxx is the option name) based on the settings in the
      NHOPTB, NHOPTC, NHOPTP macros. Those macros only live during the
      compilation of include/optlist.h.

each optfn_xxxx() function can be called with a req id of: do_init, do_set,
get_val or do_handler.

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 expects each optfn_xxxx() function to write the current
option value into the buffer it is passed.

req do_handler is called during doset() operations in response to player
selections most likely from the 'O' option-setting menu, but only if the
option is identified as having do_handler support in the allopts[]
'has_handler' boolean flag. Not every optfn_xxxx() does.

function special_handling() is eliminated. It's code has been redistributed
to individual handler functions for the option or purpose that they serve.

moved reglyph_darkroom() function from options.c to display.c
This commit is contained in:
nhmall
2020-02-26 00:19:08 -05:00
parent a7c143c8f9
commit 68fdc3bbcb
21 changed files with 7042 additions and 4830 deletions

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)

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;

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

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);

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
*/

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
include/optlist.h Normal file
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, No, No, No, NoAlias,
"deselect all items in a menu")
NHOPTC(menu_deselect_page, 4, opt_in, set_in_config, No, No, No, No, NoAlias,
"deselect all items on this page of a menu")
NHOPTC(menu_first_page, 4, opt_in, set_in_config, No, No, No, 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, No, No, No, NoAlias,
"invert all items in a menu")
NHOPTC(menu_invert_page, 4, opt_in, set_in_config, No, No, No, No, NoAlias,
"invert all items on this page of a menu")
NHOPTC(menu_last_page, 4, opt_in, set_in_config, No, No, No, No, NoAlias,
"jump to the last page in a menu")
NHOPTC(menu_next_page, 4, opt_in, set_in_config, No, No, 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, No, No, No, NoAlias,
"goto the previous menu page")
NHOPTC(menu_search, 4, opt_in, set_in_config, No, No, No, No, NoAlias,
"search for a menu item")
NHOPTC(menu_select_all, 4, opt_in, set_in_config, No, No, No, No, NoAlias,
"select all items in a menu")
NHOPTC(menu_select_page, 4, opt_in, set_in_config, No, No, 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 */

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) =========================================== */

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;
}

File diff suppressed because it is too large Load Diff

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)

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 */

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)

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

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();

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[] */

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)

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();

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)

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

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);