doomcc/dcc/rib.py

50 lines
1.4 KiB
Python
Raw Normal View History

import dcc.doom_base
import pathlib
import os
import subprocess
import time
class RIB(dcc.doom_base.WadMap):
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
parser.add_argument("-s", "--secs_before", default=10)
parser.add_argument("-a", "--attempt")
return parser
# TODO: the root path should probably be configurable.
def take_action(self, parsed_args):
demo = ""
dt = 0
demodir = (
pathlib.Path.home() /
".dsda-doom" /
"dsda_doom_data" /
self.iwad_path.stem.lower()
)
for w in self.load_order():
demodir = demodir.joinpath(w.stem.lower())
demodir = demodir / "failed_demos"
glob = f"*map{self.map}*"
if parsed_args.attempt is not None:
glob += f"{parsed_args.attempt}*"
for f in demodir.glob(glob, case_sensitive=False):
st = os.stat(f)
if st.st_mtime > dt:
demo = f
dt = st.st_mtime
if demo == "":
raise Exception(
f"no failed demos found for wad {parsed_args.wad} "
+ f"and map {parsed_args.map} (tried to look in {demodir})"
)
subprocess.run(
[self.dsda] + self.dsda_preamble(warp=False)
+ ["-playdemo", demo]
+ ["-skiptic", str(-35 * int(parsed_args.secs_before))]
)