diff options
author | gammafunk <gammafunk@gmail.com> | 2014-06-22 18:45:55 -0500 |
---|---|---|
committer | gammafunk <gammafunk@gmail.com> | 2014-06-25 20:50:43 -0500 |
commit | d817d06195cb83a15d0cb3055a23aea97c7af08f (patch) | |
tree | 3834922c252af23b12e253d78f87aa99687366bd /crawl-ref/source/initfile.cc | |
parent | 537283350429d0f8b1fcd4ccae6fa1864fa94234 (diff) | |
download | crawl-ref-d817d06195cb83a15d0cb3055a23aea97c7af08f.tar.gz crawl-ref-d817d06195cb83a15d0cb3055a23aea97c7af08f.zip |
Add a command-line option for the number of stat gen iterations
Use `-iters N' to set the number of iterations for -mapstat and
-objstat. This allows setting both the range of level generation as
well as the number of iterations. Now those options will either
generate the whole dungeon when given no arguments, or will generate
over the given level ranges.
Diffstat (limited to 'crawl-ref/source/initfile.cc')
-rw-r--r-- | crawl-ref/source/initfile.cc | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc index 125946fdf2..a1475d96c8 100644 --- a/crawl-ref/source/initfile.cc +++ b/crawl-ref/source/initfile.cc @@ -3854,6 +3854,7 @@ enum commandline_option_type CLO_MACRO, CLO_MAPSTAT, CLO_OBJSTAT, + CLO_ITERATIONS, CLO_ARENA, CLO_DUMP_MAPS, CLO_TEST, @@ -3888,8 +3889,8 @@ static const char *cmd_ops[] = { "scores", "name", "species", "background", "plain", "dir", "rc", "rcdir", "tscores", "vscores", "scorefile", "morgue", "macro", - "mapstat", "objstat", "arena", "dump-maps", "test", "script", "builddb", - "help", "version", "seed", "save-version", "sprint", + "mapstat", "objstat", "iters", "arena", "dump-maps", "test", "script", + "builddb", "help", "version", "seed", "save-version", "sprint", "extra-opt-first", "extra-opt-last", "sprint-map", "edit-save", "print-charset", "zotdef", "tutorial", "wizard", "no-save", "gdb", "no-gdb", "nogdb", @@ -4325,6 +4326,7 @@ bool parse_args(int argc, char **argv, bool rc_only) SysEnv.crawl_exe = get_base_filename(argv[0]); SysEnv.rcdirs.clear(); + SysEnv.map_gen_iters = 0; if (argc < 2) // no args! return true; @@ -4445,10 +4447,29 @@ bool parse_args(int argc, char **argv, bool rc_only) else crawl_state.obj_stat_gen = true; - SysEnv.map_gen_iters = 100; - if (!next_is_param) - ; - else if (isadigit(*next_arg)) + if (!SysEnv.map_gen_iters) + SysEnv.map_gen_iters = 100; + if (next_is_param) + { + SysEnv.map_gen_range.reset(new depth_ranges); + *SysEnv.map_gen_range = + depth_ranges::parse_depth_ranges(next_arg); + nextUsed = true; + } + break; +#else + fprintf(stderr, "mapstat and objstat are available only in " + "DEBUG_DIAGNOSTICS builds.\n"); + end(1); +#endif + case CLO_ITERATIONS: +#ifdef DEBUG_DIAGNOSTICS + if (!next_is_param || !isadigit(*next_arg)) + { + fprintf(stderr, "Integer argument required for -%s\n", arg); + end(1); + } + else { SysEnv.map_gen_iters = atoi(next_arg); if (SysEnv.map_gen_iters < 1) @@ -4457,13 +4478,6 @@ bool parse_args(int argc, char **argv, bool rc_only) SysEnv.map_gen_iters = 10000; nextUsed = true; } - else - { - SysEnv.map_gen_range.reset(new depth_ranges); - *SysEnv.map_gen_range = - depth_ranges::parse_depth_ranges(next_arg); - nextUsed = true; - } #else fprintf(stderr, "mapstat and objstat are available only in " "DEBUG_DIAGNOSTICS builds.\n"); |