diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2021-12-06 16:26:57 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2021-12-06 16:26:57 +0100 |
| commit | 2799c4584f3555157561982660fc2d97ef3509ab (patch) | |
| tree | 5b8b6ed05d075f002d24dfc43b2fc416ece07272 /scripts | |
| parent | 97f1beada92fd0b0896add4070a9ac496faadf8d (diff) | |
| download | muhqs-game-2799c4584f3555157561982660fc2d97ef3509ab.tar.gz muhqs-game-2799c4584f3555157561982660fc2d97ef3509ab.zip | |
add deck support and three decks
Add script to geenrate latex file containing all cards in a deck.
Add make rules to generate and build the deck latex.
Add decks:
* spell slinger
* recruiter rush
* approach
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/generate_deck.py | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/scripts/generate_deck.py b/scripts/generate_deck.py new file mode 100755 index 00000000..18c73cc5 --- /dev/null +++ b/scripts/generate_deck.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +import argparse +import pathlib +from pathlib import Path +from typing import MutableMapping, Tuple + +DECK_TEMPLATE = \ +"""\\documentclass[a4paper,landscape]{{article}} +\\usepackage[margin=6mm,top=5mm]{{geometry}} +\\input{{libs.tex}} +\\input{{colors.tex}} +\\input{{tikzcards.tex}} +\\usepackage{{standalone}} +\\begin{{document}} +\\begin{{center}} +\\pagestyle{{empty}} +{CARDS} +\\end{{center}} +\\end{{document}}""" + +GAME_ROOT = Path(__file__).parent.parent +CARDS_DATA_DIR = GAME_ROOT / 'data' / 'cards' + +CARDS_TO_SETS = {} +SETS_TO_CARDS = {} + + +# build up the card lookup dictionaries +for set_dir in CARDS_DATA_DIR.iterdir(): + set_name = set_dir.name + SETS_TO_CARDS[set_name] = [] + for card in set_dir.iterdir(): + SETS_TO_CARDS[set_name].append(card.stem) + CARDS_TO_SETS[card.stem] = set_name + + +def generate_markdown(deck: list[str], language='en', indentation=3): + """Output a markdown enumeration""" + return '' + + + +def generate_latex(deck: list[str], language='en'): + """Generate a document containing all included cards""" + + cards = [] + for line in deck: + line = line.strip() + amount, card = line.split(' ', maxsplit=1) + card = card.replace(' ', '_').lower() + containing_set = CARDS_TO_SETS[card] + for _ in range(int(amount)): + cards.append(f'\\includestandalone{{cards/{language}/{containing_set}/{card}}}') + print(DECK_TEMPLATE.format(CARDS='\n'.join(cards))) + + +def main(): + """Generate one standalone tikz picture for each card in the input data""" + + parser = argparse.ArgumentParser( + description='generate decks from deck descriptions') + parser.add_argument( + 'deck', + help= + 'deck file or directory containing deck files defining the decks to generate' + ) + parser.add_argument('--format', + choices=['latex', 'markdown'], + default='latex', + help='output format') + parser.add_argument('--language', + choices=['en', 'de'], + default='en', + help='the language of the cards to output') + + args = parser.parse_args() + + data_files = [args.deck] + data_path = pathlib.Path(args.deck) + if data_path.is_dir(): + data_files = data_path.glob('*.deck') + + for data_file in data_files: + with open(data_file, 'r', encoding="utf8") as deck_file: + deck = deck_file.readlines() + + if args.format == 'latex': + generate_latex(deck, language=args.language) + elif args.format == 'markdown': + generate_markdown(deck, language=args.language) + + +if __name__ == '__main__': + main() |
