summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/initfile.cc
diff options
context:
space:
mode:
authorgammafunk <gammafunk@gmail.com>2014-06-22 18:45:55 -0500
committergammafunk <gammafunk@gmail.com>2014-06-25 20:50:43 -0500
commitd817d06195cb83a15d0cb3055a23aea97c7af08f (patch)
tree3834922c252af23b12e253d78f87aa99687366bd /crawl-ref/source/initfile.cc
parent537283350429d0f8b1fcd4ccae6fa1864fa94234 (diff)
downloadcrawl-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.cc40
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");