diff --git a/dcc/doom_base.py b/dcc/doom_base.py index 317791b..e6e3024 100644 --- a/dcc/doom_base.py +++ b/dcc/doom_base.py @@ -58,6 +58,17 @@ class Wad(dcc.config.Base): wads = [self.pwad_path.joinpath(wad) for wad in wads] return wads + def options_dict(self): + return self._config.get("options", {}) + + def options(self): + options = [] + for k, v in self.options_dict().items(): + list.append(options, f"{k}={v}") + if len(options) > 0: + return ["-assign", ",".join(options)] + return [] + class WadMap(Wad): def get_parser(self, prog_name): @@ -95,6 +106,7 @@ class WadMap(Wad): args = args + ["-complevel", str(self.complevel())] args = args + ["-skill", "4"] args = args + ["-warp", self.map] + args = args + self.options() return args def complevel(self): diff --git a/dcc/fabricate.py b/dcc/fabricate.py index 1af78e9..3f4266b 100644 --- a/dcc/fabricate.py +++ b/dcc/fabricate.py @@ -18,13 +18,14 @@ class Fabricate(dcc.doom_base.WadMap): command = [self.dsda] if not parsed_args.fg and shutil.which("xvfb-run") is not None: command = ["xvfb-run"] + command - options = [] - for k, v in self._config.get("fabricate_options", {}).items(): - list.append(options, f"{k}={v}") - if len(options) > 0: - options = ["-assign", ",".join(options)] subprocess.run( - command + self.dsda_preamble() + options + command + self.dsda_preamble() + ["-timedemo", self.demo_in_path()] + ["-viddump", self.video_path()] ) + + def options_dict(self): + opt_dict = super().options_dict() + for k, v in self._config.get("fabricate_options", {}).items(): + opt_dict[k] = v + return opt_dict diff --git a/dcc/record.py b/dcc/record.py index 190844b..525d177 100644 --- a/dcc/record.py +++ b/dcc/record.py @@ -9,3 +9,9 @@ class Record(dcc.doom_base.WadMap): [self.dsda] + self.dsda_preamble() + ["-record", self.demo_out_path()] ) + + def options_dict(self): + opt_dict = super().options_dict() + for k, v in self._config.get("record_options", {}).items(): + opt_dict[k] = v + return opt_dict