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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user