diff --git a/dcc/doom_base.py b/dcc/doom_base.py index 44983fe..39c7fdc 100644 --- a/dcc/doom_base.py +++ b/dcc/doom_base.py @@ -49,6 +49,14 @@ class Wad(dcc.config.Base): iwad = self.iwads.joinpath(f.read().strip() + ".WAD") return iwad + def load_order(self): + wads = self._config.get("load_order") + if wads is None: + wads = sorted(self.pwad_path.glob('*.wad', case_sensitive=False)) + else: + wads = [self.pwad_path.joinpath(wad) for wad in wads] + return wads + class WadMap(Wad): def get_parser(self, prog_name): @@ -75,7 +83,7 @@ class WadMap(Wad): def dsda_preamble(self): args = ["-iwad", self.iwad_path] - wads = sorted(self.pwad_path.glob('*.wad', case_sensitive=False)) + wads = self.load_order() if len(wads) > 0: args = args + ["-file"] + wads @@ -83,7 +91,7 @@ class WadMap(Wad): if len(dehs) > 0: args = args + ["-deh"] + dehs - args = args + ["-complevel", self.complevel()] + args = args + ["-complevel", str(self.complevel())] args = args + ["-skill", "4"] args = args + ["-warp", self.map] return args diff --git a/dcc/eureka.py b/dcc/eureka.py index 5aa2c56..392f596 100644 --- a/dcc/eureka.py +++ b/dcc/eureka.py @@ -15,7 +15,7 @@ class Eureka(dcc.doom_base.WadMap): if parsed_args.main is not None: mw = pwadpath.joinpath(parsed_args.main) else: - mw = sorted(list(pwadpath.glob('*.wad', case_sensitive=False)))[0] + mw = self.load_order()[0] complevel = self.complevel() port = "vanilla" diff --git a/dcc/text.py b/dcc/text.py index a349a62..af06ebb 100644 --- a/dcc/text.py +++ b/dcc/text.py @@ -33,9 +33,9 @@ class Text(dcc.doom_base.WadMap): def take_action(self, parsed_args): text = None - map_names = self._config["map_names"] + map_names = self._config.get("map_names") if map_names is not None: - text = map_names[f"map{parsed_args.map}"] + text = map_names.get(f"map{parsed_args.map}") if text is None: text = sys.stdin.read().rstrip() if not parsed_args.nomap: