Files
llamamod/tools/strat_table.py
T

36 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""Table strat type x level (instance count) across all level WADs.
strat_table.py wads_dir > table.md"""
import glob
import os
import sys
from collections import defaultdict
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import strats # noqa: E402
wads = sorted(glob.glob(os.path.join(sys.argv[1], 't*.wad')))
tab = defaultdict(dict)
avail = defaultdict(set)
lv = []
for w in wads:
name = os.path.basename(w)[:-4].lower()
try:
ch, wf, m, lo, types = strats.level_types(w)
except KeyError:
continue
lv.append(name)
for nm, ss in types.items():
tab[nm][name] = len(ss)
for o, nm in strats.all_named(ch['STPC'], lo):
avail[nm].add(name)
short = [l[1:].replace('i0m', '/').replace('l', '').replace('m00', '/') for l in lv]
print('| Type | Level (MAP instances) | Σ | in code of n levels |')
print('|---|---|---|---|')
for nm in sorted(tab, key=lambda k: (-len(tab[k]), k)):
cells = ' '.join(f'{l[1:]}:{tab[nm][l]}' for l in lv if l in tab[nm])
base = nm.replace('(spawn)', '')
print(f'| {nm} | {cells} | {sum(tab[nm].values())} | {len(avail.get(base, ()))} |')
print()
print('Only in code (never placed directly in MAP):', ', '.join(sorted(n for n in avail if n not in {k.replace("(spawn)", "") for k in tab})))