doomcc/dcc/rib.py

51 lines
1.4 KiB
Python
Raw Normal View History

import dcc.doom_base
import pathlib
import os
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", type=int, 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 = (
2025-12-24 18:35:43 -05:00
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})"
)
2025-12-24 18:35:43 -05:00
os.execv(
self.dsda,
[self.dsda]
+ self.dsda_preamble(warp=False)
+ ["-playdemo", demo]
2025-12-24 18:35:43 -05:00
+ ["-skiptic", str(-35 * parsed_args.secs_before)],
)