36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Tabelle Strat-Typ x Level (Instanzzahl) über alle 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('| Typ | Level (MAP-Instanzen) | Σ | im Code von 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('Nur im Code (nie direkt in MAP):', ', '.join(sorted(n for n in avail if n not in {k.replace("(spawn)", "") for k in tab})))
|